From f6125ec1fa76c0b2d0c8b72baa5850e15b831469 Mon Sep 17 00:00:00 2001 From: Steve Date: Thu, 28 Nov 2024 14:10:29 +0100 Subject: [PATCH] refactoring: remove comments && dead code --- ...fd2f915ead117a744577676cddc8695313bf3a1fc8 | Bin 0 -> 1166 bytes ...15ead117a744577676cddc8695313bf3a1fc8.body | 27 + ...73daecb39edaed27e19419d823c5f53e3a05d4234e | Bin 0 -> 1123 bytes ...cb39edaed27e19419d823c5f53e3a05d4234e.body | Bin 0 -> 4229617 bytes ...b28971aa93ddb0ee6201ce88476558ba12a356dc9f | Bin 0 -> 1816 bytes ...1aa93ddb0ee6201ce88476558ba12a356dc9f.body | Bin 0 -> 140919 bytes ...22db841d6fe4cd322bc10d1a558bb00d146b85cb9a | Bin 0 -> 1777 bytes ...41d6fe4cd322bc10d1a558bb00d146b85cb9a.body | Bin 0 -> 34708 bytes ...c14827daac3afc81fbb8306b73de8dd6e3f1f8ea3b | 1 + .local/bin/debugpy | 9 + .../debugpy-1.8.8.dist-info/INSTALLER | 1 + .../debugpy-1.8.8.dist-info/LICENSE | 24 + .../debugpy-1.8.8.dist-info/METADATA | 27 + .../debugpy-1.8.8.dist-info/RECORD | 537 + .../debugpy-1.8.8.dist-info/REQUESTED | 0 .../debugpy-1.8.8.dist-info/WHEEL | 8 + .../debugpy-1.8.8.dist-info/entry_points.txt | 2 + .../debugpy-1.8.8.dist-info/top_level.txt | 1 + .../debugpy/ThirdPartyNotices.txt | 499 + .../site-packages/debugpy/__init__.py | 38 + .../site-packages/debugpy/__main__.py | 70 + .../debugpy/_vendored/__init__.py | 125 + .../debugpy/_vendored/_pydevd_packaging.py | 47 + .../site-packages/debugpy/_vendored/_util.py | 60 + .../debugpy/_vendored/force_pydevd.py | 87 + .../pydevd/_pydev_bundle/__init__.py | 0 .../_pydev_bundle/_pydev_calltip_util.py | 162 + .../pydevd/_pydev_bundle/_pydev_completer.py | 274 + .../pydevd/_pydev_bundle/_pydev_execfile.py | 16 + .../_pydev_filesystem_encoding.py | 43 + .../pydevd/_pydev_bundle/_pydev_getopt.py | 132 + .../_pydev_bundle/_pydev_imports_tipper.py | 399 + .../_pydev_bundle/_pydev_jy_imports_tipper.py | 509 + .../pydevd/_pydev_bundle/_pydev_log.py | 25 + .../_pydev_bundle/_pydev_saved_modules.py | 139 + .../pydevd/_pydev_bundle/_pydev_sys_patch.py | 79 + .../_pydev_bundle/_pydev_tipper_common.py | 53 + .../pydevd/_pydev_bundle/fsnotify/__init__.py | 378 + .../_pydev_bundle/pydev_console_utils.py | 691 + .../pydevd/_pydev_bundle/pydev_import_hook.py | 38 + .../pydevd/_pydev_bundle/pydev_imports.py | 3 + .../_pydev_bundle/pydev_ipython_console.py | 111 + .../pydev_ipython_console_011.py | 532 + .../_pydev_bundle/pydev_is_thread_alive.py | 32 + .../pydevd/_pydev_bundle/pydev_localhost.py | 69 + .../pydevd/_pydev_bundle/pydev_log.py | 291 + .../pydevd/_pydev_bundle/pydev_monkey.py | 1361 + .../pydevd/_pydev_bundle/pydev_monkey_qt.py | 223 + .../pydevd/_pydev_bundle/pydev_override.py | 37 + .../pydevd/_pydev_bundle/pydev_umd.py | 186 + .../_pydev_bundle/pydev_versioncheck.py | 16 + .../pydevd/_pydev_runfiles/__init__.py | 0 .../pydevd/_pydev_runfiles/pydev_runfiles.py | 959 + .../pydev_runfiles_coverage.py | 90 + .../_pydev_runfiles/pydev_runfiles_nose.py | 213 + .../pydev_runfiles_parallel.py | 292 + .../pydev_runfiles_parallel_client.py | 208 + .../_pydev_runfiles/pydev_runfiles_pytest2.py | 344 + .../pydev_runfiles_unittest.py | 197 + .../_pydev_runfiles/pydev_runfiles_xml_rpc.py | 278 + .../pydevd/_pydevd_bundle/__init__.py | 0 .../_pydevd_bundle/_debug_adapter/__init__.py | 0 ...main__pydevd_gen_debug_adapter_protocol.py | 723 + .../_debug_adapter/debugProtocol.json | 4190 ++ .../_debug_adapter/debugProtocolCustom.json | 325 + .../_debug_adapter/pydevd_base_schema.py | 147 + .../_debug_adapter/pydevd_schema.py | 19870 ++++++ .../_debug_adapter/pydevd_schema_log.py | 46 + .../_pydevd_bundle/pydevconsole_code.py | 565 + .../pydevd_additional_thread_info.py | 39 + .../pydevd_additional_thread_info_regular.py | 330 + .../pydevd/_pydevd_bundle/pydevd_api.py | 1501 + .../_pydevd_bundle/pydevd_breakpoints.py | 211 + .../_pydevd_bundle/pydevd_bytecode_utils.py | 1010 + .../pydevd_bytecode_utils_py311.py | 132 + .../_pydevd_bundle/pydevd_code_to_source.py | 625 + .../pydevd_collect_bytecode_info.py | 1156 + .../pydevd/_pydevd_bundle/pydevd_comm.py | 2280 + .../_pydevd_bundle/pydevd_comm_constants.py | 202 + .../pydevd_command_line_handling.py | 192 + .../pydevd_concurrency_analyser/__init__.py | 0 .../pydevd_concurrency_logger.py | 547 + .../pydevd_thread_wrappers.py | 82 + .../pydevd/_pydevd_bundle/pydevd_console.py | 289 + .../pydevd/_pydevd_bundle/pydevd_constants.py | 895 + .../_pydevd_bundle/pydevd_custom_frames.py | 127 + .../pydevd/_pydevd_bundle/pydevd_cython.c | 55535 ++++++++++++++++ ...evd_cython.cpython-312-x86_64-linux-gnu.so | Bin 0 -> 5009336 bytes .../pydevd/_pydevd_bundle/pydevd_cython.pxd | 42 + .../pydevd/_pydevd_bundle/pydevd_cython.pyx | 2176 + .../_pydevd_bundle/pydevd_cython_wrapper.py | 68 + .../_pydevd_bundle/pydevd_daemon_thread.py | 230 + .../pydevd/_pydevd_bundle/pydevd_defaults.py | 73 + .../_pydevd_bundle/pydevd_dont_trace.py | 123 + .../_pydevd_bundle/pydevd_dont_trace_files.py | 178 + .../pydevd/_pydevd_bundle/pydevd_exec2.py | 5 + .../_pydevd_bundle/pydevd_extension_api.py | 107 + .../_pydevd_bundle/pydevd_extension_utils.py | 72 + .../pydevd/_pydevd_bundle/pydevd_filtering.py | 388 + .../pydevd/_pydevd_bundle/pydevd_frame.py | 1607 + .../_pydevd_bundle/pydevd_frame_utils.py | 496 + .../pydevd_gevent_integration.py | 120 + .../_pydevd_bundle/pydevd_import_class.py | 70 + .../pydevd/_pydevd_bundle/pydevd_io.py | 265 + .../pydevd_json_debug_options.py | 206 + .../_pydevd_bundle/pydevd_net_command.py | 155 + .../pydevd_net_command_factory_json.py | 688 + .../pydevd_net_command_factory_xml.py | 674 + .../_pydevd_bundle/pydevd_plugin_utils.py | 223 + .../pydevd_process_net_command.py | 990 + .../pydevd_process_net_command_json.py | 1616 + .../pydevd/_pydevd_bundle/pydevd_referrers.py | 285 + .../pydevd/_pydevd_bundle/pydevd_reload.py | 459 + .../pydevd/_pydevd_bundle/pydevd_resolver.py | 890 + .../pydevd/_pydevd_bundle/pydevd_runpy.py | 376 + .../pydevd/_pydevd_bundle/pydevd_safe_repr.py | 409 + .../_pydevd_bundle/pydevd_save_locals.py | 134 + .../pydevd/_pydevd_bundle/pydevd_signature.py | 229 + .../_pydevd_bundle/pydevd_source_mapping.py | 186 + .../pydevd/_pydevd_bundle/pydevd_stackless.py | 452 + .../_pydevd_bundle/pydevd_suspended_frames.py | 656 + .../_pydevd_bundle/pydevd_thread_lifecycle.py | 112 + .../pydevd/_pydevd_bundle/pydevd_timeout.py | 259 + .../_pydevd_bundle/pydevd_trace_dispatch.py | 103 + .../pydevd_trace_dispatch_regular.py | 570 + .../_pydevd_bundle/pydevd_traceproperty.py | 99 + .../pydevd/_pydevd_bundle/pydevd_utils.py | 557 + .../pydevd/_pydevd_bundle/pydevd_vars.py | 928 + .../pydevd/_pydevd_bundle/pydevd_vm_type.py | 40 + .../pydevd/_pydevd_bundle/pydevd_xml.py | 505 + .../pydevd/_pydevd_frame_eval/.gitignore | 3 + .../pydevd/_pydevd_frame_eval/__init__.py | 0 .../pydevd_frame_eval_cython_wrapper.py | 48 + .../pydevd_frame_eval_main.py | 69 + .../pydevd_frame_evaluator.c | 26454 ++++++++ .../pydevd_frame_evaluator.pxd | 131 + .../pydevd_frame_evaluator.template.pyx | 613 + .../pydevd_frame_tracing.py | 134 + .../pydevd_modify_bytecode.py | 377 + .../pydevd/_pydevd_frame_eval/release_mem.h | 5 + .../_pydevd_frame_eval/vendored/README.txt | 18 + .../_pydevd_frame_eval/vendored/__init__.py | 0 .../bytecode-0.13.0.dev0.dist-info/COPYING | 21 + .../bytecode-0.13.0.dev0.dist-info/INSTALLER | 1 + .../bytecode-0.13.0.dev0.dist-info/METADATA | 77 + .../bytecode-0.13.0.dev0.dist-info/RECORD | 42 + .../bytecode-0.13.0.dev0.dist-info/REQUESTED | 0 .../bytecode-0.13.0.dev0.dist-info/WHEEL | 5 + .../direct_url.json | 1 + .../top_level.txt | 1 + .../vendored/bytecode/__init__.py | 131 + .../vendored/bytecode/bytecode.py | 215 + .../vendored/bytecode/cfg.py | 461 + .../vendored/bytecode/concrete.py | 673 + .../vendored/bytecode/flags.py | 181 + .../vendored/bytecode/instr.py | 399 + .../vendored/bytecode/peephole_opt.py | 499 + .../vendored/bytecode/tests/__init__.py | 153 + .../vendored/bytecode/tests/test_bytecode.py | 499 + .../vendored/bytecode/tests/test_cfg.py | 841 + .../vendored/bytecode/tests/test_code.py | 100 + .../vendored/bytecode/tests/test_concrete.py | 1517 + .../vendored/bytecode/tests/test_flags.py | 161 + .../vendored/bytecode/tests/test_instr.py | 367 + .../vendored/bytecode/tests/test_misc.py | 266 + .../bytecode/tests/test_peephole_opt.py | 994 + .../bytecode/tests/util_annotation.py | 17 + .../vendored/pydevd_fix_code.py | 60 + .../_pydevd_sys_monitoring.py | 1977 + .../_pydevd_sys_monitoring_cython.c | 44963 +++++++++++++ ...ing_cython.cpython-312-x86_64-linux-gnu.so | Bin 0 -> 4036400 bytes .../_pydevd_sys_monitoring_cython.pxd | 46 + .../_pydevd_sys_monitoring_cython.pyx | 1975 + .../pydevd_sys_monitoring.py | 21 + .../pydevd/pydev_app_engine_debug_startup.py | 29 + .../_vendored/pydevd/pydev_coverage.py | 104 + .../_vendored/pydevd/pydev_ipython/README | 8 + .../pydevd/pydev_ipython/__init__.py | 0 .../pydevd/pydev_ipython/inputhook.py | 624 + .../pydevd/pydev_ipython/inputhookglut.py | 156 + .../pydevd/pydev_ipython/inputhookgtk.py | 37 + .../pydevd/pydev_ipython/inputhookgtk3.py | 36 + .../pydevd/pydev_ipython/inputhookpyglet.py | 94 + .../pydevd/pydev_ipython/inputhookqt4.py | 198 + .../pydevd/pydev_ipython/inputhookqt5.py | 201 + .../pydevd/pydev_ipython/inputhookqt6.py | 201 + .../pydevd/pydev_ipython/inputhooktk.py | 24 + .../pydevd/pydev_ipython/inputhookwx.py | 172 + .../pydevd/pydev_ipython/matplotlibtools.py | 169 + .../_vendored/pydevd/pydev_ipython/qt.py | 45 + .../pydevd/pydev_ipython/qt_for_kernel.py | 141 + .../pydevd/pydev_ipython/qt_loaders.py | 388 + .../_vendored/pydevd/pydev_ipython/version.py | 50 + .../debugpy/_vendored/pydevd/pydev_pysrc.py | 1 + .../_vendored/pydevd/pydev_run_in_console.py | 172 + .../__not_in_default_pythonpath.txt | 1 + .../pydev_sitecustomize/sitecustomize.py | 268 + .../debugpy/_vendored/pydevd/pydevconsole.py | 630 + .../debugpy/_vendored/pydevd/pydevd.py | 4175 ++ .../pydevd_attach_to_process/README.txt | 27 + .../_always_live_program.py | 40 + .../pydevd/pydevd_attach_to_process/_check.py | 7 + .../_test_attach_to_process.py | 13 + .../_test_attach_to_process_linux.py | 79 + .../add_code_to_python_process.py | 676 + .../attach_linux_amd64.so | Bin 0 -> 31160 bytes .../pydevd_attach_to_process/attach_pydevd.py | 92 + .../pydevd_attach_to_process/attach_script.py | 218 + .../common/py_custom_pyeval_settrace.hpp | 193 + .../common/py_custom_pyeval_settrace_310.hpp | 113 + .../common/py_custom_pyeval_settrace_311.hpp | 120 + .../py_custom_pyeval_settrace_common.hpp | 62 + .../common/py_settrace.hpp | 194 + .../common/py_utils.hpp | 85 + .../common/py_version.hpp | 98 + .../pydevd_attach_to_process/common/python.h | 704 + .../common/ref_utils.hpp | 63 + .../linux_and_mac/.gitignore | 4 + .../linux_and_mac/attach.cpp | 111 + .../linux_and_mac/compile_linux.sh | 11 + .../linux_and_mac/compile_mac.sh | 4 + .../linux_and_mac/compile_manylinux.cmd | 10 + .../linux_and_mac/lldb_prepare.py | 59 + .../winappdbg/__init__.py | 246 + .../winappdbg/breakpoint.py | 4865 ++ .../winappdbg/compat.py | 200 + .../winappdbg/crash.py | 1992 + .../winappdbg/debug.py | 1542 + .../winappdbg/disasm.py | 728 + .../winappdbg/event.py | 1900 + .../winappdbg/interactive.py | 2279 + .../winappdbg/module.py | 2010 + .../winappdbg/process.py | 5018 ++ .../winappdbg/registry.py | 701 + .../winappdbg/search.py | 672 + .../pydevd_attach_to_process/winappdbg/sql.py | 1012 + .../winappdbg/system.py | 1303 + .../winappdbg/textio.py | 1913 + .../winappdbg/thread.py | 2121 + .../winappdbg/util.py | 1070 + .../winappdbg/win32/__init__.py | 72 + .../winappdbg/win32/advapi32.py | 4009 ++ .../winappdbg/win32/context_amd64.py | 852 + .../winappdbg/win32/context_i386.py | 480 + .../winappdbg/win32/dbghelp.py | 1430 + .../winappdbg/win32/defines.py | 737 + .../winappdbg/win32/gdi32.py | 524 + .../winappdbg/win32/kernel32.py | 5338 ++ .../winappdbg/win32/ntdll.py | 634 + .../winappdbg/win32/peb_teb.py | 3516 + .../winappdbg/win32/psapi.py | 421 + .../winappdbg/win32/shell32.py | 427 + .../winappdbg/win32/shlwapi.py | 853 + .../winappdbg/win32/user32.py | 1843 + .../winappdbg/win32/version.py | 1094 + .../winappdbg/win32/wtsapi32.py | 368 + .../winappdbg/window.py | 764 + .../windows/attach.cpp | 640 + .../pydevd_attach_to_process/windows/attach.h | 57 + .../windows/compile_windows.bat | 44 + .../windows/inject_dll.cpp | 134 + .../windows/py_win_helpers.hpp | 77 + .../windows/run_code_in_memory.hpp | 116 + .../windows/run_code_on_dllmain.cpp | 78 + .../windows/stdafx.cpp | 22 + .../pydevd_attach_to_process/windows/stdafx.h | 36 + .../windows/targetver.h | 22 + .../_vendored/pydevd/pydevd_file_utils.py | 1061 + .../pydevd/pydevd_plugins/__init__.py | 3 + .../pydevd/pydevd_plugins/django_debug.py | 741 + .../pydevd_plugins/extensions/README.md | 30 + .../pydevd_plugins/extensions/__init__.py | 3 + .../extensions/types/__init__.py | 3 + .../extensions/types/pydevd_helpers.py | 28 + .../types/pydevd_plugin_numpy_types.py | 98 + .../types/pydevd_plugin_pandas_types.py | 189 + .../types/pydevd_plugins_django_form_str.py | 18 + .../pydevd/pydevd_plugins/jinja2_debug.py | 608 + .../pydevd_plugins/pydevd_line_validation.py | 175 + .../_vendored/pydevd/pydevd_tracing.py | 456 + .../_vendored/pydevd/setup_pydevd_cython.py | 349 + .../site-packages/debugpy/_version.py | 20 + .../site-packages/debugpy/adapter/__init__.py | 15 + .../site-packages/debugpy/adapter/__main__.py | 227 + .../site-packages/debugpy/adapter/clients.py | 797 + .../debugpy/adapter/components.py | 181 + .../debugpy/adapter/launchers.py | 198 + .../site-packages/debugpy/adapter/servers.py | 617 + .../site-packages/debugpy/adapter/sessions.py | 291 + .../site-packages/debugpy/common/__init__.py | 19 + .../site-packages/debugpy/common/json.py | 287 + .../site-packages/debugpy/common/log.py | 406 + .../site-packages/debugpy/common/messaging.py | 1490 + .../site-packages/debugpy/common/singleton.py | 183 + .../site-packages/debugpy/common/sockets.py | 127 + .../site-packages/debugpy/common/stacks.py | 61 + .../site-packages/debugpy/common/timestamp.py | 22 + .../site-packages/debugpy/common/util.py | 162 + .../debugpy/launcher/__init__.py | 32 + .../debugpy/launcher/__main__.py | 91 + .../debugpy/launcher/debuggee.py | 248 + .../debugpy/launcher/handlers.py | 150 + .../site-packages/debugpy/launcher/output.py | 113 + .../site-packages/debugpy/launcher/winapi.py | 103 + .../site-packages/debugpy/public_api.py | 196 + .../site-packages/debugpy/server/__init__.py | 7 + .../site-packages/debugpy/server/api.py | 369 + .../debugpy/server/attach_pid_injected.py | 92 + .../site-packages/debugpy/server/cli.py | 501 + config/schema.py | 1 - hexa/user_management/schema.py | 2 - pyproject.toml | 2 +- 312 files changed, 279134 insertions(+), 4 deletions(-) create mode 100644 .cache/pip/http-v2/3/8/2/1/a/3821ac651ebe1bfd2f915ead117a744577676cddc8695313bf3a1fc8 create mode 100644 .cache/pip/http-v2/3/8/2/1/a/3821ac651ebe1bfd2f915ead117a744577676cddc8695313bf3a1fc8.body create mode 100644 .cache/pip/http-v2/6/a/a/2/0/6aa20c4a4ed0ac73daecb39edaed27e19419d823c5f53e3a05d4234e create mode 100644 .cache/pip/http-v2/6/a/a/2/0/6aa20c4a4ed0ac73daecb39edaed27e19419d823c5f53e3a05d4234e.body create mode 100644 .cache/pip/http-v2/9/6/9/8/a/9698ad86cd4982b28971aa93ddb0ee6201ce88476558ba12a356dc9f create mode 100644 .cache/pip/http-v2/9/6/9/8/a/9698ad86cd4982b28971aa93ddb0ee6201ce88476558ba12a356dc9f.body create mode 100644 .cache/pip/http-v2/a/1/9/5/3/a19537d3cf37c122db841d6fe4cd322bc10d1a558bb00d146b85cb9a create mode 100644 .cache/pip/http-v2/a/1/9/5/3/a19537d3cf37c122db841d6fe4cd322bc10d1a558bb00d146b85cb9a.body create mode 100644 .cache/pip/selfcheck/fe300af6f7d708c14827daac3afc81fbb8306b73de8dd6e3f1f8ea3b create mode 100755 .local/bin/debugpy create mode 100644 .local/lib/python3.12/site-packages/debugpy-1.8.8.dist-info/INSTALLER create mode 100644 .local/lib/python3.12/site-packages/debugpy-1.8.8.dist-info/LICENSE create mode 100644 .local/lib/python3.12/site-packages/debugpy-1.8.8.dist-info/METADATA create mode 100644 .local/lib/python3.12/site-packages/debugpy-1.8.8.dist-info/RECORD create mode 100644 .local/lib/python3.12/site-packages/debugpy-1.8.8.dist-info/REQUESTED create mode 100644 .local/lib/python3.12/site-packages/debugpy-1.8.8.dist-info/WHEEL create mode 100644 .local/lib/python3.12/site-packages/debugpy-1.8.8.dist-info/entry_points.txt create mode 100644 .local/lib/python3.12/site-packages/debugpy-1.8.8.dist-info/top_level.txt create mode 100644 .local/lib/python3.12/site-packages/debugpy/ThirdPartyNotices.txt create mode 100644 .local/lib/python3.12/site-packages/debugpy/__init__.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/__main__.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/__init__.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/_pydevd_packaging.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/_util.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/force_pydevd.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/__init__.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_calltip_util.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_completer.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_execfile.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_filesystem_encoding.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_getopt.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_imports_tipper.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_jy_imports_tipper.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_log.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_saved_modules.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_sys_patch.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_tipper_common.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/fsnotify/__init__.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_console_utils.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_import_hook.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_imports.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console_011.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_is_thread_alive.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_localhost.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_log.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey_qt.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_override.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_umd.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_versioncheck.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_runfiles/__init__.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_coverage.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_nose.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel_client.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_pytest2.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_unittest.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_xml_rpc.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/__init__.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__init__.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__main__pydevd_gen_debug_adapter_protocol.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocol.json create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocolCustom.json create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_base_schema.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema_log.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevconsole_code.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info_regular.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_api.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_breakpoints.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils_py311.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_code_to_source.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_collect_bytecode_info.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm_constants.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_command_line_handling.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/__init__.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_concurrency_logger.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_thread_wrappers.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_console.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_constants.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_custom_frames.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.c create mode 100755 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.cpython-312-x86_64-linux-gnu.so create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.pxd create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.pyx create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython_wrapper.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_daemon_thread.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_defaults.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_dont_trace.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_dont_trace_files.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_exec2.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_extension_api.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_extension_utils.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_filtering.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame_utils.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_gevent_integration.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_import_class.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_io.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_json_debug_options.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_json.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_xml.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_plugin_utils.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command_json.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_referrers.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_reload.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_resolver.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_runpy.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_safe_repr.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_save_locals.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_signature.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_source_mapping.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_stackless.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_suspended_frames.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_thread_lifecycle.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_timeout.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch_regular.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_traceproperty.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_utils.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vars.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vm_type.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_xml.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/.gitignore create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/__init__.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_cython_wrapper.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_main.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.c create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.pxd create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.template.pyx create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_tracing.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_modify_bytecode.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/release_mem.h create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/README.txt create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/__init__.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/COPYING create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/INSTALLER create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/METADATA create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/RECORD create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/REQUESTED create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/WHEEL create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/direct_url.json create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/top_level.txt create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/__init__.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/bytecode.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/cfg.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/concrete.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/flags.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/instr.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/peephole_opt.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/__init__.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_bytecode.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_cfg.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_code.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_concrete.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_flags.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_instr.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_misc.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_peephole_opt.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/util_annotation.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/pydevd_fix_code.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.c create mode 100755 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.cpython-312-x86_64-linux-gnu.so create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.pxd create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.pyx create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/pydevd_sys_monitoring.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydev_app_engine_debug_startup.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydev_coverage.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydev_ipython/README create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydev_ipython/__init__.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydev_ipython/inputhook.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydev_ipython/inputhookglut.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydev_ipython/inputhookgtk.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydev_ipython/inputhookgtk3.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydev_ipython/inputhookpyglet.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt4.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt5.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt6.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydev_ipython/inputhooktk.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydev_ipython/inputhookwx.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydev_ipython/matplotlibtools.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydev_ipython/qt.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydev_ipython/qt_for_kernel.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydev_ipython/qt_loaders.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydev_ipython/version.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydev_pysrc.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydev_run_in_console.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydev_sitecustomize/__not_in_default_pythonpath.txt create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydev_sitecustomize/sitecustomize.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevconsole.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/README.txt create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/_always_live_program.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/_check.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process_linux.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/add_code_to_python_process.py create mode 100755 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_linux_amd64.so create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_pydevd.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_script.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace.hpp create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_310.hpp create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_311.hpp create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_common.hpp create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_settrace.hpp create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_utils.hpp create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_version.hpp create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/python.h create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/ref_utils.hpp create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/.gitignore create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/attach.cpp create mode 100755 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_linux.sh create mode 100755 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_mac.sh create mode 100755 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_manylinux.cmd create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/lldb_prepare.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/__init__.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/breakpoint.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/compat.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/crash.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/debug.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/disasm.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/event.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/interactive.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/module.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/process.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/registry.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/search.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/sql.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/system.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/textio.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/thread.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/util.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/__init__.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/advapi32.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/context_amd64.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/context_i386.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/dbghelp.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/defines.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/gdi32.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/kernel32.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/ntdll.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/peb_teb.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/psapi.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/shell32.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/shlwapi.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/user32.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/version.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/wtsapi32.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/window.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/attach.cpp create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/attach.h create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/compile_windows.bat create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/inject_dll.cpp create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/py_win_helpers.hpp create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/run_code_in_memory.hpp create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/run_code_on_dllmain.cpp create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/stdafx.cpp create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/stdafx.h create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/targetver.h create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_file_utils.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_plugins/__init__.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_plugins/django_debug.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_plugins/extensions/README.md create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_plugins/extensions/__init__.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/__init__.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_helpers.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugin_numpy_types.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugin_pandas_types.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugins_django_form_str.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_plugins/jinja2_debug.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_plugins/pydevd_line_validation.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevd_tracing.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/setup_pydevd_cython.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/_version.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/adapter/__init__.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/adapter/__main__.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/adapter/clients.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/adapter/components.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/adapter/launchers.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/adapter/servers.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/adapter/sessions.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/common/__init__.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/common/json.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/common/log.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/common/messaging.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/common/singleton.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/common/sockets.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/common/stacks.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/common/timestamp.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/common/util.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/launcher/__init__.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/launcher/__main__.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/launcher/debuggee.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/launcher/handlers.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/launcher/output.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/launcher/winapi.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/public_api.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/server/__init__.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/server/api.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/server/attach_pid_injected.py create mode 100644 .local/lib/python3.12/site-packages/debugpy/server/cli.py diff --git a/.cache/pip/http-v2/3/8/2/1/a/3821ac651ebe1bfd2f915ead117a744577676cddc8695313bf3a1fc8 b/.cache/pip/http-v2/3/8/2/1/a/3821ac651ebe1bfd2f915ead117a744577676cddc8695313bf3a1fc8 new file mode 100644 index 0000000000000000000000000000000000000000..1dec56647005be5b2187e6e4be2a0eb70aa662e9 GIT binary patch literal 1166 zcmZuwO>ZML7~VVo0Sy%=H168-kxW|kklm&qqD@v!D1pn!W4}q<&WvYmPul4X4*U<; zw5hu7ZY3nNEbIkw;J_cqh2MhnQCQH>lM5|CP*gaL;} zfWw<*hv3MYeL~wlIXT$gg|<#JebPEUY_?Ck+1KhTfB)?0;$&xqXQ^pBzr~xeAif~= z1`7$)>H|V3raT(d7{(-u2L#ty5I`7Uz>GKQF`siG1V?d(F^+;Lww+--#vvvcH)4aa z@5Lo1b)VSI(2I!Y-94pj1ZXa!lIiTzjM|}xu;tf63t~Ul5m{Cmnxx=5MVVNE@0yH3 zVbBrHhoCQ$%7A{+9KzJzjYBV-Y*Pd8z69=CdH+?JcpId?;n(IWzwD!hjT}9xW{=ro z20=MGWkX%}?6m75I6cAC69QsdF(HSjZ!pNTbo-;@#M~$T^(SDzPt$%K!2G?N$AftViq7oA-AL%1&*_kg+6RCR}I}pN#<0{~RxrJh388IV9z< xsIIi3rqqA_F=3.8 +Description-Content-Type: text/markdown +License-File: LICENSE + +debugpy is an implementation of the Debug Adapter Protocol for Python. + +The source code and the issue tracker is [hosted on GitHub](https://github.com/microsoft/debugpy/). diff --git a/.cache/pip/http-v2/6/a/a/2/0/6aa20c4a4ed0ac73daecb39edaed27e19419d823c5f53e3a05d4234e b/.cache/pip/http-v2/6/a/a/2/0/6aa20c4a4ed0ac73daecb39edaed27e19419d823c5f53e3a05d4234e new file mode 100644 index 0000000000000000000000000000000000000000..b94d57065c67db0abcb60b97a5cc8c6fcded26b1 GIT binary patch literal 1123 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 %g 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

M~yt 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

@Y$Mzi8_*79>ko|tU6of2H+)u*;E#- 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�MHXj3ow* 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 z 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 z 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

gLU^nHoc&Ih?^Ql!ECS2dmncO?4(W}YhcIQIEi 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�xVqN^Tk3&+honZ2@rqk>lxlhbv*uPU!c1Ik# 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ⅆdB`H_XD&UO7fU=m~&vQF3khW-Q6tA01;KavTpaxV=6`& zlTOAAO9_0h43DXJ6siPpr!mzVNLPS`*tD^A8Pr*K9$Qk3Q76zjw(6GQmF;U5vv?IC zO4nt!R%O(Hi0WNvjM?b@&M(Wjbc#_aA!A4yz1I05Bz-{ALVl*61;e(LrGp?KCgAcI zfTJa;W@A$9SITfpp2wZD7HY|SZb>(*Ss1L`l4(F{SxKdh-U|KR)rRj=%J@N%JG~e> z2z&#HSL=9F%eZvBu_^Yq%d*zlV4G>>j<*xYcB$}hAlFDp=nm>R7h%*+AaNdM5e@Lt z-W0erfrdl~?Ok4o5+^r19;5nE z2fd}5uz-|KN%8Df4&tbjj)SNX9^6T9Da9==={o5H+`kR*(?0Z2M#ihGOAgbTmt)iF z+03FYK=@BhE)?+#<&APt%rG^@b9*_SQa(VDZZ@vFp={A9Ww}(44X#<5f`JKzrn5tcPhZK7k$f+ zT($%HxFJ!LTfwa&tF19j)tHhblViGx`V+*=l)%;HdAh0KiE!viA^lIDZr%gc5#aw` z*}~I}_6=68!YxS3tP~Hw3S8kG;NR-W75=E03O|z-{uf;Tcv6MiB^ItQi4Pf#E|dxB zUqG@o3q(0Dvxo$Qt=VoDxumyWNJ;ZARW`z{ba0a*knpI(c*UQ}LLT}t37 z6W!~oh9h~urdUqNdi;gr7rnS1FN^6GJ1cNKBJ8lqPW8yEQFNuDP0CT_TqfneQtXv0 z>L=y;5Rhi)N!gWMPRf!=PRf@d=}JmcpNbq2dg5MpJGJ0tjzbGT&9-w`cmm{}Ry^bi z{MiCbM^Myy6GSs_vuNbaQ|FX&E)nWpN+sviIUH=mym{($Wp$l8*OgN#3WunFQtF39 zv%O0oWsx^Wu){zOdb6pIfZX$zQ)ebs)ROvYTUjvG$1IWomP}dE_MqDOaOt5yzVacH zB1>)Y7JFT6_yJ<9<#1ykcs2w4^O)nqy3X;e%@-l%T^cSnHFR?{&lj)znng2TnlF+e zEC;4MsRYT@KzxeJ8NNJUFYjj-rTx@=QOVVY z_|$UsD)D^rF8Dh6$@!uxv#R57l~aAbm0E{`ZI~Z>dkK(5eys3!AcsguXam^p`xlIQ z4TzsVW@CSzFX*ZvG1W&K9P*AfIO>%zIyf#?;=$1bT#fu`aD3-7IJ70J2x$#PX^{Oq zhQ9i~#W8I-A~k8Ok!t@ahKFPZQs|4@l{|ijn?{lx_*YgcU$@U5yY_z*9&O(vv!#=#mt5OLtGP(sFI((9iZSP;wc_;cJD zP=e#}Y9K2C9?3$wjf$>~{W#CyDL>1T{U(A@%M*6@Q zmyGD9WVa9Exi(rw9z(*zAg)NMV6+pUa6K@aT%#wvsV2_^uE)DzdIzBW*{B=wvK|tX zX--wAso`^mvz)&Rlo1zT_Rc86ied-ef=&$LVhsU z&lZB779#7nU)h~O^;@25x*+S<6if|6xSf7eeA(A@bsCQQnIT-K-&9Q`rtft761YyA zz`v0U@DC|wZ7BTcU5BUysVV z;bTxA0j%`G!yX`80e&?9N}14nou&qBP{+!UNmFoKDB=geaYp(zrCeg_uQpV+di+$G zCy7=l@Kz{K5`%zz8p9 ze+obD`9X%*97hz^#*WrKwkfHJB?J({h^D3)ubY0gy>W7;}opA0R zlEXNpd z2JcB}+a_hvrebUxo+LLO;D4^!cDAT({VPjf<&kakQ%y0+Y+Hp0tN|m~SN)ZSe7&#I zalc~(+ar106s8|aC6d{mso7$Bq(@)Z@hTv}yNp7lFXy>b?J#HpSH)WDNSCa#pq;T4!H_G&k zl&M6zt))Ab;L^NEPIt)SMx7w;@mIHoR7g>&M3LmUT{A@mm#E*9^=S^xoZuuWC6~;( zo*Zyen)3uYA1HHjr8!kgnMFb=Hb)jW>I6B>`Ne5Y9N*rT;!G+(sa7QG(j>`cKXE5H z(3Hxn=qb=TsT8fEBPdyMQ;0fMU{o0pxwyQs6tAKaZ_-92*|TFRhbnuNS$G00bVrL< zsh|?0I9~My(kn`>qT9RLa5p(>L@KYMmw<0klw3u3PjZ=i?k9U5lv)pi?O+rK$ooL< zN`+yi%_6uot)eT#_H;5T5lAOoYFnCD(R9`DAlXyvg-daDVQF5{WF!?G5*4d(-@62^ zd=l+nxoR=9iwLO;MOl!2wklT94fM&EL#hR%{)X;n$sQN0@JO+j!6+#s*DOi0?`Qt4 z8z~>-{zqlxnk7jN;M~7?{*xAN1<&R(Wa06`7Rqd`wyG1iV8ZickLp!xIg2=LF5nh&tUw#$c@YBR5l30=AF;0qo4UF~5vRG4cQL#g%*ss9#g(lXf zvs;wTWn0!)b;+f;CS3YeRS6gEd_Xbj7C-tNZ<%D-4(VjAF~xImH97-#-!7Iye>T9K zzQ-F;4wFB?o4&_uAzrKYNoHJXRgTA}lx5UO<*xeXu8=m>)cCB)xBFJpooJ#k8dbWw z`vSoMQ2&hS3`2byg$~t5Jj4P{v#PR9w`z`i2lTlF^+@s6YPcmSXw3IyZJwd9$co zo*P?o>W5LE>fG3GgR6CU>ZGFzX9%^KC2}B49>6(cnQ>iOonAP@jW1B{b1JL#xIC)V z8>x0{4K`vPZq1fP46I(%i2KrrGvGR<8L{-0|HvYW+tiY&_8wBYv4UB=kkZE%BmJ!! zEWIW;t5+cD>s+MM`p0nskEFLqExD`)Z#27rzf%PYq_=saIUUp#!2ieEd%)*>eevTr zo{=Xakvs%7>M?4MAbSv7jflO1plTDVMU9wMGm27GRkdeSjn;~-W^6@?+BF(`^M9Yu z=iK{zo+t7B{a*k7-|KbaoXaJRPDGbm@Z2zLLysSRpvuPRcBpp>*$k~`ehEAr?a zlyiktZ#dY7m1OlKr?CiUMX-85gX_-B7OL7;< z0CJB~{P-nW(t-%rCgu}~Qh$el3Z=}VTq(-UGf(&%TsG>QN4uc>L&0h-f;m7-ur&o( zbA$K}$TT86LA(I+2w*D@qIPN6L4dspC$`FEqg5@2BvWO^2l2zNT6)o|Ym}?q~Sl&B}y z8E6u*){v0g&mW5jH}&scrnu+wOk8uev;+0Sa_Y`|KsDLH7DvN-^kA@10Rv3=ExZj^g}Z?x)!+)K@}jc9KgB- zL~|fb0luq1SQp^W7*I)NX{#O)y-(tc?F#;^z^5eu`^pM#TH2l)wEX&0X$yqCN_l6? za%)vhOxdS+xHc$}hc1}pdA8~%`2 zn1^Nwc`kx4&%2%Y6HB454&hH2vCO-VKlD;n9{RQ5Jahmp&(&1?p?9qEj6t+)ZMOOf zKVDzEBvSrwFX?ygdLV2@r0BkcroB;ACz`S59-Rxe4 zzkwAn69H&9TciZ52>cJ}?+fxD5F_-PEiJ**yaJ6{|MAV1@t}qRw3{t5rk55|-fXc~ zGz-6qnyK+GPs&u4HJ(7}9}V(}uTJw41ciewxFYRPQ~C|?r9Y^C0Bt=*#2KUmzNT7cp_tLdMRtIt~RRs0Y(?CuJaxZ-a zY*6cAZP-V9tN=f0U}RjbajCB0EGY<0E-W3jnbK$WKHR1rZ)>7Uco9 ziXip_*$eQC0&%;Vu9shJ5T#<6hy~GJhO{yg2_P;o;nf2~z5)1?ie?p33;KKsBHN6Z zeB(KZtw<3h|L7GMwIP?y8jRQFAwuXfaW%P7N9Yn$^lre-7jt4SLXhirNH zg!+G1i*3YUBtH<~NgMA|eSWS3jYlJBD7Xd#tb;&o z2C^ZPMio+j8ovAo>V7DjAeoFsVai?Z7-||>o2PC8VP=sljHhl@fkcF{Df$Y?mtkgp zO5&SpYNg;IlIR?2x>K7Swyj{=9LDBI@?}$)(Hvc@&F1Ja_#aZ@jx#X^bEIj$P8Gm9 zRbH(5;80Uo9o9TwxLM>0XU(eti414WhXWZBE{*6mrFk4_J|t8(qT9f*C0s6sDy_F= zq4kV9to0M{Kca*k+l^YY5xuPvk(hFIs)U+))nz04QG{9KjbI~M6-ZPB8&O3RG!kS) zKLgS^f{p06K$0Wah;9M031BZ0^Z&|-R?6l243*~Uq{qk_NP4I@>c@52)wu~-*CW`~ z$q@-RJ<{mvM1Ts5q`mitMpvf`K6M1xJ*)pOSEr%D)rpC5b9GXTuFknku1+^t?`*-p z!*WQ2!7B(J^ZRy$@^uij94gEMSet=p9Ay?Y0oDW%w}D(Bq7R5!(PntPDBxirDpfU$ z!T|HvAcTMWExux4by++qR6NsyefG77guV!hu4WdY08a|BeT6SuKurMHCW6>m9WEch zdo~E$BK$dD!z_*fZ0kV$P!n@)fNdKHzd9&bfbCBZoq+@qaTY{;J+lY_*sg(i{;649 z0oXD?_%tw!r}aU+1rgj3!wSGFJ2dypg+EVf@MusF#HV$1LhEx=tIJLzG1ceR1e;cW z%6%@lky%t}#C^9x>LVnvF4!|$eOgUL&^a)j0azP@ zcmw1W5w$=RjfL+A@T54lZurt3RP9*JGFEx+BNkPcCM|E$ zX3?ZEr3PXbkd2MWJW^_1@uhYgDjblVF1jpI8ge!h_jr8;9ewF~i!WVk@uur6!ap9q z@CH>niI3@I(H@_94UwH;2LI|J z6w#LdWm+bYN@;nf`u^I0m;duOg-LD7hcKH1iEB#L@tC&(rh%FSC^CVQ_@#k!W#3Ux z|E90(=lmJ`-zu#o79z9imFi_%3zkDjZa=`M#ycOeUhzvzEup;F>D8KY`~}#uHAArg ztUZiGypd=Oq7;x40NWT4jes-&ICgW&J+-SebC?#2E3tUM9J33F+ zH6iz-sYfN*E|Y4jihKfHd+c$%Yiw+n10XoD8Mn(HfXoJX60g=S?}54w@b3>|mP#v* z(i*zwH)Onrn9WJ`Z>$4dn_#)8D|)4!MeJ+oM8Yt*_;|y zGRkG861R}Vb>8FEhs6DiAS?aJ*8)ZxU|kEM8<0)_PvZ67iZ8Z<__GP0QUJCyAS^A- z;ysA$T3fH}*2!k>EO@yQxA3OmjB7~?TGSu6xwHPb)5|+HbAQZE=Shy%cJpW!?zFdw z<+CMUBF(`q`E1F2AoBpl&vO*H(A``+PGGqPm3!8cWspK;uwbX%>ha!3>_N1hl+F|I zyan>ICE0bV178GJYXwsXuzdt#KajluA96WmdM1UbOpV#;RiH7upLfB3hY}#q)7~1! z9#D`xPZ`acDFNw))(307*7P+emB(zA1Bt1|@XbyityKDfyH9H_m03W(1r%Rb&sZw@ zzwFc%)48}DGM&%%SpI6v9q@NV-Q1cxpd#Xp1a-hGK>lvc9njncelx)Fu(q)SeqYxDAh8kAP&f;jt@UTUbtjHf+@d64_RI&Jjx0 zbZTDbf-U8mu;;uAOiS9b4;rB)M<@%e|I^O@G+`g~1^Az})y|UCa{8e9Sq6IU_2W-4 zw#RY`WjKYSh;1u@fI{ueqCh)7G9bCEnfN`<2V3;x4B(Av#~Mm5o5GCCvYVxb-N4_q z9ch?Y!$m_rWzhvw?CdpVi}ia7aXCUP2bv=KAOuZA)JXtO3bBpGmqVcTw&QtCnVNEt zkXUxr)_3`}Y|1sCHy-nvc&_~zYxotrfeMxwl|CX?dAEL zmMYT{^D;zg(2O%(9TBRv=S+78@>zS%^b#OHx0lVmV@+A{9o==Xhj=Y(#?Ad2B3y0H z&E3`kNC$526@ZlMz|Fl4kR~0Zsy$WB_HkSR&OMb;T>7M#XuGTJSmQ*<8e?2I%=MzHaV^-dsrf+ znkU3EwYfa(M_)9p$|smb*#y?A1&}5QS^}ijbfs1bC6F(~>mnsUYH8|B2kX=XR%auS z4GA=ONOjUdop+|TSgDgvsTBrrS+x_Uft@&$U4V4z#HoG*!_gO)6E1DH~Zh#FEs4YvMLy-0Z|Pk+U<}cxTRYLm>4!%SN+HWqFr-qbU;NbxA5b z2@xiCW`)-QS<{&nJ_F=bXKpmFfV}7|&*TlNEmie0ltm8TFf3{@HH2O2M82TAmrWdZZQ$Jg%sq&ZVpNWX>(Iv$6 zPO5SZQUCsoRk^IXWXf}cDwVpLMft95FfXebxa?MB+W9Z3RuAxZ>q=_bYP+hXpJ^gH zRkD^EMM$lP5X*~JY@3o1bxK!i2+!GI9s{+%D;vx@wWOjFQ_TPd^XpdJ3@UtX7G*x? zX3!JJXP1{x^bdzm=P%UXN2f6DI6XJEgHMjj&i14BtxBbH1(QvzS+pi6zW_ND;eSviEE>#^> zOBU!TcU7y0SW32GRktI;*6yt8bs*{8S=AyvAgG5lm=l$PelL(j%@D5WCmFiZd z-a<;Xeu&oqnQA+5wduvFCIK1Qi&I?+WN|N=&d5}cg8H+UI?;Whj%;~plxq7B)3dg0 z3cP!pg{e22f&|6qcxf;N{Se-*H(MpigM7c#yZ^1W-2IP(=WuUYRZOX4TvgO`NK$Dp zL_CiUA*RvoO^`-m4GmAbCu}@k-aBS3A~W1$dV9Artgd9aj@H zLaA~{sS@{!P6ULQ{Ntr%MAR!%70G8239k&Q6zXdhAN6I+D0w^;W^{J5#j{#1z~8Jd z70nx$q6rwm({ftcD;2Nr?N@^9R>S$Zn)7oR{yYSqJH{IhIp{ufK#iKtXkT!&Dk5N( z;qz4I=XSN6pBFnnuQGhz%AYHX0J+RY>zI$@c`Y;Da2P;;yLXhnG&@*sUj&q@>x@^p zeWrLWyb}$)tupgAH)W3qp=FC|Zt*Pjobje-8E;iE#S3XcMC<~n%5FZbKa{#c8 z0Pz&a6@YCLh(`m>;vax*4v1}oV4wlH7jM>oqsq1(NS-gu!WUrM0b(SOFNin{;suZg z0P}fL%OpUV)j#YyDz0+EU)u>Er(a{F%4f1E0R0U(L5(J%@E z8TF-E^!t*JAhiEfIj(PL?I^_mX#!VT*&$|8atMv7Z+LsLAE-`4czaRCv}!SBZP|uG z{h|8yA|2l7T3>lvl>W~lKCPjd_Bv=ouvGz&*1WeY%i0dSuZyAa{(^-hlwX7L<6+6#bVK@0|HF91f3 zG>gEIG?u>Q*EC$!f)|LZLDH!1rdqz6EIy>mh%+1mo&3+;u; zRLQplJih?6*E=PjNhA@Ud|C1k!Vdzpmn9{SMPc%vd|C28u-;G7s#1HsvuOiY&r!YJ znR_%03&8dD&d2rL9L?`i?fJV1{q@dpu!oK|^Xr`+oU(kqGqwxA-q{%}@c`}h&aFV! zP#pc8Q{;?Z@BHL5E`i}=%wiBgd%ZIu3tbnGaMJf*aNQnbc746Gzbab-^?IlOSPb|8 z?e)(7s$3GjTL;B7pX%ecQP@7dxSF(!s+$S4wNl=gmW80HvzOq zIDN;VECAXgob7?M8fWH+iF(A~IWpo_1Z^D05q-v^X^-cK@jzORr=$GzdS?nEYA<%K z#i!K(#|kby!;78AxH63|cHaBUcuwFHVxFKxHU3NWrF+EuBU1wkb~W<90Pi#6*ZS+b z2D0?iDIfC1&LR`gFD7t*?FXdK1n#eMfqXlGu8(?n{Ez3C5vaY`c?YaF0NRV4CBHU{ z!T|mGWw6kTotL}vdEu!D8UHo;>J*vI3;ze|F2EkgeOa53su_KK2DA8ju{P|vt8Kn{hOQv40y63qkBSp z1Pznd5p)FN4o;+cp|dyNkU^*2A+XsV;>#pZV*s{yAYK6Zmk4i+VDl!KMKZva4@ADn z7!?7wPe3dHG7I2W8N_zh#w!wpc4oyn^d*rpmqWbfcQdxFJX6rQr|_8-$!r(NV3ucA zq7fW9MVl#6?aldAP7P8i#j7DE&+c50-NDs)3cLN1&#W+GjlS&0HM#-(>nU}|lKO@k z)n=lrR1z5^>TXD$dfnyH9evSepcfGN>=d4X=9!B6oT};i!*d@|OIa$1Ny~l0@1*PR zw66xPSb%jkh%bQ*o=RN=Y_|RQvJBKOlvuY$ZeHMm41*Uq*XiX2OlED#DLT>$9EKv5dgcb{{M1($Nk?PFR_=b|35Mw*&KwJcJf{4#S^!mXpI{rYTDu`D=o&o%l zKum1R9qStq2PE+=h>EdH{9qvREd~*X)>XPcyv-GB^@~~gHvx$;qs?swQft0hRG!b? zW{FtkZCcQDheY~!>BZir$B$<5em;4d2+_RFAbctQBYT@Nrd5k6z0J!AzVxHh+iVx7 zyiH2~t4N={iR^9WTwsQK%iiX1Ko&1xZ*%2Om?-^3-X=*VZ?pSCvuL`Iz0LTaG5`2k zdYe`c-P`;JUoQX5-lnCQ6q|x@}@^+ zlCgxnO+TB5=54m`!#-5arSPnmvbQ<9wX`#dHr*qtAo;!m&(NjpZAw0qNF_e$2`xnU zf~D*UNgj*BN?E~wcrA}}2+h!l|Hva|F?WOMCW)(Mf@-`>-VQ(|%GMMjW(%Y=w z%+=f6)`z{#D6mvs#@^;mAnTS%Z&P@AXx`?`zFYzemYcB~;zWrUtz!A@h~O0y`llAXp;K!&cA-e!s(G1$_NBmRw`b1OMw#Z@rJt2p9FAVXG3 zZ!^P-z0EXyItFn3(=3y>>Dw%`x7oIzafE-0n2%RUZ?j;t%--fC7ykUK(G^!qZ!@yF z8bPxgyv>?mh+fV8bq0{>tGT~!1M=HyIxV05e|Vb|sCk}~c3(qj#Knb2o4Ew)3iKdUoC0{3VgSlo5zAbS-CoEfZN@Zr@iz76ppCxf-nI1Hr-#T7V{h9B;u2ChPnz~?`9FM3 zeouO$(bt@z-jjChXzt=`Ze8shUTh);;yiwg^jS9^%KwF+JnJA1U_AmN8A#kZTDS+B z?Iym|`4zKxfbB7e8XL@_6u>4hu8#T5ESdvsJ|H@5GKgtny;6e}C3#MGA8-bmB10laf@c|V4~ z{k)}OIe-D~0K1GefK)v|TPoD*s>Mpnkdy-jdOR}cp#j|f#(-($0XlG(gWKOWP+I`@ zfw3;_&#;#_DOQbll-`9%%ie*!Z6*$y#T!bGLbScSs`wIekoWRdsEkR>c=(~&K+f0# z@XtHQ8M^@F^g+&8*+0$VlRxENUUEyBoWzWWAJ$5xMk2!SKjmKD?3T_JXJ5pG+{>dw zMD`z9H@TOmoh|)=xmZ1oD^&9}o==nMG}Y zH5-T@fy_BXo1IiZl?@TIlZPY)sBtXkz5-(hv5#~c@opaCWmNye$k1VasLVZ@bdY2W z41Lug>I}2_GuvIHY>PoaJQ8XPC`6U?7jvmMPyF|JY1JaRv}zd*WYl46L!LD;uPxm{&DW)`oGa=YpYqVq8>#55p>j?uF^KHRQ~9Ea}=&}u%z ztxj)z!8Jb?9HWnO%|Br-wSg;ZUUF$QzZ}TY<6QG;K#m+Y%ZzkyB`eM0tJi!!WW=rZ z?P+F_BaIdB45ULE)xNK>_6Mtk5`6XAHx1$1UkL8GXr1ZvZ@@GD1lPXgGZ`>v?VtRTYkwE`cb=fyf0R}2f79y2wLhShYwcG7 zUWmGUR2#QKN0;}d?yhz7eu#C~?aQ5KsL{(BbsCfH)BMb% zJG)$YkxcL?RzXBeP7jfN7#ibh5KHlW5x}+u#6LhT0Y2UfB8VrW%{jFv5N!Js0ikD* ztuu6E4Mcw+eE^z|l!%l)s_gUGJCrMY4MJ8>C{_4Eglg}f4&|!7g^(L(sA`8dcBxwP zj0|$T0wNnbEAZk_*@cTY=g-RVVgBN6nz{v0hyS=A)LhQfRC&mCHsya10&<*1Spy1> z0vn498_1jNUWkPMHq=3!@12g1%KRmHWHH4q%h-gsOMjCOZpQ0 zgU?e->e9m1NN7hZtF~}85??qESlUar$YO}lmJLmDa)ijBY!`?!jT)|&4Q27qhtzrJ zx%l@2Nj#Xj^NV|@4)ruJRho+d{%|Y-!V}qA&UKl0sAj5l$@#& zO3YX&IYw}y)B}H=zo<}3$GH}Y)2}?@T)rU{|BbX19LX+RKSb^I7cJ8GvtPLi)RMp0 zue=v0Yg1xIzjDy2DTq2>-u0pk=LHhE)l9)mg-$#1-B(cPPh}la@oTDVp$s(IC zq{L<5U!qAYTl(4k5M|=ue4guyso|cUC&c|>A4K;y2NETFqgS7B#+5}ISb>C)V2fo<1dr86I*1i za96b~!Y?<}Dj#K9G=|k0kEo+Bv;Ezy)RLIIg{xHD0p4v=#m!2w%~_~8Welr$4g6O% z71Nt$ZXvpgy_Dz}Qn5^wsr*=0F~=1Qt5>+>Bp=3?+=h~Chwv6xxNaqnRrm$yb(?oA ztFjV2i?5I>r(0yMTU`|yl1;=Rx<}b4(-x`9TSR>8U;+=hAN;nvq0)95_zs5B2o|PY+5$8}V~1xrxO1IMQqAI3CB6 z!8GkE?NR69k^gs48?N$T=JgLs=O1;BzMxu2mYAB^KZ*1@C=;!T7}fug2dII3{tu_O z49G8(Uj9_%W+BPk1>_DsUHgYCqI7Fn-xTigG*YjKuxn;f`5HG>$zxNPv8jfR=Smq1 z{?XUSwB%`HFfAB_%W+N8=G(yWya6}&g<6iFI9s#V|${Fk$ z#M_l}FU+JcwOu(q(lm4eZ&xmdqD!ywcI8nZhp+K=r6LL%3EHlF4CLW8-mWZi9sd4x z-ma_*q&C2w$}+RwuAK3qhkr6{SN_x3Sz>Ob)x?zDFPr-<^rG}Yjun5h-TBQ|#Buq5 z%k|_je|R$T{R%-Npyj~p^eop#U-1seBO-Exn0mu3#sX|bK;*b-7TEx{3Lqu}89_uO zh~l?kX94DV^q`2X1^&i?tapoDx{+;U^Ou-f16>_z8u>N1+7$4wy~VBe9FSADxYg#q zZ5DpFsW;VxzEj&sS1FC!=h{%8hST9;HAj$@{X9KhNa#2z5qiRc8veg{6s9a>qT zhW{15bOP1x4qb@{aU94RB4&e#x@#7t0JcRSirs@rzeiW&LHOP`ix)&}1Cj3mO637v zjRz6&pIHd|AUhtaMZv&$wW5vj}>^7xs6nj^s>`>+sgjd}}80{gbc3KOP{8oMX0Klhml} z7|d$&FM4V3lIDX_CqhjnCUeQHMeLPNcn|7An=Ix5ljSp*_7`n4kNp1rm_~WGl{zL; z`lmy4wwZ$TqY!itXms*6JTorBK(qU1tAB-)f}P&xM)-rgG}f!T(sM{(0K~2SND0%+)NWa_SYI zn??EOl=|FunX6k%-R~o$em>MRP^R7z{7s*8>cg@~y@O1B8n~utsZVT|xzlN{D#uXj z*Fy8GoGO<}=!<5lHX!Eu=WMAi0y+0wEtSYx@eqlWz|BxoqiO7X7I9sxt!IbD#7)4BhgH@YGB-5$fSmx%wcbEesEIYMR=DU|*7p{5CZ>>$l;$Gd__jQyNB0d9*r>wng;d80j#$`Tg7oktmsSC*fUF>bD&Q25%Pijxr+)3uNix<+52sP8%!T7)S$vCowxc zybCIkv;w+^_hu%0c$2|Bo}!b7cOJ-TicV~rhnL&SB76Z_f4$#P8a`1__wdqZa)0dv zp7sE(ze+xn0dw}(!!xaR0AWu|$il<>x8sLBymK8t=;3u%H6KVyhKA+*brySg zsSvgepm}(2fII_u5}W>8t=TQ2Hb8S}I;)Q4Opxmk9^Uj>?9$8y|91dU*#F}Z2+2ww-(59fG5S#JiND{o&z)wuYL}TsFQ<>W0g{Dm3wi(!&@+$i(^a< zIu8Tw0uHx#dU)GsXY%l_$l@I((r0Jw;oWL)@bH#&FnD;W9h^hiN8e@g@D_CZzwz)g zsGzEbnZEyyD`ExoUXp_=BBOogfo9xy+;Fdg>k8%4Ua#W^JUmAsq+Tt|^jxNH^RWoC z52tSJkhz-wk*UXktEvyB9@a5)b?d*`MXASxnOe-@)VqPdi%dO#7OBU~;naTu*NEQ(@ zWG*&c#T!b+L?r9cILx$Ps+d2gMc8w)inkSCs!_$^2p^J@jofWj%C|dYZYwEL-QU3f zYfdWf_=L=DMFjlR-sxUkp6m4RKI-W7@ch5${^R%3;NfMsdwBah{vSL%IYMR=8I=8x z!b}Ul=LU2UDxQ;Bi%=Pg$RcZ#zvryw@y}iN1>(fsISnAyY2c4fV< zNah+#EUD|_G5@pc&?EyvSD?jgfb}g1|J)YwHW!HOzxs-p0E>8l57xXOZsfCwp8&Sv zARZR5h+P0%B@iEdY!P<~fv5_ix&tK%ur&ZNwJ5wHK=-dcQRlP6{Ga^5 zhwT=YvxvC>PYThF;^Z!G5pVECyO1DbTD6$+yq#YKNZK%u{kTESi zOXwFKVi)i+{%;U69-v)#$nmALq{$`pL-~az-!Aa%1ZWo?B%ev7moQv-xQX!V0PQfo z)_Y;@EQUomkXcr#NW})j_5>EQs zB2np)7S{_8mA;Z?n^4kl;h_@v$^x_t50b~EuuK;o#({TaB$u(|vM9{Gj8B2}M5MlX zq}^LcE~#I5*iPA^dkb$6`ivB&dke8q7EuqN-COt($ebt(M@-Wr20xP#UnA&g6h~|n zZ4q^&IpTaE-vLBny71sVNLMX4tEOFkc!1!007qU9HC%p(;j%SeerUDOco-yCRWw+D z&L7MC#>)?1yYPpBH-z}LzPn?PtO>tThRY9~z|gKL_uX|s)>P%bdjZHvfM;B(|8e<& z0=3HzQPm&~pk02L4&-ZqcKKmpDgE-pr$6)I^QQ>8UyWvfrTFl9s~9v~fc?T3x|Ztl z!$RlfhqO}q<%fko^YHuwV$6wQkMhN!%pT>pKl7k`3S1`u!qH)vb5IucJse41ei-F; z`9U-06O=I*rJ=#fFrR75*qGa@qZ!4pF+T%hPjxot&uUo2O@JrG(Tw?~n&?S2*_f}Z zWf7}tu`!?EH0GssV?JgP8}mEhxmAmdd1*H01#82$)MjHo!D-A(JB|5%1n;eFFy^J% znBT|8JGI%EukEL1?PUzcyhTrXYSJxsY)un1H!^XT$J&UMOkB#{x zAQS4bF<;omq?9ul^E8AXtIvi;@>mq+ zZfKr@^>KZtF|U{S0b`!OfkotN;BL%s^vi6_>nvttUJdNg4Wu!D+|SjR4_nN}yf;`n zH(+Ca7s! zvWWK$*_fYIOMyKC8<3><7wt8CaJzG8prO^13mfw1jPP8bS{>Vw+qv z7AeQFP3{k*SFAMV3-yS>dt}7p2>LUYBNl0l2G*D(CIac%SQ_)miCGx)-3U$vIOZf~ zGUloMG8^;aOO3|)7GmCLERFfGewmGVa~J*`aj3R9Y0PW%mo<@I-eAmw!B8=d`|emE zqvN>mt_89b;OVIFzurx#z{cFK38Xb)W8MWwyC!VR6D#P(JkK&V=6@n&7r>K3G-F=2 zsYR3o*uU=oVPn3qf^N+FERzTB5TjR9Hs(|MXEx>?m&s#x;9Am@jJd~9qcN}B|9=~E z?RdxWL|JkYQ$Kc)66W1{IUnyhg7gmowBsF*fMgI++DOpxj(p85A`d`2-cc1u6hJ%P z(HlrlBItO>EFj4MyNy-M`gq5l4;}BQ;`R!YmXn5RK$n=x$PqGu3bV+T%tv*7TVNP(p)E|kSnDe~ zcb1hYDkAk$VLt!-g9;2>hlw}1ssOCTKs*9+orpXjj<&=EA7J$Y(YTF86mCNf2NJMF z<4c!z7SRe|s}G_@Jk%qi6^MeJEMjc}h|fTr?1}*dVCxTJc279w0NY3q#rs*rZ+$^b z2C;u2EC|3h7ewX3X!iiy5@P$(B3gby`vf3%j6%~HMXPThnomG48V}+Ki0`LZ#P-P` z{sOUlwndl$wwoXZ%!d^P*dBvO`w6-MY$C;1)cDyVf&exj5ch%nMMQoOAOC`iT?C>e zh$hS6lrIGl1mfH(ix>*no6QCh$20i_!7jr zzB-|8U&*SoAZL}5oiCwW8zry(Z%C6W#AoG4@SFAxlgDWNp zZPXdjIrFGaSAged9>sIGCi>Ue=yKc*Y zECOi$&MddiK>kk18uoV{gX`gM(%<=oSxYc$&o%7t6yFF>Y9sqQ8-T3ZDE*zl%DQJ* zeJ%Stc{ZWUHnG3+%uP7?JAbTUf2S$9;x1B$wHcI`gx?a{#RSHnG1$YAmd*yK(u}akerLdQWD{(j~JSH)Abl ztJG$TD6!eijr&E-$ky*s5!aBr0=7$H2}Pcn>ky*s5$vBADENR0qg9| z1~<;HitffWS;yX3DnkF*%-)!N3+&?-_QpB^X}3kXadCRY;7Ky#P6YkFg(Ld^ZV}$U zbHoH7ZGV?;TqQ0lxgY9HZk!{gi_v}4+^gq(Wge2N7~HGhkW$L;+#eqRx%WHw$6SA4 z`tb*C#8&wq?iB@U?o|v}!~S6RYBi9hf3SO%T19uS2Bxrk^%@~hDP;=L+^c$9F--#4 z@43#E4L@U>QAKyI_NB0MH3j?=0ooNfN07c(mc3qa+>?O`c=b? zewB8Cr&SkOUU5j!?#()o2|5p5X2XFqVOdIpc&IIyU4aEG2;cE-s{5>?%pAg9Q8+VhOyU`|g^L~%yGZ`@bA9bGl8@Th-1%K_`)Om6zWzl)2b6j~s!1)`+ z!ak70vbY%jYZp1Jq>z&N!~J`2;&wFv!g}uJc69;B$=%$pYV5Iyh&^10D}gN9Lrd?$ z+^&50B4{t44cX>a^Y4D+nok5r-@RP(yFOI&l1r=k*+6FQ<(l6P_F?YD?*`)QRb zgloSQs3!Zl_7jyp86kS@-`~i!zZg6V_w(*VHwVd?Yt9e=)ow+i-LLs@dCRgx~MdUxk zO|BM@m_y3g>{tGcUs#sLW&(JV4snLh137t!np>E$xm{Fl%)&6exlP`}&8_rdizsrK zo7-d{;}27F3*+W?3DoJs+}vI&T{6P-=GJcuH@B)s&|8nNv3aTdEr}U7m)maPruPN- z2OS|}^K!JSv7w!M`@OHSGB(;KzWwl5uI;ai-fCzba9<4;f#Fc{lW;HbyKxrq10;Tb zgr~NW*;8TipPbsJf^`QeDe^7C(|U82y=YLP=(oaL+Zr^D&28 zh7qxVVMh0udnY_QgIOH z5ftv3?+>o8Bt#u9MM^%4A%;_A_CHwU7VvK(k&Xezr7BI-8Wk~#LJvsBo3Dn?|vrjQ94Ns5BKc0l_ma&nBPl@ca@yGS>&mzBtCsTQXY>(OjE%;p1p}$F=6Y5iL3f zY5MPgCHsSx5b(VQz;*yc_B4xl2g08WVy>>TBvMI<=p;=Y`Eu9nOsjq=zfBe zn+at42~I8z$T5{%W0jo5l$~xI?pbg%I_-+*cSNp2sK&tiz-Y#&3nbNko@{+*P#qk(ao&;O(Ue8jmCvRoZebTTcx z&|!*J0zo$sXKaURKxeo8(!;*Ip{T3zRfB%7x2p^#aMbfWp zxObtQwBmp=@H>O~I>7o4d<}ur12|$i!j$XirCYw1y|g(MhV~psf~pmX$zRj<=oaod zYbWP^91Mi$`wJ_CCW(8aL@NrR2rfjk)kA@ zSz$&|52YyES!Dbyi8}SQd%GJrL3txpA*y$H@tUdJ?kXZmS%7`rgb%j6fVo^fb70ci zry4d=N}Q6dWu*ARCE!12z;u@YpAjlxxl2H4XTUCFfTPz0X9eny$|b4}7)SX@4EHax zi`Oc8AunCek}FkJJ}L)l6XkGf*8BQeWh_$`FPT#8A8whliz}n>IryFDxH2T4Sz*S? z7`clpqZRmDoTJJp>S6?FDA=kZrjn=u;okr5G7bg95pUQz9tyT9qvOO_9uEaSgY~C# z+E8#CeK`YZw%ZMZeIJD8y`-s#snsBFP`JgHvZZB5hIuN?ILg-Etxi;jyLl_x!zr3I zzS&g{RyWq|S$=nj|^-yN-9pb(?&r?6i zhw7-VPyH^)EH(NIbJM@b<@s!sOQo1+q)>y_z3)i;Ge6 zSqw3p#TdJnWv&JPYE5QsSDE_JdXm^!#ZMrKe}sD-lM>G$<_RgWv69$03yG;xqR$13 z@V-D5*J_lp;z(3)Rfx$XYJ0d>%sv(sgeZX*SX6ISh`qBARdyeX>J9#$B+9Dt+4E%h`!Q>huKBqceOG~5}UD|H_msF{#7{Q@nfR%Zis9Mqox`>Jj( z2Ffrc*w{@?;V8Y-aL>y7Imdw)Eu!2-&hbW-&yCIoq;gznKj*kR_&>i$IezPwW9?ZQ zx*pQLyKLo-8j$#LWX@9*o34jUN6g6=`FhAvAp0)TLRSsG9#ZL&MU=n9_aS65*$fHl z|LA(i+WkDl_X2+pfG9GM+4k<|Hl0jEfQdV=enCW=yp2*RCy;`nk*1~x(0gg}rkTBQ z-DQy_*U%?zPO~S&ObRm=Q`7-v_Rb`K=PB{2Bt9(Cbmsui9lu3Jrd{H><4;PB zj2ecy;}L`(yu`KklTzoWEYvx5fNRbCw?$<8n`$k6K;~N0)!L}ka@3^BPNXU6Agfgt zQA_^KYW<PPKX-WVL<-{|}m48E$GhAD}s=)Jh_?A|g$B z|75lHB5JBs>y%O}#i-Uhgujw%ol?r2%0exVKUuAi%N7xInbZ;kGn*`3ty@a1bW$ra z(v%|A>WHXqF0)z>m0Eta3~K#~@YR=Dt%pjPhgqmKSE}W4#UkEoYWcaUrQ8ux%+f5Tu#(>Z8GpmV zzwxgzc*N6`%R1R18BOo01|xD!VT?^GsW5{fQAv? z`H#9Zv|DIsx45B6W~;*FKh@B{`o}G;An1jq^q#V7r@L$3C?cRSBxx@!T}6y56f0jK z+_^v~l5&jh6@$or8?6tZy|8p&C6_?THjZ$7OG(fRORd1u;tWi>pIR6A@k!$Jq<&ixj&{O(dUL zVMa}g9cN9pg8z3-lmAA#nd0SSii^Z@>{iE}pOx>|rI(BEXP&V|bH1s?R_!h2Cy|~% zM|dAOZfvpX5PJDvZn2WtsxbE!Yq@I?rn}n2VjhYk1!-tLCbc^UkdNTws7L8dM$TOT!1CQ-jec$GfEqCD?egvUJ=CHX80 zvl&F$Pq3(#;BS79vRBbPd&^b!O7@Y(m_af(MtDt>GDjiqSNFIWC7)RY*3*k|n3S^_ zJR3=lqw*L-mWpiUa#(W0*7yG51UmEQc2?B2=7ZLjs4*~qMyCb{XsHY73SU_-h%b@ePzM-tNiR& za`b;5M)l?FQ@py#ykEht!o&;0c1FDx#*@C|Y_4EN-+y?(yMBV?C1^-7Cuf&uE zPmA!rCleiy7-Roq3%(l2^8Yx!J3wwwdii(KZA_Ax3Z!g?MSPOM7W}>{Rtonx!4`ZN z!Utu@_Xt$?xt~Riw>!->z7PC+GN{Ir#%F24kFTd64@Ci!h>D`L(d~}BM{T?x2KjeJ> zpmO^|7Ww}B4Cg!a5gepPlpk)|=UAVHh*R$| z>yxf7FQypvnSk&yk69ndeC1Oy`GRhr!$vNOQlZ&#zMRocNo|*feDCvWIpfXXEc&Y^zMm4GO5!U=n%1A^;+O@Mlb>*L3{q-j7>nZ= z!Vk&f7^IXKl!ZEr&U0~CpTci`O2tw53uAF;M!o28DW|B~XVU+9lnBpt^E?~%vWQ=r z(#V&T;wv1DJVeX|*st-l4T{gPPuZwfRLRAG$D>sE$EE*bqdo~d6Q4?>9;$Y~l8CW% zxYvNc*#52q)0(GrNUjkZ_4A-kK4l|Z>X}6pf2NFjjN03hm@?{R!o7CML^~r!!ZSAN z-vAl^jMLi>WH+Uk|6AlHg=EeIVto!b=Q-C#gW=MsQ@BUjaJ@ES5FYiMYeVwb6lScA zzzbX(L%{#VbE=J6Mz00A@qF$h>W!4eBC(P(Hv=OAe!M`Zslb-|6Z|1#U%WT7(T|#I zzrWPP+doPE8>RNfwW1oL5|@}dhBP?B>)r(}s-K|U56|Ucb|7b-%L(%fRPzgJ1zj=N zq@yT0UPO8KT+cfoV@AqiqA-syA`E>;hS?05vv}%WRDGwzIG4U-o-tQjuF-Z7*N>FV zOJZeY4u(W{{e6*5eNX7v{RP*HWcE0(b`Gcn-tSRL+Yaf$m%u9x6> zDf>!}u~Kd#F|G;sUT}%)Dhx~^FX;qVEcca8pxV9U3R@3k%}do+a*ve-AThOtv^L!P zzD)EkV%&Mj4Z!}&B79$QdX0fJctw512f0~DGJS!}#;3`zxUUo$D;oiYd#nrB9U$M= zutKl7P9%>_Va7U%|C{S%6!=HHroK{Wf=ge~ej|0&Sn0N=#cB&<-T$VD^c$&55or-X z`;F9VK(4-~HJVudjnrIkEFves{ud|lfBcP9O`vU@6zFKIZ79aZUS@%@NUi=G7B~UO zxHq&^-v)`X@qwNnP`c3FzN5O!8HQ%={rtu5|9b+sKHG_ zZbTepP6l!WpZ34w2DfpXY;Y9rv5Y zgRyRwZrF|~638puebeQ(NU;f&LS<2;HZMX=XAwc}I`n3S6lMr^V+a_-41GHaaUfkD zR1MhC)2YpsbhYo{__>#%1dcG_bM*ry@Eiz;zzyfxe=slwgSNT1odM^!E8P!8Zj$hbs(jNON zF~pg!^`A`X7Wm2;{7L5E@rK}9nS)pG*fRqe@BWYRxiIaQ7HKRBm@>+l#MhaV2v2eb zFU=g>ZnQIaU#4LDn6b{_ET2r5Z}^xLrf#C{4KuC2CiI)A)6t8jzUP~$zXAF6J>NuC zgmx1Z$ocnt6P3E~yZ3w(wE~E80PQAfb0AFt_MdyW+0XxXH&OkkKJXE7U#J;JoPNnO zh+b3LhoCW#l?1SE0kIs&Qh@I&5Y`3wa~9NTfG0)tK8Y{3EBNyspI(!e!@h9S()Qe- zLaqfS_!*3QI|3%2iMg6nq12NcY6-@xPhQwyGikqHRk-N<*T7Q^3%Jw;s-ddkUgzfK}uH*s`t01SPLklmPhU1W_(oFABeWAnH$Lq6mn@NlcUhad0{l zRX}u-L==dSDLSET-q)Nc{pdt$LLH)VCg0@E`$8XC#YX^b^S&LBW&lrO(>CvSg4znu zHt%IJITR-U(dK=xo4k4d68z6U(iY5_ZS+mHcZ%?s zSk6-EiY9bkF3M}_E#rb^p#oM>0H7^cN@lad-1jzXfHkH7%@*?2MpXqO&CTyH=+^-; z6yLi7{BJz<5r3*&IGRH4uqcb^4&**Ukd^+lFK8950M?J5`H0m(mJ^W!L9T6>#oCfPnC*fkRnOD9M_~Gufg;Z;7K9+#lVlII>&f>MJD)Sp#0@3dmh${?*^)0 zw4%0L?Hk#a9nBzaN|bk-e~oRqXc2VLBHWfGvsq#CpKQx@!CJeB)|LmO`Nkp5F?WT? zJ!~~u%Z2*Iipi?PQc32#D6jYb@@i6F#O(>tT;!RGPc%2ICM`$!Vu0o%OCFN}W0l|{ zXZ*`9ays}glU|P5Q;aUMw*0z7l|dlnc>EaU)$^|0Nh)d;rlKrshsyqrEM&#sWm(n0 zA6=AWjW^0FKKdKE=;89qP+B9hO_C}|O!c5mQC@%ESHXD&plzyq7DG7$Jc(D^SuY2wOfju(kWvLE$y_E= zYQIN$CEVlI+yq>WDK3R*T73a(P%+kOK9G4@LfZa+aix|MZ=m2KPhwNeRQ8I z?>q3%qQo6%jFsm<35Ij15|u%sBBCv=|3m4{A^S^zwj9lNcL-nBfm#8uoui~mSVcB~evD0t3~T|BZTDKrJm9Vp1D>c7+*QU+ zl3gXCg`ukqL--dZxCF+je2>eb1PVOh68IJTDJ7@`22XbBDx}X`B`2BmX}8z1N9uDC zan4A67Ad||qdpZ%T1Bantj{8)#iA_qSta!u0sgN5!rtAWPcG-r&Ra;aO-f(}DHgxi zqA9f)5f_zYrM4;_M@xfJhY@~2Dz#Oqvem7rYVZI4$4Z$>S%pU_QtIFo7p3$gP~2cn zOqaD6*OIPkMO(gkXlyWLkV1)4++ex``K%N-m_{*l4`X_)HY>UtxMCTS~0B*YRy6T%rdN&rUW>AHf5fH!6_^H>zqJj70db@~qETrN!7R^tmJT`2+l0 zG<^8}%tv0h6T)tj|iN#mX%78Ty#@X#xIb z6-b}oUG*W~&pb`_k~YxiO_b-DC+zzTN1P!5PYThT&_6)^T7jL=V$-CC5;HoX{!h5! z6s%|!`6_b5X$_=lMQ%7Nfcyf`AE~H3Qzj>|f-*Tcq`jq5ZxG=XK=(yMXBvFb*qJWA zsCL-bo_CsyBg!X$X~q|$avnoDe;1Xz*i)YI6$`YA!ht;F>jb0?z?0at8Q%d=y8?N} zCzHu$NRai$jPKnOo=@biWEJ*GG~;W^Y`LErr=$aCy3F~g33O2@Cy|08+H=}db~7T8 zQfMV^29nRLFk>@FddkgUAo%-}29B%7W}vy`Urv+r#1s-`j`qIy)aa7WMZE7Su}dzQ zJrySZNtb*(ShrTvT=JFh!qbsv?dQnxDx*ujMzx=qwvcI$_L}gFd%|_ZO|Qf~!9Gi7 zFS)I;Csf9a7oZ(}k~|n~+Ukd&zI?{nt^uBy%9QQUS()7M{i=vFNQZ!EuNTj_hT|~?6aJ1 z`#^oia-qgj$$5vD)W4wAa%IMf5+yOUBUU8Z^Zj!<-$oL}s>t~^ka|_*d>csLD$<1(PB(=#FBa|D^95`EE11?+ zVa+99Hify&e_pWW|APNECGIdAHP=KHRicteRPkufGg6d)5X1zrsG>?#(JVwAkfJ^X zf88Jw_3B%9QMHt)6cY7Gv}epq7L|x7y``vHN>r^ZL{)ytqLzbysU|AJMHKmYJ(Z|* z5)~6|$@$vo=N(79!$Iul`2<^qS1|i|b%E3jWE6=y*D!GBgm>lJu z_L{qLM=-SyqqY0?Jl~!OYD^gS=kq{LhiUU|O6Vu$xJyhO-=7iXUHA2_*A#Ae->%*Kn@M6z5EXwEZ?p-@wd3_`Pr*3R09JY3=o) zV9Xn?y;2dF`$SOf&2cl&+65fFCQ@d~5|Nmy2}^XIV{f=78X=tqlvcip&{A~p5T$4V zbt;HK_?#HQHL+c}HGv)I*_CLA|68t!)!qwd745x3COQr=#zb;WtOBwulGD2lseJF`L+JtTRPHw_Ff_TbI`!oTU*bSylqRH=gqbNyj6gAfdQb^dmYNY>qwJ zDsn_~OFf}x`!OB$mRjyTmq|zPw2RgjAl&Bq&ij5cB%4U=NUuahoBooj{D7#lqgj<( zN|h9&Dz_1SJ({cPmQv+b7E2I&q*{)uR`GFFQfsd3x`^Sv-&-Xvoz!X*ZAwJr*VL+u zs5PsyTG=M631EUjt_?N6DMcUuQjz+PF8L@#CgO< zn{s%tTIq;-3839yi%=#;Vs)fQsbcY6(f|nabivt-%1s$fj_z$HS!+GnFg{y zCd+{}k#uVuZJIB2`y6pPSK}hvsfui&vB>@(zRm+Ys-o-Tv)Rp-Y#M<;=u1;j!O#>? zQYh*xB0)L=hLTW)(5s@(Lhlfo0t$qV6#4$=?wQ$}&GPX)vz&A1 z%*=1fotZm#<|YaLvm{TdDyUQsMK;#JJQrYpPUHD8`@niZ@uU+^R8`|=Ud;0zVctld ztBOao)bUh~K(`*jJXaOPRS!G`y_lyf?7Kt|&%fEr=kaLSCPQ1&S)Z!L?UH92!c2}} zo)?NITF-L|{>LTH3q|q51J5eS;}eO_Fp_vmWG^2db>}4zPra(fAB@aX7GX+9GEcx5 z$&;q%=?MR}k<1gIIuw`W;;Cw6o&~UWVX~^4%Xg5;b^Q>R zF%!;u2+EaOX0a5`dJamCA2H>t4doV;V|CCM!{y3c>U`Ip>)ld*iSDz^`4T->o@LHs z0J(~5!mD_DSqQnpG%YjUS_{I|D6{AbXKf56qb}MJoHYi@g`dn~A)K`vl-v!>;$eL# z1EFkbXclYXtYe^*Xk-=z;jGi4On@+ol*Q!J7{dUZbv=}vP0ZpwDQQsNLwNvaJqG1| zQ+lR_atX?bW@fPn&iWUWmn|^EhYNfL<2;d)DcQ(UZ-Srl%?Z;D$(_@xysI=gR1H2t@zP4wj|lXA8(ygz2VoeTh0L^-D(@Jx zc-Ka*R83Jspo)-l@>goeQVZuK7Gc`N&`MPUHrsA7$kEi%XNL0{uTzyrC-SR`ErakD zRSmx4he~J)FLNFIOh9C#V(7IRls6C_#LxpLF~;D^#8^xs;e3Kn5Hc=R#&LUWHLQp& zlwLFx!;ifxEg$4)hTO%ggrj2U6FGbQTKgaq{ou6?5pIMt{|Y6rty!4b(#s5(*+<}t zbuxZt;L^mlTsSf=qb^oP@Jb8WXXV0q3;Wk?%?xmLni_Bj;7zKdx&$cJ4mH}20a`<7 z(vBwZFtZZC8EB{A>;$4!vW&|pk|-`qnty*ASMnPezHG;p{8f9iDBGSYIfg4a8QOBV zB7bufoos5Wfn(BQeSHPYgZ)cIEhYKaAPlxNn{_ozL=?bClwk>Ex4eyq)Hn_!kdiuVSO2 zIp@D3Xc1RZ_h01Jb8Q6;W00Y&Y?mF9BzFdtX!|{mV_DkeQY5^%1Gmd#5RP=9b{WI% z@)@*DxEx)f#3#u{;fO_CefJbfp}2;?%R*PIVcE*v~4M0GPZiD9<#^0klmnr zsoo!^eLKpR>Ja93q=uD%a+#u%i>BmS?Xi7L$<2e8nSO4;@;aP(HI#y#Fo<`e)&*Pp zHe9hD#7`q!st0F13uO|7v2a>PHYdsLCYzL6V2Pbucm}Mlb)wBRbU!X}H=UhoJ7dp& zKl*Ig?I$)Txn(&iHK?dB;yndV?_bTr2xs00&3-3)t4qv>s?aS_LaYZ|J*H7 zY2Ae%fTf+cNQ-qo0GIaX`R+W}%@*S6NePzxTk-vhQa3^hQTF>%Af87QN$AlV0)tzphmu2{)7gvQ7Wh|j> zX*Wn!`_2FZZ{tFmt>S12tu4PnTL^7d9KS&eOOzdyl+>LwYFA*r0G>OTx}qGq@=8qv zgeqOR)0hBZbXU2J>+w7pT|`^wHm;=-K5HwHE&&{q%FbKLx{Q*D&$8@Mw0+CHwTKj9+ZB#+^ZWe!F5&9r4#J_s>LT$ z6to1l4mQc%#CJlWt10C4@3PFu?TSr^_iSThT;& zsA_@u7uVIysj^PvI_T=EGyFUB z;@r$sd6?-TH#cQ&7Q=p_mYdo7PTR?|L-8aL&u3wl!MT{{7{VNqJi8T7x}L|<8`Fp0 z%(Gij?DoLZEtgz$gMHQB#4{;7&uzscI)bNkm?cNBTy#U2R=t_$p5h7Zs9$u0|18OK zPf^_Sz~dDx7u{fgPU9JsooDn6*|MUECp65mO7gr%m^Zz7fwIDU$s;9sveUHy*T*cr z?89u*%BYiEY;z=A3)na7qqW5O+1TdJkY$xXY-PhNRdX}j?+7!v50}-#8ImncUskE` z-zIsajZr7Lc*^8vo|mwHuJH_>myKt?;>jeQa$%NZlBZB#v&h$%d5$O^M<*RmWBAwa z%REOE#SsrYJ0(v7?8o)h+EP{?8hMM)R1cy^$MAia?LZzLc~cN(eP4R^?8H-m=g=PX zY`m(=S zRO~M|(d1sBn+cR&kaZ?NE9gOA&dfRya4xIUTr67Ud=TaQhp^o3LU=CL0tqzj&rhwh zAWVj{keN0o^BRCh%>FzllhJtTB4lpN$*PC&vq>FCu%)DL2Kz$f*Z}*LMBrGaZwA_=XzENkoz0}A zehTv|n^!+6I*o8A2k@jw8e5bk|H(Whwc6Lq{w&&$+{|1}>zfrbh z7iDSv6!%3{#1RN*XdPy+nvaWkA;Kj6#zlNl74bz6MO-o;r*#GPmnf~EOS&SKZL!Ec z4jY@#Rr4M<(NtdKdU}fge>TxPP*`z<9}{MKF7b_MRPQCev@wEpZ013jJ%~5iT!nCc5Si_>ko{~PvyNtXS}CR5K+VyIaZ87g=5DT4hTST;(Q z=CJ>HD0N12bS$ndBhGeGYPPI2M^`}g4zoOW=-bI~#4ub=a2ATic}fG?vSHj##P1j}hjBakTqPOT)!9zc3v<0xf!!Csb6HfFEz2UQtFA08 zU1NM*&DU+3#*NX~w%X{%ys>TDX>J;|v3X~MXmRk>(*^IJRg7AFQ6IyiJZF`zuAWc)7R+-`I=iRb7icw~pd&?NU zDQNJom)=hkl~IFgt$%Wo*Xe9(RFoj2s{5_N!bn+6%d#;eaiNVRE=4{}febTIf@}A~ zZwfkTTjJvLcox#^t8Cy5X}P6;ZtL$Fj2|PCgD~lE^m>x+xIeyLr>TG~CTNUYjlZnw ztnL!iTS6oT`Bf>#w$fs)q4pm|Qe5atVA3Uwd{9mEd(eyrrJ8~fyW?V=QLzJ-u?*S^ z2Ia5{n!bt*DVZyIVQ~rO?CI<{SQ75-uZY6DO}Sy`aB`y)RKE{`DHeJzgvaH zE1e{`2$7?#!NR|oQ8HKyBkZ~bXM|L1yG2oiPr?Zq?~OIwSJGejJ zxwDEteJ=isLj0`Qk03T9oC=yng!eIDN3}hbsu?jhI8(v?8 z#rQ62=h~m@19q_^O(#`mf6KQ*L_s~3)hnwqgN#$yOyM15iEnv4;o+pC1Qi(-`4L_f zpW^8JOpN+%u%OKPHJ0@jMep&rPEp5w`I$UBT&e?(+?i#sC(bQ_ubgsgA$Z`KOI8y| zG>EeiD!VMNX$8N;8R?{iq2a}3lpKQF4uem3B0=ov^B6KxO?+}3mBU^;J{Y#U#C~7a z9VX-)glQzP9*tK<;&+GNqq&Nuo=$87{Sr^5&J{R220e!qdW(8;Zlg(NuetPOHfW~Z zEI}SToC8}WG$c63___azw&Q1g1aIxP-!#EmKY$w^)hYamf4E9w87q@e9@t+X(PkTR z)-OvtMwB{NY|#6J!L=2uwc0eH97>$I>JS@TMlj1jynLL(XD~vS3rFjh&0K> zq_4yz2DLNNSrAnlR9=Rh0NiI8rEUu4Xp9nF;`TYa(_;Xrx;1~+p0ox)qrCki`+VY; zozM`dAr;KK*#S(*G|VFC^IkC=?p6xEc_>pKAOo#%6|^_>5tNvC3;1t)UP%$;$va7u^$Qo!F!{S_+V?_z8Z z2SsMn0TsmCH4)T0YQUNgZY_4gJ9rpnk`NfOt~tY9iVvok z2`g9nXbSEZqfch!JH*IC*?b5l$KI(#TUU2O07`@Oydcxz)m+xJxqO43_dZkmsd?4- z@q;{@DeS^z@dK>?+M?}yIY5Wkh%{H41@~kT?}u0zEtjz#4u0r%MLE7|mSpvS#W$ur zU)b~j_^*#`te#YGdIZHvJ5zB|@t57v%`?!Z~?jHqd@dtP*=-FEYqw7EM@j z$S4sqay1v}i}nDqYIWN#J2Y2v;&oWXg*JL{U2As2?tVP1U57)reC85J`D5`HZ-w5+ zZT2%&Ox%(8yGv!@kLu7&G8&#r?TLLaloyN9n0Ug3b$eoGpGTMRN1lbOl$^Hmp*8v- zNJ2dGWR?J0+|eov*kg@sv?I=?P~1EG{A^%>q0n#w zaKTpKytD=0jw>a4V4$0C$v(2n{AY$tZThNSF{)xA@n5vY0_L=eo3&=xjR9_?!oHU^ zM5jS>f=O2GK9IG?&_;0#ZRrYbvYyfEC`>jF&LlBW+DI{h4`Db_t4}$^bZ?42{u5bP z&|q;ioK7tUAs)od4Mrby4x8A~8^+uI-_t+^CQvP7bkyFWxlt+;NlQ|(kd#IpG-wnOj(()U_5`R*2$T;e7_q;vD>OL zKr7C-UoA5E*{H?+M|3hO=}NqnFFPF97~v^=rpb)$yo&S09Zw~V`s(zN)P898m;LD@ zP7iXavxNFk+2NNpR+IRvm2_Uxy9J)B>Hur`D5&PWTC_Ky%Z?GkY)IuVOZoMrBnK%& z-_Sv#$QrKmZ>7GWBD_J~M*W^~1KjhBYciQ!VHPo&MfA4x5VMc^RwP`eOk5GoNehH3 zljNVmq)SPP6#L}~D#u+#C!hw+d`Wk2=y<83WS1t z;G#5ybEG>ZT=Wn&hl9>6XT`tz^Ef`N+16)SnvL?hY_GaOMuFgwSrA*6YKYb-4R$lr zUOXc7w`*V^TX+TywzHhUXfPIzXk+MxRrmoV6j(xr)%SNzk?>#Q9>`6B`J@wF2I+5h zt0t{l19=+wY_E0hjX|1do;`|xQ&ac|ha{LND_+IWBWUN0R z?Le!bUc(MA{q2wgQQ8ErON{pTM>RX9G{GH$7ChAjmp_O^?$}-tu_zm+-~t%vBV!sa z8&*^kzM1G^aHK%5>%UomB~XI)56`V8MS-3(NYR%gOEnqRh&`Q(KU0A|-T$ZgM+XRc zbA8N9*$9oMM6g8hK;{(~xTQ0iJAvcjBlOiZQ`Pc~>ORlu;;1$7E(>|b#}%;_sME-@ z3~MxkA_RIs0SDgyquOVPJdzXTN9p1+izRC*!4gr_a*QZVr~+qS9g5$Lbx;MC|D1&d)Mt zws-+af-4`>TQzYm0^qB6;i5fl1?Qi`wy5vfUl=TO*Z6|7P4vdcQ1d*6_EyZnDl7}rcKH(IIMPUpV`1eemWwR z)=e{7pMlfV=j~N%+J(pE%EqV$3310hlwh1Z061RKo25&egY!{_@=-c{vJz*syp_c>U1D2HpZ>^|an180101xerVh-k;{aIs*gbX> zJ;^s@%B?KGJnSs+&4}u1&(2XNaSd%#@X_X3YWZ#UtDY%7Mt><*9&KOs#YS|Ghg5NJ zjN9Es3@cQ3F@J5e11&0oLJt2zk7&0h4Cha+xii0@FDl%q2|DJSp>v9NV8HpK(rs^0W{gGwmKZQ7C`tQmohhAhZBqK{uyio6f#?=Bacu^Mu7 zYutdFB-}dgid2OBqaO8@TMe-Lll62VjxPcNOFv1v>%2MRP^Yshj{mMR@}BN@^AscQ zXM1jf3Ief0H@bP?o;jX(7n^y8{uyrt@j&KaWPZD|KDi4*tMVJ-?4nK#4I6pY+kdZ3 zfV;6cHr2Hp@8E;XWkhdC3n2Bx!!^eFqms`Er<%QvC%nMb8aaxqJ7d97=!$|sVeRd$ zhqkNc;zYu9i&M5Z7`38qcp>|Q=|8)VLI0Xxhc3)Y?N+#+F!kk7axRIsF!hT_2?1gX zlO4wjpx5(iEivLfO#L)cM!`{;<^A~8(qGEff0SZ%$G=Bq!wHfrfXpac-0o^r?BIsL z+Txzcb%7iz#~+?tfG)E&RS<1#77CX*GMD9k>(eYJH^jrvzptOd3p})6td+dcI&>2_ z{12yi?a_+_C1yLt;Wy%MD^eIs$F-m3_{x_OS8_(v53~(c-{>1EDI2-C?Qe*5Bd__< z?mD_cKMgl<)*bk@e70&bfZu+Ui3)uyZ=28nD}W^0#fzWJwdldwt9?KL ztghu4k$s+@4w?1Cmr?B0HEmh$eQUh#K^%CO}PHE2iK^J z`sTJV%9Rrl$a?f;49&>cJCH##hbVwyr|p{_v?Lj1DCLl4D0S0Fo(qYE+XjVp6Rorx zX5vr?uU7_mgu|Y7KP?Yi|HrP(RRE70u{-3Wp!Ek?ATcVyRt6moyV{MFkeXfToC(iV z5;_TF37So3{j(?{#Ad9W_s>}OFnFg2$3re%@Yyn5`=!@~7LRHR%n&RT3dZd{rkjT8 zbj)6Pi`|B5z*Xp7;jRKQTAP%Gxip6`%Z~onLS`(MMDkaEhVRkV(s!T}*ah<9Zs6!U zB&rIrmy?P{bGPW2>v7OhGq;T6yG9quWBL-|r-zDW{tWlf!zmB{%yuRyZ%E&gr-JVO z-nivnKa3Fa%V-y{wW6xl0-pKSqF=BiyMFb#?cS<}HFFQsPn-C6HT+aZXRt6uO zK2YL7izU1q1kq6|y@(aD{}$=b#3)pO7G%6<#o&N6vA{0v-r14n--w&Jk0kQxkk0DjS!t~bdm78)s{TMi(|(n=kM3AYX%h;zP1V}$YFCGkxW?n;J520?vsYK zD}ge#>Oelt(8Be)F*K<|I%!F7;W7#=7cY_@sdvSDcSC}s+v{dR_nuDp>l1A-THIU` zgHg2Ot*VTH6zSBPcfBMaxxJQfbER$aF)_)jtqC;C%Wob|2lu=G0%d^Sp7t}9ofv`_ z_}%IY4()?B@bhH4ZG#y>yBJTCGFRNwkz?$p~cY3R_>umA%!KzS$pay&Y_k7*#UiJ z8L?}%!w;LGxFcYnNi8iY;|O?SjhSA&q|ymVX*0zJWa2I zC$>zz;!*jC_HwWHku|&av(w9FD`e?y@IGa;RI9a!l5pG2hUMYgR>O>eSXZk#Sa=6f zyHtmKxIu(ES|Hu0})at)7o}!DyFjaZKCI5E05tI(2%N! zb8hF201)2wR8Fyr2V!d_(dk;GmsKjt*>a-!BHyQJ1$$o0+Q4ml2({w^ak z2dZSql-W<>em&}ZTR%QMb z3ZkA6N0}Ri(d`5yoOdAcv-A*$6y*B5Exp-bo*e^Kpp5h7%xkE}ug-QI*vlKpIE4Yn zuTayiM+)6%Bnfn{3xCe)$_VukXw z?-m}WJwiDI0ArsjJ}9?GS1)~)f9!$Z{a%zdN?{klJJe@V3;}E#3houwGte-gBHuz| zN8`d}25$byf(5iXh$Yu?S*h6*LU=Moo}Z~9JbSbvbcY?e>}>+5(zo_0;u$&s+Q?wm zBOFv|JT&IjIG3nKEHx;`A$}^(eUN%q&hYw=@P7@v>3J4m_Ty}nRLAL}d?Nf#YI8in z$MCnX3D=6lk6RZjBls6PRdg7ZptNr^m}HbIg?&*@0EAZP(wEva0b=mhIg=PWbzd~Gf5-OgmvGM`zIX*%RDp- zKZ?8yE3yz>bmJe^+=f3n?mR(xa<1l#ks(G``St#ISy2#SIbeg}?1EDE{~@Ubvt<3& zJffT8AYnlwCjt8aJR!H&ui1mvZk|z+sX9HUyZA$A#|o|n?jYC+_i+4cO?tBU_=bLs z>Z+F_LW+h#yx-uP28llsy7ZIP4wp0u!#7M?GJUt*#W&V!=mCusEA7?j8olsei0I?N z|5+ySge>v0fv+e`L)!M(IYc$%BSz8Rou66%J+mF_>*z+izOS<#O9du~J(O(L&qd7_m)8fhxTt1O&^eLlA9PDWH z(JB2&TF`xVyNpu**O$#sMy;2LAL~vB$cJ;67dkg-Q`dex%{@RTPlx>>%F=CjOtsG& zppcjzk5vTTAurkjpf19%g{0p(dF#u@j2jU#vj4g;#3|!*5@2CYPli)7Fo-FM5!@Z`w#1Ep&%5r&|hGSx-OSdOt=E@!n(1IgkczeEqm=RQ>)W zu-d7%x;ADlns*nBMXox9e%9#B;cg=~c_olHr+W8YFn|}MzK6+n`1*x6Fm6eoD6+S9=g#n0X1Naq62d;gR#R$Kb+x zgMQ!q7xP0RV~0Ncb*zc8zRPDsaHdtgz%)%&UHOob>f=sV>n;En`d;czN$JVdEdYkt zaO+V>V30nnlo*6xZ877Ms8Q4P#V6BP)WoHHp!K-A`n~e^RAN|XtMpkff@_09<<;51=h)n(5+093C|jy zzh#osbX#7DYOkbqh6|TW)B|=roI5Ev+a#^o4rIRP#Kxt%S0UezppV7Ap^~+G_g{`h}yH$ja{J;Z%nmG>N3sFyoA0WAA>q322#wG7~{*tmoyW=yXOYt zE_E-TpZ8K`oXc!y8+11hdRrc9J2)l-iehUeA8a|Z9DNG-Hp_{E$A6CV&_?w%o#I1A zo%; zahiC_fERb^m9&fqY!dol5-q5>i@XMMS;kELs2Unnx2MKcP1MQR=Y^G~!ME8zQd_nN7E z_~dZMx?-t$tg5OcHGV<6;w)m!Bs9^4!60sgJY}L6_%0rrkh>*)IZ;snEZ?v&kG;lQ z6$~1CdLC$6$(6`8-5UDZ@G=$j5yzD*4cT!H-x`{@zVY*Iu($#$|99?T&IWm?_xKd_ zUo$>S-6&svk%xk8JC0Bcx!@SdOJ_EO(HMtC(QNQEH}5+)i7U09nH$PAD2g*J=w7}_6I+?g0GTrzaXsR@-%|Uh>216x zg;(&yXfi;Vf!`vn$^=7fJdJSrzj>iGumxo4UkIQfPuLdaAt>4=tn)=naC}l=fJHjhJj#qmFKQTN+7R2!l_!Bs zO+X}PfRJVUw~p35>Ner;hXG=G@tMf)hgD5L2SsF$o~M(hinXY;8?A*bA31&#lZMRL z0ix7k5)C=N$mCWE+dSTb{Y?k-uCjRm>ibrt7TB}r`r>16u3Z4UcmnzyEZM<>*B630 zX04kZ4@nMVxi31zl;g#e9GDr`7kj6VXJ?3M2J6mBx~k%v$)yZo*cS#@>ONEo*nQ%t z?)TBBO|!@Z-Kp1)4oPe^!c3&dj+m8Wl(l$y*DRf{pm(5;TNh z=$hnY-5P+f=<$nzc))evW5pw`D4>fx3^&>0_f}|X<@O`Yn;^kQBR3|lodj<+)T6N5 z2QeKU|EPonfqn=T-iufx?P`7>Vm)cKB6ox*{QyqxSo2+ELC~;WLNvFYB(tjw>`Cn7jCm2MSI4 ziR{Di=|&`f#Wadg*#o#=iDD{ot)5^P9+$)**5ME+-RdrAWFy(e3sLtxECk_O?)bcNWxZV~ulmXh0xE zL|Y3hL@WT$!Z@?$;}i0ck%smKRr;g8RSuW=Q!ja7#|~Y8t#|r^XC~T*DG7*z&!dX+ z5D-s}{-BwaYyqdPdpkP{xUKl>Z1t5& zgY@j`6D^yf0ICSEORGgVC3Bjbx>E~I1Yyt&{XLEyRyxWs9OREQcc>^ZW{2M8Sl_4k zd48klSU$7DK4=PjUDn3);+2-#t77(shVIzH(7`jBH9&sVY2|>DCRB`MLB?@9w#jU{ zeC5bOk#{*IK3MRmVJ)Stac1@+%Gmu)9xK$erbe$$XX;@_QG@$uJ`c-Llum!~!DkD< zDmSsHoYmwia&mftZZADj*MJX-S%1UlrChYVa3wD`;)jFj$nkTkp0~jM`RK7Sx%APd(oSMx z1jtsfhI+Xz44jK?t|fxgsseKc98wQ$>Q!T=VkHI2tf+zrMQ3Y z`DAFU#_lSsfTP~kQFUhGTO*P=F1Qa=vWkndIB^N(cv z9IOnawb%L)vVtsvA|qq5i-9&!7aufPrBZQ>-og146#GA}*E(t1dXeO;PAjA}3RTxX zHHXt6^eB{%fh_{IKJ=9PqT8xG5;2=#_~$2m0Lc+j-kKxM)#M)KbLs`^_Hy`Il!Dlu{?1(qKt;bZ4Yc8j1u= zZ)EcMRqZmq<=y9=~RkrR~WEyf=Qd zr}{rQrUl+@s7ZH53nYvp1+Sv1!9{YXiIutJA=Ksh@H(y^oG22C1L&0e+UvPMN2*5^ z1NncdN}~&5Q={~H?lOEXcQy2XzDQdO2XI&@vA*Zf(oopRN@Fye)(@IWbo+pm>`0w$ zBr9(Zs#UdOtiUS<=>3JSjhzi-2VuFo8&l(yx$&+r#2TaI#+&IZ#LBx&G3mYg9nV8* zs0+F*60}2B#HqDE%HK%Tg2M-!T1ilkVZwF9*0wk&C@-tm;I;W1vw8RgILld7 z?0VUv?<~YM5pVXT(?VlZ!dV#^D}GrSrp_6l$dVWtK83&* zdfL|i>#$jgSS%n(7SYd6k`l814oljXq)1O;+85pUGpp>U%#R?qm4oJpmS9QJn%{udjAM?<79@RV^htKlHqgi7AneAye z8c$|P6P!P=MDy3WvwdkG;C5K_l;`hG0MY%4mmz-$YyW${rXE@?Q+mCQQLXj9GCh5~ zs_*2ddP%C>+JE%G=!G+`rc=xh$4jqT2?>2umh$XO656>0uKzaPq|y|*bJ9+nO}_o{ z&SP_&Ou&0@Tm+R}g!Gh2TaxC0k#8-f5mkW)EstG5fLGz;<} z&^^3;zizY9;=&?#G^|H+ixiM+Tk$h3Z1VHU;+OKygP@{o4?fwG`P-j3dj^bS&@bX0 zS+Lv>>^CjHikWt7I+gFKFL6x`tUTwgo@b#&tagpCi+?c=yEuREyqo zwJU<;8xPV@+sUw|?JI!>7QF>?xv_)>8(CvLtTyyptop$kT?!LpJ$UbboKd=!mEQv6 zs%ph;pGL`L%>jAA34H*}aWLla`tAgzJB3hD;JKSTtUEnOWQ>UYwyj}+*`&}T~2E7N+x9(Fu%V!q4mdzMEYU|xYb$B*%U=k5`yv2kq(v-o(bE* z2nK%h*#@0=K)WF3`#f>*pPIP8B*Hq@+ZK1ix5eVIJ4^cnVg-}L`WZ&6C?8pJhkwA+ zVWp4C@;mNQ)ebn~oFeUpQKja3{F{G7# z3v#0y@}F?#spAjUg#K0|{E@(N*UjP^&t?ewZ0Gibm+mXPD3W)dyvkmM@MV#aeP4K( zA#x2VWs7|X-w;Xk4QGuo} z>Uo9vt=kjkc}^90W^YZN6oCKb77$kvC9q0iB17Fe7t3>M z-cR5M+B#-ilZQ{+EFZ#vR0#|h34G))`0zwFUz|y|7FIjxW?hgkoK!T}URsI-|C?0; zhjGPU7?U&Ia9P&z;zxjd${=o(r?TX(u{BYtDNRxJoz#I-U!{Jw-2NI;-MTMMBg#Rx zqhM+NiXiEQ4BjJXELoSz(qMM zgH6x<-yuXq*~+)+Yj?4_ABOl>X~&IxdctnyI!&y7QHr;W7C@Yxi?4 zha=QH&kR5>mdE8nDj`KP;(=F8`%04s4hCOaOiFaTiz4BSLQS%g5TwNecWd;nB0Ahf zq);a&S2w6XTcZ-jPwvm9)l_mPIk<-0RAT?9x}NOzB)q9)&mmy49Gy!IFEWW)L_;OR zbhmH`>@4VC(Q#*M}uUrA&bQ`AL}BrI1o+Zw2sqZxgh=udSO`sx7&i-Ae_ z;B4~c5^d`b;)~%$+$yFM6MRg4mLJdkd(H82(dIpACB`4i5*ynEpLmNq2}wpu4`o*Xfk;L`ZP=ACa8#JncbeePMZRQNf_+Z1+^X7ul*JFCxUm%`qcRt=d@wmnG9ol8-g zpHc~g6T zzg|emhVEDB-LHp#`_8N6~I7opz- z$SNKa#A>?qLG@AybI}53uzum{8A>GkT*|JL*w?n1#Ifc*>`@KRj^)U|s zI2ENYGZ4=;gRtBsmhK0!IMA<1Qa;{x^|*F&jS(!F`s$EqZN;#jXtOG*)5Jj!p+a17 zxJ&c8E>do`h{syiHv2_elY1gnm_(Mr5+C>j#@aG3Zo@!e&e_g3}M+Vh>NmLI{OzrBM zPcgx#9Fjh}oZT$#qY~Q4&TBP}ABX{kuQ{-|OmBhbHG-sT#gy#mD~6TkvhX{)nulQ|X5u3vhlw~! zrBwV$)*jqdpLx|M?yju+qg@<{eFD{FWyX83)qqY6t{&V_?-Wc;ewD@6P0pmAm?N?N z*CtkhJ~at)p?vp!!YBNvuTI`mVK&7A0mbV7f|gti)1-1& zc1z7~P_|a6x@mK;_w6UhJY4b*UEB%Y@G7|7|7S>@5f80kTSg8P&VgIB?Bn_ONwWv8 zuu}rCb;r16jJ?CNH!JXL_Q7q`Wi~sizncL6<4qeOqsB$T-_3KD%MY2b1mDDuq^$QM^awm5$Q+66522;D&{XE zpqC$wOx+ZE;6@M&x!tKBx)*e7Sf8etF!weFZ5yd;SPlxDd7)mTGwKo%_p}pjp9xbp z`p7h2S$BQ2T6WH?fR3|#=Gyn*SIFNPzk_M#c6vqXKb@=`-@YDhJNFoJ!jDUlq%0#C z*)Yn%!Uwc--y<$@a1(foR(+AAi0+b?q@;cd(r>EA4c?HwL2ipeTk6@(Jy#kc)t8>~ z6@^Hx=Su%RkT*}Pvd`* z&Jmv$Wd)xvOsJqcRAOE#w`sCDgJtLNCB4%w^$T@9u%X&`G&~C|`Z;z}S_lLq#{BjV z3>Swp%H;ptJYu4|1{W=bUr$VtKx}`&j1XYg2mLd}r+4;kgJ3WB87?Z))t?dSoITtA z`%E3}uV#?gvf?xErei;gv{PBpqEFdyJY;j=Lo`dM?lbtI4Wt-V!hGVc=KW!5o~%-;Q5c?KJ*_FNg=K8l0#cV_;j*$o1n{cJ|>kx!LQ$TXNvy?fjhg zTH}FhKDK6s)<1R8JcF*Fb2^cv`o|f>{&WOXY!6g6$`mh8M=lTmHv}`~c0Ha*mhEG=1vqZ)f=7Jl>E~N!tDF)~LT>_7&MHe$M9kYLrpG;}EC@RLd5) zVgB>_eADTp3D16rxcoLUr_*Q2twKyI`a`=&8=L)1-k%HUMFr@IHcZUts zouI}!iNdzq)xN9-{=*%HoLA(Mr(5xZHIiv{e{&QFBXBN>d9%NI ztU>VQo;FaNg0?kgPd~&1_mZYPz>b^Z9=S22NZq%?a}%HUWrH=4Xmpqu=UKVh$!l@upkNc=kSItu$Cd2aZLd)PRk+cA<9L+)>>h@{(3mZ7rA|oS(2WvPxyj(RX&Lb?r zT5&JKqyPtuYo(q=KDgoG=0cmO`E)2E=zU>A9FYa}b05m&nnclD^{2ckWBi~w&MPB% z&+G%Rb@zs&Na*nymY^{9p6sQzYA+p6M}9J4#W)QMpuik5 zxJ@uvE;=uS4{>eV**kz9X#?6_2B&cR&wcEvpJn?MR&fi{kPCjAp;Y63SmY-)uwk2M z!E3TP?voIsuq{p>lzBIG|6N4ACjTtJH}1?}MP}q(kiJNXV~Te#=_6Z;qXm~LGhK8(!W!L|)8FH&yd*V_wu%(Kw@-m9Yx^PFM=QF#!iVa9 z37LxhKq_MC0R`?2c-q7-i2Ou?^C{f`5@}s3b@hV;WW~90vnwJ+US#vESH+4z+!VRVE9vQT($RKJ=?&V*y#Fl zN4O<7Zab}COSfRfs1Y!J}VfNaPRm(o{t4?H| z;Mi!yyn<4eK7zV(u4|>Cv-^d1(mu-E%p4z+q#I*nDWmdTMu1OL-d|~p-A}hChA-Pr zr$45FbVaie8(rLWKS1|WOdPMRS5<03TLh!Uh}`k$o~CSNnE>-rLpkbQ%aK_=~at;=Ra}R z{pdZGvuCs0T~>0Jfy65K`&3=qNjfmjCQ?sxXfkfyy=WG3TRXp2pdSOfQ^tqGFdn|h z?q7Mu$=2La;>&oapf@rX$$yw|>f@PPC!{hM>h)q#zT78;N!&E+1bw4lF zuNV~pImfO5WJ47TrfWt;C#H+eX=UbnmVj3;?#%|Rfo%m6RN1#N#x7-r5m;O~LpnB` zG~EWlpw8eq_62>I#B8{l@*1RVUfAU_$GcyjJej(>jSSp~uvH-^Flq-8vLEr?_5GTK zGMSnIR&`MxVRS9B{0bN^7Qp|arpV$XvEFqh+H)c^H z1SjO{u=rj%oB@hiSRWUJ;Jr8filGl&`|VyLxi^XldgBA~s(HWC_|>+xSgi2Ae8Aql zq-Pf-Jtvc}XBRFGy%dWQXBR!Bs*6&w6S3Rt+!(%iz)0vHEZXaZJ^j#zbEwQTR9wAG zJiNx`RNql?T)3Q-pUF-VfdA=i#5w!u%C970r`E1Lnnekf-snQR`A}0OfDf~`pl9KN z^Q*LgSJ7nFzQGan^3T%24u7AY!h*Cc3$vtrD*My-wKNuypN*y0vb{6{7cJ6GwlKK` zd8kyk2i#d^9*j5=)sXz#A&*c$5x)AHL25C=c#HIDOUY2G*_#u5jFdzGFn3BZP7)Ky9bF#Mxaeu zzlhsmA)w|TG_dHGC!WcRK(fPvIc-6I+Cxx=vwC9XLUxN0=BA(%=6d!2;DXzGHP-d& z5C5<$=4y4bg|BN5MA#LqJ*^5_^)gL8fFz}Y z&cZ;xqJj>)jl!{)T9FZvS|3sQJ6hp&^(< z97K02Rzasa9DLF5JVTg)u3sHYA}}cx@Vjl306Y+2rtq)K`3qmN{};>%+A+#>);S?} zMY`l19KUYb0#awXv-OjcjZS|t!nZZbL=2-5g>WFeZ8xwgz=$h#K`SW2Ulaa$C5xn? zWD+y^{;IinfeaZR{kLwIOl36vQ^fVkriL=)?9hK3xX)e^Z}x;f*0vvMHTvBs=j zv{^Ys`IMX^!GtLuHjy)`P9Pv_!xqRshcNL}SW@Egdd+@(h;{s43Mam|UGnIs_mhoa zTtZ-J27tLF=;*V)ddvEKercfk`k!|QR`0#H+j+ucqqpip z28<{&g9dfOg12`+Q%sO<+e5Evw;9W0c*Na87X!XpJh?RgXP<4S@i|WH=#PO&&@E@|s#OL1t0xnAE*m6DZDggXsmebN5;;yE(*lM^tIt1hwZ72O6T!LPumkkj?%k&w@NhPu#RQc{@xK9H1h&l zG)Nd4EJlA!qBG!5We=nK$3``1?9}$`_yA-WYDM*Iz}sRND5%nr5Bf@Ry zb71JLh1roUtzc4u1qyS?qQnr_r-3g>>SH6yw@X?k9>mot>s0N)dYy8rs6zU7s~5){ z{iMy2MHO*jwHv>NHe}5S`xT^h$wg!De;N#=ZxxO&%Kk-YY4l4g-AsX1;yV~`*p+pl zXu2+d;*Yd;soG)Kk~*l`_F$Y!g8qd~MF8<7U|tW9g|78aG9HoL3IK-OI^zR* zR?(aP0La+wG5XdOQ|I#L_uEVbC<1cI{FA+&^CIvoYEhvl2!NRkb+81rk$h0t!18{X zd6S{Oo`E03>E(c8k6zq!K&9Hs6_=1!^2Wqjbw#HJRjnN8T{L?NZ9m`%<+&MrJ+~Ks z-5H>cv^JCqg<~Dqzq<2-&JYC>5A0145p~7w5)h~dfWpv1M`e2+!i|-xMF%(VjO&}G zsTKBM$`Qp*LS$ai4t81sTk(Kd0)LD~MA6!}rk`xecU1HzM@#dqtW#Hp#0%)X3B^7S z2A%jDcoFoa0rM!b+j$N0D5?zkjn`x0YIPtrGv!Q_m#iUH`f2Usg{z;}>Z9{bYPmC1 z5CA(6E3n@85m{3jnNP{EmgvKqkRCk|f%-$FEw?g`$;&0MbTPf4CeewJ%vuzn+o^zL zbgcw}%2$+*QjefM8tP0Lf?h~;liKiFMXr1oj7tEizV{mvEL~Qw;~=gqmPPGP=uF3; zzH}<4I#DRh-{?w`IF;f3mU}Y>NebfPYQh$-rfg7}a5+v8P z1@KFX{^DnSkNtx30S~HNAAEjQDS)rO&nifbli5(66|Uf9AuVo`=qXtyjWUzpg?z(W ztQZ>U1VE5?&z~lhe_+jvp(@kK4@l9@k$%p%M_6N=(A2QQ(k1pf4&fR~)nY+sQuj5} zGL0zwT=|Mw7k}7?Z`R+negbio50DS^-gBs`u!oX$YpQjIz-&r_2YF!L&~TTeo^HqOlQrETFeL%Rb;HBtIOp`BJ#hdO zSUPDWjpIW7_bakMajHycBmfFIjy2-BMb<*`$Rz-Vq4xE^8M+?G+Q2n+$}F%)Ex09fQ&-)v(+ae!>Y!z)8=HY^=m^fccfu4IaF?HF{Xy-atm zGGNxD*7=z*86b*2jf@1?lwnSrvFxbLUNQ*tstqQmsRZvIk1gp@#I7I-@bS^YI9 z^r(!#CUpGonhA~%uqt3w`Jek|^wXKKrl|T>Mj7x2T!Uz-RXxBxOL&{E?~#USgy92@ zY-NF)bbFpEvx}hjNVYb(Hpe%lm!UOK-pOBI37{OzB~>ObL2vhKQeS(2_k^}iW@`bMNwzPBBFhbW1pC%E5eb>%hVBl#ro38q z<_`Mvi7fVi>tP0E49#_#p<6%_;$gfi*PxA}(!IKT8pzod70v$m7S*>#Vt?iYuOa3y ze!k>S@AtLwUt<^j24v}o6|w{NZ31^?6lofcmZp-c|9e3=rI^#5xjT;?c%&xR4MDF=s!=U2)zfe_jRgZ8nOJs@P?jY#aDLi42C7P7k4l!* zi~Iw#;r3hr!|z@XqB@^I@2`m;}g`w#T4t+>6~8{~~^NvoJH@Ih>cK@*#9nSIga zV!o#{;OmkWp5nh#8xR_;bb*I$R#<(SO_*Oqx{-`!zxTpQOe=5v4$4B93=Pe)9U~~E zXILRV_iI=bxy6;I!DevBobVnwYpm$Eyt(baWm~(I0Vm)ZG)pV__<=9_4RGu1kdZ0? z}4G5AW+%) zz^c%%^fP!4k=>|kkfjp7zz>8sPh2hDmfJZ6R3M`T{IdFpxK>~Vlzzd^y(5KYi2n1y z>ZqhA_dKeO6IYKTKF!<2AG;Mv=#d|ToQ3UAUo_Ci6Mw{^xfuf+uA^l%Wweh3F%D`G z-zIR@rYX1jkG$L^|Ao^;P|2Leo(j*?GPS=z25jVdr$S+O5j65}{-WK0nq{QD7e?Ry zce+&^5hZ{@Ot}fTpP<>CAoy!2b&pmn=ql=2leGTxV;+9-Ls=!U9BQ#<^j{6~0ZbmH z?0q`t1qteOjdlo>GoeWAMBG0WSffp*w)Q8KKhY>*hff)q(Og4BMRfay;?u)2D~vs5 zHaO#d9~9Q6mj~e&c~v=%)Sspwg6+FU`ND}PcdQQzx(GcXE>`7z1T`*G^n1 z1#;$BJN~$vyIGjKT|Hg~^Lw7Pe&~l+_&~^ERXZ&P&uA;-Tz+Zpl^?em%{p!~QEaET zK^bne^rxzQQkHtVbT<3I)sY}o>L7%v_3f%a2KN!Ys^*oK?VQMame5k7+=}NmC*#+t{?c1GQl=~kL$KsgxC)1eSdAj>lKQJALZ*HBQY3v*_}(9 zz^f?S7X!9INNykx$#er>08*lI(p{6^4aBSQ0Nm>&UQ#BO{VbFr1R z;g?>{_(toJF6NYDB<@pKgURo6_2`c5+{fjy#U_?eNrpNCXEbm9+>yN5b)!pv`iWuDqo?X*P`pswmhQ5N6du35(emr?sv(|UxUqFc z;uGBX)tlKdoP{MW3ceIbuag|jhftjOv^v^CWUy^P8p&7tE0{pZ7L)W_ne58H&d`s; z486OWqM&fGAbSRUP9}q8kI>{HY#^%|JA*|dpY4*_ZoKqiFdxIGKZE7d-D);vr`E@3 z^K$JmONOz*^Vec^1)H3d!NaW&QDHteU!&s;3i*s>11YS&kaMnxE4qfi)@>$VoHbP- z>y?s+|G-+%Ll(=X@eFm(wlSCKy$ejfv&f|SOqU6}>u3lgoz5oKdED$cOWq{nYCSHm zDamta7g1=`pIvORL=3g~!26%09xohf`$RgB@#2i5iinQL`r;=nh#xa&kIW%9m%gIt z5DEEi(G6IY(;TT@ma`GvrWyYkrFn*vhDAm}AK^oSb+y5OHR}b6qACq4%y?C}nUc#L z!3|2Btk;<5VDPHC@-3z3V5+~%nC!sY3GcO{U6={Kdj9#xYWi~}DcE;UD6vCaA>EMg zcv)2_F`<>;0~~tx?)`phBMQFPs$KbPY}C|j;i#&L@U}nW$9TT?i;Mws-If|KLi9eU zHM~d%A*NA?iG5&KK{Lu8FHGf16W~2*?C;(Ntrm>lM(ys z0BCOcE8b(R3+$4@DnDHwMFtbd`v*K)^D>Jkw(w>Tb#;QAl6yw$Hb&_S@*i5IC-t1o z8PL;wp)80mOR&?YR|=|aX1c-|GvlV)oA;K&`Z81DPl~0Tt4V=Rg43-%DyFr;^L%## z2NfUvcl!QI`Zn=w=*E4l$)qg$Ola@w*;ad4J_HA?iOqUl|3R^w3Qk9{uzGTk(=1z` zoVRheOj2VuePHl^w#mJRm1MqO8`G0)L{OehmN3jMV*+aFb?bep@}o5C=B5UGHVKkG zRcgL3DxFIiu>-Iuv7Pv+NWtH;u;jEDl5J=|W(NED(l5OnvBR`QpYdCf$7PQ{wAYoV zI5zNyL__qCFDm?W$q{}Hdg+UP1#)mE4}~GiROV+3gjS6mdz`R-8{}n&Rtz)}uq>BnSB>Z+cbYLlMx)L8Iu$5~40h--phFCjIF z+u9#)T03O|vbPXvvhjYL>>7TgJtNwN1#Ns~-=9CXDigmGZ{;R^EM(U(e36Re^`7r0 zC3HHR6f^ax9`e^Z*DmXtxT_ullt2+ltEPT1C&DHzP5W^P)6fgBI$EtMQ%)2lF(P6(B^j)j*|h0qfCpU|w!!pd*-&qs#zWsLB7`i5{zS|`nx>lOX~O8r zJc2A+^~hZW&rVtJ07p$}l~uAxlm)JbT+K+`9E#k<|853QoX%PNPn#OJariMA^~2%~LPJ&nghKd~ zn{4CV{Li<0(1jNZ_TnLWcKCYUit-mbJ@DsKw$+R$AuI1Ca~&DXd*T@C#~j&r$(xYi z`yPRGuq^!5v&4nX9J|vh`Wt052ND?I^U09X<69gHXEv9%W{pJXp?{B|ZF4r0zo08=KF@7i z5l~v#(EUl|afaSvi%q+XX3l}U?qHQT?a)CN>c#J0%}ZZn!@g0~s=f@XwYnKZ8Jf?+ z_hmPE$$|S$T6JLSLSd?fhuw5TO?N?=)DH9PZ$+_UiZY4 z@Z!5d&pgkqt*0Lh4+aM*D33jiTsgw)b~Dd)3kNANqYK%TS&i=U@kZ@aY-VY) zGF-dpOpHq{KFdJ^^+={@j*h(gD)u6O*2}!m+KypAlY`1;Hm+Lz9O!APlH`<9Pjxk6 z7o@}R(Ww5LPuEgI@bSGL7I#FY2_yJ<-6~3D;4W?5izU>e-U#va1n>{ZpwBdLrRVZE z<*d)VxJnQ#!sO`cRlc}NmJe0opzIhViQqENnHb4NUy(vTLB0eblR|4MevZ2_wzNN> zqgBY8gzfT6mrsA1jyAn!UuC3s9iub~Tm!D8RXCszpHtdfD7E+zu5jc61)NiC5Szu& zLG8Oy5tpT@tikFKB@xsAF)B6P3xbi_E--G~drm!`gtHj5KawNrj_RpRQ6!~v3)a|W zz424}{f2IQ*aN>N4RbKS=fM-MR6ix4b`dG_y3Ox?$S#!)?Il%C#kGCdK242>h7m+7L8x^m_5FJ5o3nsR?YV=h8SfF%)PYV6KB6l@y$b^y!HakHf+iT)*CPJkwXxs2i?oJ)jvex(PnpNK@`s?k_xg*QC zmkzu0ZO9=4I!%VJ(=kPr3=k@_h2b&a^OTHG^`p=oXmz|=Q-)1Cyt4;TJ&B=q^a@6p(on`v{CvImSFU5UfRB)pI%;Vwv`R!X73-*$H$!Jxa3pPak-Gb#3bS1 zi;eM~mr5aPNby~uiy}%K~e;DLjZ@u^0;;0kGBwpMgT&h;@72@DEzT z{L`T2B|=Ra{s5mwKklb>X7TG;|%tqyz?bBBdYgM?smBE#!N^-)W+cE0BQa1(z- z9T<&WKV6FIto9s+aNR`ClPSXvALr(K@JxqTrc0-7Y2MBf&2}fT5Lh`jY`N-2G zl(O*LGk+OnFCqkP#0BtGpqX=ukL66BV*0xX3%h(-ynGdU2C1BlGDP26ARW6L_(;9W ztE9{|Fx475&h?Y@p2qf@WOf_IEywdFwS!!9xd7Gj9k^;p1)t`d5`5}oHVSYl{INSY zZ_@~-rHiQ3aQE#?XeCrmB2|zC6=>ds&L36JMgz;;gH+I(2%`C_!{-#^o_9vjnpA?F ztF(xhmNCULL>gl%{nyCQ%;k|I?X7%>r|UJOVHl zKPPB5l=}zvX%GUFq07T_H#ujuD6J%ls|^%qSXsmlgR{jOzSrkL|Y;cex<1WbL$n(hNxO3U$qcYV&M5C~D`;V(uI&0X1jF zSkZ;_`={B5Jtx(-UsDL9A}#zv^prxsx~~xcG=fN%3(M!jn2p2Go)tm9qoLt+r6)~+ zF0v(3gL5?eJLd(qi#a$arWh=vC7?FPZG**7z;ncKUWS!)tSzgs?f|gT55MHuK5XPi zD#~%t8W>-hZ$8OOGt!D>*$WjZQ|#kJs$YoNTPqfxNtVGkyxcxbUvIGnh$6f66fNA~ zPF*2gFCve>8F4(_m$J-dI8RYCjT-wt=~N#oCB4WB_ehi(Fs}7`DGoDvm02n0ExfWY zjNU516C%wI`%Hw?K-KBM`$F$k8?~Atrt~n`%F&kIiRI~;$@S1WIdW-BI5OODxggcc z_et!$#*Np{C0N|6cEevfzkF_yqa$ROntsaSJw13qL~XFL~4sH*)06@<2F@-D~P>pDPTO= zX(XK3VKs-4wUWyn@-sx)qd4iK9IE8F%Yu*j0n-SNIyg22%cmm37v+4_Fbx&?2a3Z@ z3V;hG^=M$zc=-B~O8&-M4>;B{XZlFfSX`QvN{ar!B@k?tG6b!s{OfN4=+g0h9k?O} z|EMf1y>cxe!7@R>v5z{=vQC)}Iokd^poXDpb>2~Zo_)s3x#5L?GRTTby>j@H>3KVt zdQ;9#N|a#W~luNmK_wIsi6IkE%FSC_}P3Fo}4 zkSjd#q2`ps@IPZhMndtkW|TZ`e@d!;g6L1+<)+koCry18{!<8RQp8`^Bh+gGTR9RK zKN8Sh*${}aA%OfOF4X_32y=IpK*%mu8$?#?_{+z;*V>mVZ2IHBkbv#kDQV8(A9v4K zBP#7{G=MTb|5@pYajkwT8F-=-tYh79%}qOQ-C(EN%>Cni6Bs{*$HUDtCQ(EZoZB37 zbheselMNPs()917dc_N_2*`EcILRTX%2AS-ZNR< z&mEXldNEVx75UD;cJtdAA9X}(T*b>)fgU;JJgnryld5z0oHYe`V6u;Y}1TFq` zlBV5UVq-@|7i#Uuzh+>**U&Qw6k9%wu!=`eF1gY@;GNGdptbN$)6H@1E^=~a7b{~x z1U|~(sMKC8A4FBtD@otO6!|>!bp|(?LS3#A=9%evU#=k#EiD{ZdxP&8c;BuuEKK_u zKoT#5qrc+;3axrK--5l;ws#yNei?b;UbrUb};kH@aamu@F`eDo{e<0 zL{)OCd87mG-nrk%`pN*>m<8jP=hL}FI|poNU6-etiN0*F(PrQHV?Vkr9(b2jy3Dy1v?YPX_6d=Tkhp+!cJ?u4=kCEFI`MwCUya#X*-3_f`8_Dl1SvE@X#9knk+s&(Mi ze?(Ca{)?53>}y00m32Tz4CKO=y8BTsgOKSSK6fXyk8_Dss*O4wdnPhtuS|te2pqD< z&N$qIjL;YHCUr#+*qN_~;}wN})`hBLg)WKApCqiTm=De}qI;Hvnx!GO1cX??zaN6< zSb2G1cQ#mHnat;@x>r&^J6jA`iUxO}xCJsQFt#{E3Zeym4tcCUXoA#fRK_PGX3WHv z(hy{dRJ9Y2sZ-}}yQGgD(+Ai7lZNUQVLGB0 z2)**KR<1cnocjISB^S9pjPM^aQ_4tCX-?$oQI7NwC)M0WT zQ6;$Qkt{P{dOJZx&IpLcVL1G2xwycWgRYM-u3CV1{8xv#U4uO6=tYq`ltIK&0P!r_ z>WhCyP*py0dTf&d(>fxkXPVJ#o14X%qntdtD{&X;VJQ^9^eghIp$bFDo#?;Vc^^6_y)L+ z3b-mG@jl$}-j}4R@TB$+0cWR|8<3mC>)cW6JDkCENo@#6-#^lV{Twp-7TXSvIqNl! z7H0~{ofD-G_F!6I4#P+Oj@((LSMoMInUd__^d}?*ZH)M_6K|weL1mfGs?|`5oe^RLh z{1pFr23yG_lt;i9Mm69B+zjCkT7jtsPC)2VAI<;^x*_A+nOK4t>UXJa= z*t;;aq5&divVf5haw1Hz+HN3GbzJv5l5)mF&Rc6=amLAZ-CQr-Q=RM-c#LY0 z{szA_GNry9Bx`9UpFg=2oazQI36FF^+C8UJN?^ounz=#$J5IDxwSaMyOCO2c?jWf#4R~^|YKn2hCfQu$zU`3Q zO5fo1yz?FgV^glKHpd9f#&zlqoxB?EfoT5#kv-A<<_VZUPI~I5GM(wg z9N&QBS~DM$Ir(@T8%yD@R?jIPYbkdsIyCwQRI|}PbnrJFg7Tz}aJy|_ALf=nsX1l9M<{=EEbC$u;WMeZS-(&knK z>Q5}DH#kCv;;8eCS%CmSJsux)4(eBa|7)$3qSlcQyzJLFD zG1Un4#y7^zY!!3k5@#xtw}4N|#CP@agKwnuM>vqotWDGiPP7~z^h^|;uC6_WKjj!3 zA*mgkg@db8Yt^4`q!cV$r;cUhSwISxA{<+^zv=_Z@yiul^-aq|;YDKWM%YrM@_V>F z$I5h*pzqah1s z_VQ7=JeF&LNw=lbkdjA(c%`EH2N4(k|fbSN-r)gZs;%$nV z%tf1QZyO8y*XV+mT9kZpe=idN(}>-Fj%RDbGl-v@BPu-hh@ae_sjnQPyoz2KyinLpL4iip5W_BZ~O5PU-{HMJfK{Yvif^)%5(?a7yZF=r^ZR{Cp zuT~sz{L3?ZT)&)rKHLG&y2z6R_75U0d-p$F0v+SjPu&nICjXL%$4yE3MX~mGkrE9J zRIsjY_}pQf)|!98Eq0h_zTy@1I!WO;{jBgvR?)jrf@=S@o{$wO>C z!rAyYz2A;hGy_*(@P`81FrR`j)2}WnM@qtAP+)wJRIH(SGXqopYb;`GbkUXAXtpPO zQC(LQYz7#zK{JbDtMo88uh+$m;+P>*OlV zJ-l-aU|d~I%ZL$&q7*%j6Z=JIad{z}ME6{F&(PiFJZrz0e%Cc&wXP9Syx9( z*-c4A;Fdh*G96>AjH~U#JZZ8Bo!#~7BAWkixM8`S$jWVh6=;F{vtu^0Fz5Fp4@8ml z=E6a{m}Hqg%Gy6K>Tjn2{tZD7PdcR!Q9fZ0YEsRqQ?=H*g}|Su_xnQGhixmF6me_ zCF4#9A_ehGYZ=lv@ut5B|5WcVk;H)vR$0d&4ARbtI-r2|ug)dd;1m^t|JT>F4QVWk zqgl%zzF zCZ<}(Oz{OT7Z9_eWJ>xkNQG~b&kgbS4g2v>8b-R%l2sT#_e~cFK0KR+ZvrQQ13%S; zxVFJmB9~xYFuOKn%QdhFuqw!n;QB$M3pY^%dboy0!jDrP4f-n)VgcR19PzW9tfXcN zoLxg00#)r1GX>uSyPRHZ4SGQff{6pJv;~wM>)i>ywCYc;fQ!0&bgmC<(>-Qs4^h49 z|9Jw>%WgRx#poqZ%*)`QnLov#Rm6u>*1ngutoOx9%3zW zZLN_iNeU51K{^726C5+4qZ0UznD`fryq!wQw!-1 zj}I0=jih33098REoSByk8I;qW$?ak+kKRh*NG9%ko#1?t9utEvx#f!<#_z}n%D(s| ziGhH%?F^6pKdh&$Nd(_Mj7mvtwfC~5d}i!ZvMYwnCd(K00kdinV({ROKxP4EpwuPl zw*qmhwBaXDsXVUH5`=Oi<9i;XVy0cWm3w>dnxb&C?vZjU!B*;WGUs>Tyu&=)KqT&y}4U z>weYi5wjv!dp9Dvx1I#hyld{AHQM_#vR;2ioCfh7hied^{JaJ0@2z1KZce} z=bn3Z^wxdZB%_N2)gF&aQOq^bl9{c#AuD`+P0H7^IY2~@!@>b)0U~tMq5Jkf{rVA* zv0m@a*6YTheL1mj)a{igz^5KxT?aw*;eO^epv_z`(o-j`85r`f6dZ!P?%^P(arkBZ z<_)s}TM4%dXf0o;Qa=q+VOAzxF$pfE`S6zLVrodK!WR1e7OMPT{J7^A=R`X5fpsMG0{lT7K?R zxs`8D^WUNJKZec(#cb7-(RqCYiIfhe8i5IRq4uVTszHOPkaxX1@xESUt_z5ohof=Nvh+E89&ADf<{=mR_SC1Y$ z2eBi%1r2?8v-&y#dF6LS^ayPWOI=|V1M+G&Y@g8R4g2KTlcN2!D{<*cKM6LUz{gz! z%(DI)<5lEH%~Wrrj<1YHY+f_WP5?6K$hhiG_b_YQQ2kja8JJM5usnlp%`XvpgPi^B z`C%oK3btmV-7&l1I3=!pR7E>gOjSsZ6Bp(1@mEWlU!=@o6F1v!4V_?l0%@_yQPfgz zTTIu~NJIx!t0n(0YKds*ZL5!MW!fJxbB`b_UViammuos)nthM-etBYv8GB$J8P0NF zqc4?>#x(Ihj|@`ic&h;X{wouE_4ZHNWGor-pEdSCPGuf+)WFcORzwo_w5T&8hQ#jo zH>C{c{&&2=R6&5=m;cBEQn`-!hLH_J_jm4odHKC}{}swiDypL@RyA>DtVedC2{-)U zfPCsqhakXQA*EP~LBN_Y3qyP;(f`;MW5{d-l_qG5gEl9o%-$!ap@;;F zB)(T=8+}0Hy7WT2fq&-w@T>d?m88mC(eoo{ZGkPcE+?kvX_(|3iie2Jh|BB~_9r`= zS~zrRc^HS^S zl~O4DUka9_iYZI}7tCi^ys1dgD)@E^UEx!jake}TW3GI>3}qZdgO1i?1jIm|WvSM6 zX#WQ(92`d^#CmVfQ0 z{4p56anC;<~FDbR;7H3Zt@6##Q28e(%a7iCC* zIS`)f-M^r+cbL!jkCTbZ+NVY=rVlRlA+yO%NtmRwv?|mh&0Dgv&IVt?!htB{9LHgHE;CJfG8Axu8P|E%+aWi2t-xIyU@X6}w@qBCb@*)b-tXn$pyCV)yX#=8nD z>~jCWeA6Owp$fJB-7Ia$g+sR+MGiPpXYsw|qzucyX;pfIWP29=eH|isyH4A6C?A0= zD=C56+|h=bI#$E+weobjmFQZl_k+^}NU3J~%K;ChT&+9mr1+}z*W7+T1h1rI}*{HJ$wsbPx98T#Rm~YO)M{u4* zpl{)iCa*y5WjnLCds4ig$E(s`w-&+Y>c{iNT>^VJ8kB< zFX1hkjy6_1cnzw^}GAxhe{KJ41TN^2A+)Ol*q-WaEv zJDP}j$Wq|(NoLfq+#n&&=}=4RRPg;LK8f5x22?IErq-)}8FjwKi5pS)&M0M}yHum& z<)RKnx>7&Jw|p?=N+{>etMu?i*3k7mdH?7OAO{z#szGyqQG7pYSmH0GtJM5^NvWs| z62?YjpD+I} z<7Q}xiZ(7c)Cr*ZqqJrnV26b{hvw^ae72thZ5Ueci| z+`TWd#Bak$YG-3{6_N_~g5z?$lV5J)niyXTGfp5y*t7gOFO+Oh* z+QKixJkLGH5xByoFK$b}$R|=Z`V)Px&LF8+bZ^%ACE^%f|1O)@@CF=(E0ClGhn&3M z8qpY1fqZIb6hU=Sh6o51x}vcn>F}`wAG5(^HtIpBd*H!%a5=?+ro~$3IWuGtwXw9| z2iQi`XlXtg?J9Vk5k%UofUaXO7$wkvEbq>w&goV~aJSGjN6H|l7!2&GGU{h^<~}{leu;BxpL`edyb!`Un=SNl38t{;NhULm|E| zO2?1spe~RREIvzD9r0hN;i+zn<)CgAC3#y*|FvYT!U>@r*fCm#QF)(9KP+e0Mc^o!H^nuF~ zNs3<+D=e?WYpgatq20zok+knM7d;%KvODw0i0n0A4*AV)lDxf1n1g%k$o0_qIE2q! z)4QPZ{_){+X{5?j&PtAjpVX`L(1^wAL9%S#LWHGwt7JJ9KWzAbpo3Q@$c@;&H$PtD z*(y5Whb1qu5hBPeQc3&F(evm;c>~UJmPW|>-ac$~&L8?5Y}0J~2$n1FS6i4T+g|(y zGsLPA#0Tf!PxC7lFwBbWV^EoGva^E%RQDjhe2AMx+4811V)xB@M6pYuX>hDl!A(c~ zg2e&ba10xU#(cH*e|T)M^}tagz5?`%y9sohK|WUAkmc`gs_aZQLE5}z&Cs%mldRFw zZO~+Ji(eLuj_Tt+J*c;*74b9W=R0na9a{5ecKgj)te>Ffli>*EC z?GNkP0Yj^rU8Qh}Pa^-&<1Jc3`5vAkQfu{YN4#PL|20eZo{5?9oKL=-kh3{%Sl#w9 zi@JdIPFOh3Kk>R{nIAygW_b_C**=ncwx+Q==C>YR)V<|Yr>k8&zFu~1wlF7sKe}lV zyJf)I?OTm%2}=w$FQ{2g5Ei9bDVl)Wc6@H0asGt$rxX%N3d!R@Xc!Yt(X6+y^loXh z?^C9n;mW_(sZOwCEJ8vSb>CsNR+ATPZC&#jwN{W`1c?*zrcLCpzw`X8Ob(l(_y=+8@q+YJv@~`Bs#Xy^kl!r&7=Ch=Cuj!C=c8W?CC_~AuY;Kce z(Q9%D6?# zYge#F#jop*q2r30=}a279J|-GBArSOa+n?gucBis&-;X$T(<(q^m*~ud(-w5h2vsTm;(;i1)Q`@FFW252hQX1grLN!@WZ>t$;A^MQ|4IT)Q&o1^ z>P=qLE8m?%x`+C(U85m70j7pqRtxF6isB(r^)$i!C49?h^tduBCf86$)M#=hZQy;< zu+#3YYSPEV>MueI^b>AuXo01V^9`rdQcm0hWhUEmLMqHs)DJ$VDWGtdAfAKj7k=?O1Zh+ExU}9$^TRPmH>;Cx%WY61)UE!l$zS%RSX{DggMWSCg z7#d?vLfozWbR6&Iiua<&wNOiufF_F8Uq5uG#r4KC&hCgK2n`$NO48Y{y{yO-F1Q#% zE>NCPPw|l=^4?r)8>u;#(1#rhhHF!vq1MZr{J`qY#(RK$W~49toX{V?DGQUtu!PTB z7@>u1Zm2e}`}{5bDE=)`9EQgZFE&czj+?+H7MD1-mw>X=iMO&B4|p{~(WU#3PpEs| z?N7gj_-Rw9M`*UyZnUv5%JD6s3{&nEq`8f7l!0p**HIs4X9eBRARTq{TpY4)tnZ|4 zeXhqVc2;wh+2n~=m#@IyQ#fk~L%GwgDiky#TehVc_hHPeS<@4MHm=vjtJ3AV6H6-B zH3mDfE_xSQj=?Cr7;zo8IjV$4#G;XVMCY&JPKzWPC+;TTw+uJU(17^mPtHU7}YJI1BG2mbnU&^a zSmTkS{;e+4D#tBaiU(4WoyB;}ZTbiQ=45D~$fIL-7Atap?0)7=vcFd8T++YNk*7++ zZYObAI{|tt^~sv%kLqD2~w>NaL1)%?!yI zC3f-{b6{;7N$eL}&B#C*9#rcWcT{dD!utxJCJ|@K_~W2H;dVA%VuNPrqN6$1K^$)2i$F!`zGpalByYX1}4bf1)x0&yRdw&TL7Zu4tC)wXP8H^> z_`3M=IW-4WbwnbK19_Te5GK}Vh)k(1gA19=oZqOTR(CoV?Dz4Refkquap%EZBWZg!aq-G|2_d>D2>S=1%Fk-YwfF(VtOlpCp zkdhfxq_LhFayO*HzN6pJVu>;stJ$f7sq&)&5 z;Mg4|zY*yXEYuNPs47q<^3GY<9BTN$zrPgf12f5Pr#ttb;PF1<;ZLmedS6!EH{w0J zs@=oyB-R0O5@pu0sMKw<8E*;!ZNGj9Qwc{L4?Y(vYpdjms{hk$^Sjfi-oU>!5+}>aIk76@>M`pPMuGp?k$Ww zb|qhBxxXtmhv5{Vw1P4U=Ac6^Sou^>aS0g1F~2EaG!swtAAl7I_20N!BXQ);6W0$i zjBm-VNR}kHHgir>o5`^g0alzkg;lQe`UmqzPDgHyVYBMzo6d||+-a|!+Dug~*=I4mgzbMgwNyCSRYg39j$*hS7tNdIem}89wmdn1@Kp7$A4!+ zh6(Z6ZL4Lm&`f+C(R<|8%6T^*585o3v{;mNn?gopDd_$Q^I#v7Q;ts_s&xGl)62`|DyB=7d~g z67l~^{hT_vo!kWpTv%!inbGgOB4y~ZT~}|-SuaiN0+kxUZbcIUm4p7F8{ivz;19doM7Y0FNoLggMs|NL`DQhr1D@C;p`LMm}T|j23Zyuy0yBy zUcG>9Zq#kF9;|05InbQ`*nxPo}Ea+VeKv(}h)4N`AJ6#Skad!~U&<8(KTR_av< zTW>pzrw?^4yl-XJB>jQ2<&0;E>w!VWV%Wo8FEnXC>1LH~N+eFSsX+Dvqzas#AViqxFMZR%$FU^2YGW0!MMhzRBAN@-VHvPD2bM#L$BjW{xXqLNiAl%fcUU6r;NS%YowpT=Au}u5jcK8UlHCxLI`=;>FL* zaW(1J=5(~EBH|d*&2_z_V(`Q|5-bIvkwS)~QPghWANTyegwST*xB)@j*HV_Ir}hz3 z|9hE98-+pH^!;P$q@r7L^|nAGX){!guu!oA7a4t`$_3MANH@G|Qg6P{Uq;YfkABJ< z$7olSfAVUnPFhpI(4mch=R}`X+h4>o&Tx}!3y54oj*oI>H%>42(!oh$_K3w8@&$e- zJArEF4Nhs+fS!dfx9uD%3^=&bfoa3;*xyyRHmk)NW$jey^>A)sh0u?tc@f9O)vjmZ;SBtZTjfygp954Nl3>k)Be+G|{qg|YFSl*) z_JbCs{n=AbN{ztyhs`X-{)0{D)LTn^nK^1Yxh$Bg_=8EE=z<>u!L-hQj!|EDa)iL_ zy!6?(>LpBOG$)~T#O#R|%A9WXU~2T;W38CW=$|JY$i)#aNBmV2ygBAC1jaz8cWVgp zNBblt{d-vf_@bNRG_9DCd=3Q6gpUKSc9?$Z=?6jyzT+_xsVO7)2AI&%kE8St;Y_95 z^CYXH_$CVz+Ya2r?dM7$PtJjAup8{k&2a+7nHEX!?K_EMr8EN@-vYXBV*jiYx=a** z@cpHY&$E+NjgAq_3?#z>-#cxG+sIqHhI5Zs&Ci;~!?Lb4_OY!3n{OPC1^24vPZS#t z#=-~8M0t-YB51*Gw`fJ^M(FJE)*5ax2WKK}UP&-G!H-w5qziu$%=Slc>9=2eUD z8U8OE@Q-Fy^MlfYAt5adKS)7+eK&paAZY;JU0rQN%4sM4p}7ABdK)R$txL8rR<%8< zcK5Xn2P8|FexFsSvqXP{`@*I0bmTT={=~{jKv5ccb7rstfzMG-b zu$3+^l_4v|n0^u#My)$()0oeGu>cd_9P* zP8!O4BK}URi{F`1u1B3}&>C}(@4c1@yDCEcj9${)F)EvodX8Mut87H%AXC)aQa1A> zR%W^1dISk1JmhGF#2k|u#pDn!IY1M4%!IZ^`mDHhw=JFt+dzT~E>xezOcx1(&pUF} zT0|sF<~VZDLsp<3M3^=JDg7KQM=AFGbLXMLQqs#rJ3w;qYX#MK?0XXIEl~<8wro*v z*t7w=a;v#29H$-GVz3i$E1ECHwZZ@^&MZ)s# zFoBKIGv9ulZ{}LPDgUzlFUemd_KH_<`}FQ<>hH3>{gFD>#Z!IY82G5#IK(e{Clnma zGZ@O8XvQ3Efm#giA`Sf-6|G!UV)l&ksRwH&+Y*|Sf2H7!F8Bl{?gFgLV**nru^qzm zH2i^W5Fk0~(qSy}9X#05wrS!am=hj}X!!rJP^5F$R9zT7=|vei#h>2)D11*cVA*7C zj1--M{nR~d`MiXV2+G@GAY3TKLTzw=VV-5wj7pSAW{$W&cS%n$E7^q)-MyGo3C~wVku7+MUd}QlFd~T-vRjf!c!6tSB@9xxHh%r4jHkHHTc;B z^&}BB3uVgRmKd?=XE!X6rLoZf;7DKBmu28bMtE895QUD=0{Cde)Sq%C7V)R zI{>}6L~9)#9ZK=|)#kpY;KcGLPk9~hvy;W#x*OLETx#=9?S{}Z@DlM#h>8zWX6SOd zSs&s^r^pd=8giIk2Nh4vVlqg&RS$mrR1s^DkxTu>+rE{5 zo5}0(yOPP`I9ow(l8^zQBL*V;Ig`!X%1e`#7>FSgUM=Cd*ZF(m37y<^%F#(t#rN0f zM&=5P-DLcsbJZiS)#S0X!h|I+@{j`b?@ufTffQk?Vrjxr z^T+F2~#66 zEPgTtR?pGhz2`>SqMOGtjtku#&|6Kkdwem}!c()LR)`7ANZ!a`xPs!Drczmy<+wE@VGofDrI!5&d=yfD-6P~HkR#6 z>LYd1qNOL1K~&ky7CWXa=|}q>{*`o0xl6(;RtQdL5vVFoFMRzj(OZ_XG?F7u`$o=K zs9TrtV%X;v@rUoF@y}K2j}H{_O?Io1Z}?6U9$h{C8yj%-2q{ae|2fXs11S$`U_VCX zOnpveZeNx-Fu7Iy%b<&-pBp=Eh{IyUFP5l?!-AF-z!WQrYq?sXoizEg&W0K*;=D5wV8q?= zSJ?nE47Z>zC(_Vv%{_%5=mcPTm9qzX0!xmsTbQa+O|5G*IHDu7c9MMlqJRFuthaA? zKY4wRYG->pNuk;5$?sqC)-%_If|%Z(VoujXzR;U}&-^@ot~p!S{iy9HKj=~d8MjgO zVTP6gsgCt-hK41Ci)Hpu`y03%2$ri%v5+lIT}ORzSx8bQvb=I3I2%_I=SFGw(;IO*e$h1h1{Yzji86lJ zpZ05;!GUh?#ap2wX5TyPs5_n1K~6sC5#WsJZbEqo-~fBNkfSf`-=T!UX`?0ga zq7Vj;2I}E>#ao2RjDSh5l|4hvhUP?A9x}9?;cov=D|cv$N#&ZIBInF-XN zWvPO_s}R5TjE3b2Q$EKhnoS9O)iW9%vo>0f5o1&Q@KP{X);Pf&UIOYQwF8r|{&-)l zby0`)9(U@TW9`0c7+_aBAbT1Nk?-)K=(4T>)B(>2?OtIx{YR(ttX{tio;7HbzMwYV z;M2)Ih!{V(C?Y?ItYLcRZ2tbd2TK(^TdF|+JsV;gretMfs~>RG>A0q)@_gZyxihWTgvb_NLH;482^ zTJYg=e-2-Y*hQCPq=Dl8=ymYp+&N1@2J*x7PoVe{5!N3k^$uu%zWLGJbP=$$fZETa z`cpQTaV48e9Pp6`!AXs!c7a5{jxl$vL7d0^g?@@rf6OH!FK`M>feL-QfEDM20?z7w zuA9BJh}3dHD|m-V0>NMFF~sQmFX6@u!YG6Fj!EC&nM19A_k^Q^gbqfZ-Uk_t*FA+I z=HIRFDi;>C$K0{7pM3kEN@WJV6M1Y4Yre3n>%ue^@&BpvGO=@P{^}yV7`~QwZez=< zdoNi=gL=Aw^wG5LW5~vhV%u zE$FP#j>4t%`KxOjIOLv33o=wr^+?ftc~BFlX)1UNt_nZw9H@B1d;nB=)(cFzDtm~~ zHm!UtjWRsrNdIDhZ|oe36U6Ml@+4fg7O4cB$TEOkC?u}Sk`}F$AJ8EmB=xIbz!6N& zygH2Xad+jtYjm8uE28?YcE!}J{k5_Er_|@|S_6_>V9k9^G&a%u_228pB-^GB2Ghg% z*N(c6o_Qb3Mmsjsjt$9Uy(Kb6Jf3c3z8zP11#h0qxzhST7H3mJrlwOoq~7I^B$i-@AI6GYWH)X7@tGv z0dTSV@;&a&8EW=;N~(Oe>bwNhQY=(&mV$^&)tNA2w0Y#;v$=n!au8ST{S*qjg_^0) zmpg|OLJVY`CGr!+r7A0o&xf2Qmb`G#t??hOm%edQMEt9`yvnyIXm@(L)$=^Obk4Hi zC7ny1se5`<`367O>9QC7n+=BeZyXnY+9mu~Rq%dz36I=eashuf!lKKqGjtiBei&zP zx#Wd=;c$8s1Lh`~fVqBq3tHe9%E^q7APn*v7}>`)dCXs>L6Gyb`iuC5 z1ZXz=X4@|umB>9`rL41jwHQao4*lG8~!P{gOiSpveK)~OJ|woaFu#8 z9S9xEiPdwjp|bPrg8I$l>%9W5=ShOcec%^HXha!C*+mfnADM`3m4&83C>Xmv782^Mysl3-ynm0%Qg74bs0vv z#0C9N;r^Rp>+fl>4d%Nbd#GP!Hw9Vj0hSd=F#B?-kY!kna$ex8XJ!P%Q98+EEy0;L z&nU$Q#jnPi+>;24vmgIC9z>hF_ft1Q0W-ggdH5G7#q{Jai0FR;c_$9h`lWx0tNWiP z1_BK<_7aWp5 zpbKnYALb8I5}ST_fP&poiL}6yn{AIf|ccg2?l^UL{Th z;8f7Llg*;WAKDL2H`>x^`R5*#zMSA*eaHhAupG22gK5=!RFmYW`=6AB=#<9GJh=N^ zyY|%H6w|;$PA$dxmfs$`MY8h?6*G8ZWolW3>W>3hiu1{uM~Rw=<@__@1i^FeunTsy zYQK-`Yxam+RZ3g}>W~WFHJ|88PDp;U-zBxf`KTju2L(!NM$UoT z-~bIAtU#Vs)=!43mwtvx*`H;LP6m{P%JMk~F~8UB2U(&A7>sE^qwC5TzKbSuBRH{y zD)E3$n%1EHqaCJ5EMKq<_DnY&aXX^v;l-~^B$xNN4|a8;33zVAiZg~zxUp|b>zMs= zU1%1PF3&broG;T+;UZ^O>Le333iTujuw|1>v9dzk}c zMJ18^|I5kBxz&Ec6TYM7)k&8c%~S0kR)a-d&*|cGoMjEdcsCYmd4$Y72yH#HoGq?< zKtUdadC_Bj!iDL@cZR4*yM4@vYQtZXTioif2)dvqZpk74^Mqxr=i!IPxZ9 zUqCr5mrWbho0rlSXSx45_cK*ozP0iOqhZ~IG@0WS)auuN39_Bjtfq}qbBv4_$;d%+ zn$0gC(s@O)(kb0T-KTI{Cb&3e;hC7L&zVDysiGUBCsW~7ibzwp`vyQHpLBla! z?CWj8n!0MMSenArd%6M;4))7(=hn=nn%8_=gVW?K6w%mUu!m(1ybBfEZ9soWDNHR2@02TZ&ZLk~v{4 zPVKNr4dsu<_8T-$vmPM2o|4U960P*)y92Ll5SJUcV?%~K z*1X4}HL&p+wpj?zHG}L*&Z2)Qe?5kIhpv}k7U*{nbUKJjH^H1M)r$G+ip&W|&JJ@D zdD70VEiw-r0u1#6$9?&DmpYGI(2!ibO1R!mc1d`dY|{mBiV#f4AGJ=^Sr0f9g>X&& z)4G}{hO@piX;f7r;jz2cnsj*zYn-C^KeH~Z+zE;YiBt9m<#{mpZh*hrYYL$HTX@8` z-TSwL$+Z|vk}Lqr*xRD}FtP=YoZz3&-s+%nBJtMW7@^6;q8fV1Z13D3#+BH_llmZtwyxwp=t^1Wb>PMb|j@ndvU z>(#ptgYh+aO>a4TehH6r^xdv?bO$?|&j0)@Ufa=Zys)mg9VvDVT^;4K+j2sU*hF2z z?&z+jGX=0n7l}g70{}{tP+*}$ynuzjOM6C~C#^e<2e|@RsI220^_B23F5!?Qc1czR z=hCpQ(U4VA*(r(n*~`@7A<@Q1?3@CZAQt0I{@gK~;qX>P{Ji1 z-t(|~HFawFe>Oz*r@ksST#CPRMQlck<1Ku_$)4JceCQqBTUe5iU;nO6rogRPi&a}g zLpKY$=rWyqvV^TMe8cC^G#*Y)ewrzOdKG1TGmX6wPw;6-z0(b{dT`-=6V=p6POE3b zVXc)NZ>i^QhiNC08itIHu!SvzT8BEPy^&iXDb~+*OF*IP_rI_<+NIBis9F z5vId|_gnTBsecP1Ozs~yRl(qRXl+d;>$M2Cdb_mhVq7PKM;luC)OW1O2SB z@NzH2b|9PSpC6hcT9*Uso`eF@2z{0AG`rivnS8PNUki0SDVRDdhJqA97Qj*Lu;G zqkVRzLT(uZ`1-XHTp%4yVhLA2hHIgC%0E*jgT0WA9kt!^CwClFp(?Sd5PUwZ=J3TlYAC zX9J5x3dY?T6P%#f3pO)xY`6Go{xXSKv3p zF&{jp6N)#0XljM7OWYqIU-L`^QGgtjV{)bf?S~+rKz9rgAmX+X*-#FX!otNqo?wm9 z!pq>f!7&Wz$?K0RB%?3D9i6_bgfxMMMkhXD$ZI&KzJ-)HhNQiB>|! z@kh%bP~)Opd`mbsVGw9Xu|9&3F_N?LqWa7m_UYq%$B=^{CI$|@n<2OFu#DE*Yj1Ke z_X%p4mqQ2J{k`LX`xhX37oB2{8AAwM@Nf zg48VE60?2#uk{F3fuF9kju>!$;0Hm`72AnfVSx6LA->ccP>|n` z$USkk*E%pD*?9?(&yno>sRHN~xGYhlFm9vSd{X#EG&X#HecBx=5}JI}Be z>}@uZepWJopxyD$emanGlwcfAN%9!*0&~LlDBO~3XXb0AtK8Kn1|V}V=M@fqCL-@a zRMUm|%Y{{HBpghyiS8Ne4-F!P0;_ME{Bpzl)5f5|YFr&$)6zObBO7W!1GE*_qlGp= z*vxmO5NzL3{v-2vdkXMETCbbSMdz!KCi2DvQ2PBb?ElO({T6@hIuAEUDH1dYb9c9x z;@V?`Tw-Lf5wxtUe4~{7P;OL3Sefj4DLaFnH%Fzq-wG-B>h6At92QNv&+kD|&0sW~ zkcpn=J5KpI2I*j5utx<~ZcrnN!F?{uEcn=NA5ewQiLbp^o6y@nX~s+v~+Q!vvW~-!b56dA=Js1BqY~IF8=RHipselgZX`YZUS;XCpUE1m0Ge~^lWeDJB2M5@#=xwE#AHq(79LBJlZ!7NpgEk^l#q9Qz%WZgQX&jb~&Cpxb|pg!rp zeMkR_G)3>s@52nkv9|;ZG=!IMeEsQDBx?WM^XIhKe69TOn=gb@^bJ}9#8^+>0bk}^ zzmCGfD{)C4TZlRM+59HIqQNe@c5_mp=9c(+sIPAOjl5NuAGZ^Ic#!WI7rnf5ZZutmv8$cD#+Xg)Oe#aUNj{GFj;uMxmYDy@w7h7*LlV zBcWl$mGzEiX=+*SACdhC?jPF`KogTSs!TNUUKe$y6JxzUf5 zH|T(f7d<+J{O>tW>=U;p(X-F+&0Gh4Xk4X?zI_#@vJ`L$m*dXX>+z-(KS|lx$uSkP z*(@^h6A&mo5pUP{wgObxCgX%_OOr9r6Z+sRq<@I>QK0Z9YJZ#>{v&=uPsyCLrvaZ+ zl7C0W$%ocLu1hyNtP&oaXcGDoi=ReHAE+W;?wa!|eR~y4k9J*O*yqaR&1h2&?z%$~ zJSS$#mkSOF(8`t(*b4FehYIX-cI?4tu0Us_6q(9Y0a_9Imug~wx1DP*hrQ0tpR+U- z_Q^oVZ6tEn=s&dZHQ$QnV|8*!!MDYB>*e9vkXm*~%-GqISS3TWl6m5JMr4h``)M(c zlK|dH(0jigIa4n>W2GA=A|#8hxjMN*mB_BaSEibY#QF7myOT1|AN_0`g%^~C z1S*}TI#8rTVsQ#oox#`d?6=pSmSC4B{OSISf_{JL?L>R;FsrmSe9IWeQNu3kONA{R zynY8FsV&rNsgAKFUV%;PP(WQG^KiiR`ngW33O24Ov9%(6T-ng+YlyB}c4HEmd(3|Q z(R%$fj%pJhDLth3`M@Ks7Fl~jThKv6B`>1{QoC$JUXCh4Zl%Xgj!`=U5UHI3 z`&CF%!GX)@U)LNuekVmZwU5W&f{>ihPX= zTub~J%E2(DfFZ;jRiD9D`ia{N@eylGRrR8n;Is2UMy-~lwSPOd;npFf*FXmfx$dZH zWA>zGXW6hm)0AeX54MpcO!p27+%)n?X6@sL`)IAEC}L7f)qN}0rC|vvT$v?+y9g4l zY@PI%+7>B@B6J9QFLC?T7_UsMOf|UU+HVZ$rc5L|yg06dJO^H+It!VV2J0oso+S2qhVhUd zBLDFIVo1uD>b(J@mnD;I^)*LH(oT%({t4VufT3<`EI3`tfik3x@(-PO1l7q*4yjM* zgE0O$#gDHNQb9NHR(bLmvLvD%0q)S}a6m`esNABl^}}^3m?RN^($1S4j&W%XnWK0v z7kz0|n#evwKL8@BZd{GJln^hMiAg!-9U5fP`61?44ijgUgm;n;*_w(lr{*X7=>vd7 z?+RPG`B{x#^zHNIhg5E|xM`ipTk$8KG3b*r5q+2sTpYDLWWZAjVj?RRKzQiofnglL zObYe{3!IWGuqkByLpKKKWzcs*!#A|# z@8x`jDCp%Y59c%cQiIQC5Z30MtHr1+G>A-Dvex?ALv8->k zBuG{t6YoXI>)3;=)7t|oTT|WirBSbmKIqHlAlxMUHmOP>ee;EkkeZ2P{Lj6`=KjS%Xp4^r{Qicj1!VpRxocM z1bH!Y9*mT|`+*SGa`W!}NZ{MKCjIJED^yV}ZPCiU9?NG^=KkCD?7Y{_H& zH`Gv~$DWlSrE=ge?^v6YW3088W;lJ`+=91Vr;|MEFID|g_Y&BSZ#-QbqrYZzjn9e= zwl2S2MaL#x^p*_B*74w*yMGOJ^DWB(p^xLVedA_5mviPv9vCXWy9cU> zJ*@LLVZd5DvHx4?t9u*ST~Z2_ZM98q_8<3DZ7pcNmO$H!^JPT4`}D}J^-9Xs_s_4w z369cf$UVZ&a%J#Tr5astQwVAst}MHo-)XmRH4;&qlyY}|lf0m|l}UMUYx^yNa1x)% zQvg;*YR7t8F5ig1u;-aQ^Y6qNNC(m-k5`glEwy~kXoHg{2}=WKcBRg{J)bk4pdNc@ z_M{bk8ZsagFNp+_qNBpP-1?ABvo0p>X_Kf&HlR>E!6j&*fm725qtwNt*N=zcDQNaAA#VSpL z+*e=Z5IDh{)3k7=ZSRu<0LX4X%?nWPXoRPZMAHfWrM6$|X z>8voYmYR@PJBi3i7R)kSY2{o^jh#&Knt4%PAHHVjW;wVjJ(!fwB9sFoZ!<;ADnjIv zJ;0uF|1Jv^K@I9^u|gU^G1VcSr2?RX=A<0dZu=?@3X;hb0Z){$`O#}6=PmdFqhLT> zP>Hv#B7zj9t|pn*&?jFd6v0(?aM>j!of+`q`_TlWe%Q#b*0ozcdk95OHkejLD2`oY zk52}|E6;{3O+lF3gq%ltWd$Kvz0f^eb83l7V$Id2=1=dtc_{=97d|^T3*-zfI_#lR z@Fo*av2-^xNPa6k>iTl1T(?}{XZcFOWv`iR2d2-j?=Ky!#Fj0CZOv;|&j`fqi=ap= z1r~}holT(R*YU5~?~p3Sjj!GGwua0!@_e+RxJ2CQ>0~#L)xS=`>cIi&@r>TH;)Ncg z*$O9sz~W%&UWKrcjuwHIC;QNMy4Zhteb)p5OueJ{Z0TI=O6FVPi;G$s7WtR@PXKmf z#8m7%eKYCdCi~$I+3%D2;H|x5)WL{o_OH&d0uL)bUyF!gvfgt>CV%2jw(m?aBf>q9 z-1b8+K{}jVQOQyJgZpGY+Y_@gdZAp+7jev$m`e8uM)=FA z#8=wG32#D;{dnmM7{M&NRvddJ{Jk60GH|?#eB9higw0Tt|mfOAn z4n3iL$N>bT^-}+PS8MpSqr7L}%$X9=m$D=A2D8-3WzqJiq>GRE^Mk=xwe8snVD7Pt zs)xNfYmQyAO)yL&UXEQf6l*45W`QVVx%b(fN>XSR&*3*`} z{0ljuKml~R0DQln>z{G`Azr&+Z|Cv@)WYE^;j5jhoMJ#=c%Jv?&xsKEu? z^5enTz9ga|?fO`B`Pn{b%TO*A^%9xLL-OD1yCwDmt1k#86cOgIVO*%NN*`cO7#}ya z0NxCifL;^rA7<(=z$4oE@xCIaFlDSeCckz)5X{JDlM_^IJ|~2{y<(jSAnvl_i$GuggTx>6%nF~GwaZcO7cg=H?`&l%EwKnb2@!kkI-n;S(KFuSnE z^SMVgKr?n8T^mm^VpGLHRFUjKo2TOmB~)|U3Z_k0?A1nfO+R|6xx?xTQKcQ*UxC3u zl+Q2JW`JQ>e;(Qurruu<&f1E><%Qbw+i{&KTh|YppS|gXTko)oV;at5Hf7MQ@UygE zdLiuKLO~dWTe6brQY`Ul4SOF%Tlln{9DNMfr-ZtyXkbSnQx{4&p6~Y>iLVKtToEhj z;xv49LsOHT(n?q>a3I&%1b=%Qs3`cG-O=jVY@MbHU}lTl1LFiR|9g1juH+Pm5hQg? zKBiYZhU+sueaCcU&%nfol{!CfYgRR+(7+~h@Sdrr)_xnKb0Y)sNTUN-t~i3Qqgdr` zPJZir@{0#I!BM4aP7GHa`!1icB(^!XQ`U$j%iU5OGLn3&##Rt3&Ze0t+d^||;MV(o zQ>NEVT{o%I1lox3_aCOc5d3%fo|jRdPCb=1F0;f#2E;5HT>pBe+-+oN=-5ud zJDJ*SZLgfo%*W~z4=`c>OGEVA8@M{|l0sBZZl%9esU338J z-kufz6>uJ>U`poXllHOX_*(HPemK^p4kBV8mK~5v9t@w;BDEYWUpW@s3Gutzr=gOP(^ta;^XDIMCYK0`6nMZcJGft?Sq zI&@&=BF)e4zDE)*0e zuwQs!>69i_%@^cyIDg`@S-3G)AEtlIv$0ub2R(AxxL!HiGQ0AO-}n6Z^JiB16w|cfBL|R^Fe}p zkMEc9)H!5bSHek{5i}A;4;B=_^oZYF>2nky`yS^DYpLJd$01z^al8 zd}0rs0^EHAAJQ(@E;Buc%$8~DNRukETk~#6B;#FdYiIT}x#-s4dMYJgM4$mtiMHnk zpZMe3>Ho}?-X0!YgIUboqNls=QtGLOjht8b3$saaiyQuNG^o!~8oZQV8_hK8k*Hub zu8+R5&O!exh3QN2Pj2+xZQ{uqf`%48-!h_q7+W_~=-Sc6Sv>=(&}DVIku!>A8=xF1 z`tE14U7u{j14~q;U@H>6AMIiQ2nBY!2hOF}{w^Uf@QJXW__OV0uRe<==a?3nb<7R& zGaQK7^C#}OdN7CH<%vJ9LMxKaT|eddH~lO7u}FPDZZj>etV?fe>((6g8jN_Z5jx$q zLazZ8#22dce56V82Izrrf^A4*N$n`6r-7|Ae&5$%QhIOQm5%-Kn~IQB!W@kCj9OUk z7wnCmn`pcpOaxs;0hN|}(Pk+q(9_%+E}~s4Gmd#`xbophYjm>0f&Il=7yfdjlM&r# zT_Sh+Os&xiUkH4ks6ugQ5l;v7|7vhDd0>FV?|N^uq8$Q$cFf);4XdhsovG|I$GjU0K3S3uo&L_oo9BKKzd#1 z+vTst)q|+HLh8~?!CN8Q^b1?3;rXb9mI>@|fE662eMUf&W@b~BZP?>?n>!9f?mtIA z6s#deElAV+qGr$Eeqx)wkwUtBzaAXzKnKzOWzPk&Uo?NcF5bpgvIr+||C%UWZ6olY zFO6=ytKhJGG`N$lrJ`1EA%gf>+Yq&-UFM`KsxYdWX+;#Yu-G^8YhuXhNUnjvO0 zapUvMYPZGDx&yEMI_RT_VUhB>YJq49SDx$|0fPWHyeUm$PEQlLfIYYQrS2P}Sptr@ z4WJZymIv&({bZLgA^GL~!3Hk4Kv2~2F`MZLqNq(BG*-pI3v1SA_XR`Pe#YVxC#S5Wq6;M*Uu5~j)=KDJ6H*!y>13RS@vTrud{68P)QH{y{ag$Cf}pA}!S*f)!~h~g z8GC?QEgjpR_(Ztaw6&ak_Hy!8>+w(ko;iD=8&;5D(`@;6>G=XXCv7{|#BxlqIWNqi z7hO)~UQY7z{*N*#WD_1drp)=cc~|h=sica_hERC^XPv$HWLiftL&IHQ$Ta_&RnuZ$ zV%U$G#Xj-JnySUVy|7@4z-8hDd92Aw$%BBO^N1G4j2&K1tzIf9PHU{?%@yW207BbA z>-PUg(>X>*(nf1Lnb@{%Co{2a+n5*=+qP{_II(Tpwr%#;?>XoDS$kD=@2c)q>)Fq~ z?t6ZQy0%tM&+jE)U875sL22`j$C z)jA#Pi=(aPz>(&VSo`PJ@d?4rH!5>Pe;RvhW2=L%TP9p0TRn?dP_HYllW0EMi>jT> zf|ei#cbJt%%d2}swE?Y@iYeamrr+kbs5M&oDZWxcQ)7GeAH)}^o^HSba0$2gL-gqheR-8c# zHg(=}?V2Lhl`_G|XlZ+@J|@>8j2<7i;rYUkR~^=qLfqiBV5_{(ynZg(l0D?j-h<(J=X8U@2p?eAMl+~i8fuaGTOs$>|@O(>Rw)aIQ5Dq z(%KemE-e|^KzQb5jz znC;U7&+5kHyu_uW1RNjRO*mvn7MrOYLd5kIeHx>UMy_s~#TrLf1OcqI?YZ!qHT;P#?=Ip0Nkv+Rt_VU78!F}hft zL@Lzs$Kn)WIGvTk+lnQMT(yZU-_M*}-*29TYL~r*s9DQt16_XoE($KK(4x^<(jZNi zzRgRXU+rFA)h}zfm$IB1A2H*|7!+@o4ViXr+^I_Wbyf9F-wH#N?tE31GX?%~GH-My z9p`u^OH&d=d9pR!d>j**_uMsfC<|(G*)V;E#o1tjrz1OMOg3Y8K_^lJAzIV!4 z`BGHq>bF20XsVxXYLGcvAe{Se%2(WOJ9y$|SuD{)Ms*R#5Elb-7K+Wa1g+`k46=U5 z^vtR<*_X=S1}S&6uV-rTn}pjr-0icFYAWLga+`ZLW6p1OqdjvLWWtEZ5HLBDK0*GW z7$v4|u?1_Fh`Xbn>;AGks}^BG3QXyoeffwP9@*sSu)$3s@5m3DaGxN}9VcW3DT8hr3%MV3 zG*i-@WrfVn|14GUC#l*GRMC>g?*HC-R3}9vmfQbIS8yJoDVpbZAiydex;-1xyp1Nb z;WKU)_G-t`uK_Dg``p)r3%yxI(6*3w%eQRscNVCIYC$?D3s4v!d0>OzGo96>%ZyIGniE=W%680N8$nCFPs z3<7 zE048;q^D!K3eU?!z&$Z6F^#TD{^qE``YZazy^amXm&N1FN%a#U0Z;O{HjFI?x~1;{ zs#cHHt2X{tPnBMtIp(kAaaPe;uwKIpm4j%m>`up$r{E(F?KuKl4EI2*8`)CB3C&~l z2NX*|-&UL3K`$DQtY^!X)Y+E#ASX|$;Li0X3R@q$4|Wa&<)0f$vX?pLvzV7zyaCml z;cRpX*b+}SdD#G9AA~2q;)(FZjtO~d$HeDCu*x&e^M&aB=ebnNwog>QSNZob-}P2O zMFh!X_UmT)5A~a4JUiUBFsB6!p)AkT}!@AZchG;Za0C=U32(dp0;Xi zUlRp)4=7r3VbfQK=X(&BlV6?)KGl@Xmy3j#M{2uTEV`Z9ifUWzRKo#v(-VBFBvif5 z-kf3;9G6EUqdvcMx8DhkaF@iXnR*P=5II7W^$F20=x38sx}hS1Q7(^Ch*M(?eSQh) zQu(|g&K|&36<4{x5yL)2v&ZO?9X;n+8MA8fr{DC77x5bxZ+@$Ym)s#duJNr+H1x8W zkmvldugF|Oc;wvz;fzvfllg}+WXu=c*`=7U(GE4)q{VjY(Ye4j`)#EDcdCZ^>+qLb z)uz=So0S`>)=kfb8myN%#q+cDEe3C>;d6zNOA#m6SW~xeI3N~quX~;60^tZopiI?r z+l4X_wum8~A)cY+E%{Xz2;2vG@}}phMS4Aum_z2{+nV^fR`2e~*UhY+{64!C0==`} z&y7Y@dGv~9xsKo*`d*&yWrl?=TCCfSntiOxl<2OV`s-YEYro<<+ zddATHojcy%d&L^-A`|Y^|Kb;rlc-=d{s2}S!(3l$xBLr>ZNn1}_SEJ<)XhM3kKCcU zhwso+`~Nx;T(uY2t>|M_YpbrgOL$?I2IiJ)n$c3EF;dmu?ZXXND*mj~az!6H@ z;iK+$gABJj*dqGg|J3k8Qtv)eBGCh3V;=df|@c_~!J>!F~_`m@B?GB#Ia2UaIOxee5P-b{!Ji{ZRn`v+P z_Pft1{ekR&HU3T*=Km0%ZAf~URV5>TXMRQ7kfNzlKb_@=kN)8CdMH9riVr8J*;&C3 zpJP6};m1xHh7~YDkKDlU;Y z2486U^9cTisc*GS{9=qR5gdM3I%nLeZMFOhr3bboHS=`TAE(e6lDsq~O@St0l|`Sw z1biQAK5a+TdLDWKN%Re-RLSv&LbFJP7FWwW+gw7;44ka+S2|2*C%$s1sJ#mVlfwHb zIM~b)%wm^4ZJExXPf!4GEM15XUo^d#hJ`}wGlB|PG;xR6d)(Co*(HVQ7k_|6`hT4n zBBP*>dYBZ-{X$F9jQFO=?-~;nOvgp&2Cy>g|C@i3bp2tLxF?z4%8QZn|Y97%gm z`va|{;7wifk-mTMclYg9()2XvIF`%TBXYpmvx^azeHRrpV;j1J^eb^wOh3oiVHHRp zHq@33lF4~weqz*_7yCMzc5{8LPU|C|u|_@N4_vn-2^sGAgO)QjUgo~mrPD}3Sf8kUxiS7eOSpzFp zk*13o#f#pa;Xv)xnJtB;%)f0?iXEg6K8tx@&X}ZBXqIj*IbV-Vj6EVKnJ`d zlU`6h%%boskU580pFUzd^#q(?$$Y)T>D!&R&_31ioUUCj^IH~n&!aC;bA&9}tDPrl zeQ7E6fbcq%YNA;;+IAi2W7@v_hM+Y^nj=YG@4T`+Q?bhL_UHf)F)wrQ9~W3+znAAY zvi!(3cErudUY_@R7xdw>fSsmP`7an~8TAM0){z;x>Z?pUj)Fn&*!=Kwbm5c@yUt>X zl>yVIGT6jzzQdPcsw!wz4vvJ!p4RQP1-Q%KH2}aJW$b|deh5CJ-dXP&=rS?0p+H$| zNIhl_@Ptgr14`V0`|zQWM1zVYWhDHvWaU{#*NR6Ns<1*|%k!V=`Gv&uR=6T58X!k( z0qvxUY<&V-fzlHoDae(fEJ9y%^EUkH1OHbJp1BJBdU1G$StAaaaqvkabO z{mR7+p#O<0Bw9I*GI~b*Gn-xrdYU`nArLa;j>{!C3sSsBY6=N#+IO~ov>EY_2%Q!P zGdB2#mvK#PA9m;io{>e&NM=^HGWD}UJ@hgZ#jlATpA(#+=w-6sJYBp2=RWm~;OJ+; z;*!X-1DjnquQpP^AWmnqJy@L?q(V+5F(ZwOLJD`mqIw_I<|ftoWJc*8PtuYa7z%gN z5&{^DX=(X~#@~+>J-t|m1?=(jXJNyZ@(!5&_HwxFkgFm3Hrk18nJc1Ex`4go`~qI_ z^#B?x%s7<2i9)GWlj09WLNcdb04R-{x2`@>?3*7)4EM{CENMc%ehYnb+MskHEe@$y z{AAx`QEt&WpbQ`EO#|$pm}qGZ;mm!Bb+r;D(q8acCeZ*;l;vG5u;ipksP>nR$xs*D zi#LXAfZ4cPaQFpGS5|P@QQ{1Wbyd0VAc1KU|AVpPfbO=$xAz+PzkQ4iKmL(2Z!Z~WboZ^0 zIdhZ5y(e5Z1#x0LK9y$v3=C4yY-_pK}v_AwJaBA*~a`^r-?&!1F2}VYL^vVjZ{|>1HQ|A_lSYZ$uH8|JpO1w!cMSGAX)b$Uxfv;&O z=1BA~8+^=apV!mShC#ajN#<_+J}7pLILg!^2#feok-9l$2H@UYI92k}(|5$5q%wQa zNq>)RT7fN>hn#;_0GR)1`B9v|pRiEU1M*+qKCRHn#p9FhH5yl52NyVbaqCzyGn%ON zfs&M3N@|yayjfWoy6zJn{+@QwTqdmXw zDN1K}(WV3P4WsgjMnjks5^RZU0$TrPR?P2`4w5=2lpE5X9|^SYKQK)o^kh#oL}oL| z`|)855h6*kCQ$P;Q-qi0;hnzp`|uZMbSGC@FOo@y%RaY9EC?mb`kWGp@%8PWzB#<9 zKxoh}M}~kEK-ODDADzdaYO=%SvPmTX^{HdXD`ZyD@nTR!GGHXg@DIsNS ze^kdcT^Ik{5>Z^m_O}<&$C={QVA=<2qhMuInd*cpHcx6R zB{7dD7CbEcd2GlUO_uP`D&FMs`HG3(8`rR_;8hPvd4L6#(YX~T^GFjp_CY2~yK_?% z9pnjeNHwmx$*%&vpq)U}SXoqauw0ysF_PPfJ*eS=X-1nk{R?)MNfiI#i{ln!!j;{n z`*gQs5K)*7RbXMS*>HTIr6lK|W*|@WkBj<-jtr|I8$%8>!Gh+#3))^Z=u9u%(?IC= zuW>h0E>A=^qWY7R88nz%Pt9JegD1px#Ja_!O`($%lWBkiR2R_lW7GrzSD7I8vg)sE7{J~+jOJ7D0R^EO(G z#OTd@sUkb9*PV^t@EhFq0Ft>{N63zM(5^Fl^9;jrym_8In@&yh+ou)YyFgX58w1lp zBe^+9G%E!^btDkGDe*r)K$f!!0D85hWO`4adqm-mhNI^6PvPnp)2l1y72A;UO4*`* zTEvO|12b|W$B?5?G>>lt5QQE!c7V9OG*Rl#4;qBaD@qc2FNUT5dsT?FTV`US;5UP; zQ4(U9isPDnWM;L#b@UfbAAq`SE6BG~DojvXTi6jA*&<|GemBxXEl)&&Z^)>^|Hr80 zjmwoQ<%$Na0yCSWktSH^58d5@`G>~>KPu|*MgxiZCuar&muJztGZ|WI9d68xh3Yk# z!9Ex0;UcS6=>H8*408RTNao&R*jg8mDfDgcz~XkTI{tHy6uwevAN838+n( zNf&K1)HT5^Ssu-Gt+83Qf!Ww^73Io?1axvZcQw;dZav}dT>oPp*}#pR%`l|PyMcIs zHhqCRb`Rm=N1MzF#A#e+zptiXnz~8fvm4<>fuW!#>!-3}72yb!>}qmsG0BC8DR3?q zPr|VRQY9_<^)`RPDymcmQImndiDke#cmfCTp0|OF7SQ6Tb{Ak){ZtoKZI>&HL#2T2 ztV^CQ6|BX>n&$*-01aNv7NdJ{T6P$F8`A53C{C8)gtdnCix! zgDFgI6C3|3huFJO+t(;q44f^r>;+=`h^W>-Zv!1L2c_mt+UD4|6T3f$W;0Fu=@AQA zA}{O@A^Pl_v`xH$zm)<->Ek#ygf!iiu zU#B8Ln38Kc?|Js!QRnN46l8<;h>v^7@XD;iwE16I;t5l%!`WqGIe+j|e_3Jfas;V0 zf~p+;em7qKLum34pVgM}v=2IL`?6_uE@pMtozqH0K^rl4&)UvdRrm^2fB1ya!r8C4EF#rqTZBsUs7}Xq4<`& z0x|H!guJ$4^b>L)t2p1Y!Go3u@?ZIrb}v-6rMIxB`yL4kPYk;N+(S(E*c4q0MAQbR zUGA+1owU7vP{wAb`|ZoR@YDvM1k&$EQjfa_E1oZ${QH*3_vpb>v3o7#jJgm5@*Ozi z7tD2Z-(jZ29f@niM4UcaR=)&qUAm0#nr1Nrbi5*%f3Csy8Csjo`PHQf=5#G`|CMG9k_W{%U zf&}$b?69^;QjKCn+!Qtaq$-y80zK9KvPKQYSPXkMU8 zez+V!1C9zGnIt<`hm$&PU8`(2vwes#HiaX;&eTd4NEE$*#B0GlVX8w*q?B2+Ar{Yn_0hfgn;F0IJCizhhqjv0@x1@ z9igdd@N=R7PsDE^16{RwjdC51Doav6hw=?}e1^h!!>C(%vky%*sfA7fAn#v-xZvqf z4d!vu3Jq3#PWU7G?ef6c{}d>yka)l4Z}|!z`pHX#Vh6|CpvY^BCDB@&(jKqkY>Kb+ z*~c5}K(qU1lP22wG0rkK$jRT|bLovJ4ggyi&~rAqM3>;~*;4GuB2z{}X6aB1{t#-D zp#B);?DvbN)&q?&>)`6o0r{i)*adorbvDsMR1I{|jT2hjGQn+nb_n(=$xM-5mOq64 z1^aY!wFmtojdOpQOxN$jlh@&fXLal5^$sRDDZgSf>0Td-F_KQs%f1xcRjhe|7f z&}0Y#O*Vu21ZD%*wPy&%KO%8c%t1J)`fU=)-3E#41^<^?RDB|EBZK^o!c?tC#CT-f zI7xpF@nU9h6T`)m#+-~AZQ+UtI&-q{Y)`vZ$k{X0=3ir%CgbAP9YdD=pb>*9w(t$E z-4V8v{virUH6f9p3ifU`k8VQp%Z%r>g;GVO6R%Z(p+ySF`c13Uh<&(emgkk}2F1#Z z@ixQVu*K~9Jofkg<_147QEStCA_MPgDJsO!)FwSDMY4cPD+6j6MxOsUE(3>02E1(f zeBND}5vN`rh?t;^B?@Ws=lY;mg}t;P#?W+z2&k`U9}de;foapv59r{!-&`HsQUVu- z*dK`lI;mf)lh-YX{zUtUj2PT9OnsZ4RR%kJ%KZ`M0c$O7fFUtQHiG(+7pE0IWe4Fi zJvZlsO<5>Ed?W66w?9O;-wLXS#O1zIUzH5M%ejy;BIrr_i5p17p0u=EIE()wJ^-D*-Lht)&e!EDsvZVs~)mou6lIAoIL5~RbUf3!5 zjnmsGzGDi~UE(Z;Xqm`)@{zxCvTWpM(PxkLbnH5O%~RN_5>#>s6ziYGwxi2(o?Sp@ zBM+jh6Okj6YF;slYE5~kn))dr3u4yrhR9_CR)vX8-6J6l=(BNHHOULVxYo2x?y%D7 z17Vyj=eQ33aYz0)=)7pbVV=Zwx%9H$Ech)V-=v#RTA-$PIu<+1-83=1n^2tp)2z`4 zqXiel3Nob!dbrhDS7OI8|LQeiX}q)4wu1mr>?zS|JswEyBl>hFU-qBZy;)&D&}JXX zp@~O0?+ZiBBmw9&|I=U7oaSDx)E}%g0{Q71J;R#1C*0H((ZOqpOHNPHR$UIE3;qyO z2~&k-dWGNQmTrByvMJDZJF70f4QdWiM>`mxyz$a$!Otz36-U9-xb=plQVa z75Tp_v1u_rHR#I;3ARQIR3K7B74syxUTURZWEA2*zNq7RN?{eKUvO}oC)w`_RJu4g z75RS1uG@>g_2>_EErIAh#miMD+>WCC;$JNc|b;$p{YtuN4R4dka_``gB)|HS;FTts{Y0(ZqQvo z;qYq2y(kLZpwiySX`9MBlF5l*VxDnxgV{_<+FM;YuPij(mmADBw;1nHJobUhi1}wo zlK5tB*8*btB^}8DwVz}4*8RgTEf(>#PX4EGS)FgrF&9wLD}ITwf*-Cw;7bbf7J8$d9uIzeadApUJ=zJmkXQEB3CQ>%PqJ&J1c6v{@bHak&fGnH>j6MVMoS3% z-XuHudeL0uzVVyD`REj|CgiA=a@wE0-h1b84qG@k8JagCHW-`UM8+aSC{4GRrGS`9x;W;PRyh*|#%%5-w zOCI4$W^V0Q%+vS6NWRasGWVt)K1bkpawMK!)mo`YDirU|GS^fKCu}k0je?{_$xpo=4zTDUPo|9N$1vBd&F*fy2}-+&jFz-pseG z8YSB%?iR#@^b1A&hqyQd`s!ej7yo63Pl80t|FnCyjwuPZPI~=9*Z0cPuc0IOtMxSg zt_mt96$YNfWBX`-P=)ihN#^bMjOQ&+#~i+J`DuHBD1V-OT3!`N=8lR6`^+wesQIEb6-SaI6$96?j{uc|S7D=sz)pib&~g9?{9NKzpgBLa z>_P?i+H1X1k67pn6GQPrgzys7AV01}m_szaMEtsv-5}-2gdeXyC}f%yLPK-JZy& z7Mhf&5`Rwd_xqNzryOP;|J%;rxc15(;IisdKwnva)z!OH z=+9kCmzZDZNhu`5E-RtN2kO`U9J^XBQ|*ler7j>lCUM&Z-mY8it*6S)csnKna0O^9 zuY_LL7o`ao+&L@;CtjCEqa32FVGWUhlacl6m&ZWv(UXYaL_fmcss-}k@)|T~`5v1t z^`04dGF?v@k0#j#GsQD&zxT}UGn`K>e^){@%Wdcybi;Gt3pmw1nRRb^KME0bcC^ZM zq&hz@TM^nc2ng~h*TlDMAjO;!#pw<{p$Ibk(~Al~jMIHiokJ-$uQ<25GQD?;*V8T(Ph>V4;hB(s3k!xU-sx6_$l=4I$c)&0hXvHEM{${zE( zFr{a^Ml5#M!&?sPp9s^|NJ+_j%J%NOr{`ZX;SE(DCvMyPR)TZ7pF#z?gqyJuW9nvJ zX|erSt&8hWoZC}HTx>iNueCG}?6vAi40)+Ab8Ji8t*px<_YH02-->7B+& z`#yP4h_LdF(Mo4SFTBG{GuqFAN>?mh0B@wYTK#prF33$AFn)-IETDG+M)5!E-|P6p zchrw5rfM(>y7rYQWX=LrXF#FWw>S@1`%18+3+jVy^Wsdnn7h_LxaF2Y_(+rP!&5>+ zk_6fa(xs)}LuFTor`>40Jl)Bs+v0nr$R<{7047&QVtIs9xL18#|zo`jDtnb={5 z9@dyrgTJTS6vBZOinQ$p*2e}8SadnC5n~2_oB_~-%e9(2WXMQBW8-OyDYpL0ABFu0 zRp!4q+mV!}VBZo6_w0|`#X1O{F6-o_ZEl`bPLWJXPhzhb5p)U7R`Fzo+a%9&^uGTV4-SW0P6roV(f%513F6E^}+F!_e zwno0Q>LZ2tGxZ~r27;z=7v+^GJn+0lw&EqeYLLG#F*hW;vikky;~l>cDP)v-Lo^5tK$s$XF;0#XFC~if+B#O!zcWAbu0JuF*av&L zrQSixJ=~a=S;DY`W%1pa2ORM6659uy4cp=#&4V0RFSxs8;UUM!4z5@wuY73fQYC+F zxHEk5z0}XI#iu_td2b;MUe_L7*b)1Z`@EGEaR9Y4kl|K4>Edhl?#V5{r`skJ7Q~=e zz zBI-^VGZPH9A4L(IuLLFN5ZH|aR-@{<^5}BG9);i9gq{OBZ`h3_mMEYoRy_P}>((E4 z?6R7jd8OvtR4%osY@Z{G$N>(5F2 zt{?cC^LX^@v@bfV_Yp+thOu->?>exrLTm2V8BLMHO2{C|;!WFx9$uR`&}C{$Zz<_ zu$=?O)0#y-G98o5G}+Y=JqJkMvTG@<$7`C7v3MQB%XQw}TmI)|G-kebi7>2|!=Sns zxq&|h{Mc}XBR)$IL0;o-_`n;Ot@aRn{;G0DAXnc?LmCd`Bzcc!w^;-JyP3}3Z2CW8 zMcL3-He4M}15wv+#02bfX~vJ$IXmaQs&H+;qB& zUNc5jvOH5=yxH(pdHOkR(3lzS%%O6VJJ8PxxZNt;|5ulg*S;yT2 z$M~I7`5CRg96n*UVK&XUvu5}DWO5WrrR$9`1e!ORHcZtzErR-Yuc^BwV8W*`YhA6< z@;(BgCvKv{hcrw7;=SL&ldm2^oQC=R(Y=dEkE5}{1@U9LVNwq^bo_g}=O<(Vef1$_=q9V3m>&9e1)hhV3_ zPg0+Mvn?O~?za2>AbthcfS1)!8iMwn!cbXIQ{~7ui}YB#T8V*W)LmD5sIv=eu(Qkp z%$GgKpZ!e{_*`@yk=CcIxBnJNbx7lAHUmhm z1menF;`RjTiU?dCOwKLV(D*2(aTPDI^I90_3mo5fL$NgtJ`GkqQ22$!mTpxA*)7;X zoXw2vcogB(NpaGzy<~3Gn{S$#CtMoKJ?nF?DKpqq0=Ua(zyUR`ay26F`4huC;dDOK zTe~*}NWRmJ{D=InZG}4|FMTr@5n=O4z7lVoa`yD*&FvR@0~l1BLkd>=(jki9EP$dMJYw4DnXTB!YdkDibsV?q zqisg*2zfdT+TK&dCNb}>wyWWhK=3!InF&<}WKK5fA-#ZG%WTM-DRAkI%KVL`5y=?=vL@=TWNI+9Dx zY|2yL%9?Zj*j3wau-TlpG+NOR6`RE z*v9s-9ylcXR%GbE|HA8hHOH~BehkywA~$i_NON`39X>ZAxZ=r7VpGlf>S)`#RaFz8 zGXbQF&ovPp%rwv3mSJp7v;v^Yhwbl9mQG&TUOB%nc>)ARUJevi<6hZ9#((CGuKo1oG8YfV<5%qG2o=Ce(D@)sWR-xj_YW9p~wAX!jnVN7x&ZVN&@rj>tn1`BU` zJN^p}jV`^}1bn8%NBOuH$sXX2U1z22Ijm8p>N3jmsZjzPF@XxzNoILMwQ?rfots?a zZwP$Ob1T`Y2=8eHR*b8t37!0cl&2aCw<7nrag(;lX$g+;(J$i3ondw8L5E#%8Ad%B z!|^+>(=l$c!C5(M8S_eN!i{h?uqm>~NJN^;_ca2Ely;WD)mY ze1j6Ts53$juO1+)A^w2USQDE1;`in%%}cF_?hohU3g5PS3lO?o4< zQ7_=*++da7rLtZnSO&?GCmLXd^(4ST5O%2i2t?`Zge){fwE9i@rg#+)aQ*MJYnM>%Qz3pOe}Ei zNcgG)9!He6y9p6%Gs??5*`kk>R_TR4KSlmd~q=C{AP_wBRBD&g3ghVGIu;E`rIQEs4BEGu~CA+JR?-4=?k4L!sNpM)YV?Pk?t?xWEB zs)FVhUJBBn*Te&BKexurhAxl!NR`7y zGK7fB_7mo4a#=?+enuhvw$zzqPyjy9>mu-|0)oa~P2I z38D>W)>aBtc@I21;fK$}I|gsQu;0&mPl-IR<4w)jurm?B-G$M1VFggjSpy%Dr|ED2 zcI=@~#G1z~(x7hJ_Ew zNW2u`iv!f#5ZK zB1SKP);|z3El_Vc0S14WVPKNT+ZPj{oqVrkz(jnJ2l>Zm-JO3wv3({~fe=C!LM39P z7WOzn+5&SLbE`EVh69p19( z2Mt6HT*XI-*6-g^B3nDY*6p&T89w2VTD-pF)H?n%)G;OX)^Z>VUy>B}h27PAFSVB@ zggtHxd!9lbOnVx`9=!QD7kYD}{)$1@`6PM<2EGWm{rJQ35}?L7%%h%EHj-|dh_|8P zUGRC$vHa6dcDcO32YsQ2;%)$O#PTWX$V?VL5XNBlZvs!lOd;-)Z}fydGlPO&5f;4z zl7paa5VOd{s04QXT zy5}0re^`Z-u3}SSoWY7 z2>l-!CVZ?;Cra_L2_>@hk|U$2w+1b|2NXC()IYx4=8!SmvaXeT(VVxQf^_Xpm%twR z9N(b&$dt^o6<|Z^UQty3Fy)}{ie>LEW4G*#85M#ijUI#w<*q@puTzUQg{sMb%Ymb_ z1!F6FifBO^!O)N>vXbD7IZ#2Z|82czY7{_egv(!?s7=nK12YS5jq8RVvIpvLzk*DIN{%T<5wz4;BXq8PQ}2HJh(~2EwG!cps$KB& zEA;8kn72Jd>UhVH(&V_^5l_J~U3XT3T9^EC+fG7e?P`0Vg>~6JLC*DbI$6STQRXLe z+lE9w$7y?b4nvLvY9wy`<~_EK_jCCa+f*ixeU-9*>P!>U!gx%H%odAqffx}5&bYSE z83YLk2zi+nmyn=hwuaKJL%klH1yR5U{dVBE8y9EH)f@t^ugymWg~106q0Cg!O|j>Gf+Z%#ofeahV6QW0Cov>X2qMB1O=Vf3xM^b=9fb zY{K^IF0vrE&b1s7+7(qPx%2;;1-4noDEMtR)iFS7I7$J zUw3%dVrtC5aQR`HM$NL>u^RXYw{q%@U2IRW=s*F91709R0m%j0pDz8w)E>eVF@PTb z8ufU9IIj0pkpeOUY;Qywp4Hy$RoGz$h1gn{PDAVX;M{Kxswf4a-TYRYL|33634RAm zDKqvp33MSSWehJ_Sxqnw`r5RTAe>I7fI<9r9I3MiBUo4Vfu`ky|1lXqfuG{GOi+Z| z?_e43rH3sg8jbp(RV9~5mU>!K)U0=p1YC}NOAKm%8n!QI5>~b>>vHII0WYnc6umIR zyi|EXy%wHC;ddWD1o_0?*ww!s+;S6;0G59C2$0Sh=vFEa-JrQ6LCE-8S`gKew@_F) zkW3NlNJW4DRsyxRaWbH&V7MHeC;pE2v=7nAMO5 zDf&b5gO7q#Yq`G%GTRr1JCx$Lq48D`h3#hTmTrB6wYc2q!X%!C%%XKziBhY8oITfc z#n@mi^Hsl)e4Ijc&%Y_Lio=4~A^AD*W(dJ*(8G0?ZHRsBuBO%GjfG%ZFy)Xj22qyM z2jcgC^Yt4b1OKrMIQGCtptT~*C>4pwL%@$OF)5H7pe?l;eE-<9#c0K2=!5<^D?^_!}$v8~J@Pe;Z=shlGQe z7onf}o-%9TGi5Rlat+C-0A3!dIol|v*(=nWBNCIE3ROzE)GtkT!jsj^nrVlq=O&^! z{l|{QC7Y_xSyl=%0Lr~gkE|_NUN!QeLFuq?xHxs@xYXdW5*B^ZtQ--TIveWP{W=%&hlCb0pGMT{TvkO%r7|)J1}fL|->-4tbZ!ga-Z(l%R=MYO&-{^(o9Xl1OJeM^??WS z0n9Lc?xga3@L_{mVI;%4Eu3^I%w4_IEaEOAMj1_nVlcF5iSuNcAv}4{2U^y6ji@h<$r@px?YfO(KCmUECp~f{=B>%>S7orxK4Q zX;20a9Bu%i1f53zOewHxwbln=zwWx{s;Ig+MalodqieKU-($5Fk0&~phO56s;$_F` zmUV0<&J7ZEYiHY$->~7xe10ZluOf=ylGBS7ij9!sl`Zd0v&Nc)3s5^i<7tQ~A2={h za_U|f*{a3aJ+)Li!B3m#g@}bs(|+87&j(4P~ff$g0~rY zNx+F?B)ZF_Eli??E`_uiG4=6R68@^v@o5zHv0EiXZeJ`5r668|6@rtpLFS^!hJNi} z4qA@@-#~#yCOnwpwDx1;GcGZMux7~WHntHvioz7Hlf6evUd}aC@sej7$jQPmg6#~Q ztT#(mJ(ZF!2std3Zu|$0_0B}@u8{|)R}5-Z1&Y;96{{-Pt1Mbb94Y87LD4;G;T6T#o)H&hK4U00=ZbtUG z1K^Ax%Fz58W9{9Tp*4ZfxG~pU1cb20qNwK-P-z5eNw`~l02g&XjP^F>qJ9tIj_@Z1 z>7-AMY56XSS_W521S!k+yNXvKc?zV-;m(%=xIOwJMeiVPk7*Dl2XV6-O35Y+xE+KxO}GN$AjCGI3ZU~L(PjZPhbrKQaLqpQ z*NuLi1f#`Gn52GD2q@{7JW`$_8aJ7wCN;&X4#AB`>KBC^UjJe_)xM?}6VuoBCK$av>@G?qIm{*b+>e+mKmmu;3!^SW##pxv3ImmEb~OL4r%cTH{i6^Lx8T1248nsJ z0&1C9QK4mQp&kx*9$u262Db#WwPdJK5C*qos9PayYALuRPyv`j9pz}a+XVsd8H}E^ zWO(^np~tjhc-0^T(gjK*W9$v>>sAVF)`=DU*YFZvkA*vXmttT?V0DPnQjCl)2ilLV z7+v1h5Lzqr*+hZY#I`0g!rfv^G1RI^QKdCQ{RTpp)(mw#gt4u;CbvLX+gcR8rvfsF zK%NSBJ0tu#w?XnY?5{k8vTfL32!sv@?vzG$ItJRXHgeI45JJqNE1Ajb?Ql&2_ZwVd;L;H2;JN2q|R-bn=%xh3wmYYrh28B1UAEFeOn>{zqs5aAm4P#P-dIO zP%yuu7ifiRo(U*9NP4d=LlJh)Qo<`0ltS$=9@{ZD2^$whQm^H%3Rshj;#%bHm0 zWqn!Ya!1wW(tNp^OR+5_%WmiK`Reo*bm8^dXDp{BeUJVI<@`#n{qOLCA--jc|b zLO0Z!;=IG066Ks4+N2w(O83@2T`t=a!>qOy%Q?zpznn+o-04iIs&w{gD#&SSu5gwgXH0FJLn`+2fCGkC;6F1OK8Cz z_?bpDgh(LEr+xkD zHHZFt=}&k%{?Pg0VzlE#cl`4HlH^Z>;y)jY2LC!o@h9-3rmedHMPfzzs8 zHG%3EL{;mklL8Ple@&xDY&z);Dcb3{4}@|MLE{A_u3qe~1%IZ!!X)c1c0+jI1 zI;kUqbDimQ=rnbrHWuT=dNp#5s89{9Sd7X$Ruh_v9lHm3yIid-0KoXApkqMaP(a=VMI6dSlVmn~yOa zgs`_aA7iRHic4NprO3yaa*%jvARlA;2>ZW!^D(BjeRNXGK75R60fgCo_!!fV5Werj z$CyI@upDFBRGAOw6zr>$jD7hSQ;X4J7-s%qIchUf*oDBRLtj3|B(gW5}vE@F(%JYo#YbA$Cw5|=oTuDF@?Ob9Ao;S3fDlHembdWKR(73-~elv zDtwG-39J_NvpL38RjJ#gH>zVyM`4%VkB>1`Rq9npcE^}L!S>&NT*pwaw#&V3w7|5rQ!V%lAKc7ZA1YvJ~K8@r$KquuHAdWFfZ!O1|+KYsP5EVLr z6Q)DhGk_Digy|$F1j{+pptpPuwL30#MKBKG%2OR-n#V1qKEkvYp^ z;|LQ)%14+M!!&6iA7Q!%;le;Z!X&-39AR2qm5(sh8H9V5LG+aQ9Uoy@0d46ZnpJtM zD@T|TCMrjm0^eDVFukbCJFPz=#rK2w2vf09_V?-ctMa0=KsYKroc1;U9HrXVG@av0 ziBx5m`w)}sG4OdPat^~a?Qtj#;ioQw=?c4Yc*G^ma>ON7KH@UWGU-oMCVk^qqpY{p z;PD>QR1=JpLf+iBm5eVOg(_r`Fc zw@x5wMg*U}5yttYfIqFLZ=NIiX@q<;CVw+$xVY5_A&)%4$+xIinIJXn)ZlTZ1~2Edt7 zyev+Guq%p}#fsvuR%ls#3&M>kKINm01}{eQinu(4vIwU0!~bhVJoO7JVyCL|*yz+z z?46jN4gZgV2iX+d-@Pob?4GKV61c`k#Bz~WEzCfHGZ8fi@V<$r2jNi4$DpSnXugNi zG*&15NXj!PyNBtd_6XXyQ0|S=N!t*#PKorK8I$Q4dPWGP-FP@a(E34{8n2T&A!y4& zIhufVDuT8ql(&<0(n$nuQz#V?{)Ja!i(4vV^i5O7u8Z($&fdD3ObKuwQ`U zdL4gq(0lzmU=qEP$R9L#0wLg^JkqiD7)4K^+(nLC7xIes+!$r?^B%+F&|t3#wRuH* za52bfF>NWm=M`;@B^XvqcttBx=9N>56>XzsI;qYw>xwpHteDCZ$p4+eo^2ZPigr27 zrZ3|a?Vx0xL~lftSG41n>!cye>9EFoUeUH&p_6K@;1zAPl{%^NN-luN09^FJa`3-V z9WFo=Y$8_DV~7u2fOXL3ujB%Vl+JQW<(FHlKt`*q2mcd3h+l5u;-po)Vs0}>6f5YX zYQ=mB@kdti47_$VI>Kt6f!nM>y{w@Pu8+K8c3X>HvzAxP?IE;Y%PZ!J^HeKlp~x#{ z!>2q_T76zIFNgiywY*|3ouZTcQ+UOE0K%>mUNIM3r<3xp;}vt-C(DZYc3oZv4n$19 zb-ZGJx=e7T;j?8`mn!U5!)E0=UNH+hjTHJ>wPHSr_{?>@niDq8iX{Gt)!Z|fK3Qj7 zF+ZR4g%xwY^{BV?wkzgD8*^GQ=c&gl=BhBSvRSInU>>9U?z%x@q( zTQ643DW5GXX3zRu1CuxCq_G=##r&rOtkdf8iuos4J=$QiVm`NB)NRgZ)r#43Bi8I2 zdBrSjG>T-mVh)9EkBwZ%!pd2ZZ0mS8Om}Wnt(XmPPAldX^?BiY2eH>S^1`?LCY@Ar z6EA$nKp3`3te8VA32ROi32!6n>LyNDZnI7*v6&N&hA?!qIQU;-t_7M=K%>?31w@}m zFxH-Hw|WkpW50UNsjptK{DzdTHjCAB%pCjGv!Q|7-na!rV2fBi|2S8-yn4RYfLG5~ z5tEfl8&rsqSI^bAqT?c%)-SVJJzL(`E3ckI$PZS}R?n8DukEk6lC5M;2p$dgG&N%~e*~Y`wlbNo*oL`t8i52NF+c!erj!Tin`y%Vd5W z!hvs@%xmqzY`2HWJQ>2mJxu0itwtvEjg6V2o*?Go9wzfC3gKkKjtFOjuq(V*C;9DV zGM}Q5PJpwPz*GlHDv%Wy)b6_-UuPvExnrTnwR~j>! ze+%>7dj*;Aotc}=H9<_~Kf>h3UMBP2`*hM*`vjSXqGUwo-v@CGyhPMb`1K@=N zDl*S@wvf4Z6XxWmh;49yIe9UJc?X!2A49l*K#;j1uZ7IpiG)oK;^y)oCtL(!?mC8nSjha(rcCA!k>dVgCi9@#_GJFN zDU-SH5%@krWNuugCUcM3{|7S9QOG=q5WF1hd9M|dc{})QaD>TRdldISN0`h%KzVtT zSlEThJpGtX+IWn~eD-lH>5ns+=O|<@xmw8lPBSL+Gq5>zoOX>|naux&_WU@Ld5%Kn z6fekpeTGg-$*_`npevJk7A~I2U^4GLUD-l+Rgt+V6R0w|L!5%JH zS0?jnC&9QUnaoE*73N#T{J<(@&Ejq$oTkEV8ElrEW-=Fc8Y#zJMdn8l zfA};Ljj(Z6BwM0+2-63rtz`bo^e>Qk-ZLo58Cx=+J>8znR|PYfSAcoBGlI;QPtQ%} z*}+Wa-C)w;43qf}5H6k(WFFvQA@eOQxCRcN)k%BKGMWGF0Bb-CCiAlAbW-VaHe|j| zsoPKw6`6O0UE6a^=IfMt6_Op9FM#dbb6m&klsaDbg*v_p(<|pxWS-<E z_U$?56e*Lq&qd^Rkx6_ogwTsj;wkwoBp%j^N>m z&R(R)c=?#b1HaQr6%kBDXMUN)v-4R<{75S%@!?2e{*Fn!ud-r{<>Q5sTZ;f8{HnuG+7b z_Zq{M`WKS&i^4w!d%SGTdyO8Kz($vNudynGDwlY#u`7hHFY#XE1PJ3U@m}Kw2jnCd&_Zn+C`eE&sk{I0&(qxg^UVEV;}jIR@d#WiH7J2tQxul6YM~_d+mTob|seNu+X@ zDkP;OKMwXtXv-yOjC>nj;gSr5FyIQ8WHyAESGXkKLfCzUOL7~+%`03I=WJZf=8{x^ zP!7Sgaqj=FB+ZjWNra@7{3NDanPw9>(@ul3~aO1i*e>GmC}E%N~xc$QbKpAluo-<)a09Y8dgr6VGyI&y5QnmRL5+p zlCL>7_hY;9mdADpmdAFP@$}ekg5|N@-_|dJ6{4AH%s4SSTP1GM(nDP4b)efznC(Gk zX$bP%bsNG>1bw2)K^{8?;@R0Jn0~k>KaWZruaoAC6MZNU-0f6mi09PfwCqOISJ%Nx z2tIG2_&lXQcj(Ur{Lvi4pSYV?5+eAd(d7-}=>P_tX!A_aNhfdVq)rG0^b_b8zWB5K z2QV~(wj7ivIk=ERzx0LD{V`%5(=UCYGoSG{z^1347GP=*+BOX>~f452Ngm#+CjxkhRH^^yyM^MeWW0AohH^GjJsig*4;7Lwz&dE;@j z5TKW)7DXa&D8E-mMhMyfDATLzB|U<3rFgPWiFd9i3#swWEoC7sUfTu2##(x*B7$>2 z`D%K+HU>h;2J{mZxEcq=r8$;~2-+D?euNN0$`UBI+aN~-?RqE!+vz0_1nq7p@gXQ@ zM<_=L%Qsl-AZW9oOzNeV-uJ|+`4*JEOL>j-07~BH_%nJu-(36-<-FK7`WMQL`K)Lr z>ZCTuS;+^bS{f@pP>M`qr3jQaJjn8vfpT~OD}hiv#6zRHQ1Uj#p9*U^x-As9r>t~= zGI}%H_J-mzh!Vu&Po1-DGa5?jIkuTZHnYfP5&qn~!8WU)MBHR$6O{e8SlLB62<0G@ zukNyv3FYM-Ru4L=ITSy+Sc0y+*3l1uO7BplCni&sOBH96?9-!%2vCnm)w$E;*)K zVGHn9>{R(d$+96XMLP3=@IC|dQm+AAfJ6vW25>;iL=9I)$;5aS+CYv6BrD*2zwMf5Tn*5{r|{ z!pW>5g?}X{r4e}rW|t65zb~baVZ=@{=I}q zu2DH+K+*-bZC&{H5*uK@4nZnJzqA#mc@;^kO7ssUqTk$}M}o5m8v5<+YY4w0Xz4e& z1qSIQ;~@HNd}#o>FkVbGK?W4T`GVU%+@fomBC08j8X@@9hT=)TJr~BVQV1FUon?@J zcRn6QqsfqdckWJ6^6$+L;L@H!Tvn0PU6GWsKFcUL4|!VpdXb+vdgIr82bGCCDC0`L zAF=#AT`DBM;z)rmq=Lew`vtdZ-|$`5TR`}OV9;IGYo*GqlI0)WZx#MVY?_6m4U7)X+&4a^5%foLvVXOM6@79%Pm+w0s}aLTTmp=qjF?z!H}*>3y$UJL0!28 zlP91BD<`X4P`)9Sys6@bcwFzwO*II4^+%9zi04hn-My)Sj(6n-S_7+95!66|D{?mw z{XR@C?l}czAm!s4;TzVCi+d)5PBe+)QnXy$&$#qn6!)A`+;a|!+qj!j-1{8;bvJc! zTkKF5R|fP^@na@H?h(G4?hL4Yq+Y6xAiud`6ofbgce4O?7FuQ`1N*1|`{)2zPB&%^ z?{>b88HRm6`G~ zE>`a`d(lUL`o`O^lvjjbA|<3x|13kIC6v&$8hUFE5Nz!M)7nr@;_^`hdDadv0-G_y z>&NaqUwB4iHHF|#G4hb80WC0^heRxd$Y^=?rY{GLw8h{ZQQEDCWchZ`R@iNc7PHi( zc$BtqY@ zC;zTzDzZ;Nkbl?XKT#nq*eSp3Iga?lF-(!dMx&Cf@Pc}BoBs*>w^U-If3g~;r7sbR zViEeyJ-IIxjz#^%aEMkAQaxu2_8en2X(%QD!ds5__H5ytwx?AB$rW~y~rI2s|KfJTbzjdfWR zodg?0tcz@q#)@?rqMhnSl!)tIQao)cZHKYaYz%#PRc_lO&4^uq{<|K4I;|a?9I!l!Ey94T-4n7 zv@b5BO3*UuHKnW{QA}Ps%|(jYlxoZV|5!Rz6D=2LLfQclerdgVQ*}Smev9BvF>(vO zf%Y4Mu}*@u1-XNTQu43}y-OeNV6}&0`8||7Si1!K4)#xP?qI`U6*rVR*v%cP4(7T7 zEtdqhVQ^VsEfjgs=1@kMm#l*})PeI3eZ-(OT~s+$UdSO2(zOYq2L%*_(dZ~O2d zT?IVJLwS&HOb~-Kq@Ze$-a`Dfp*%=8Dj+sGfb*memsK|m+%SyF`e~VZkji*66+8)q zXKIAo)V_?TCelWIXwk?eM%(@Vq8G zi4ktbP{wl^X)XvnpA>m~vf)@pWh3FYyg#JxGX1vFUc{qY7q!2F(+(+uA zyd#+G5xlQL;#XUKC7(-Gq^XXIC$`xryE#p&!tnbKMBD^&^>Qvml%k z8U7C86*nbxMn{eECwu$aTDJxqUky@6UBS1Xkgrs8c;X zkb99ZooEbBr-z|vbD*TaYz~6%)vunC!4KJWi|`2?07o96?eU{AO(JMMAvPVtJ_KVP zX8!HCDJk0cxR`nAQ&X1i5k!7^M0iafz}@2yB>QzVL(iXP4}Hu4hF*S*UMf3=ptnD! zf-bu?liS`{=Lxr8!La=pcH8N=z1wWzb|$Q*%Wi#h)NW~tOCh&?BPurx<0)Sd>@u^cE$*Zmbl{l%ykJmY>%yNQsyCtW)C)@+ZxWcjsHjt?>`F;*n%k z`~q2_6ZVA$@+tdd)o+j|$mNZfa=*yZFND*r0>G97t&bSH(4MP|CE0={30T6|m`>pv zr?aw*6tjw5j5F2BdbM(el~O3PvFvh{vYz{syyY*C$Q6@pZjs&0Zm$NaZ;`K~d9RM) zk@z0MKh!yN^!9;l>JA=e&#HseuYf5tRxg!8kl!`X9zxr(v^xk}`CS7ep_#`Ld&uM? z`P1E!*=_J3v5!bs{%vUo%LrJd=y!i8V^=N za8D9hcNkAwi1J!DVyaHc#PvLbF<-?_Rn1q1!th+u?6EkUN9{_aST>$V?eNL=qjp+2 zkJ{_7x=Q|yrFYwsK@hnuWA=C<-2My0KZVG_QjTXl zxKpep()dssZ}~;1Q^c~$&Nk)``8i)3kaiBLLL=GG-O?xM??|sme*l% zRU~;2;V(If zx}G}4<{o~LS(874r|W-V_V+|COVI?}nkF!?mJpgH=y{X{Qc;$gHD8H@iHMq#K;u#r zYa6swkvbc~$FiA(Qm% zagD9VWV6dV;V}tj^Cq#!{SfvFk3T@TD?HK%n?8|8dBJ^H=^dd|*ga;=yhvVfmxE!6 z$-Lk`t@MnfBB}-Vc*KvK%nR<*N>4uRpihsCN|j`*fmNP@RmKzsCT#MmtgXQGQ4DMl?8BxIu(`Q`sotLQs{%_Z z3RwHhn&Sf2d?cMYg<<`z*aa3SXHO$r7BYiR`fiZ`pUM} zSH7tt!%zaY->m5x&A@sg@i$W$SOLW@Neyf_;DWbu>T+fn`;Z~ zxfNJ>CBsYtcEGH8Er69vL=Q`3VAU17*J@zn5kE4KfmK)FRCfUEjsSKM_F0JpY^N=- zOe?UKN`?Ue0Cv!UB- z`pE{C^-XKzl=3@cHwGZa(7>W}z7(-~Hx0xQu$ZLJlsR>6M7 zbb|Hai?y{}$u0=lIUP1@+L;;F86-U+U~N$B%xYLpGf;8?Yl8x2g9BK#%nYkO($t+n zu#EG+1nZ!ZT?)ZEV%9tsu)>fubOysZs@P?#VXZ;@iWv;+r~>AwgGRh0VBLcK4H;HN z8(0$*Sl5*7q~d^e)T|jB$FM#k=|2M2ZN)CIxC&P7nHYjI8P;tD)@=v16&A;^VqqUW zlVCNsffcX7dST@*f_2QSaUaUCl96=bOosK&%3W$$FA)Dkzp5NZ0(Vm#i8-D@?Tbj0tO#dw5`MkQJC%pS^kTxRPf z=h;+EJ8UOK`eZ!r*$7w}B|{-qVrNbnW=*GI46-sDRYdTXU!kC+5mHG3KmhIx+plIb z;6MdtpaZ}ShB4sLupcP{?vj|hUFF?Q%kS7qp!Qxw_#_YG4c-k%uyQs%vMIqEye@Mv z2oX$m7FxWR)nm!>D>m}-GQ#ceVZ3}E4EwM-ynOD+>0DJH9}18gVYPk^f!ykFD@@*q z%3Nr(sQNp?RAM-9L|sJcEb`#`AVDW307|zJF#QS2pSb)h!JwU_o3>8=jVL~NIPWBV zGgmKlnJbp2ciB|gv40=oxpO$LFvr1c%v@fYra)LTmlv1kA)Hp6JhFB2A;R+y;Uw=o zq?yM~DnKYVkDYXe&~YAZNBvIEiK!L-fUpFY=Fj8pD5)gs`(uQsT-Q%=H3vaQbsd5j zs^2CfxPGh8$MR%8)$fKq4yaIab((}qL#k&;;hcAp`i8L-J&=v`I5UD^~2L6ot3q)(-h+$oR1)j!fB38Xld#0~Mfl%*jq2%ql}^B4IvmdN!$!;>CPmDWgiMx$%yhthfhT5JLD z1O}9$-;xaRs5gpt0y{3$OKlhOPT*_^(-Dk?mRR?wipKC>V?p^F(>y}S&+Z{E3q~>6 zGe~w~Ay-D}CH8GOWfTMd2&?xC3HUozWpEvn+dV^Eo(Q+)7vWZE5!ZoK)=~$Tg{yUl zS-FVnwbucgdX-mw@-|>lSz5IZDOqYXZv(zWieC^+9rs!iIot-Mb&%h5J`hLye2qt| zZo^A&;TUv~ZlhIsmOg8Zh|3l6#2PUxSA=$n60t!YVJx)Q+6u-Q`&3Gu{VFBukX5nF zX5s{)BqdPcQ_Y&eV|b$QS*(}zi+MI1yi{3GmQ~GWgApILm?sBeqftrLR_#7U@Gk7v zFQ!&aP#w(>@5NN|$ss&jaYKM~K7>cck)*^M%BgT%g1;<*BT30U$pMas0*CVw^yMXl zBWR@^jvY$91R)=%ZDvivSgx0fNKV^-rCg!ukT7|*u~if>XYA@AGHJ1_| zjeY$*Rq9774?H`}niPSj57P8l%6MKVcmm6-@FXLC@lwX~LP7Du0iFc{Pd4l?%XmiH zKn<=c46;HA8;t>n%!z8R_#%;7me_8O!M{PXgy3(0)ZQ{rMj_)5uS$NVoR!jI-7Xy;N-lnD;eG=2gR>B zk>RDo>cC1Wep0%l;=9(OH6Q%nM+)cq>NQ^u<@!ye$03pHL-@Hba`j8GuaxZ~SKn1A z(JHExn(Bw0MegyD^eYq9&$54CYrE<*RHBETkv^poxZ;A~tidX(xJq1c@zBOnHp5c> zqvFU<_ei(I1hJQo6vtO_5oV>>S6obj*e-+B2P%T8qwV^{+HVrb|By(J$HITP)fhjk z+5ck)RdiYS9}cUbtI7Y-L-vbt`BrDiI-9$c>5;y=Nqnob9BG$Pde_!yv@`&zHyNfK zpq#|zqpSIudk#UI6{!!O#J3xsYxI%_f;+`n4&p%zTq6$RL5N(VJagY{i(zJD$%T{n zPH8LbwyY61IeXXH+~mxT)ZZ4lUWVCsYna*IK=@r`=(iS)xR!2mdIGzlGC=i$&>NS! zuH~DYAY65t6KQ$oz5`b`ujM*Ey3W3i%THDg-PlP!(jc zB+_%sWNylTki|QZP2=_U*({$dwtQ3cQk4|S?(88o1;`Jn$Zc|@=O^K|8w|Uou-gO& zZeI(xNwAtHyX~wlMX55J$W(j1b=)Y2HK-+iUT@P9X_21&rf^H_hs(Vw+!EhIxRb&y zk!KyceTsPInnK9;M0)L{g!IHB2+@t!@e_-I5C*K{Cl<3I%tUafH1cDM1JKgeDGxxi z$=BXU&!46!zu~CDozG=G7Jlm)K@|v<)+-M{r9j#nkMt@#Rs8_8Ck(o;=d33|n7E!E zT?KO1JD_d0_>ebL$j8A*&xupH0X`${{d#dUXM=Q+JN=e25JBobpyy_^W+Ab zad9=$ciU7Ro4t^z2PJfkM;8kPf?J6&odP8hmnUxEv6)2JZlGHya@%Ah=JE!5oEym1 z^B1%?8@PI^ZPZJZH!5TEx-Ew5ktHi9^4N@mUBpH)Hgh)E^oX00`e7p11u&bxk$c1e z2>Uj2hCf31o}A=M0`^P-wE#lECM<+D@z{J#g}B9IGZt5eY~srO*+J!=O;pC_$|JeQ zW(qt9R@F%9(=awSsmEqEt~x!4^lUbb+wdr|NEg{eZM4s(<}_}@x3KzS6J?ii#CB{- z)#z0ck)A7rTffbqqRrxQwF9?vgxk)r`f4+|ovC(PstYGFg>C%8*fegkX^DR$JwHz4 zmKY6}BR6wPtcI|1Gq=PU2q!ixk2(qY$4Ji_)5UnAE0*!JMK3vR;Z$89blRdk;w-tz zro()Q^qMxEhj#+(;gZB(>hM!^ej650l zJX5zW)lnw7^^U3#I)f`$w^c9YLvYU&byX8u^{wI;U=Vt4l@CtrMdy1Bqj5;8O@}fc z*Qak4tM8!dbOJ28@Sz#v3^QG^>_x%oF9g$zOS$)=(WIl=dvG zACUEnSunduMaT7fl>Hqj-)#rkZRexWK{aR{9#w2HGL+xm(s+kns=q_9Ox?{keY<*; z{_adJ<|vqr*ui~!4TM!YxP)gRoK&1NWhcs6fErQyBD2_ub|gfctX$yX5C z@6?NFmw?uf(vO(MeQE)s=I#`SAvfFisqk6cr?OymjvN_Z99H)!`B)mcEgMy8_blFz z`W1#R5lkJ9d|^L|PhMwJ$}&+!<&)Rmy8r~i6!yp_mF>xE*MHCiQcaEIJsXYl2})h0 ztBqhx+^kwPyXKn=@`PP;vh#v62sXVak9C`KF%g!p6U1KnJ=?w%73CK@n2u%z@kOXEq5t~$jMxbGd6)hJ&)-a(3GtWS3_yXEzR3V<%e8XZvx(30WVq_+}2kj1m@#ig8Cgaf+P#ei7MtNQrMF`lV zm;Co|5&m&dgfpTD-C*_29;&gChi&KM5OO;=N?&~*yPX8Xal&m>s=ZtPdF=KwtiB_+ zrqVf%YQ}Q6M*des>1PT5?~vkm;s2}y|Ko-KN_)}6_7d#099!6F_HM5Ww{u`MOLqH*+O6E%Cv!sO6JYDXgY(rJMBgIi?!Da0??Sk}SIo;fgef)3 zyVHE0mwjkn_M!RMo#NzqSicXwcb~G_Hq=3yjZxmy9HgN*%U7XbzjB{4cL!0Lol*Ly z^SSJG_hU-k&t?D9LD{d&=dw?O)ztmeWWydhYBJZ67&T`2zmS9>G)_H)vMJZhD6h^* zoa;{b*(!2P+-9F^a1!VG1XhnJSL6DJwhbxOh1*k6UfYD*dj8Fq+=1Iw!fo>d z^qM|$`$_G#)Id&Tny}3g3tR3`DBCkp`eF+>+ekPH7uo*kAY1PRob3i!t&_8D^T75F z#buWbv9>q+wp+mDejbU=QbN}WQ$g-PFnS@q_YcY&Tz+wY$vuUzg_!l57BJ0rK8UII zAl>TKWpW=2ZRA1jh5I3Vdr%?wBDNShnoDLcU~>NrcCQW!axb^bX6^8mS?{xub2X;x zrTppK?dw9Qoz5BdgU~yj$bCMrXA`I-2pe!|bvl!~p&km+$!xhp`2$y9rgP<1+ht$5 zgBL1yD3AB&CiS&cS8(AUn@k;zd6YHt3{miDOjD5bJp*+ z?L8&;*tA>$bHQ1QxcB^mM9(RqYb#Vj4$6LDF-+S-@j9%RJP&j4G1Nz`_?kT*FXDD= zjhL2)iBIZt?=eG*I?Ro^9m1BwO7E#}i=m*oxNb4`o+q$-d|33J7JF=ZPa(5s=f#|> z`wZK#%FvA}E z%H6zJ={@^$|IS0M*7E5#MQRagdbpUY)$J%o?NO>$BQ431uVE=neWBFA<;q9JmL4H$ z9qCzb2^Vk@VkRCXY8Ta-3T@+2F6Cng4~{C;+Qb$^tH|O5mvFTfK8D-iW1?EyrQ1|% zn@G=XBG;xc3p&Qt8V+ILG0t#4gxTaIUuoLXYXDGXAY8|#i^s&49A-Y(@j+=ZAO88jdoa?9O>b~S@5(vXQsC{t;xl8Mj;;*tNRj1a^QLtc)s++?I&;Ewh|a?SNq_ zf_s`k^&HwG1k*zmD&?@A4{CEi)>xaqhT`=ZKQ;*$I+;U#v1A73YeaPatW8SPVs06LX1=MXzx5LxL-P- z#)9-T)q7(e4Hco4Js}MTlQpYnq8d9hbEuy{U%AJd=GtY44o^VjP zXI3bqA@gGH(U3#T0cSf`Vl+HakA~17WYIC&tMN*1!z^TR>I~CmN|1#v%dX^hD{vP5 z^eoZYql=E{%(8?gpPiz;mI|K@k)rNdhQ8pWJ@gsE{|HzOJ1akCR~MmFeNJQyIcYn> zq$bF%OSJ#XmE4zCA${^$+O}`Pefbu&YlQrVlXfF4h?0LDt#7u9!4^7)VxD8LFC2ia zxr)Jdf>p>l0z39QyJs`xHauFtLAad&!x6%5ty2#6e}&uou=;`AnvQ?>#X3$Q|0AOH z{|f)w^GI=?{kxpD_y1D(Zvd-$WNq}gWD7f++>Vacf3=$34uD}_;Wom7+h(iT?MhfJ zm)(A!Z9AlsPumQq3DHHyujV10iA2XKq3avk*l4PeQrFP?Num6V%a6~CU-%-%DIwbX z=4u{XHL}3hS+qgjl!tUrXkD{-ge`@zFiRQIskRsCX0u3p$mGc;04aGDTGEBXh=Ix!D603<%KX6m*Ovo*M3kTCi9TKj;oh0 zaOECzP`Sx#lp*b&oqI_8z;ia7yD-Pdwvb|5NzC2CHoHZ)}up+x0TZ z?fhu3?}XcbVE9hBJ?_BmapAV=cUXIWM{e7y-Ii+2iA=9$j#AS87b-wn(9bd^%D2Io)Ef{tNdlr6WVfO@xAyDDfE_cL~Mo0 zG6d7tXKm`^Z{^rQC>7{rw0GxqT%fU+aSwi(3-rc8fr8g@f%d>E?J^ap{UzH1RX=C5 z<8&t4J87M|K(~?d=4CF>X9yq3mHcd}6(?4Hf_N_4^!+;ZQ=tl1aF>6Dp9*~iq2m>P zrZgVH$SY#+Dv3&$6>TcLUa~xyx`e2#E9}K38|#E@_EHH#g>2etZqEBt-Jo^KR`#?q z$=Ahb(@^1SE8;d~v#-Yx9tvM>SK<6BJsuLiYCx-eRenZNA1(75*RQ}&fuJe;su8;4 zbUE7F`l^v>=WHIgpzaT?S6(%eemVF3i~LkbuKQHmx~~}HW!%7YHU%IiUF9~|1|jt- zx4|_C*#t5FR)9LjPU^Fh4RD~{g@`=Y^wI~I83?tll~bh{%UWJoS*VV!)Q4kcZ{S|^ z6)ZbmqZ0jm&W3|h<=;Q#?|@uKoVUd3*+mY)>5PcUNIDY1H1)hqA5T#3x3pO{Q^8-+ z#XL6hbY!@Wp?RIAqkeD~5Ui1EZ=zSsL#d0))vxn(6p9$9f1^!d8@VQ@B4+Y+dKekZ z)6sTlTds3;K85h;x-uOZZ87{4U2*ypWiuVUk2c*9xdy|m*$r;L z2nd63aE1#Z%p)iHh5>sLff^3s1}BZN5p_-B4#| znT5!$YmCo(;r0p)FABGRIB@$)xOKUOVSbC;mQfRLsl}Ygv^DFC^q5K6y2p4A-7KE4 zz)|^I;#C(H?6VEq%-IftRhXRZ2s^%?$qAJ=7?@(bcW+kH<7}jyd5fENFNAMz33^<4 z!G<1vV@&^SR@37H*xtXzWaNAs!fmFw*O@7uCP8o6B= z<5g}OyWI`L?ZRyn2X6hgvD;^`dLp~sdr!?4&$-|x>ADSD7?>H!Sz-ltwFP*wa;bdtPY@nG zU{=kSgCUedOPk*@=FGs>Y$urTPr-zA#i?1W>h*RLZ`!ZaD(zI5u=2g!OepV}yK1NE zq!hUNYA=2421+O7*$P2EWc0&Ln}tuGSl_)n)rX8u!SqB9A2PBv7l(|5k@zN7TR`s@ z>+QaaEBY72J~KRUhFt_z^unZOaSLZqT|s5_2kq`Hz$ZXu2(i!nJ|Ckn_W$F1Tfhq@K5-yE<%nMMu>a;S} zvH%q^mIs>-DmQI6SMGPPx4lp)34EJwD<4Ts>a9AVoeLQ-)KwOH*Ao)wq*uW{?*O z@)+oO$ENO6V|@>%smDM#avS&)j{#eAF$RQ@SQ1kKx5s+xzU2bWL)@&NxPapw6j1t> z3wRb*r^%Dipsr6Z`X2g0zEai-w)ZefNMA&MfkZze$X`Uy{{#c^3GEU?F+JdPjz5Ba z_g}#&I?5!Iu=k1W`@L}76n+{#VaMYkjD14)&oGlewY~#dDuSu!z5iP-m^7FKoz+T|S~;m! zeo!lKRf=CB?(OtawzNGCUdlF7{zQrURcD*Gven~+^j5a}dvd*%Ej`y;*=EE`eqY_T zmgSwbEPipS>-xQ_-?JLmtGcl9h+4U!R-Cx4%PpN0_x@AkFnfGjl(X5!l*Y`4wHbCXTQ|I7v?OT?Y090(Av~>vO%7 z=Q-188Wm!GjAdK7E3SU^oGbUqJ^RZ2ZJ%-<-%`C)=4##Y(56Uxq6(Ma&(*pfj#Hjf zwRV}TlU^g=Zw|n;JCuvKeCD}$Np}bOeMOY_l>J=50zcD%Kl&MA2d>tJ(CYpyPEtY` z{Iziz>ToKUeD>*roj}s`b=En`%7}<^4wFdK+dpf97ia0O4PeVaZ$SdQQm{dnBEnz42Fwd z^1A}AL%4!q^nGGUD8DPBTMj{O8>J6OXSZEp*jcz0->p%*&7aP0=fi5Q?6&VywOcx>Z3uze_E8ll zk})0CJ^;f#ujsdCPiIm?E=%vSMjX!-amN~QTODC6 z@zmNHk};BBm`QKv^qaekF;0P!U(h;hg0Bx->ujLv zdbH~L<@MIOoXT!cjaNTYRjU~*rK;*FB-Lux;fSi+`OR0w3_7B`707Ro>Uu)16u+xt zl2s{6Zna+DlPg8cR%_X^jwl`Sd%k=c2_7F24NVDd?zFo4s4kV?-Q(66pQG0GQMnB3 z^(sfzDe|1K# zP+j+HaoVc$3eQC-jA>sh$o=$IG)#>ag5GUZnIoV8*49}^8z zq#r++NjN6%isV^=1|Wve#`D$;R~%FAzx!QP#q3c*X>q}N{etRx%mr)q50&iwYF)LO z|8vaR#+j}sA)Q(O6sA80>AYuA) zA@ z`IU}8!JGWa$i2|MMUX!kc?ZHR1k=exn+fa-pN!1)fk?^kVWO49hh*51IBs0}+uXRA z`tf^j)``O3kxAH1Q&q{a6FP+CKj2?a$)7%%;T9!@uzn{L#L~pDsu7=Tip$ zd_0an^>el+5S(hB_A46-VHqi3pZ1fyBquCWYq`@)uA*R`uMlG7k54_fl(69n zOOeOC*GPFx<8(?yWy={;$!XOTI$cs0Q69hPrT5fmHKAOAl7XOU3gyXbwBT!c<^iSM zJ1lPAqVak`x%rP?+JK-P0>$$K?p5AH83`r$lV0*h&`yCeK{7~f5wuBA_UAE3QxLSP zp_FhoNJq2=$$8s2+Aqn8*B*qB<8F{nB4|%TX_3z$l||5Ag>uc)AnifW{s^U}-XK*% z$om3Hs6MY;qP%aRqzL6Blrg_p%A7avc$K1uQr6pI=28%fYcc#WqmQ;Wp>0Z!mp|k< z(X~2+q)r;?mjYPm)_{_U92Xt__0QVG#o+V58wCu*_k_fCi(Y|^W5elSw4J!6K1Cn=ET1xSU> zW(0SNkqdAi+Qoug0FlyJPALko!q*@r`^p87KYXA0HGla21TG#!kUygBZph2UO87=& z{qVh8A%pZ6Y~+t<{{ZC@g8UKfX?~~|1b4ERKYSnTZ;+ZG$REC+2_X?d{_y=vFK+yz zDn5p@7T z{_y<)2Uwp{=7cw(m_aI1OyK1Y-{&bQ>NcRerEX=ftzp*;LH_W)u+b=zICrAd@haFZ zEyi^$teh3ewvJ!G^ygx79b3L%AA-#3!}qj0mA_waERL>$Ab-Dp5QI=t===5iA?z-0 z;Dkw*gf$_WgTH>&joSCx^WY3alFc}t?w5q$pQ*xx?W zUwMZ&fG;V}V|NS;hLz;8dk(^xl00_*fba`~yP=0hGSS#I(U^6ivFbu&G~WXJp-AmQ8gQkM z8-jK%lr0d}BFIm~LSf=`HZy-U7k(n<&A%zKwNNZrdbnWrjbp3u`m=8>*U=F4ESq&yL5PbTvV&<>YpGEY^=oZ~ePPwQ5y&UNgo)Uodu>iBDzcCM}>b3~=SDagEtPP9Z)Ulo}@hQa-sJa((r zGDuZw@!0JJp$me0cHjRXbBdJ7{5VY0YcZL7)yCMW&14=BY9aH_`IyW{Atn~VonmA% zzYFaqLcx0fLFOT$7Bc_FlgYer9W+%PCi8AOdopk3$z=XDtUA{rGJo!;Ci4=y++;q? z5t+YM$UK1%1jczb_hvGm0iUDmFqsF{HAsPVnau0d!@W#BV&PCG^S97)>M@z0tB)mp zeJ1nQ3YiD>vygcm9h13J1B3J#cJ34-lX(qXDcOL@{Ix>n6fem9M?~LiU?p>NKPGeM zh6c&0A(Q#5&!SiX{Z(Y%7V-5Pa)0X6w&nz5`cM8#9@|hVZg6 zllgNe6`2b~Ci5I5-sZ(*UM~n$7Q|$}2g0@>CiC)53{vqXOy+YSOl!hqZXRGEb2>F_ zS#cxgW)mj!yb9rD53mrm^RJs3q~K

LR2zx#>0O$k$xc^2%>G-omwHX22; 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%0APluZPTC27w%u9Qr*i9#S{5G8|I4)UhAO3vv{ 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

)J8$W<4UxQMzpR>3K=%xm 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 HfPBNm{u4EnIPI zR;8f&YqqS6AElC#aL6pwSo|h`j+@|C{Ds6 zx;mC3K4U?WB3x|6&;$>~wD!5tL3%=~sGkG%e__7)>5Ci?)BO|*WYTp8?F>8gBh|`J z+ZCLJ&0IU4G#xSwt=P)14P+@?*A-?bVTSUH_w_|dxx8HdTYP5!ofeHY$^$`3*kF3# z(yfLiD#-0l3#m_iejfFCnBQ*=S>*w?HB%4$O{HbZ#bx5GCX=&f>-=-wKJY; zXoXD=Gvn%ErA-er;_6}5c-?=%Lm$gw2ObfzwlGWK{-y7V;EP`>xu4cDOvtC5L3J$0 zZrq2b_slm@j}_w7RmL{!z7a>b94n|yV71H6iDyapIS(A=Yej@0U_?;0X6tzb)fMmE z#Ad-1SN+OWB`H}aXd7o~SX6`CKB{4~^E4P(BDA5n6RLZpRW@LkIr5)*E7tKaxvTB} zHDEuES@JN2Eg_x^+jyj<2Y1bjhDuq$!J3`A>1Mo9z!Nf1oU1N#R0C#q;h|_SeEIkA zJpM=ms;DJ{a;7GCG%|M5ui4qGhIi!|JKXv?^-7r6cvCkUuknN{rFxBbN;H>CH)4B@ z&t-_l7p;wLy~gJ=46pH}tHNvCtE=uc4u&nb7S(H9kRiRsWTLx3Ir-!!HY=c|c#LP* z>}_-rWmQJ3ocyUb<52=vXM`z%XRbynffxe*pa3U-9#mPe(~bGQUA`ew343IcO^L7I zVe2lKE=gU}>y$~1gvZd{Ph%KJzx~Pik^no{mZ9)y*&py`Tw1n-_=3nJ6hbL-=Yv-x zMfWOfAx`F@negg+#Ek!lIyEd4MhB83Mxn2?|YDG9=?Rj22~lT!<+Y~k=6OS#1ccy5RpPiB|!#W%3 zx!RQ)n_@dF>9L*MlXW8=J&E=?Tu*YF^`x!N>&HNUW3fMTp7&?c-xIjAX zv%5e>j4?$WP1zH6e{BBA=KdJJr_}pn*H7|FI1u~(IG-aLmmG+Fe_Y5h2=U@xaew?c zMkmC)gHG>{#W|L!qXlMzW^0k_X-0R+h<=kyKNt@UgmP?d62JK-nc_UL2Krl*!&UcL zy$IWS-9-^O1Ru@7kCI;kUb>!tDl^k~8tM36LhB-7(d}37D}=5?Jgw#x5I8UDDWru) z?j<)vC9w^A?W~qS%k@X$;NCF1CG6sIY{41ZI6Cl^MS!>bTS;3?{QVJ)%{~yr zbP4@U8!1R=)`1w-NN7A=Hl7)!F{YP2!7Yy45SM{+S*sclx=4Ne>j9hsIYREKF^ZRi z&tUKL(Qcw>d@kLI7() z{o8FoCrS}lq2tjbxwwjPw<|lKIpmt+52+9H`CV!e9Z1-MCVciASX!C_$m0Chtp9y( z4#~rprwE!5rZC5pc7h>%r$EAD00ouhv*&&j)KP*#3oth-s%!uQ2RM=tXfL-l>7Xe@ zk~#ea6|LxB-K~u@DXwRlf_TsR-H$rSwx-b)*9vSgwV5Mo1i=T}WtE`Z$j%8fMdUfCLt*pi+bOKiCm*N8H6`5kfnHi|E-ODCT+?_R-A zN-^)c(Yy=ot>)beHnWKmc>&wqHP^`5OTwCj<#AuyplHV)%u1pp$Z8s^;k}DAbygEj zOv0lz;L%l+*ew^lLwF5*lV{48EKyxmG_S^%D6XK9$1Y}{@EpFXobYfJ)#a)~=qJC3 z)OLLRvQarKAcN+&mI)ZS2S`{HrH+JbxG|{2fW{LF%cDru#;b~=W4fVR{lt|*>Bsx-hHqOA+=DxIW!TEra|U4U{0^!sPE4guRdazNR5kc*KVp zVU1AoOA(*c;0^yOAoJwMjk!o7D3S8+iq#aq`Yv$Z_jMAbMJO%^BNtEyZ~^XRbKCo) ztVRkO0BZ>Ax{4GjJ-5%J*26)-%lZ~hH>AL#78FJ73M}tx?6DGeK&%Q{9T3elHV?}` zJ(eU}tPm}@Jh%YAtkH`6AS;8s4C)se%UeNRCaM2ZLXe*3Lz z!q=lzt~?4yU6TyDdr!iR{2UuI02p&6GU)C(X~&q&2HlrId>a5Wc@;COE6Jq%f_Uzk zF^h#dTS*kIf{9d9-$Dp}jRHEuW}V`vP@OMuRTX{K>*AVqt}*M)eAZKpS#NSO>p;Y; z*TgmJDMT&6VV~-QzBUo(Z$(&YM$ zk8Axl8|#VrC0l{9{PozU0eD^89Y9%kzCQuoLFKfn zIR8+p`bUjjL1?7^f=B!vF`_%Sc2)5bVx)lH2&rw@q;_an82(iNUKb~$cOmD?K(LgW zK!%5bmtkRho^Vx(p*%I9mX-OH!2S{xTI2KXaE$~6jg|_pn7cVVxcTUmu;Au?n{90~ zsUl|R%oGXd6g_TUk5|sn)5nTp*k+({<|M;5b6|_ec^(zeZ8PJyN43r9mHS*($mp~M zHqzr!zh*nVC8#-F_!Lbx`)j!ZW@yh4NF3Ss`q6KH(qnZnea<>3l7ne+tGo2|?Nt#` zLofFhguB5_+)sqjk-oM1dq4JEfz4A9(IoV}KP<%*|Kmh^h8$yQ9-8NID%|5@19B6T zEVV5H<@r(1)7bJ>iWCozaMpC($$`Aa{CFTAc)zP_f~!iZ1vw^!g-g-O;13zye8;MwClrGu|LJiC z+NmE@1mJm{^IbS3izX;WR7-V!$u-x{h!uD6@>V+|^n_f+ggf|CIPTycJKVwHrQ;43 zOWeT|+hbdyuS?v)j17U6>Ub@%7BOgU{S8?%>$C za0j>QxPzU9Bk~b8#v#lfH&+$$okzvCK5G-?w&f)0?>4bZzd~q4<=E&QK45?t3r-bU zVL8WRnz|G*n`?dw?$Q-uVu4&Co@Xe;y=?H0tFY{`q-JtgM&2%+h`8Rda-71&3ofW| zBAU4?IuU_*vR>vy-`*F4h@f$?gbBE{F9s1o<0B^cu!+(6C)?~I5$a;wyAh$1S#}~n`5L=$(dXqcL9N*t zev##M48WUJW!xxf?`q>ATl&ZDh#;a@*j4xe+;{w&ZosAG()7Pw#+4IHXjnCmwRCym zp}a|YI{z`QVaOaB2Akh|M+c&-~RDcEdlH@jMd0 z)0NPd9XqC^x88}KC^;_^zP zY4_@ub_=-t+$(kg3s^l01F88Hefa0Fh=t)jY$6u+{9J0p!q^^yD@?i`J7OUyD{oG` z9)r6=;{}}!?mFp;h*;R(O|M#f?z*$A+7#BKb2uQ?Dg#vh#h9S-7F$;F^>{S>{++{u z4Gvv*d^N-6KCm zDr~eyyk&d)K(PlF?RI%&BRRYth%AhGxjaaQYrm8jEYR#a!0*$vJMVFb92v14c zWk95=FJ5|yh!$S6D3YW{)(;DidV1Ow7FEE7p>X#AUWLpT2MhC6nmK7tBzh**l`D{^^}J4``Oc^VsD4_U+EcLNcg z^q)V!g2!U1Y7EQkkx zq3d$RgugI#z8(I;xmD<`o^N2&q~0ku%^v4t!%&Ik5|)5Y%15A7hJ(`VSP+jXXB190 zSwsBlr?BoVnse?5f~GL8$4(QEjRS(_axg3%D6-Vk!x}roH;hoIR@k1(z2-^KLOEYq7B*ZQqquGj$4 zoSJ7xt20B20Yo!+u0@7TX2%MZNFbW*xzS}g+vVONO8dxJ4<3uxSB zg@G0_*5+gc!Y&881h*|$u)c$f{p<%$3dxu90h#v_Rb(*hV$9aDc^qJs(T z8W@Q{!)zX03S883Yl?^kt|P9)ePFqPL8Ij8$M7u;_@GVE%pd`T5b%tJlDd_;ZV_Nm zlG`DV=3lB0YXTR}#^@ zU<^eF8V6PwiqQOd!YdOB>9)#SLC0R18_N}vRjbDUpQ-*nrzO7>VogK%peOHGTPIy1t+>FXg(2^_c0GaxfnKJ1CGFEk)i|8%wAyupjqmCh3jf8 zv;vKD0(Rylf}KfHlin`{aE8Ooz?ErK#gI5N_pqNqPK^dAGjBmhm_=uW&8>sMi=mIx z@Xh=>!8A;0>VV?s=+C_B56oXXi0yy*L;-QkKs~{0b^Cb`0xRN4xfkTRWR{oZ!_sA> z8&CTbU$RXPVum`K`l&Ks{f=#Y5Ea)SJEp5|v5eW6aBA+ASOHI!S#`T>1 zF=UvB=j0i2Iyt&0&D8I_xcXhfrdH3h@_Tuph1bCF@MEQC>Bkl(69GJ=vNbK$V^c6z!!hB(pq--I7~rj z(V+N%=#Gt{nA&P;6~C3}*4q-@hVdp>(v9t5G?zKihUPA9FO}wcO%!Cb!~xBXktsBb z9njoQKN&Q)MABS=L33Rl&>Y?IwOGj*ix(-w;zUCCQ9!MnZKAoVNOOINVsI%Q*P2Rl zx#>K)`AL4pU{9(FZxQuy-FbF0?C-5H!dlvZ4el7EDu!IazqD7{4}h=F8l)%|jBsfL zO=P{l$O0j!q&lIOl@iWhosFb${-UOa`E&05L1}?pt4H+HGlf-f*`yc-K~Ww}V;_t7 zO&$zXm);eTtxyzD6AgH)BzB+M`##lc6tWXSP~>n_8o_C9Bhn4^Uap>a@wpoauaf zK&M(cn&;ch?@l?Hq02g&`<(8j!zmF?2eh~1bWGb95A!TErI4Ay+>2l#&wS)J-w&K4 zIq~tm!#1kq>YCUgP^=r~1+b@wjmlAgz4_SBnkOi;C%1m@ci;$$L5B9lIfu4$vDZw1^fg*l~K+Yfg`=}qVV4Wac zYyF!V?z5nC_Zi=StC3DKthQH|t;gV{A6PkW5Z<(P)0KCzmSXllH31RhLxZ`5Lo?=3 z<~F`;rQ09suq(wl&9Hikpt4>Z>IhhHc_{r@{ z9G_ha_^0r{ALA}2Y4 zZT^OfT?t(5O6cS8AC#36dfR*!{U7=8W%|QsQbKgXkMxFQEu+=0$|8Vj;yFW+k^lHT z79S~=J?*Q9{(5bz`MA>TrK>c%@;bLq$5mUsuSp8>nWUhFC+wu4g9A-c(1~MVQqaJ` zHd4@`W2H(#IfDf|n|3<36g0b^Xgu|FY~DAgpTYa4oe;cl(?DGc`uVg|DJZj_MGDFw z&L@lPv^JO>P-}K{jEmE!%-+qd1fjj$xc6@%@;(EeQ{S;9r>#(^_R<%1kSW!N`(h2bs?C)bMk>$?hCaDE%Dol;`-;so3ZEoIJ-DPsKjR z=S}DM(s2oRHpl=xb9{~qBF=HT1gyzGH={URlp>2dWCipdS8 z#KjHP2yQTobAxpTH<<2(8>|cG29x7DtLx3&;1O%7thug`%-Z51jQde_JcNat4#XrntvQTBmZ}V-3P5UZ)pa9G$mf`)tVKhfZmEUBaH%~O=;|E8rN)=7^#JL*Z0}_l z4oiX$kj;$g?kfpUP5W2%p3Gn*B`fW~NOJScG1MbhSa=tZ!NH)SSOTaAuZW(_3Hs^r zpx{ME3S%f=(D>FI(YUxU2IGRpx91p)>&QwGKs_u^XI#0f9mWl$u=R5+5!65-7&o2p zt0Zn;cA1O&BJ^80`pTHqk>@jtOZst*6(QA#UygQ8Z}7|QbEI3Lb6ea`hDMuDRPogfN<`;EdASe+f{;S-_Va4H8{PGv+oObBR|9m7NU ze~7~r>Hs8ux^6=&E!V99-?1%EF~N7t;>|4Z9c%Iwd-#sZT7iV}npPMaUt{)MDI{AP zThO@#hQ_wJijJbe>j50Nq}*XWfR{Bkq9;#_cc0I#nv3ih6R;cM)&EPwEEk#W8Yz8n>({&#G?&MnQcdRVCOnr^4SzP_HFSsW zdxyx(-n5`V@d?LTHfRFt6LQ|uDt@x6}ml}(>cY>NxjL)Tj_rCRLB4Ei>Mb~9O`46KhX zP$z5b%nXS#usMc64UID-B*Fg8G43U3oH@mWGO$4e(T|#LpbTtrCQ#RATLLIhC&9IZ z%U%1TS}PacxsFib@>=O??F=<317G0WpXQl8zr}a_W*D)>F>iPZIC(&*P7SFC4!P%s zy~jJYUt;O zZGIkIj2u7%NV2J{av-jW44xfbggbnhM7R;%O(NXR%dthcvE8GJa6Lm&M7X~5%_7|8 zRgofGxA|5PE|nM`y{N2pl|o#}>excu1xcV6R>u_L`pyX#;(oe(7ed^w?h!)Vh`7jR z_iTG1ZkSCkr3-O;XNyoH7sZ|y-{UbE3o3xr7NKh2??-Lh4Vt!Q%0-`i)`6ECD#WuXA^yvdsH1jFKbm*eGsu<&rR`WS)`G@dD?rs?ZrGxk|C48}fVjbQ8>X6uao%6eylPzv+U zkeKYm*MXzE-ls(8Jk<#z``PvJoUa};tSU0amKn_T)cSas>yIPF@2J_6!@)g%DX0 z!tKO0JNXTddt)xYx#4c>;9=3UYbU@YtGZY<=Ro)-9vf$aPEzgdk@XYEGkHUit zPiQuc#aACV(}mu{{0oo%88^o`-zkt&ci=p0VNCM~icqD;dGK*EB*WD824{Ky^lMQ!7tnpWq~x_DLxX_BDq8@^AgOd%$^uoK1kK5 zqsAv$ib-}-*x~XN9Xa5iSU|EEaV<1933lJEN~*aA>c6x~>X?gm#)=!g6vtIkTSu>w zy7_WEqS^TFkqZ2#%kfBx6Ks0e7*`JyyW6;9EV}%7bSN~<+UlnVK)E;fJ)L*khdk!;?dT{(Rco~pt=Cr`tbmt0k;>rSS}R;3Ap`mzAQWw5>F_qYyGu}|`2fcBvB4jr zD#EfhSqnoE?pk1{2oGFBM{f!Vq_Y=ULWFCuHA`*u;3|Jo0&PN-TYIf%6@P{uWK) zV#$(UNZ%~*>%PEz3(?wT8-cc2;1AO_=iAICy0*D^is208Pl7Y^OqQu|$ooLTO*AV! zK`~`^4Vuac``Aq+F*YQF>RcdU7vGFU*e`3?o_lpG3BumDDV`g8=u{=L%!LPbaNK@c z+lnC7oNcdgOv2sSOnF@`mxTa*RoG)$K>w`sC?8VJjr};DHX485PUqzk+G(@RsQgi} z6~|9i6yapmSQV7^rPLom*zdd2BFVzJ9Sa($uFIoyd}HjRbHj9WPOKA0XV6Uj=uC5R zbo_L7R$I?bt~@&+N;a}TJ7EYO@q15$U_Dp@>7Gm+Ktz{j6>=yax8i_qLMxzS23 zLUUxgVicjN1xNn}R3eU-^{O@gN_zv(KmWf-tXa=ysk}-lI}0ChO&a!k+EWMuH18c4 z2b=M17K)Eu-%#QzPOolO*t#klgn?c9#xGC=nzG9RqafohF$zF9npc+45keCZyd>hT z*xJD{VkdOLyZN5YEQ^IB9>is@#HM%fMgZtKP3?P-^(`AzUjZQ*r~N7`dC0GJWNlnk zTyFJ$*#mxw=DBO9PbB>?~9k9!tIu>bu&4ZWP z*I3ioA5=FgO@e;a!+^XXvVUsKYT6VFK#{-a*$yzfm5b;l(-Qa%Mg5u=?k*{3KOu# zmX_h=mi(J6Vjg^R3)zx6v*^ag=UzS6LfJqC-OC;gbz? z$lgVftkn+j%}@55Q$Tbg4`g5wR@TBCY1;|_dpRi`Z}D#@CAEjb(#w$v@^U+qN&R6g zTE>?BlW_a*aqBPv4K#MO9bO0BG%x<>YP&cA`*oUQoyrB-^0uBk8uASn4f&>d$hBz5 zg*4=O)*;`bA^Z7|Z{7Kjue*R3v|#<~=nNCFs5DoqC0qA*MC>~UDFR{Ww=#Z;TYp9z zj|X&hHzwhUnnh%otiWpFWXdZ^T4PtP)>wVCF;H(Mw5^cj=|#Kr6Civ(rJ11?w4nNb zv=a5d!{k&DUC|5qk<}`;_EOYv3NwfC4+@XSI;kF7)YuMn5DYe&KCu`Ts~N_)@;3aI5J`oy{Zo? z>@%GB?=&`fIM;m}b1rxDD2c@>EOUs0@+B9HPaL)IEY*Mu*5d-N4<>UPuk&7$#xRh6 zJIVQ~z`kx6EJVXZ7D@}^;mQNOrm~d%$e_agVaExyKC<41jdG9C>cqSRL#iDlS!G(yKPBkTX24I82; zggDj$NdHN8AFKvK+~Q&Npy7{f6(AsyKpT`XD{X{{upKUVW1Q@R8bX?e2+_2%IKtSF{_BK|e!oW^=riR`b>g4D-f2OD!oUBW|E)W-Jwiq<*O&OOxgzY1&$eU!u_bzA9$hpULN+)CP42wiglk55&Ermsq;=6<|nxCie< zNqeQ#@L{;SuJ>Zp8O!JmW3SOk?Sv_)k7AWpf{rZYafxuXPA*XtmR-`p&(8grkVWLP z{YRf7j)xzC=|+?&ew5s5sQ2cmiM!N$T|nY2$xlZ(ucW;{O?~`XH#v=d9EJ>@%`Z_r ze%#F!KVn?T<4N3B!=twK^O<8kpOGPKXgO{SNBjfLux?bwt->!ph2yUN176gFof3RJ zD>}LQ`GGw>G|be>@A^SUe6Bj82!_TEVlF$TXI(lNEj5DMd=uppB|0EUTwGbm%YI&i8K0T4Jc%LEYkIf%;V2p|wkzzcBI zqw(AUeTPtj1*?jV_~uj}B`HV~GD;aEEe^c+FQUcbUYr*FR$2s(xcZ`km1F1i@_BT^ zEQH6>Us%F zA+T*(G-(>#+_(m})HFEmOJEP?0GVBo>}-&8DoJFAvA4&ym9mJE`Z&LPe$DS5`*-i- zJB^L`9HWKU(FagyWv_TjeV@;$nZ;q8QX}aq9$oia zc806EJ-*jfU3R>!|IP~8Wh!hYRRCJqI)HD2Q~_wEwE_^5;8!ebwBiS4*TeF^!(o?v z6M)yfE92^2`uYy*h+)r7*^=?Fjl!_h^`9}TcMDwAt)EDvQlK_P6Q+rP$1R^IJl2rI zj`mR4e8r1c^&y{|Bgpe{j5#cU(weY&Fa)gs%z8HFdm_LZJubI{iJ<{`1kwilD7~3S z{g~y|&Ps#vu$3^#muXZ>%R&Dyas9sm8{95SSbSQu9G4q^SlkBpb1+;>&$3tCXobjb z8#QRm-r_?H0-uA|a8+$2Ik+Fz&?UC{HpwB_V%60S3BSVoH?M1gI|n-XiLCx;9x z`0^vI{5N$^!;Pw)Eu%VR?1km)pb>o?B3AUS0NbVftRU z*rJ`-#uH8`5RDfsjxf$dG@e*sIDi)}67ht~m+B5+e{|GQOYB4nyOM7SC&c33HPS^u zA^!WK5ms2}w1ViB#qroQ(hC%81<{`u$3qDj1$x9WkO1g#66up2ekBWjRdP!42(U<_ zKI0$go*6L!e)@`ZsBk@Hr}Og2@bHlX%;C;xd}yMv|3+akMDDlwA*-zw*W>n|{x_R73g0#jXxW@VGrP$vgk&4zU)vE^qms zNDOE7ynIpVbNCql7?@`s?#jJG=@s>dpXd(XM*2f8UE%mTna!vmp0cwG3sa7SxWNbLZx9!ynJKuB1KhK2&g ztZwhSQhLxlM)QsArbqMf+i}O*cogtav%(Z`7*~p4#-qLmLozZlrS~zo)^WTb^p-zM z1~4US?46)mQ%l0(oVucT-1TwQW~BR+YTT|{f>BLhzpXO)lB2RU7S%RlVWi!O6kJCr2D{Tsp-7-AH609}cPuP*N#`D zKv>zyM~H`fK9l2`&-!l0J)wo5*|afO`U7@q6vlavwUU+032{Wwi=y{iXJPl0awlWQbz2K`TZU z54s@PZ8qa#vQ8vUbfQw^euv_O#(u1XQ4PRnTB2WnO`^rGf3g+cO#|;Gzy8TqckI{i zT`9=swzz{(gl}1TB_2G{3f1|m6->bs(`dw-tRpU_5fA4hF23^-_lFTrzmpO7P*@*6 zW&E;BAMF0Z($`I9OoX&#MDS8;tb?uPZM)z~8#MOQ`C-`!##8v3OrG!)3M z3kU+p<~0u@|NperXEyBAVq0>NH?!^UTJE@LBV|S4|iD0rKiGf^I|U7+J_Z$3Db}?+LnA7g2!U zGHZZe2?hA|<^g^scOKx^r5s4GP1u$cbPoub@%+aQjTSe4Fv*Pg_dlcbn>d7a1>XwG zMglXCK@y`19u)V%<9_wO;d;QAsV1XsEf%_J)@J4*5bd9|67|nS*SQlCT%IfoF=s6=1&y)efQq<@hHG$b189V{NLm&-ERyp)tgVPGn;~^Y($`vA-6c2sY|7e;)o4 z!@<>&i$vCkXJVp%-Yhy-5gFx-dz zQ9(A}iVYp6_yY*W&wd|LAH%yiF-a?YQFCQzL6-H8C>|G;l5-NCd!Kx65&TVxQdGvU=Tv9Cs0!zv=#n_J$)h$4zYv#NXN7I7 zu0MO`33@hpUiW0u9Xb>j{T=zj2;QDgar|6qK6b1IY#@_R& z&$4>KfU7=!{E5f*d}2|!57?gm6iPp)IaX}gm*n=~#*A&|G*iT{e$0A5j+WR&HrEs9 z1=@}kRMQD<=}Fl85Z{D;U0@Rshlo8%K??9u<~5QAo?$n;DD+J^FOQ6}DR(D1k5^|s zPiX9V7raxGc$Aqc`+JOSL#FFalJPEEuKH3P?lq=3cBRV`T_{U_K+9}FSwGwKy{o81 z{UaM!jgnwwA&ZlpxJ4g+`6bI-uAuw|gk4|#=ZS!*y?ZvsElKj8R++b6pkFyubhagz z?sm_$NO$nXxI#q|5SQ+@&W)Z20z?)l6byRwf*5%qn0_LiTcfOvBlAF@@v`Lx_dm9v zv{X_q%#keAce#>EA!lb7zy(z(k*aY~h7^a%xf}^Fi zgzd=?wHQCr*iBK3F_UUB@()b47=QlA4?Xm(D{kH$`}MdLiY#I|$oA^7Rm;m{f#g@q z9Vp=qZ!Mtch=k{Gbg!^^%i)N@C|j4PNvt)#s(@8|Q%VHA=PmG+aB4_mYnIEzt~m?H zm?Uo*AhE$+ah4#(0-<}$Vv*tPU3oCHI03!wPXMWhc!{wW6)l7rWwe~vVOXA!M?9{} z0&`6kSpjr@Awc|1m@8~C-O-S}rooyxh&Qw_U5B=QwG`&LUrt%XO0Dvf_^8WrX zQ~BYzlJEyiu``uJ^P|5gMP!Jj1ijDLhL=%2p8jeOUT=IE)#GWe3bB3%=I7BYzh;w` zDI$hy`$D;!$!z9mNtf&Q$;c{y)XOtIZ%`T=Mc$wtAf~6WiR2C15hePo4V#RGa1vRk z*8;rv9a(BqcH$*B%x&Onlzg}|3#M_5J{fHKWcN#H@X6TM(%|);mvH_+z2?E>(ZEwh zUNR!2VUHiNlTT-%oH*cZVLX5)GoGTH(s}PFWJNHyZ^I5fjh&5nJ7Cv5i5*)}rs!$E z+Wfr$of;1a3+3DaWcP*5O4R?Qq7I7s79vnI#=s64)cIZMmpHjf<9*vqazO_}j;r@`wRH0(?{OZG*U$wGq7Td}Lu zyel+s#ja8FE|JZ#D6I5p?$}ITJ43R9@p9u7!EVI33Tp9|Lww>#>=^J|t}C5~_2Hjo z)z9Ku6Fc`-n)oamKI84qzU7InK+)K_rt?%5={J1zQ?`ohnk%IZg{QDEj(!WS6OZcWB>{U7_aPBAc6@ZDv^h6*1Q<^6D(%S7#FY7FO;lmW(l1 zNNf#Q%YckVyd9JgZ*XmPCQ0e^_afcdB%#+}eN~jui`qq((4o;{tRT$hwi6*=`xREC zk)%GReE@H(OJz|~$4=r)Qih)v-Ghxr{nP0B^gYyduOFamAw@4(Rwjn;hT4gRNz`SE zWpgYtMRm4twGvslZlTeN?&||(Q)MKKUs!imi_5=zFh(Q{G~TsBH0~C(+;4V~VbFZ{ z3PZNo5RC2Rr7fMjLdX_HL6j{lnnY3FG#L6*1Vdl0a4;2N~np( zBCM$qTDBJA^4?UC?1FyvtBz=tS=Jr_CCS-4^;5JV|C$x0ppg%yeVO{CdDQRNoc5$* ze;I(+`>G)wjs4gaEl;#UyQ3!*j`V(T4Xh`hWA*V zO$v^O5rN9qI>c6iM6rLE8R+ zjV5V(->aUYgkM!ILc8Xnm$9SK@&_8*_i~Z8y^pkPg6{FExOLh7mqEn(h83jwg+VE} zTXNAa*|M<|j{kM1pa=d}+jR=UYJMwdbL(!O%WWewg6z_b1d}UVkm*j6$>rFR$%CwL z7N|f%H=MWDCt?n%_pD-&HICooM$!4)>mGv)3^5c0;7{0^d%Q*Xyk7s~#x|d@pRrOA z>+wGxAw26?E@i`^LoBn{s<81d;VgE7L=SH!kVwDdwMdU&_%s9+-O6`LMS(w*LPf~q zIxFlXr;Wvbh(fy6*_nKK{q|eJrDX42C4uCrU$JqdIBfyN=_@vc6sIkuIH?+2cHI}^ z(M*5PWce9ZBSiXzUww^oCSTDI@EX;~rrcIki)~tESnq4Hsrb9cUsr3s2)}Nv)>P)duV z!C~2;5Yfk0q>s1Q4VO0!+5MhWd^h$tNG7|{W!NX2#)@)sU~88C1~d+>xwMy!b@)sV z58B&0n^Md8G^={l`dSE{_tO?`oPkx}8}Jpuo%9pV|9Q46;B#SFp7A(;WwcruKk>k| z0w192F!f3YHwKc4z_Sd3M=V`skhZ}S-IlQ=B`2WwpMJMnCDri zayhsl+fy+DAn+Sf8MoN3h*`mPtBu(RTD?Q5Y4AGdH`wT4DxEP`6_&=;VZ>x&yInbs ziW{-=IXrQ-bt9?fhS=b?cnns$V6L@Tu&tsW*&LD~UL$2~C$96W{5EVyK{TlWwH=%G z8{{w7+rSxRMelg+rsQH5a}$b!`1ILWp$M~O@7G3>=|*L%wkTPyH1#o!%u$5x# zp3~Sc*sMAr@YM!V#n01l$CB7QzGH=VzGHlbnJ7N^O&t0;w!}p{HSl$mGrRvL3-}4U zoNC*Z%1(5HX?fJT8q4QHUm}JMGhH0;d7-~g)1cjcqP0<2dWVmEDIfV9^T@}Dk4`>ZP`T3@~*^wY8HSudnpopoWsy9=yBUqyrQx&pfq8Vh;>RlvR<#eABQ9dGO4iop=FhyJ-Ne`pvFKfH`fN;AP7VAU6?UQ;_x0@hGEOhl*X$Vm zv=%#)?2$*Tm%{oq#4~ojQ5wF<$f~Sc zRuWoGX-I~to~dz8x*3~=?lUB->GeHUqg8g8(F#Xd4MfMc;Y_`!h2xHXB=8SEwd7S? z&5y_A*$MHnAJf5`c^8-S9fv_f7ycz8by{FeNPx*S^<4tF2rmozi2wlky9LqjxbtDd zJ(0CU5%qBL!s_98Gz5>(pP8&BBV2GwM{LG3dwyDAhZcMtQ+HB^HjWOUyTxYhq66NJ!+Denpu5rex4xqc` zgc2J-7us6^bk{kb4eUzpk}y;U#0gki2G3v>#R7g(Mg39`Z*xh!Y8`g^fL-Qb4R$Ms zG6($!ahQM9@I4~jThBudx(({V?$_5W*eL@Rh1rK(Nf8DjSh@9-*~JqBm(91P4t}k% z1*`C!B*_*_OfAT`kiSZ#4lbR~QwP7$*rHVefp$ zmO8FxE?Fv}V{yf5CHw}C!;3n=7{V}TAjTN{TRA%h_Htu+S4?q6kV2=RA`b>m*dr|0 zh7xS9w=_-(>z3+HK};R=sNb{sKH=88nC~m0yfcv<7Frrh4<@YwR?k(R>*3AtD2m>8 zEg~nOC4Q@`!e;9Y)-IA>#2RegQmFzLE|Te8P1sl*Y)eAS!?6^ zwyl3&Vo?0KppOR^WUtU|({u7;Q#|}>On|F(*|H@F!=DUfUl%C3_WNqx#%k>s)wN3=^j2xVHG0JNa0%A_ul&a%KuI!t8vh z<$T5VEm7QQIiRaG#y`E47t+*PKk;TO^U)QAO7=Ib=Ms5nf6h0DK77I^;exo>))R`$ zlO;X669@Vn#iZ5eeeTu=1j~sfZs_oAv>q|gH}Qyt*SIJw<%q!=&yz=NV1A4v294Lr zBQ_vE))9l&>rF>&-~v(P;^cDui0z5zh}CApmyi#rCG(1vKA*4iPuzrmvR@V}?h>{6 z3nl6otf^>}Qy}@_M{M(A+KSwhv=yBdwq=0i?9&URL*`4i9=gGc{~~={y>vDyV&quE-WZ5F6uABG2t<4Hy@PO{)UAyP8s^kS$~AP zcp*tnwErT<;coD(BX~ZahEJYgDPFZE=Bhl+J|JDYTq=rEztLD*4)-6xw>>b?re>;I z!>!iztFy4S)?9^T&&F~9XBIkQHsY@CxlF9|Iwj$;`}j^?UFbtVN+gRMH0J(AiFaMg zY3np=*49TXmy^zBB%M?bn*IYi?QGX+rx}}owDS>bCk*`u3Vbe)IqKgWzfC`Zo^pt6 z)98kt4L7ve#P%40&rAsErm3Ct(5j~5M`^0!dRSF|p98WQe5`<;GC5>e)wrKUVOxdG zOr+~By42p3uKObYaKo(7ek| z7bxWM%Et$WJAOjOSd-X98fyw1w2o=;b`reB$rcrKRM374U!wtgOh~%2l{V07?>rwG zo=3wu!2`0NACR9yhVfRe(>i0F$S3W01?8Rc4a=s(`5oLTe|nX-Ij!F)QVS?>6dx($ ztPat9OY@0Y5Y0beohrElY6Ui@BN|TEedkvnWr2!8_1A2*LVoy?Z%eI>80m(0vD>)` zt}5=ZLJH0;nhTADfE8z?Z}3hm!cAGe(bY2SDwHFmYMQW9185bteT8Yxxs>L-{Y!_o z@?Wz{DHsV)3Rv$WHe+pzicU4jOmJ(pn)!BxtN(I>y+n`a2a{l#5d9ybIcS;pIq&~ZLHYxm!TVr6Qs|Qa z{R14QrYEGfW4||?0Ar3AK{kUBDahlYJhENQxm^1528&z@-}IbLCSwC5>FkE+G3UTk z`c9XyM_XgWoFnW}u0->&Hnz<;nv`qEqzg6)jHDG)b(u7Mo5PI46n1qo&nRTG-c{7m z3R^;3pI^$>`{{RACZin7m#l?i_DCdZY{|P}A%oBZ9D)7yh~q7RCwAx$9PAUyF;&NEspJ!<9Z*x(y> z`vKaUM7HpA`lJQ>1wT=%u;XVH;1W;1toqpIET11QDnCBkRRtgJV@sf&2jf^*eU7p!qz#s^2}g8}>l^+Pto1=p}^s#?QULv8jQP(%y%E0L~{vzNd@O$NEG zV;mXe0>t#`fHYwT#|r4m!X}t_wG~d+2YTL(l)+k))Xl?39Mm%o;5F%=)(t z!0XeLbUIK6?$kw^80DTLMH<29CYN`Le(G-{`NTlb6e`fG(KsA>b+C<_<3?cpY5XgA z2kYEM`M0o-`LQ{NVAGSzM?wIs|EE1Hjb8*1ADXHtQA@aD5M4;)NLMb3Pbudnp}!iJ z^2>!Jdb%uVU^XE0@|b_qKjo3d8{=_m-r_a-lGKK+$kO+>5S0e7KIIF|PYFY&r~Dk( zQ!=KJaS@*4YDABrjy>vE&~bBxYLF)hXr+sBb&Q3R`0x!cammJbY^YtZhdNYU_{t5% zuQp`eGJRee!CnF@B_&`^oNGo3-)MFM>&A>`%tp0phn!G(Qyu=0CLml>5P*uX%lt0jDXv z1jg@LkrDjE5cw~xPr;r2+WM3=aXn=UJ_YUjzXOuN$56)}wK;VB4VFdWR#)t}Fs_cL z>BBc%0U_r*20culM)A!^GV73Je#d4a$s`lWthJC#L_ul~VdT$1lKF3%0ww?o_6-@Wrw7!k)!9jwQ>=y5w@WD0rallw^(6IScv+VdB)s}DDVFEZd`P`Vnc52w?+UwbGf<|TZ`V`6H$;mO%*4L;t{&d2+l#a|sK7(k zMEA?2XzbW*aXOA}h~bxk#=po~eMdILP=TTGt!ah|d~~fSh&6PUt^x-(Mpc0$-7=4` zwbM|Y6^^rwKB0I1TFB$moMtZG{z3eRrI(eN07XE$zl%k0NGWXcGvuF36H?f=H)P}7 zXQWwe>l;zi7ioj(h1g^fA8U>t{Ri92yhVhre*FzU)`*T83>${%Lv-SoJ*BDL6t;`G z$h7$jj1%5w5Er@`$%RZ~v2>9M+PCPU)0+yu?L=MNj_e}G5Bk(L=Ayh?|C^{?-D-es z)8C9_dM-Bkwvyww4BzzFE()729y{Sp!Y|xOU5$_ID%!|fvs}?b;7v@*-%1_iI`6=* zuqmR4$#0T-q=>qh6r&4$CyUiqET6gRV-G{#M4*^s)WP7$4szUZZ+O{8v3gzKL_Ttj zT6eK&?e(jlv01DH+m40rZE3_}g)z;`%QlN?b*9JMpvPo7UznC`qUd1Sn^-h<6Lm1v zW}JSw_{NJl&49Ko*am7l-S%PkvV9wUFgHxYdI*>|)wC{+OGmmNy%sJ_OqvvGo(Vml z9=_^L%!JNsfXlS`L!sPW0nmDcub=tJ z)V+`wcivMVYTnbiO$tJrXHVsMPiHsT=RNhBYIf@u7slhM?myQEV%C5VYO#XW3Xxup zB)zxTv4$i(4mKYx^GfnusLsE&_<;{P9EXTo9Ap|uSVGi+O}aOD)Ku~Y!zXDlNTdos zQp8xK6a_P)MocA&IK1g@D8lSEHs=r0vbgdnlUHhH6rX~Bwa*IvVcFRvwzeUq z3C(I0ZAHwPLg`cKSl-&Chht<+rA(oZF;ggKv&wvzkm7eKN<9UW~E5$>WWs{EWPF-(ZzB4Zt zH%ZT_C{>_kW&Gx4Bd7nrZ`qvNqZi#5xnjYV_A6#qz&LlvQrNZn#A~~}rQo~kh)=^h zzZEVq!gKnD8jbML&o?G`c@bj5JMH?G*{xs^7bC!l zK4RzUlL(z9o^5T;RY7Ywm)v>bjOsttsi;}dK^6~Lk|0IRfp59RXD4;oo&j&AiO){y zus!`_!1mCRNdc2Y8(qWjNcfTr@&~Yu9lT;2+OVSfq;RBNFbbQ&w-n6K>A%|40GV4>}=*f^T^ zE|~XMY&^|-r_C~%Rh&=Q0BU#gEnA2zL4_#WFFf2qv8h{^e~sT&rPQrkaW6;s=-NUN zp+yqmgLw0u)UAsaZYZjQ4DG8ps17pfLOj(pcJx*vs)H;&W5&~6#Gm^AqB_W^Yqr%v zc6FiZAVMx37}tCb;e3qhAPrdmRx%{)FKlE*4hD1hySv^pSCt$O#>Z7c(Yv`^`+jka z^@wS#qRO2IL|T+{`daDlF-d=%{Lnmm0m+Z;zWbS&h)HE=`niQNa72tkJKVe?)bs;vu{r29XanB1eZ1I&i(~`FMUS|cs{iST( z7Qgv|V}Sb!y(t_mnGqhuxE9_!LWv*7E1B%Esbs>Hj`6*P(!r~;t_Awki?U|6GK#X! ztVoudjo$_CdQ*R3`6`9TWa{BIKd=H7!)>}a4Y!ea*cuxm%HK?)VlvyU#bowTF_|&E zn9ROAFD5gzQjkr)!(uW6_!b<}>)*g&XDWWUWLgxl0~Iaf-Gpb?egK5RewJ27w!ItKmYSvJ3;-+4!9iOji==CHG+X$}FL!+4m( zF6$h2(;UX}IW)QJIgFq=Ot{NAe8~p$DeTv$kjS>S@ZVLZ-?H(%(@p=vPGPmj@?N)? zS9_7-C)T#$RCqA%ivD52xU)}1=YEwnwzj`uXzAx;a6gPJ>LVI=Iv<1kLF2=H4DOeH zMg-&D?yGaZRp(=SB12^Ao!JMOA7@q@&P!7-Hv`Y;BREz|E_{xu7E3FuL#(ZmUaE*x zt|a3hQ3jEJ-9+~L73t?`LWQrECJGQ4Wr}`-e~mIlPja?d`nU9{=GQ-_icc7ILVrcY zCrze02KDMrvV9vG%!i~RY9-Qsv;BUj(X^$2z*&mQgd4bp3cT5|3Y@O1z_)c3c*mPk z1)kVIs=(Xdlq&F~22uqsdh;$+U{5GqPiw)l8juO%968Uj$;Wio#%CpU<=(vcg*Opo zxeqlzAJN>RbxYG+4Yru8-u-md+sFFy?#@7WKGu)AJMFByJ4wN4$0k+P<9>IXzME{0 zuh}T0tAnSdeL)aiuYOJqVRM_C4Po36x3-GKYM9gf-&d=a58z6YeDA7 zWtTv-lxTHLSXMt0x2J!N87&*D;KI&q?i53`tVDlIrEHalG`0&XIzFXgIEG%)ac|Q& zk(Iu|sgVS}wt3v3Oh1dCu8;Sp?bt;l^QZS2qvpx=z7pu5%b7?-Y>O`U7uM6ob(Sk_ z?i!p_=)r5sS@hruaaHu()GewWJpOhpJ$Nqyt+I1>KNG13<7_(l#A4=M@da$v;eNP; z|B}Zhu~p?Hl`gnqICU*b?9O`}^=>G!OUrR3b`F->l!dE8W&B*-_Fsxrw{P}zrf!R2 z#7Xf}s&a}S82@3(6+ayu?@zyE(+tMC`LuCZ=Jcam>&NDCmb?Cj%``gPaN2T-h&T(? z1k;~EFsJ{QyY~Q$s>~M0b94A6HzXk>lMq4?bk((B5X8!`>a&N{-RIkt8`NFb5_NSI zWvGUMOaMXJ5D0`eq1U1J2~DI-KstmD0YXQS0D_A8Kj(b+PRmWhx9`2*-}jc>d*|!l z`A+}NxnUlrpB3ji@j_;FXDd=W&Th*d3A9Dc>tEiH9G>?K=MBi`K2BGhX21?(xOgdN zbr{RVPgIuGVH6iX#aSIjbMcd=SslJNoJ5!IGJ^FO$BM#K+Ke!j|9~GD9QwBPn7~iC zGfDY%d;^y7D2ggy$8!FPLCGZ!daBE!U-u`M=;u!^vF&9exy1bY3^3dJvXNY3!F>jp zZF%`OCzmihcCr=NBqIiw7!iYu#Zxf#ar$&9@aa{U%%6@JpUB+f$5gu&@IFjSzy5i? z{8acbt>e1qX*UOlx>+SdpBOslJD<1V^Bk_V1E2o|bGg#?=RM(-g5?VubBqNBEX9@V zLjFFQ=;9Og(?zmP)OU*I6b54j$!xb-hKd-s#tzz`Zv9ZLg|23<2LBe=M;KJ{*-7E?8=K|>q+$R(*ZIjMIhI@(Ek2ciJ~<3>Ge zR^Mex8f#NIm(#|u2z+f#GdkQ@N{;+8k{aC=vDOoR!ry>`2;NxhP~Ada>}dd76-nc{ z=AU4Gq4Z6P^@z7r8?#xN`sF3^Gv|9vY9cu+W#H1jX7R^{NU|i0WP3<($aU+?fd>fXLQtL1b@}Y>pARys8+HS2ot<@=b3F_!|@>vYsX6meZw;HMxxR zxgNb*hGVkxqgT9DCNhm>p(SeyXU@?YhlgTp2+ln0EeU=(M^N{Qh29lhR%1!6oEe!` z(gLH_(ZIr&viAyF%3k-0q{pcc?isHpE?Ya%q=;6No@e>j)LLk)Fs-AUa#4+@JU49p z%E#E;P^0!1PDheJr-EJEa2M3)z?-ZBCz_Bpz5?;4d4=T z)b*1P_mI#>S9pl;dj^GJ#5z0LxayJ99_;%_iF`OwCk1%M3LkS>b;X}Frk`0~9b-Cz z%umY|8Obx=a-P>SUfR$PJi{h|$6R_)N!a&{ZbKg|y(O^oZU1FA+?(QIbzKf9vaE+D z{-___KNS+73)Cn0NSZkM>aANHQc$ojfh zQT)jI>bhzn>u`AK(oNYn$WATLJp9yEo@lVl6#y?BX z==cZUgYl0UO5gdV8A{*0icxyAFqEF{kNJC9qVyA0A#-Q-cM*}t_ui_I(XZ=jf{cFf zO8FyJL0KB{`9r-JC+TO0VwM`Ak-eg`MHAfus9Iu<3m1by_hh;2qnh}$1%|qCj{ju| z1SrM7*k$l+>=N(bg<0 ztcui90N~Z9%>jK@zQc{HvF9`a`d=;dt_aPP(0;eZjL^1Hv|anXp;@Cn9v?63?sCoYE=DbP<13-jU{mlp*jAD+6xW{A9F1 z>IlE8CK+9^!kmnbdWy*CX`7#nj(m#AD5uD_6<0wjbvf>gqlz$>h8TCagCWLEiZ{f# zMNb=I+}EuQF>c}0h8VY{wIRkWc-l;i3(}|S@*7fnLnP0HV>XhQ+)riV^Kly|e0)k9 zGSKjP4!_2Qzjz5l=2}iudg=0N~uX#zDWX+6CD0v@W5_#iLc;^evGzz(KDI!@-;WH@R@RAb+{91hz0ILDB?zzU?U&GCT?SKrEM_e z=qG^$fa)EE$sLWOa46O|3O_w-9ECoQ8b{&BXN{xK_fg|0{P1kGk3xBqBk3~y3JnDK z@ym38->^0W;PEH#O8uUY0qv{Tn#a!4p`9{(NoS>v6+-*V1_19}W;iQttQy+)Eemp1 zTBk$%l|nzX@7!1+v% zQW;=-K9np80<0nfjaoJqI2Mxw1UvIiv8w zM+^{}{M^lhP`NXc3FG<99DRoH>;yhDN1mx<%EmRga`x{YaD|8f3_t?V1Fkam_~Pjx zjO`9G4s?LiTp<5xPoRK)(b(ok4h>;G(HfZgG^G|k(Aou4@X3XX!IdY6RHmGi@ot9o zHR1SwwHf|jUOE2XXyE_8)xiIU4gBAy8u3`2Xv5RpWpB^R5BRo=gm1Ik85EnsKZB zZcj6+0X05`m+gfCx2O5*9LBv?{%u>KZjsUVEV{bao5ks8f=-#*Qhm!Vtqs|-#xQuL$yq;VPW_B<<|7R1x3psF=idmALH(9ggZj-5 zqJB#a>WA=V?Ap&2Q@;>FrwJ*(X=hX$n``GjS6SZEx1oPy%6r-havhqFY#)zv489Z? zrm#!u!nZ1@jzvluQHf!1dBM)%&VOh`_Gc6-zWSXevyv2sXC+yum}Dg>tUN2pIwLE| z>S|;qS#4w`SzX1FQ&y7IL0L&w7+Fca3S=c&Q|+uIt0_M-&V2UY<(1KTmIBsh-NBb+ zzBuc@U;F(C8DASeWr~E5S3;AMuk~OjIAMWtKReV!d9CFS7T7wGm1=N{PtX5TCfZn> z;t5MoYMsX5Ivlu=(f}^XIq=Px`fw&yP7m@9QSOPJMv0-=M2(u%ijzsOWRnxKWV+ zH%2(@boIFRS&mFT^I8x05G>Rk^4CPLx%_*x;My#8JSm0zQP|iM%w3AEE)MQF#2+-Y zD=cc@)tyAP1VseBJP;H$%}MiGInW{9&W8GHwSWZ;0>Of}aXoj46PNA~=&QCv;Ex}a zcL?lf4RHuO{=xsWL*T+Bqwlq*4uM7H4uQ*p90K*2(i+TroY2s=C%pJP|8e5Gwmw0r zqUSx%_qBHhtlEEuIc(M5T~W5&_u-JVj&C(B5ppx!Oz1CVoA#LJYasORQsCIbEN{7= zSLp3Hw=u4~F}+d=rUw*CscjugZ7W!6`zlOoBcQt$t5q1i()gjVQ@moa1(^yYYgK*A z-#rMsh9$98wysdL!r8Avl-OjGq2t~L7Ljr$a#u}&~AZO}t(4OuQzkw<%Z zD0?=95Wq|`Z~DQ@$?DR?qLhl)G||NFSF$Hq-qrQ;@77~&?i;1_vyr!{ndLoW#<|tE zG~R20Q*17_TJ^?<*0YLcR%vHJjBk~vv9?n>z(btNtNiIlvK0Gl7jZ zlIvJ2emuxCThtQJz~LpUqzjChtp@txx;d6ib_4yR?6e5}$P&Ty5H zl~iHXL>?ldNBIi>xUizcTuzD8*r0L;Nl0gq`*`7s%ua2;Tx+>pc1lCo|RZ^)tWRVE@HX@NC+h`o=fUX}xo z7%aamr-U6`3pV<2rh(7JfzO$GI)w3|*$@WnJug{WWj2JyvSja$MlHCZEAt}Z;ImHV zDIz6L5jn)=RwjZq>>xVp@iBb=I5{p3MAqbExWX*UfG0A^ zv#vc%PNIP5S3abR4Fj#je|-NzHB)sM=}0u=*3b=P-z#SfCAHDxkbQpG5$3x5FpRR; zXbh`ftSHq18tEVnV@MbZJD<2Lfjw_!k8CpgW;^IxQRjAyv`$cl^q3l_DY;+tQ}#OK8= zsQ9LrsyV`7-mx?E=f1wLY?WKT%IL&;Kn5F~HI+8?TN%KU=`3Mt^jlPtWpWvsnoYfVJ# z74rkKuegV@va$Tw81lM@hNc{t7dIT}mx`*w zROvd;qV9$R{Ze7*JjcIeIMA20Fm#>;FBuN>$66RVPxni|)w5aCqw;UcR}>Brd>hL4 zvq|@MgNjJFqBKO++yW`db5b zfX%#mi(Vo-z}LKb3oBmi&QQd~m%KzVfHraQ#b(9v@GN{CSJB(07&fROce^ikB}L27 zD85gBv8!>Pz6I=6y;WQT3cJ?bzc!UG?5x$`CQ;~x?%uWemh|PW9(j*Q&)zrny5Aah zQ`eP3FL>w5PEHz~VBIraoHyCrKm}Z~z0>~oj9>tZaIwD*UF@^G*dyg)pZzV1J%kr~ z@l7u_4*Ux_@Na?#Zrn-Vb}9T$`uxFRchY^AD!r4w%m}iP_kGoO(zo{43lIOk3Y{|+ z-qt^$bI!Z0-$_3|(68n{_+Sg#TLpGIA$4$yj?d6Z2Dy zv`1ANX-iIs86lgL`*v~*vnwOf-f+Ynd|l+?{OX#=OS>6{q_GwQsTRIy7?RevG?1$I zMZ=J^p{0RTm%sSma$SVYEhp#ehOmbIt4Wi$8dsAV!XcaxT}8XzjbcIfvG7fg7wJCG z9A5YxF9u?M1_$X9^4i+RFpG=revy!>hgWx3W&0Bu7ojMh{WBs0BEF4?z~`Up&=*`h ze8K0^y67$qVi^p4-+*R;22G#|hD&v)Lkr@a>u84+Rc)ZxQ- z{2w49qSHt3zxDCkA)ns*@E;vJ27j=<+3Ecc?f1R^(H|n{KLHWZktJ^meu33rD|i&G z^-xkp)KwSiQ%IK%b^*{eUA_XmM{%_37t_c0kOg@I-|7;$b|@BL8A=LwTathVLL{;4 zvp{yOE=ji;B5{z2vb=<6GV*uzM52`_EAGN=(0{SR#-#JwCWQmp(~nWfVDk-8x$ZUa z5~Kf2L*eqUcag4wpoAm*8)z{$Ogr%%&)i$oGtq{ z$VRA753H()mhghx8E2Q9`mPRHzZ#I0jgXbDC%&@4-Ny3hDEd4lwcy1_4PE9`5iQFF z_P`SPXrg#dw&UDfRqAt**ahL2gYH2+(Nyh(OCqplA_4+@l#Yv$n1=r$OHdbliyYo` zuRMxp2%?FJXkYT;VzhEuv)E7ka zKhx!s=9#6UZi-0G5Ov#$F!P!YJK^DE!BZ(vT^Js zyGQy2(PE;_#yyk?C)iw~LApj`ZBABN1=;obmiXXv#}W;lvpSaHk|Cn4$)&yI z^-i@~aeZ-ZlXy*^vB0;R9E#2ZCLs^LNKw;7yggSm`Px}bE3u#_8xOZeAiop)gh=9u zs!^Rp5>F}0E|N77WfOJPlj&M9@jb9$N0whkjebd&PAO3PjYu9f0!|Ji+c=a`@kE!= zkJoV+!B}>HfeEgLVuErg*j7^%Y;p3=57z-Yk@uZH<>SU^L9oyO!9WQHgVG={a2jyn z41Xh0QVYe`!1^!NY7>p2mKeD!$D~X9IQh) zNJKc;B$^Db5ge#$6B|RpqAH-EI2?4DWP~0+7g>hSN3c}u!?yOPDK;OwkG`(Z5x0uk z^@M0Z+Z$?@=WhF${!F`rl5fyn)CD@(c}1~!tv2*52aF#}OS7d2gxa z9;%GG0A_4dltPPA>PD#e;kcr>R6-Zz3y8BK+?Na=vk1}%UX#K!7Q7vg4%SYC-iWiI zGwF7qu8*wSikc~6ogxnzNoI~=#WIJFvI%pW8!Btk>7ycXm3K-_ZiMQ#=+wl6upvT8 zcO~~K>FS`Q11->j6?vx>)wS3-8H0}>&qODxn1VIjIm zWQbN0|06m?|A_~Y7RlRLa}Su==-6siI7PQwHNYl-DHnxer<-@iH}nen!2P4(e5q_3=V2N zM{k{fd)op(QCkhI5|)5q$+^Ix=Rl`q>!A_Cpi0;`rObiFRd0*8C`P#Cw& z{53M2ej3n?BEr^ZmCb&NZY6ZaYZ@T}78E`Br-)8_sSOX@w}k!wVu9sk=xM-w0N?Ag z@GKy@jPHQlYVmO>+D5pvLe715=-h4Pg<#|gmlQE7<;fqMFDFm4Blvh7PxV&A1B%i= z6!VS-b@APjYMUZ&u|PlBmticsSk20`&N$I^MP&4D3O_9*J~la-uRRKj+FmA`(e1mZ zc}Y#+i3y7ZdTk0!sN9-0hMjW%*?dosHyq4c^TQ8f*c)og|4L&clfMa zOzC5_*kP{}Fz-Z;D`;#yM#!3tSBv;l9ujrk8h~MbI1&G{nAP zL;M>abAt)sMTv%A37qbL(LJjRkvPb)Qglm#)eMVCIw)nBw^Merv*ib22QM2*2Ja#1W)bNPr=~WVwXeIaA!#LO(&rir5!HR#S4y#(Nn!azjZWR1%1_ckdHwB%#NtK+s zk=p`rx1<`UZgvpZmCiFib?N%48y(d4!cdqFaux7H^t_;^kIgFw(c`vNb?6Sy3q5ob zwuK(LL-WE8-K1@yhh%q64oM~}Ilu84f!BsFr2zJ27R8du`oA*%{X+2XPX3sP2xM*~ ztwsuoo69H~a4>7CmfGxgyZEC87Bf6sU^5mellR4YSEQRjerMp<_)Y?2Bzew7rqMrk z@ihH$(s@2kRGH56I(eSC8h$TC$X5$RtX1*_Nw6mL_tizAc%T+X8d!l}Nn1YEVQVcO zh59y)X0{5!MsH<}RR@7p+)h5WqqZ%-K-8X# zS?9tcW1Df-w#wSKIZH)!iY3$H#{X$P{D+|t@#FMtU|As^QBR{bw3wML98405zHRKZ z_p`bpsbz1gwBy}AF3;Okt!A198i%j=rYOp?vOdGqpIz^MVLgc76 z>ZJ%suBxradZRNA4Kx~_N4$uKn53saGj9t!BU}|i%SjVxq0MUz=X{DyD}xxD26KCs z@h&KCwYf=o4;@07LDT_DxfFNsmeZ2Ji5ro{l?-;s*ZN>v!{2r1tAR@$WtHwOAIeKU zL@J21V8~LIw_C#xMT*Uhzg%}{_%=*Qcf-qs$Ps6dzJVOU`3Rk()P6A*6(`f$Vsd1p zImAVCLV<19JY-Jku#$*AT(Yy}l}_oB{*1wW6!8iRg)yY=XwIT-l4Ta#OX78TG2YTu zmm4!!7lm-Kskx?mt*b6vuEl?*TE9}Q^fVguw(Sn3qMfX4GF6>i*~*Gdh*nq~-JL|O zdZd5;r(MLUcN)6pCqs43d-)h9E|rSr#FIo~S;4V)zOLYyv9+9z`PaFXC^+Wg2cpWX z@zhgj$eTOW)n1B3evdQWO%$P4nTNwFOQibsofGF*rtf@2j^?MWLHf=<^8@-${+)lu z)lzRIzQrj9QFJSp5-JNGSyXM$O5`aARM=+x6Mwk|RVFjG)uawHl*CRME}6fANC zgrIch+`in*H|um=W~L`pm$_qpO>~)$B#J-EcE)bKDP1ORE)FR!O(O&Ve=~I1@3V-X zz}lb>N~?kxFzrayt5%0QwNRCsh#fAPEHU(IX(G9Re1qz$1?d_`M6H%mb*K@^Y01`5#a|lh z(KgOkilw@B8txqx!9A_3AxOm#6;WZ&QAO%vOAF+s48c z-C;zc88ZBinCyg!aB#Op?JU(z1z7OsBEMcSkz%3;v~9>_6V{?aUSuoWQg=0vkjQUR zhlOglMk`RVMIl}cCl=w|$f4LDb%nY@Bo4$w_9rV@V-lst8yC4SV9u)cBa?=u z^K`{{(KaRxIe~JsgU}oWc)+e` ze3d4mQS)>Y(dlhr#>eb=H)njbS7m(sk=T`3XV4&q7=ySJK8R~`|4oDFy*+#oeT+f; z6h4S={#}C@95jf)CdEn-)NXij+_ZHS3A~8dxd@d4uh=f;lUSeGsBVh7RwfPK- zUOLKfz0j|R?3zomw<#APYxpgoo3=|{p}91HB96040={g4!^;NDqAiN8a8+U93jRC? zKa0CwMKl_3Xge(M{T9iOK*=0Osf+2#j2+TY52bS)KKfJ}3Mge~@|3o1pU=o(t;wbN zj&ySLzw6aBkx)mdv;9v6^u+CaNm~^UpW0Wfz_;37k#LsL{uA^J5&E}O=w5)XsvD>q=kZ`5Kc)hbDHR~(| z3aB#_XQH8G7J`2&Ow?OCRB213nu~5NRC`Ec6R5G*ogyxm2Y+g|!C-w$8Y;Onlc zC2-U7Jq|UIka;Sc-9_{N}!gwTj_+=(g2Hg{r9CoirNyaau4=G-eTuAJWdWk6Tcat3Q zJkG%;G{%hwck1VH!EA?5f5}57Gu1}3 zi6>yvWV*sUlt($Z+#V69m8GZA!j*N3mUX%Lee)1?_$QJI(}?87FUR$Q#)@3me7UYS zr5cWgb=wrZoss_ixz7Tpw(2s;==n5&8aKP%-|UFsW=|W)|<@loUQKWcDJ^7n!yhGJZ_4t`?Y{#lTk)jrfm<*AeEn;#q zM2l<&i)|Ae-g3Yj4=2fr8Pi*&^+fE$1-DEvf$}ssjRn12VDkh=d9J+~oTZjxi6SI- z6V_5%nRlht+-ufiGx&)stR%i*!Vbm57<=fhtbiDs&W<42snOd zFQ`8JQ00RWHCBfPRr@Vn{`R^GdZIlxz$3^zzMB$_$4;twKjHLm`#n)~ctDs!Nec(}_9uQU+s!2rsXC zUauZ$>2}j)r{68mFI)G7>Gf-*X0{9ei=KD54dVXSf*tNMd3NN3gNyykHnS}lS$+$O zL$+Y&Tm=z=xn{839#q@G&RZP^yYwIrI}R0c9HD4%>qlA*_yh59%v^0;;BeW6+T12( z>UAhE>m>$d4;fs_ySjR=<0f`hP5eKj2~#dKRIl;75`L$>u0Zfivf-~YjFWqTkT z%ISev+@h&zA^+MfYGTFzq+7I7D(Jy~R6EftZ!IHdqfH|QpM zFVz2t7>Loteb5P)0Uy06f{Hq7DL%(KMY@_P>gS4fYEuy-CFZX^VbYk0E?|G$`{5*E z^*XCi@QOovm69z|)ixq7L!@SlI0Sk^VhlHU!U|K{NNpP6Mk|IOQ_2ond(vz&ul^R%unaM zzcldx?2n*CbWMD2@t{p4RPui;)g zbZUy0j=16UdR8*T!umNTQ%;etq1H{C=-_Q$gU6WS0L8(|RSu=~qyI5P%D1t2kZ~sy z3Q!80=T%&hX^8^h+g)V8fD@lMGjS^Sa5C+l+9To~6qY%rKwi&a^eLsOl7%P`*PM&= zdVdSo%fAO2gaKS%@i~k#A_|4a0! zKsXrT6n{q$aH^!;8ipdd+s&-#3`F$7%4Lf2W-V+xB*P^QVP$hFGlWU6ZwqV$B_t{r z{ZotL93DaD*hiY)ZL`<~gWNXiSfF%=LkXp0v&z%4wSGEgQ4#0Bxg&~_?nR6*;QQAU zuS#%!#SiBm_7`6^*P-xww1r(e*@(QRhX)J%5Xr$jvYf5)WdPVBZ%fp0S%-080dg{l zhVQw^wJg%6^#=|CkwxFX;OEQu3~;gzUv2q>2+d&rem)Bc1muC#mF}DA&SF+I7^p_Ey?NI^3# zs@tMP-jzu7QH%T?{?+iamp`kexP17BX{n~t;yeml4`QRm+{}W>j&!Y*@n0|YABT~O zjqmir+4=YrRY0P?axjf7nMnG&RStXWNAdSHUn(}bLb`et@4}Z~DruJ9xU26$(Q01V z!H9F<6B~Z$gVF)Op*RY_;QqujNayRKq3=RRv6Gd^+Xz-9)LonXTg|V`Gxh`BKENRp ztuUNHJVRJdh~ykn26iD@Itgj17Dh`B2h);bb6RpZn3novTVqVxIvL#7R`a$_>TN}T zF8-`KSyidJh&)G29r3zKh+;GNZVIQ}a2+5mc1Yjf1^4}xS>Mrcnfh+llZ&jKWukO! zCX2+bpoYgo9P?kO+QgSM#@nb8c@%d9FjX$%$ z9E~3}HE2Gg&DV0&4!M>o#NZ|4(P<|QIRnk+md18AEK6!oueh6XKgPN!U0xSEK1O?; zbfxG${G5wz*+d7Yh|d#soP3@q&Tyzr>Acs4l44z#{nKp!VNVY^?CIs$rg#{=N4J~I zo1@!J($z#dZ?I(tc?+bZh}0aB(oUpih?LeMwMeAQqAzhn=`}7VgC}-)rpan1Kru}$ zuD7_qr$|7qR4&4ynI@{;I&hN8-UgjCasMmgwiR?p>d=y;LbOXXbBk1508KQLCYn97 z9hqs2ziO;Er>PC!tGM~Yh3OJo@+U?7CrUXI+6&DlbU$2^JC%q#g=ZwNC;trIlYP_u zdopvcz9;i*vL~g+o{;Sk8+}#jnD-p(;RZE zPGW6le#gl6QW^$@lQ>S$c5%Qy*;>A+YFjxE)rQ%c%1(5oyR0o`%9xlt)B1WN@ zsuxvuZe~p(cUH+y(cuaSTsQXu8~t{vhE)9x+S}a zl}zKRY0`pse3m2AF4Rt8D5eqg-%l(6eYrN(;qe*Y5WqW%Mup;EnrPsm9{(kK+-TOL z6)v$k+$kFL5~=rz#K*BYN=TI>8n)wqTZ_h*JtASKXqYV$a&n|fa=Phx$=;1kJ(Mky z3Q>CGf^*FZwt}49hSd%Wm_chFYU%f|)8Q3w_ZNxJA>cmbbCPmvdN&yr+=>Xp#cqw@ zLl#lv*&iq7O24G(mTX=1E@@WHX^|`fSALGv`FrkSS08zaITa4FZNEro?9Nrr*aa?y zrb{Q7UuNq%o~u)IC|(_=U?3X?bp;zqJM%I0>PZ)c;M6SAB+`Iv8cPOyoIModqG_LP zN|^YuxV-qWEFgX~CG>C&g)=)8F>#27rStLp`FM`l+w32W*<-=|JDD3^7eVsDpEP*K z11V1EYJ*R0t%i{Nu`z-qjb%ME2e%nGWN#StdbErV4dMPlaBp`V#o?HoP3MYIeM|8q>ZgPkdM+)Rqx2Xk8?jnC@ zC7l;x$sCGf(IT6Whwg5YH^G!}k2`1pbzZP3THigV+#tC>H0@s^6^bgPz?lPt<{^KI z!^bfR>rg&!ee3GMrg@6i5wXD1ZH`Ql=5mWS;W#$?1myKB6OEyPj}Ta6r}z&W;k3JE zi#u)NNhBq?;!Y1e;OePxc9~L)%&dl}lVg)6^yYEqoB7SOk~gRtQi8&Ip!vwJMZho1 z6pfTF(Xf>ou)^Y=&P<^|ujNW6g`&;=9YOGuFoj({GQ<)4u=iDETNG=TkZavwLPff-id`Y;Fd?pF9qx-Syzxqf)m>kanT^@EHd)4EUTdh2S$t zNWO!;B2+o(v4|;bZXWeoRyr2>m{mAAOX5PqZ3k)-E`K41BiF+XJbzAdqMo0{*8mYE z?9jQ#JoZTHs{=s{Tp=mBHmM={dX;ollj=6rEuvu1r%t+pmD`iH@)7)DXB}Gik)JsG zk+Mzv5l%#K+Vp~+$`CyJ5L;aNo)1=F5AXSO-1CE#m(2nX7u_MjBNpb(brj3FEH&mb zY=I-w$+Nf~JPW7S&>1?w)w391zKbYBaJphA`D)?;rOZbC^q=Tp7`+2~qA?umL079L zN78Srvuv#?Cos^2*JNc<=1Cq7LSp!EmK(zvTG4QHO7;1534k%+mfE>!I6hfN1_CaB z4#>D!q5npiKj7LjC6jIqZbWHVfjP@)L(^dFI)~!M85PIV0Xc4$sCDUFhsRdR*lpxN z{5@5NgENyIk!d>6kKCd6d3FwBSEq)USc;6Ff2}Bz!2Yl>P`rdx(kYi!d7=tP^5*uh zBGOPf?p#$T9C!OLui1FqLTqD0B!$ZVvy*Om!1h?8`wM#(m*LBn2%5|deKORJBu|w?jY9t$-L{`7H4P+~94>AxNR)hoVlg)cm`P1E+JvoEn_Y z{e}f#TDWYFC`v?IL-EwSPJ|>bepVKAPVRv(70xHlY@o~LM|4rMv!ZK|DK*9 zP`iq=at92q<>FRx@nWDXqL=`R+H;1SM)xO9?CS!PXX>kU0GUdH?l&#n4wEMt8bbJ& zYw)Z;h@P;VJ6ZRc=RoDdc>-p0$?Z6tVxtGU=2e?&s`PN5zl-v@)Q2vTrP$|j*quI< zHq&j4rcUjoJ8-FO5VCU@D_XIp@?`)%rV8YF2)q;E!X^ijk=tSUXCz;4tVIKu-(8bE zo?d`J$j*ulV8l+v>2^vSNo*KT^>&!BRWWp+Ex=ogfMnrkw!y7&rhNo0*U#N4>THhC zuU}lB?QoZ``g>SW%O+Yp=C6$$YAvcg@3TyN-p(sA`!m`5FGRNVQGLCGM}@z7KMOh? ztRxJkRoLA)cI-Qjy?q1|x$(oev}6OR2Sv4tQKGz$H^zx&$FMWPb*6W+y>Xvpwicf& zu##)8$6?9V@zZ_=#-@bGd| z-_0}d!B9jiP8w`V4io;Xa^j&!Gz-r15gmbz6}u@_(r|LI|Ci*V%()Z3k)6CkBoP`t zxJ*fpY~g215Z98oWQ!|a?%h`XiTLvH%@_aB?`w4N=e#$l^N035I^gKTw*pzEA-kU<<3?Pktlt% z&rFeuhej}ph)k01Z9KEui))45#^QcI)4#X`kGH_*duVkVrijLocUVc5CE0cs{cDJ} zJlM(8Skv<`9NMQijW6XDs>$G@;U_r_L3ey5JJAY;&y+iHVNd8zJW0REop77&L`%ry zRa$|o9fzx3N{iiILh#^eCJ@{brg4Qr(Qtmy=HQ0t3XE6POkFGRDk&!Lqo$EYL$ita z_qg4kr<%+Jp>q$@+*aA7T6kSEv>C6Fc#b?w*p);lvqWqAvH71-N*L-)4f3%tV_K|6c~=jSP}v;2CG3?&Pv%;ujATlR$O zHcpro^l$kNeaq*DZTS=Qi|pyxRMRcr$%_UtUa6m*L6lG4phk8I| zGaO#Mb-Cjq7LQW$PIL#cRz#Sz5YpEL^13_m`MmJ>LVoT7$5ana>Mqr;uLuf>)?6eu zP3fL;W9Z_=CzN$xbBbG>v`Vkx>b+Mg-q1*_mMfU@fv6{;c)?^HitEGngE|xsm{Dyg zPJu5D=uo_7MhFz&#=2ciG)WP+=D0F%uA0{I=*A~9%UWQ|SsSJz!+9e!N&NHCoiA;Xh_*oP8!t`zgIl0}8^7q2` zQ8v+PmbkYK_kU@oqs-~^@u2$dQJg50)8`*&l1$A!!Oy$-`ujPH-2_5AV$&YtroOdk zra!y7(XZcG%1nOk0fV~{(&|@CLaL#*u(OX?g=gY#;K53*rb+Rs49Cf%XO`9|*$S>k z6^lO|79!v zVib4l0ENXBpPqbsVli()U=f>xC)yTyhm=wZjfPG3>S36t(v;kkh78Vjqcm6DJ%m;l zBJH3AF0hRj@^;wMHMCBv+2Y6JUcD6V|5D<#w$8l^ANOoyk;#|LZ~4!sRl znd3iUonScku>kvM06V)${l-Qdw^Nz~hLWjIa;6<^#DeWYp(%)=MHb9MDoaTb$C;tZ zR*<(>GF6R;3u}OE6}HxiT02;-wJAZZ4K#0Us%#DFP_ltImc3>L{T$0-kK|Y;?Fwg7@fXRlAU!Y7 zv9yxr)I^B&;sW8y1g-Y;y!M1CDS(ICWD-t%G2Zo7>tr)hT5(TG6*O~-%={x zB!pZCdQEb0Fr_EJd6--v)yJh|I?05uZw?bl-n^v<+pF!x*G_aXI3_(qJdAKq$YNna zp?DBCFotY668t8H4PRru-c-I@SI7tDz!Zm%-G;iu80sJa>S>$A!@Wep3ZqRcITk+% zoz!%C^pXQiJr!v``JKFp5(*6Iq}h?7{Y#OBy!8&q7^1qO(vJrc}a0 zRb*Yh4G!(st;>_AO6zhHI7ZXBwUcOa2^lC4@lLn4CZ~e>(qm!kM2DId=CE7`#!8d> zT-#S$^Z-WOJ8Y(%hBby~=APzf2d5P^*y%d{A`~~cUL-%*gq%0En`N7BWTZ~liteHx>ET>L^cAym1 z+%D{ocn}t!-~w}|61J>>j!0xZNP)Ro9z5fZ63NU5)r`aWJ85+Bxdc3tDVGng< zN9Jgr!>oe=3b?uQaWLb5UWcond2q_z^_FK&cT~ar;E2D;@<=k~nO0Tlzr%d)eH##$ zHDa6MtZcBa!$mGVG^n)Sl;mTr{fKNpLO)D_&-ZaK-5;hYnjI03{GyP_tYn9xg!6LE zVBcOIU{PnI%Vw~;Hg4!l(d-XgcKUQ;L;0|r?yg9I`otmq99^GQ1A%(nL0uG?J>5{2 zNbYv~UINkEVW)o(En%XiSbPfoYUzC9O01%B;ca_~6?W3vM$cXSDK2eUTfk0<30!Mq5=}%N(pc+}-pn9j?}Us)CgE zaG)zy`O#6y2zx8A7E9H?D%s>&IyVx+Cd(!53@0PxF)f+pC}aNoUg))(yPnY9DBA$G zAshD~)bsdRvtAxuxgBoHl;gh}R?0?7{qoG+Fd5~Umhg+igU?Rg#Q)VS2B-4vI5l5o z>+nAO#Otu%5wdiIXu^5I4`IHA*t)$qpATV%peDwtW<25BaI6dSgaxXZjPwb7i$8O3 zvyfTwXyw>XJFMcaHepwGSR&+XW_TPPPxwf}Ya($9ZJ|VdTe;%ZI z^k1KW4gBj`{Ph`FrMEr-TQ5K9K8Uxu@KP*{FGYIk5m*}cE#&wP*smYo?XzldeAn;Q zk8dAO=<&V2%P`#a_mE{oKd9Gs=?7K7jfLb4rnDF0F}K}tFjru(M{&}*_iS(kOdfrO zZt^(WU79?`vccq3cQSd57L--29(<&bs{eM#%W{V7SPQt&$>ukgWFzw9%0G2C3={Zi zQfI1jqq{rAqR|Ns)gt+&3}s29mHD69+W5^SV?S}Wb|FRDCy=(pJOzC_GphSB+6+MP+^-@4eiT;r)R5h5 zh$1ker$)$i+WZRE1!m5MsgO-<_nn0vQuVj&DDGS#oP2a3^ z#pb6)N+!ZUpUn={ZIkavlVd;7@ZUt}wOMD_Ju@8X;hrd}JxIQ{F}ON|3_h8<$T?a;8(3%)Xml7^B2P^|);7k5E4Hj|>N+zw~D2ax4>i%oU&Hzf>2mUJe- z+!QShZcYS>g$&i(x@Qi-mjy!Rkbq!Q1_bGqO&EqMYvj|AX{X<#J7#t&`&=ejoC5~@oKa|enETS(W}{}37$l#D@~geu2KLM3Cz6;(e<+}Q#> zO5Dhj%A&*#aaR)7t$^Iw%0-DgU7$ya8&y&+N?bLXYhV@+Zcl+81#MPISQNCC1veK3 zEwid9Xsb%XL$Pf(2C+DN5DRZ|5LJd^^OYOKm&PDghYw=LziSXXg9gF=eNmSGG%{wz zAtz8ItVJYqH!9MDz+Ljs4QS?lnjK?>sV00*j@$U39|H`Wr8es0b5Gt zFUL!Q5@eA%zyiZ3I`qs|hZSvgA=?OknxF@Z>w82=TTxi}Wg-2?Kb@OE7NEA31bIt< z#YYs1{+K8dywZ-Zf^UMu#Ww? zF?Ydm8i!iw5--3H>;*fTyf%`dPpRzohcPwn)(X8#v84>zZJ+RNH5Lu$9nr5(!8PKO zk|9^`@4`*=H#Dff>*K-ibj+IPh`u+^OiT$~BA`rDM-+X_@@&2sD{`!qod}KB) zm9gdySGrK;qSnR3cv_`@(w(=(Un_yo99HB*9)iuB{z|F}PmMES>h6NCC8XeDM!Q5p zskl?#E&66Wg?S*L)lFh9b3<9^g`>2f3rB5j0coJz?XWmlc32?=;WUM) zHCxU!7FQ%7m zhV%L;vo7kwIN})YSDz)XpN0_UX4j((k=ok$mj~b;CMPLy;-v0yFm7~^F}d7mVqixJU#>%mGX`pV*{`3XQScwpLZdho zUq&e6zw|(QVf#FKjOjj)Jw{hcaqV!UQ)unzf+%kBJI0QiUK4d1o8HH))o7SYt){(# zLrS8Hni34@4l2Q+Rilxy31fXx2x1bCftLd5M@zhPZL~?_&7km@BqcHAH1byposui+ zPzrAwH1JWaI@EvtdAPMPZiKcRvSDfBMcstul^#k4P^>X)C=tG=hFao^C9cx1 z8?lED{o66vVTTm=_d3Oc?I>(zlFhJV%`$7X6?}f&aA?2+<##_0h7qc039N6R-G6{C z!Rdd*1GxLiP#Qt{|3vYT(+mI>k1}1&pQ+v0Rh;WDkAf3n)O3eO+;fsVRnG5a zrC3ZRE8>$hlJa9nsbdam z@z7Bd570v3lb3MO6$HD#$ZMF%rF2JF-^#%wP5YXDk|4_|(r{*V{z;d)-F#6un=kEl z7PVmKmXbT+gs#GPw21S>XGOQk5P79WrWO%v5D1X>|^na|p-ZKZ3vRVSiwqi$C z&7;kUn~pXoL>2L{sK8Cd!y+}%*Cl50u!;(di+n+eMW3_4WC zIQ#N~+3`{y0@VS5dyYp^73UUy`CF8m2cQg)1^s=3^X$4MzPj}hrZ45d(7r%Uu>ZMvSD z;3Oe(a&AzvOI7VG>huaqzDEHCDoMU4W4ITeCx(F{s{ECLi%97}wIWrQOXu+~U9tss zoFkeq1;@F0HxW0yIm|sT5w}iNdJQ#Y?-ral@IMwXi>18iyuOJ;hC953`Y&c>k~##^ z(?Z-cUJ}viB;O^#lP;m&k2~>x8ci!txyg97G6w!{Ziw1(Q#&x41Z_C$(5l^B$l7vA z?cXxRf5XrM`=piIr?5#>s8UFUQ8_?Cpe~)Ea5Q)x2aLp0@s?yfff8uf{+wm|x1!VE z63V!Ow0}`B8T?5%qA9nM!2w?FyMmtk~Q#(ui?M(Si?JV`TGx;~QI5IgA2yIvZj3 zOmx_MlWN@;)lSQgz`M;;gOBL}GKNL{mquWd*HnPNkDA`fN z`g>Dau6$voy{R7AoxWa9zB+|;aDfq;#=|OrfzBSbib7N_ov9^ zGgrixBH-@HGrdrB`jjFA;njgU6q5V9d?oU3a>!^+?I3`>45Lod?U`Irr&#I_v7vI; zexqSJVe1q)enENxj2%`}FMyZf*ah9gaeAIf;<`F;702pz%H0bd}_meSmsA*oncdiOLfy!*B206hvgP8W=S&|mVLuFdwsd&=9odRis(SOy>3J} zMU;A_h(i5G$%y|^h3&xjcR;ORdrP*n}Q)bb&U< zFX9g6B_H7AB`0;3t~+C>+VW#$8c~1NXBG4b(Pv>RuaY(k|31X(T3qGzw5bo!YNYGc zl3-^L{q4~ehYB8^*<7fPIoT7r92vCR<0SfUUltj41zaZMl2DPnYWpK=7 z@O~Gtw~ZfO1AE)mZ*_ayp5Z|;x5zi)4w#3B%P9%aj^Pf4U0~|MuXtMB#S*-->9n$s zwf6JoZl@x8HSYx=Cg5p4d%1;xIUj7;{)^Y$@zS7l|b8PxN-?x?otOS8e*L zxc5;JwKAhf+$&ES|G}Bmru(v;2?x>jySUl70Jl-pnOLWIPR$hca>ZW|FX~p}Uc*e? z1eTm7H-Q_vmjKoxHvzQ`nQ~LI>EAjTqWL%@-`zL4;jT@B6Kj|lb~l}+#2O*lK%(d# z+I{eWkDk0LUlt@xt%>(3WC=gLjG&PxRC$W7x^%O3Z5VV>*Ya-7^TS-Fm-2WJ8^6(E zE@woD%{l>orFmP2iiFm}sty%V86u&bh|=$_&dW7fs~E_k9lD3TGH~gm;SNRf ze;-MhjlZ7?`98s4{t$ov?@%A#4&yyQzO^T6mCL6{#2;yckxx+u&nqF#Srp9f;l;Bj zwUTg`4PMf8H{jP(j1SIs&cv6Ih!0S%Bx*Egm=Xwh8cdCXdYru`diQivkN9B_-_FU=NL< z6CErq+zv-PARPxM?#kj+QX~>T2rDV@sGNB=D16(qjs^CRCua!be!2q2y>Gy@Z0822 zk9TN#DAR1BU2bQ1m{^XcSOF3L7o3f7`M9C8ZikGC8VhrK`XzfQ=ck*!`9f36>uq6mRdb&R*`Af6brhD0A`=)QzywWQ3K``u+y9&nisf;$X0yLaFhJLPsye*!-*7 z2Bsh^#z3z~gv3{2bx)_;j;~)v*fT;BFB$ol;)t*{N5bY|Hx=>~sf&b7I)S?N(Bga^ zXB|_Nf+F%HiIe_vapXLfOyTs9$lw!&etb{Gl_jt`{FxuBC}iy?Fse4Kq7zr~6Zi#J z5!)ZRj>AxV2n$vbf1ycKG;D+s(A+$bc{0pAtw@(m2g|3lrIkYoYyJe`uvcH z!pX3bhMH0kSaUkWW_xkCsm=DQ(*^;;0_B%01@=-idNAcz zjbO?&wSmL@!IZDk)b(J>Cr4JB(TpeNSWbO(epoQ&Gt_Nrp-6d0q^fNL`NMvX!1E60 z56d*Xk=C2d?0)#hKeP4bGrLY*{9SjNa*KOp7$V3YuIwBVe*L1_rI3fl8Kc+-%l5>-oPpVxOE2zjMvm&W5mWzO$(k~#7l%kPq?x%Wo z0EUWIu0daiwp(X*Y8c?%mWN-w;hA{n%5dpDChCURjm)P?-CnPz5wNNDb zJxqIB$f zX--{An>5s+i)q`w4IqvIBdWI!p#wtMjPmbsYb7U)a93j;n%n$SF9pui@E?G4om97o z9xAK_2whe$dj&r%55nF8hbzsvQDcrwW8flr-oIh^|E3%MziZ5VxnpE9ZykcLh#A)6 zBGE7-1_8T+7g729u+t$&kEmUB%P^yBSqP1X*|p1X+^b0ZyA}306r4;P6n0cgDNfX4 z#ix>Vy4gYRU0|sqgZm7e;80zXugK5M%q>EN?+K%(xOZT>7STuymj$$0yc7^gV#@bMlfKiUf z`>DOtNT=R_i>gM&?k{UE>Sv3)@Oim-q>XsqEAab!_*#fk=#xlSyCT;~qG$-sy$c`I z<>IbFaWBzol)@WAbmVOc%5%~^)@~Dtc_MWw1*oBkj>vVeQ)5FoPv=z+s(G<8I1MFm zR+xH0Ux&#fLqxlVaD?y$d2P>fhq!GgWrzpIvCp?q0mx3B-gGQdvw{M|e8>BkrFjw&q{t3k(WA9Q1PMOAWpPRBpQNLY?MDe{E zrdvIw4*r*X6Ec+otJ%jqyiT?vD_u6L6a$;|N_2xI+Dju@8Ht!o<+|_D9fxb{Lhm@( zpnsu5F|gHiGk4}R_~H~ZP>c+hj&e9vUz&bz%2k1sng|mvu-I9fF41>Z$y2qqQ?%1W zluxwtiG=q^S&*RKf`_6`nn-Rdtm8PxTDJdR4`X9iA;cmT8AoR}77wzG{*9InJq-ZU>pT3V5Up>>VmFI=rxRV3I1KShZKdUl%U^2l>_oObH#yCkE!Dn#1+LFFI{o2 zgY*f=*ahhvoFN*3us+MJYdj2RalW@mY=>l(55sw6B=n%uy-sk>8`#qgMX5VrPc4PS zk^Wf}cK;f<@MsaJuN-BZgvF-_K%-A zrC7RUqC*C0iGe*O9F`yx$%gt^snkOkQ1rnxO-3%zi#!GI(c!G`mI!iI0mYu-0&l}N z$Jh*bk1HdDQW*p*o{W54V1IWv1$ZeGHr-33-#8f?DH&F<0C-vd{#Cw1;oAx+aGJ%V z9Nbu`{m;**74@lU24!&L%B~brFVJ@!5gJW4+2^Pdlz-vJ@si?LVG^k~lXH+`dK*r4 zqgGmI-d9D7p2S2{V@qz6TOwX6#SJMnHe}yON3qHMtrDU|4b&X( z_0Uxl{qmN7{U!SUYGk$7{|4Xsfi6<|+CCat@Volh_@||Ktb7{sTc-Qs<9&&|Gf^Jn z3!@!wtyD6L{f-lwc^mSOSW~g_$Va>lB^XT31+hhGL-HM^J&7~ne=nAtf8nu78o0EJg>D}c+R8|5iWnFE@x$SJ? zQ+TM1E}FsUuC!ZQdU)`8A*W~ksz+Hd)b%VAnSX;~qHNEi_wC>!`^(`dg&?**@q^Ej z9}7H23tHgtks64u6vnkL3b|?3UOX^U)GyT8!c>^#AlCbc!3;V_>M^u5=ywVSM*${@D4u~0>$5or` zSz*&jo$U2;hmt)#&TI;}&lu@(Mp8sI2B?={+6jfv8=hea-dBV~j{C<_5*^w;WBg91 z7@@%TI$qr}mih5o6fJG;8J1hmIP~Mw9|>s$ou3=}mojRH4-qz!uRylN#xt9N%bG63 zcL^rd0BT|JJ{HNT4l#wqTCXAtm%YxqQTo|>i>3(n-^ z=i|1h#Vnkzy1>fiUpr{{k{xf;b0DuBM#xYtQ;S2l^gSqzvIzlK$$(K-jNhk8GyVQa zl$)im0{xD#6qUzTSprpq1l{z+<+8Vcv7dLSo9$sL0|1bw<-sa0D;dw{rP=D(%ZW*k`{F# zSH+Qwgn78QbtRX3eUzivUXgrY1kNh+t7DMgJImg9SGuSgL0voy!)3M8tzW*IbXuVS zkeNWf*m(z*GdW`00|kgIv&*%%2e0)gxz@cMk-y`$zJY7q0gl(w+*qp5IE9(xph`$X zK3Cw{VXigR5&3{Z?+36}N0Q)~M<7wkgqM9~;!j{l z&O@azm6zPol?dA}_74h~o7HkqM|!9n%x+?&OP>1NF*0RGLzsUyaO`J{sll-0*wvicW8`3VX}|w-;pqEh)`(!++_h`KY9JP=u$xMGjv!D^gg}6(~~^i z2ncGrq$7E-r56bABE)|}S$e*yBe~+@VGgEuRAR{mx*yG-Hw`0$lOzWB!nZh`$a@m8 za#Pxq44B;24Tqv!KA6*0ft^vh_G(|A!y}Q(k7sqHg6LMO4pIqlQ;bngm+C=1MvWni zGF0`bPNrCgQ5eGCqwQ|wn_f{678-i-=^ZCMY5e3w(1@qUPu;EQF-`R%P}R|Nd@^ke z;#Z%lMLv{BlY1Y&IZ2egG3?4xDaIiOpB<+Yez3r~Zxq!jLwI!~V`mD*?0TPKbfwTy z>fpgb>aBDOxLs(FuD$F)l(wV`hp(G>D3yCZW4+79;Z*q0*w?sGSkt)DD%rH_q!y6 zH09DiLq$_r^5S4JNps_}hyRbgH-V3;x);ai&X;p@LlPjFU_@N7ZgmUV*S^*=)c0Q7 z*LJY4wpF=7t96T7cO4KllaL7sJDDUPATR+$773`}#zds91O;Uci|htPcEY}e-}n1H z=g!=jOp-~UukXG8-;YdY?sD$A=Y03IgM2W3hSYGs5QdtK3 z@*qS@7wu$M`ux#UUi-iJCtv^O2wAPgfK~N~B!nBshRI;C_AvC2!kguRFzPpMiya%q z@=3iSMkQs0EsGnuxcjdvy4sUO8>v9+B^EBKhi4I736X z&$Xgl@U0qG5x)isarFb%1&vjvA3_mrkC3g!=foT1hcJ*XNgfrXP{BPFC^vN0p|4k5 zjZ#+TVsXpw5D7C((P@BNoDUNyejyWfR3oT$Ud-{gXWY2x<33S6tg8a~evegoD+TuB z*s==esp0wFI8jO}=yU908T9$>(AEZhc7`#BDI(HjCuW88!VE*9Rtg!L4v~urSGS#4Y|2D z!b*BdT7|gk4$(=P|27Se+ncO53;`R4$1TsWcAu5CR#cWB_~)l$mbGdn(&5_%hLF$! z2_c`1WC)QU^7iRG3q0V z#Sb4Lh|(lRrN9{t!5jttd@Yyv`9vT;BmrMGYo}V?(;;j;?FjD|f#%1x%+O)rE`->N zkn3}=h;btAi_(uVa1D7?b7)mI!dQq@=d{s7lk{IBq{ z3rDuCzGASYNu01vf-8m8qHyu;`{Y%A5ne*dg_;{B`Y(5cB%&M&NE+TsLeUufy-I0JXE%VMi&WO^OZ;do{ldr1qDg+EZ1J z!~BQlCO3>*rM!Gd{Kr-?cJfG7F?O@Wxtx{=gjF$?sDnh?@rbslBpdLuou<8tyHUrv zOkbh+;R&^im(0}K>N?$TB@bWs+(fdM%r<8)1x%W1ccx~jj>qH%alP>aoWe9JIudg7 z$T*RZf7M~h0ecD))eXp&DNIZJfhJR!lKP5FexoEWIYpBYBo@g+buDExA<<+B2>(7r z`|Js^!D2#@kGPd&MC^^%;VWc3Z7#`BlW6Luy1sF$XY>4CR_c3WzY>W{hUXjZIEg!R ztP2JX4=47J!YXw5Y%irBpbDnx=S#lKY+0(=@0C$VW)&ykp|av4CFAaDXM@aZ1l>oTcG$Mz(bvTEUGDO{(Jc zxI6~cR6pS(elf^NOL^RvZ7pT3bSj- zkbQ?l%}y{Dao4nwiwlraXm(0*j?->iBoyunapS0LJE7KyuM2{BT4z^7fIvkJs8v9c5uE!o6=jdg5hAith6 z=wRAFYIgGgd?c~#1H>{)nS%8v^Gs=}UB;?Zj-fL0UJv9q%7c^vH>3^WIzUym77Q2! zY&hvNt57^ua7=VYufe08qK=qmqeFf(oxfJ{z;Es+>%Rd@La0T>$s<)Z-Wr;YNz*Z9 zNot59KWa!woxE4&MAe8?JHQ^3 zaayhMg9k*`8gXSn`~*>}3|D&pNR1=w2&N1QP^qR7#2XqM_Gu=ynXGYWx#EF4a>Yxy z-^cJAP^$v^)d44-kxfpgC%i16)eOt8V%N+2hj6a|^%T7DUo!6yZ&wjd@7dA{JQ7&`6)TmQ4}={)%7hDjoLF>R;!=Wn(*J^+;-&l^AE#;RCvv zN;Bd26p!de!|?FXCn7Dh|DDjfcXL~Y&%5+BU4mP1B%ea_kxQ-} zM82nZIB+3+bp(I^23OWeR&QrEe-po=Kjf7~X?Oy@@fPG&3I`dr_+Wnu=_h6~IKReb z>%h0GK1>Tl*F39r!zlL$~NxkZZeX#M(NdIHqK1^Y%zt{jlfBDgn#wYoc_ZkaR7cHt?2Ka%41;*SAHJl z=ov^3x&+wtS|*IXOtorPO3QpQ%%)2^nIa2?j~sE4aj{7DP^Y6Kcc8peEK{Lx>5pIh zC!tk9{F444LXD(6DymK~0?!dQ6@P&_2lJW3ZXB)|-tgpiMolC9d_zqeU~PRI>Qjq1 zysxNFnWR4WUnaNxK|17OI>eZ92?~HeV7a@@;u(vFMNy`R?ZUapfWQ6?QFSHRR^ zQRK+&ZbXkR)nOrv3GyvhsJ9edr5*S$s1+RN)BK2E)`@hl_&41xe#sAd$a>Is!x|%9 z6D$~kuuMKtQyBYgoSP#UTWk~3D;W@R2}9%@5|BzOeUDl|rw)f1kRmQ2qle8Oge!H4 z7B)Sk!K3m`N&Z2s>q$@X3d7HK_pUIHhz|nO`7z}ji*j^wS%;EvCuAr{X+s{8zkcK< zs*;9>orl;8FKV=ono5>))8G#vk+qGzWoR@EN7lkh)Z-ZF<4m=2flm(2 z5AZX)BI&U`bEJAEpEGsXZ-eW`D|nI1x^JlczCNh$(tQ`nN-pFJ8G`3|VK{67FF0bG z{FpFBweJjevHa#6X){qM@dLII=5^2--#PN*f@0)?ph&PiY3C$DW96 z+}jC2^c>s1eN!ACqCE9Fs0CfzLVzqiB@BktFs zw9n%H+f0CU_yRBSOF@5NQ?5UhCxb^VLBFc8ppWmhl4=4djWH7zN)%w(;_ru|@k07i z77!UkMpHUm<6Zw&jygRxxh8y?L_+4u{wPKD5~7GYq3f_18XMkBTF@%-XC1bY=5q(h0Q4dbqnlCG z_+45kyj}z zFQTRH0V!_wfPdu3wchO0gx)M_a5c#>)+9ekWRhx}T9KTkdv$Jy+yjQN?5D#>u5A*2 zT}z33A5R-Ojkkf#l4)?VUZY;2Kh4dh?R|5IhVpRS4ffLp2ad`Orh%^r7}c%V-8c*U zGF298W~)86tv+!`^M*`FAp?gFS@li5s(1oPL%#C|^lpC%vTLA3lhqbw9flRfKCMdW zw?w;A^h#7E^mt3ujz=4Fkc`?oEGgFN7^%seHA+gu@naJ3q2m#)L`RK{=_#ZDb!Y2z zrant_riGPuc8aX~kutdFuptBS^z-f}(MJRXgTi&+zLjn}L$`UdaUlkr%=a4^Zt(wq z&+};x(j+0;FDf+TNiS*9n%Kr639Ak$AB-o14iF}tCzXd`Lo8;>ypQUwGXdXrM8)$3 zhvd7Xqznx{!gHn>HttnL8~2u#w8psivkY;I9B1P3vx*8e86EDfiMHyo2K{JVOAup= z+aaJKgC7p|VF_EQ7aq^gCZXbkk_19{2yM>St780CePSbL795X>oC!+VVCqn5N0e1e z&z0j}dh#(YuDnKlYml1tX|fWjNF60EdB^hDWrq`yD?KLrWfFJR zQJTcN$77v!Qli2FgTiI+vmX3d}^c=pwR@ z2Bi<_^^#_5S0z%#?d3`=^(jBj#GW&Y-p%kM%D*oBI~QI$oljm#YOv^MR0wZoM|U65F`zugV}T} z-~8B74r`8c=HyY0)DrCj`l#lQ@P!S7@`sg?+Y1{meAB)?KPrILibrc#!+8B}QDMrESD)@4DUQl#!b8$Y8 zECqC`0w0mt%f#uxIJ)^36fi1CmTH(Q-S*O*?Sc)<*fxQPaj%6I$P_<(otJhJn_j;B zN}4ZFSkR=E;Egxv4fIMry_!$6`$Al$r}Iq8)J)tk;WWNn(qw-BwMB8VHC*sDz5g`_ z_%4$=zTPIoR@M~730X^rO?WwEP^X?FWtz7R0WUoQb7jrL9QW}=*`hr=cGy>uYBTc9 zJY<#YY|841_lAZ6<=|+rc3;@6qfBS*BBnFEaC!iws6Rb=*hY3Uy!L%-&{{R9W#7Yd zGjSXiq7cQ_J=;R6K($tm{R`y{FfL_BTrEjHlT)Rwq2_R2Yt0qXN|TEc(GV1)xq165OSySF9zyz8!-qavYV~u+_55H^evLG9vRMm7^c_Qi`tfN2 zqRfN#;x5B+10?5)bVOae6Ng7FFTIYw|G{nL%^mm0JXfUP07$o710V5XB9(-T{mno2i`d7?&cQqQb@`EZsYi;;M?>Q7 zY>`yVH+~rJ#%sv&#ZT@`ow>QpsVVM?+l_o~yaBF*0fgGAqflS#26Y2edR%9icm@x5 zkm+#?it__}K9QnHYfr2AiTYwy{jFA(B@EDmvbNhgocE?rYDnE%bSSe5mrnG@?M6L@ z?zXy7bKhuJKqS8@eq(RFerxz;8w%sT>{~QS=Q8ojTA4YM3a1L=7T0=*S7m{?9v-eW z*a-7+UR34;5@%`DdtXwhqSlaQN#s5#ra(<9(E%#EmBiqxb~+N7>Vf&$9)E7cdO}Ba z3XYa^5f7Phj44L9sNiV5&B4*SXrTv;-a-~dydE(4EZt4z2$r9S*8}F0;y4Kue?i85 z!k$2JX5c@qCz0P4t<41_*JW$+*gcZct6;jZhx3$oBZ>{k_6T%RdOq+zI)@Jp=GId^ zagyHg=$LY?ULJMVFfe?1AkS@!lGhW7lCMh~5UMOd;LY!JeFPjLfZ%Bf5I9QSooxez zTU3<%&2gZ?dp5E0O>Mf_>VDMtgd(di(c&1Gq@ef=7(iZ7<|rBPi(GMAGt9+rqwi6d#qcFU*lS99bxk+k}{zD#ejkOeg@n}2?meX z6v8uZ@i;7YP!+0BK`ws(%t5E-7vz@WWtRq|k~(z zoqrw9U!)jC@*R$x_O)#0_&?i(^8e7BTfWz9)y?KvOuF&CYg)S37Q0cV`*qc(fg&u( z?5ZpO!Pdd~$mCGvk^c-YU20_Orf$}%WAxK@Mt&OIbfZSE!|zpk4St$*Tm{a}wzYFY ziK`Pc&QLB9;%&RRqR`{P9@H-D`E2nptZ-1txA%~^JPb8VT;6R&T-ss*qeuy(FHWtd zzS(J^D5K^DFf4^s$ZcM;2lRF0@7GdjJ}bQ@W#p`5DmW7-ia*xyOlRN^HPK|4GdMrU z(J`>%sAeC{kKcnSR9SAT*Oc!K?cFrWHXdbSK}fzYvWEpI!vK7lY)~!Q!(O)>hVHHP zn&BDY4B>BXs#w+^_VE~jf>6{!oXsYMa?x4G&20H zwEfrvqsn9(uxvPXM6*)15N1{PtcD{h4iX8GtgeNF@;zLb z4Dn&V5^#-fZdt=AfOn#Bs<)g(mQV*STNYU(1Zj+JFTfWXVcWa;x%hoCzvesn64`K| zla8R#-Tff`EH3b?fs)}sUz1lOw?`Ps0C7N$ze-C?$1;EFoDFryI2}dhl_J#WW^&WD@MJov`8&HB`s3v@Z)-JDfSmBrhjn8*SI&p z58AQzO7o#~qS)B)lizi2<&%T|nyr+sx&5qee1 zj|RNs4_i2zEtV#2BU=Wj+jja9vcfOe8OGA{T*gGv+33lIy?Y4R8!VO5TgRU9H7<^u z0+Z>c_9j1mQFv3Nrq;L~RctA`!vmbERfb>HCi2ws%x0V>o0cn!3y=5a&mQ!d zT+Nfr$>C-6$6LlUc#~$B+(%q@JC`TNCqQBB4o7;cB|%Z4(=^3(oh0a=Y49~x!qVX# zer;$^rDba!$XRiJ@qKd0;JKqJ;$oUDlB(G3iEuk^Wj>LG@2V&X`NuGJrOL{Gxxv@C zZ|IdUt^psRmnnOygwP!BU12QXCH?y;x!mdSVG&|PdsT9>Fky37GMp-O%4@zXR4Z67oL<=nNZrIK&a3T_?yWtyV3={HWp-cZJz3(~!!7#~lY-cim88SgS%4c! zc{b-G|4E|c8RHkCgG*eAhi>tRn>@lp{aR>2#w|x`EbFw-EztaKDXDKA2`xM0=)p~U z;utsrwBzOd$lft>u14)kXx*sKGQFzIrZ+{`nm`*IfF6F-p~#~oBYzsj;FJJ(-KG4j zuTT=_by3{9A5^g1ye-crfW+JVCt;wIcE7=wi{JfDI)2(GcR$$dosYvTL3gfsfy^~C zxoCLp3vuD*%n5e4tjr6t5MPKxtrWRX!cRVhPs_zw(ETT^C-bJgQJhbk#=&aEFS^BPlINJnaX> zlha`d@=Pn3r(H~wv38A`f<0uvP7?U7?No)OcHzt?6!VImem=15gpb{8Y4A$1Q##Q% zp74d_p=rfV`H=M|WR3#gNM~^4bw~|FnB*N&C>wJsu22?4*@t8}7c6qr{?xDW^5;q|Z_Yt!^UBZD$k`My6+R z_(pGHx?YiV(9U(|XvB4wBbTNwv66K7PsU-qsj!_)>es;1!UDrjg3Y`J+}VyjV0mGI zA6{=jy*ahoBnGms5Yc?ND*t=vM4Z8r;qyW#`*kVQ0+-kbQrJXC=#Kg?uHHQ+6?4>C z4*FW8)e*ehAz>#(-|s{ml``(Q6TZeaTNHALI$R)~S!3g0G9E7pP?~ru3YaKrbu_qD zZO0yhIv;j~kNgGn)*qa9;N2w}|CWn=B96^B8Rq%r8&RSGzY@+Gg+zy+de~U)-AMzI z<5u#x0Zsn4V+8@^%g1~H(*pY@@qi$8NRa~T3cQ7n>>H$@y6l*QYJmNN2o5G{aJ%1n z1&ZsBcG@ZjIWh}zyGQ(oNBr4CttqZ1WVpj4e(4dnc|=z?9y5`8ZQ3DCPm0Vv33Hju zEn@=v29vq35+bm<@D|_sB@@WGeCJYMguv=dVL64QBkV&4QA^Ri0V=dl))Q3x`@_)Z zP-hd@!%e1C)3>1BD2uZfNt*nXucih5@Hx;V-pixu*8tni@^T|GPf$DsEBfP8f>Li> zK2Y|rdFcfA`GuXuvZi(>d_eXcgxy7NP;fDk?n`yJg~|kV(TK8Mg_QO89`SRJ=;aZe z-ELaU@4jfkUX}|>cz*BX(IS1$^Lsllh6~k17^4@q^^+xZJ}jY{L#A8mVx{bEu9T~^ zkJ8=@55*?B?=*o-4s7J!*kDsE%$3{O{odb+n=Y}#l9t%J?N{k!N{}l z1@H8`xVz87V&3U@d{K-10tB8ThQ8g`B10e2j>bCvB5l~9c3gq(MGM~OnRw5m)cojs z?gld17b-1{VcKTcdg5*NSr5Qcp7+~0*9Y(&xZ8Vzusw`tdGtlvwjn&rBQHk1F>aHF{h0oHT z-)?9|fBq^;f1Vd#fA%*p+%12;`Sp7e-sOGyf}!Va-j~me*2=Uvb)W=|Je}a=KxE09Uu0e5?)R;1- z6kzrhDGk+hUXxK{*3!8inryBdYG6m=ZbC=+;Ectlkdsg_^A`h)iQLy znxeH!qM8;@hC{eG-4{;{=_GZTZBg?X-$C=}y(pL-HXK&<7Pp*?BWqj(D`=gPfYq9{ z{mh6m$%GTYkbtx;YMvUCy{KSr*O8^uG=!1Slk7b>-*`{PjhJQ2=s zUu=PJ=E8gi{l!d@-eu6Qu|OZ+YSJJrsB>5+OlqA9C++Rq{7%h!^fP2aSjcKOnGo>o ztd!d3-tKNV#cx*>^L8)5@xC=iMlD~vK0lY}SX_Zs~??OLfQ{KKS=9Bh9KmWpL6r7g-AZV@FA1Z5AZvUDS5>!r+u>VL@F$# zlpvPndPQ1fFFegHvOn~b{q0uyGr7Dk!^0b=UiB zG?gKg;MQFYeGO`+n-U@^y}d#HpH#ni$RGkPjiR$p`hwCZx_Y28ik1v$#wZ%ExkU+6 z>W|K-*t8D@3dNU?a!(H zxz?sX4&U`BCb|#dzV<;xj}N)s?FY|=)`r1;wYNk&(g-=7PGk&WG>Vg!MzP|QCU2QjBok4Rpkxs5(2~B^%H0dQ^Q(A*?>3F}KPY)@F~kez-;`>8_}0!6S!ij~t(Yi3YfM(MxZshi^U za30~V{{^HSm%(X9UjGY75iWx>B7pnx8zAGyweU0n-e(TFc=2S9;yJ&#PJHoAUxmvetcym?5RT z4_5H`H|cyWUtmA|EG*;G^K7?ULNE9FR{9=^AaJgvrNYhY>(ki1B` zSt6KlxUv1r+Q*oh328cP94ZGUx4^}+U~9?Yybwiac!^Y928(gc>S(8^>dNErE;~>c z6IFN`Zl~kd=F&F`$|&qxg(RvcoM8a-KgXOpvZ|FDoTghV!S_CjS>4kwJjHxC$cMg(9QwNkK}8gb&-h3UjSo*FG?r3J_M6VE*RltUS8|<A)l;SZs=Du7}`F-m-+k2pbGIK zyv>5c=Oj3Egb%b@xAJ^Ql(T#uU**$7Dv>bX1b_33>6$SBxy$@KMTPw&mSuDv0TZ@$E4c>HRVl+fLSR4Nv0BHcleY z(j;a#n#2Zc5>s&!9^{38W5M~tKzK5r{G(RnUE5?hBsWR_qm{vwruEM0CDJQZHt+bD zf);Jd>rIw;!6BgPjsf_Z;=r$QOQTFagJ_z4#?ho$z_Q%?R?A{Gr29ddo~0G)=3wqWu@S@%WVW zq?N$n!w$a(rJ2HE1)TDC`jDfQ$;&1TpnDCuL!rZJhuTBUP^E@cobV+UHqtm@DMa2E zS0y>{g!hVh&^SLGa8Ej)eiSitg{B}#1+wwB`jx;?pNVydr zBFd(nX!3maB0FRvUQR?@s(GKC@+l+6?qZoA(g~Ix@wK{Mi{4zlmVa!5k>A#J!Jb;e zeNQ@3xf4_nh>0|6)KYgWrs^E!8U0#^A$YaQGeV*1n4{jxJgFBQy`LxAuZ1hU1f=P< zrTmjdSw}{==G6jr3mnKk<;q9G3``qiqE&c z6QptDxl6)29re<=EzZK$WGV&xB~G`yinQn%`D#txKIIFlK@19!?+%;E<(Lj#Ys8IJ zyp3NUjpJkL2Y(?n$5DtVtkkfs-Nx7cdEt7vL0EAe@VfC^REe zh9{0VoTsTatFb*1xXBWuB*CFurJpQDnYP*LaxFZa zEcL1Yo%F-bIjsmFWip){TA(P$+>?y+x_a!+7h4>Y8x?hwy(@KCP@?2*PCRA^`uMmn z$fuu#LWEWsK3phaA`m{JPN9IW)z$tQi;k|xLi zu5StZ$rufziZrCZDX>)nab=N~&E48!fsdGrd~0-x(|MJq zdc4dH_gR`7?z1%Zh)?!e+Kq4@-DipPu=$6YQrkd>V+5OL(Pt^6jeVBdS*2Qc91a_z z;*@IDr5fzU=UsF+-hRZn2R{1+!2ixK4I7kWmN6 zqUyOfZg_Js)m+E*xjfvispPn?744c15@uxSG3}akxSb1ErqY%@O>L1nW=GmJ-5ZG3 zoK78XrRJpCH60kzI?XAn8exWMay`PFbK0lr%i})Tr-_ChGMLMD;?lQ2PlyXtiTlDs zT)%U`aL}ki;}!a3akVV)j#&FngKWU^R|hV;8FZ^DXsc@tsj3X6c9GSmK;m8-0 zKAbDk{))dkkxPT?sxs32HrmHU2Iq8P!6RB8#y6Hx2@ zA6uiP$%Z$B2D6*#;6aCxtL(t0C$`}CUE-3bVheuT8+Lo5_3}!p_HYMGrlIeK^T_=^ zUPC&RLQNAwoYT0&r?muft<;F?vQjoC`hzwHX;h7c_kt|q_AJB>0ULxxc;%cwx9^X_LQ>V(GP@Ssmcm>NS z59)OUe52b~mDb|nB|UtQ5>%L#E^J^aMy9r=j6z_kQ7!zcRkmxH=n7A$?LkVF%)zx% zD<9~SkzJEcGM(wgjDE?$Ci)?T<8?1WvE*cg?omzFctd74HRONqh>EB#LgFBOrK5(^ z@u|I}cemk)&yyQvn~3krwrmv1FoSBZbfSE-k48#AcJ+bgh)}YNSg99p$@YrJ=qAG6 ziYZzkTpi5i7e9kN8|4YmrH{ZmdYM$|j^27exuZM4BW?!dlQr-v5I%Gec>m&158SAuHD&CWOR%5 z)^JYEuy{U)?T6y{9R8@o;9+*3!=yvX=Rh9G+64RuUdnAvawFt#XG3V>b@A|Twd^v1 zCl}>Qb>@?SK5vXV^9VQO3(7$b42t%LAFu?h(r5vzk!0&`tz@e!Zvz=2^ssB|zs)t- zJp8nk69uBXkTm7Bnidy=_B8=P4MXh^^x7c~_gBReF+gH|yWVK0Hl9R}to`KnGDVHY)P!}la$`o#y`2J?nn?xDR$eN~C| z;wp}~wvZp?a&~$)tQo|P0QLgla3hZUVjV4{w7-)_P#Hx)+mSErr6EpF6|ce0BR=+R z@G-5*q?FyOW!K<+`yJd?jJotvBjphV(xHH&YpP#NCXWJYK(!8%8hd+xj#~@YxcfdR zCp7Jt70-kCwGJn%iZ6X})K_B~GA(2Q$7(%<_+Nd-K~5tICZXJ{G`PiNmEm9AC^RoP zm4V0dv?~9(aRqSOWmp6_n{F)l4#U~tOWY0DyQ`Gxz4TCX7XPq4AJGgi{!O#< z!ABHn@Fwnm6~6h$2OOs9mEN7zepIFd9o@=$|JhKx^khhi| z&XdQVf+I-6WOa|BhkT|xV%84?nBy`}CRUsyIwR#V`kG<>>y`VIrNg_@43C?==ZMcQ zeIN)3ql-aP5zzxQ*o`6x!$;Kt1s`O}SX5eIc+PW)Uq`i7HXAo}r!wB6his@!011Ql zQ;;MaQ)*#JvudF#Hj~WdfAPtW>2MTvLh&TALJc0rLm4{kZttm?d-mAnA?)*KmOr;Ecv)9L+zwgzdyv%9q{QcTt$2sr(y>w_n z>pFjrI~c99#ce$NIlZNjZ@EalrLFV#yJdX3`Oe=P_(6$w{+=M8Xm$SnI?m1it2=)m zruS>M^Y=ccm2K?&J%T7%BAvfK+sC`vsy@ksM>r$v`6&*-a1p0Z@?i-VJmIzVzUKQR zUx`pZA_8V5d&4q)RI?YB*6-Khm~HIU_3_OPZd;0XI-DwVs?Oj0>wV$Q-y?0$EK<+3 zI)9(E!F5x;lIgxPdu;dh(cui;XZ1>Mhcp|{NA*fBERRfnNqqtcIL0>16MLc&@NOi2 zay)zQ<%0*C3ao0{Jv3v4lwe`r!34tln>2*39cD=yGY|P9oxd9pHIym4G{f~9iqoH1JSS8Htw|qAbP%S-`4Jl578b4(bH^WPmcx)5vTL_`?jH1 z+dzV0{k3wZtZz`e$7gl^o>`t4G%t^V=Go=Z(7Y@bnqO}WeKk!&-#@JLce|E4f6pv+ zwxaX*TL-OxMSw4cN8?31ZX8=fBpeydz(bCIZs+gYQKTn>pV?IBZ}l$cu=Dqt;ZD{0 zyXv4Xw)6KZ78!Z3jbuc`cK%*LOC7KCcPODZiyB-_a*8#{`H4(2Zs%{dSlc>(tJk$6 z85ZH`sJ7N>8&v1-60&23JAY3*;Apz@H*WCwQn|r#I)AscyJy+?yLg1Nap&(iuiCit z_lmuaCOUslCE69Q^LGU6aI`7IoZRa8!#xh!`Mcdewe$C|ih|hA-wQh!-CCz~M6`}> zFlsPOKMMy)CQoddixxECCWcf?joyD7)<;Od45D=Dj@3~X)Fq&!OdB83QFd*P79LP3 zshA{B(|Doi@f!2ApCBKx4Yy-+SmnXx7&A$!Jl}7YiM3Db@RDuxck80KTI12LM|xr# zefwq`CwfGOaWqy}8MJ~I;9}Qpw)3Lixc#=r&28yruG8U7+vB#xtj)tZ1Z~5;-qLV4 z=(Qhqg(pm%io@ReQ@KrR_cR8>Jkt~*N>0L9`DAi z8tQ|KCPgHTf75G~CK!IilDg)UxhP@sVg(QpP4J5ZZ)VdOIRXFM)xaF32A1U@t!YXP zRAp$3C)m_LgZ2y$X1hs9{&Z`!{?|Go`JD;P3ds|;v|dP_JHaL-kKfX?kX$)ABFN79 zrez`d?FkWR+OVm4wQq`T>{;J5>23a%rQW?~8++ZRXh=m3@72limnk9*uig|b4bPk$ zEe)^Q6eA7KvdwVHHwhrqhqfs$iRK(cD^y-$p>k;yDiGuVee$s$(NlFGJm{ zc^w-?%Q3+Mf_q6&9f2mHWqTZG39>3RX}r^I)}tD0!o&iqWCJs`pwT_f^`s~Dfu%1? z1#^m0FiXQQrXwL6FU=2MZFST(GwV;SS@(c@RPEr}I$x+|z3=r2PHzxW%pm-UJv7rc zIZ$hq8BI8+NmB|4)HxkTkB1=a21b&1Oj3z+sJ!9d{;ks8sEGV41zJ-(*4%5fgrRbj znh{RJ&9UAukWctL3hw@!SELzNT7lgE9=BN0yE2M9V>|Il4s-cpuL^T{yR1=Z=yuG+2t~Ow$T_&8>XmLYDDubtlV(WvF z4vnjq=@;iVbWa9eiB8|QR4l-3Yq5YE?h-fuEIRlqHxhg0Zxqp#34N%^L)@OUB6XCw zdhM^*w&C<&;-(P{XcH4eYD z!@1~Z8s6Z_#&7Vr%vk$o4`-}(f;Y;Y1hUUm5h-#-=dBerNq?#LO?mvhHOd-N#N(Qn zi23*Sv@MhB?eeqBq#|_h9i2#(gfN7Ef2TOd@556`lzD_%!PGs?v4SM|2FLBJV31-3 zBrwP%Idxj5&%L_G7di8Fd35?5hsRv!ilopT-xsARc|~md#%vvSk|XHH;S{P~ni)zStw@J|=a2&&dlU`v11TS? ziL7Wmk!bS=KDmr;yDt3XF|AsQZM2Y=SkGjTzDN(ESS-bct}bzHc;q3i8hL-Ivdn?r zi{vU46A;*c0DW1UO!2xHn<@*qsxi{EnfrZpO)q9s5BAH4tt)MA=~$FTmFMMBPFo=U zEdFxcQRG0y4Z2 zZXHs}+X3d*dh`cj^Tv_kIPP$IZm-A_O?sHF$^}h0aCRw|CrXfg{Zxl#4kIJXTrRXT zm(}}KXjoM#tM1I>DA_YVTr#7IlQg{)k@>t9iHq(-^3R?)anU!E<3G&IIzYdg2!owQ zd-j%QcoR$Z3|h&aABB@W$!A+lbnNzM9l_`+vptKN%=X;2ODPM%QBE^PSs1#r8D(MW zC@b4@!>(|)XVoZMw&zE?{z2KE^GC&IdoJ6h^2^?kZxPA%e6Nj@XtsbUP2yvogg-jl z(;b!V`Ry*1jPSCYRZ)xCo-M9;INLLwN36P+=!X<&!c!_!zmalil4?qRIxM( z@x-N?KrY+qGkFkMy!6{LC-Vokxg6Wu>S&IDw0?g>Pfwx+Lwx#jCli$RFn2VHMHeH~ zB}qnH9`i{k`?Q!`mvY z_SHygtEJbnF5Bt)w&xSMvu%3qKymXU;sUq0S*ExCS%;xi+5jThP{j){!v;d!J7%^` zy3J!CLbbMaYq#nDgk;5!Di_W2gL#%7$YO!N9<^AUgRH8svCo^ z^{23hNJcE{A@QHmbH(%Bu%}gl%B=U1gh<5@|HU@NWr?{`9p707BzOhdiNvF)5@F!*KpCP%in_D!DAVbIGm z)j(PBRFuPX%H$$nAl^hxLRiq@Oe9f6iux#-Oc4%!!O5)H?_d@^r&Q+FF5BN?Zta8i z*<>^2nS7Kp!f?)GSz9XNrJTR3WttFP#|w4%V3bp?k_7JWc197^fUt#OBPkj)+KL~^ zgwwm)>hsw=O8II|?Xvr7Dq9=hyTuykWYjpVtb>TO-Wun`*^RT!8s~T-<1`s>Jc8)IxFi-X+8x7}dNrO2DW4Te6#8s;%c9Uk>*7xnxOkd%@xa8H2dX}Y%2~=t(q(j@ zqP|99By-Kcm zMX8a!=tx$P=-gXmEv7zVS-tTBBsi!GN>ExB=Z&SjO1-P{f=#^ri156&{)VwH6RI=tW^SiKe!~LX@p^tSc*R)b@rhFG)x#4!_I&2!N zP-)+;7L*&j_>hHnd!sLI9DRcqAFhZfH*Yt)N>-RkZ9u-mVp=6ym@aEXRu9pI;U-OY zUg=^>Lt2jLLcepwRel0#dfUr&qdR`*hrO2gmRyPIiv)obJyXiuiQTN6XM3#$`KYA@ zK|y^o$ud78O3b$m+MTeVj!&wmHMxQTua~$K4*061eN0+04=K(reI|+Iu7^9pjYW1| zaUBl%g~J`<7#kyF zT~uT3t~kcyyLA{n%3f5XVwY9$e@U!2*j7`+as=lD&BWZmor(}pgG74*2&?*HvQQc% zBthk^FCz0Q(J4r}9BTpj$ zwhFWy+-ob);`dt>TKpb&1a|14PE}eY_TeE@fs#BkxKIVp4>-e(asFqulkkWe?y{F^ z$tBi_({@v>mU*M%)oR(+1XvA=0;`F;9ERCMltCl7I=3w(YHS5s>f5Ov5}ID4%VHo1 z99zQH!5k{iokTs{NP-~S-$QoWUpwXtlV5|7t-uSl7BsSzze)TV7K~yF0_TS;-FjeS zHq!!Yr?OEruH+wUMn&^0iUq($cn#{fvm5OGLklI1OpYE1%>r(05QDB%Yo<1lS~D${ z8RyFP*)VGq7l@&mbqdP5Eg@n~b2Psh5KqD~?o6{W-{14+_-iVXEZl=W)bvk>qJjWb zb2;U3uX#|f4ExX)Mhq1L!)t(dg=pu}ps*m9IvkD#?lTDu+Z~42svl#(vKzF>c6rRY zFrz^}{s;_U*$qbTa8PU>^@Jc+F%q{4XY>ec_EA@a0R_3&{~Ui6F@0^wr=^9{2OWOC z!z)+s&77jg@98C#P+nIkR_h~!eer|6;y6m))!bGbIujTnSG4o%CT)`Fn@ zwG36R$Yr?kZ9sf7|4%P>)^Uj7cMjR~7D@DNuy$;LY&3jwH?_>wO`UnnQ_w)Vve8X9 zsEOM+A1O9}g^x6Dp90hN;Kg#O6cNNP?egIdcb8;iXc>K!T32%rwG~ zhV}Us&U)e31|Ua*Oe?xcR}u-?s|e7Qyt-$C)2KZs2?vumD}8VCq(%t`i#Il-?`@y- zPfR%2-E5Nvm2mLpWLuQ!SDRuJ4(PNk;oucYIG7fba4=(AYZ4BYO^iu6sNEVr;b2Tq zB^-RewNb*s(TU9^9E{)GwuFNflm1&04&p+LE#ZKGMkO2!-^>XIhbGB{gCU#GUBW^A zr1%L3`?mf62?ysk;b8ZqcnJq(o2`U{1scqp+&JN&a)e4ac)31)!ok*UZAdtnH=(J7 zg8|=!6At!I2qzqz*mTYl4yf9N=@br4TQI}n07pm7f!|MdNORD%9QXtOzvrpvA9%3e z1NYq5_lXA{d(hGS$)~*C?|I}2?}N`gaqnZ@?|Km*p91iv1`}t?~{WO~=@B7<>_j|J+b~qglZ{MdLdoX+e9FF@RyZ6~= z?FSxv@`;D=!OuMS)HCux-zOfq|H%iUZhGvIXTA2{?)&;a@|gGfN1phFgZ>laG)J=Y z-+q+Dzu@($PStJ;3B@=~F||z2PvZ1v?S1;F4u33+ z{s|pJ;oIkLM%wkmJGqMye1;${lV&Dvu<~rbeT5=0Uj3a&zonPx_*;?wd**JhsWLDf zVHMt#Q)C_V<6s_<-a#0ZG;FxEztPcDZR_RV_%-N%2(J+rL86mf#ETVjT(?`<1v*0cWT(;zi?(nR z65Z-9CuP#2N~iX#($Z4NP>$0zapiM=ykv=gQg@PbdT)yzSDTr0D*~4OPu#nv6}p>V z#x4>B(dCs+=@SWxBzTKlH!>_;q*IE^h47qPM1`YQ$9%PCU1)VAYF!#`4rF!Ba`pKw z_p#@ny@ab!hUpGOo_ZC`LqeGZsR5Egb!gb?;1cM41LA5oDo@;bb|xdO$W=-3q(?3;#z-HA_vZ-+!R<8X_g!^=mg zEuCyZI_7Ji*@!w^2jfYuPc1_Mu6;n{Af9(95@~-6iC$GA3kJ}L3rHKD>(g$66gT2B zzU-_H0q2z&;!p4sT<(V@0T{J{+e@A;t{N(6`;DMei)@cuq}|y>9*#dspfam0Rp6=^ z$MTsCtyBe6`rzIvZE-ALXE~NN7K)PKxWlLoiCagDoTmo4)Ort*RZTHO z6l9bmI_8M(y+sE+QqIu1cD=33vIU))(C`|N2WP{Pd@o_n)FHUss&}`o4OASk-pF8G zjxd~zAY4cNNgi_J!^G_<>vtF}IvY2M4maazoE-(I^blQ`=i!&MBFZ%BguGBrZSMLw zh|>{@NgzU5>V_u+qC*zybKT&ZwLaEUvLHB}!gz9cXWrlF3-IYlFJ?!zkI9a1AH$=r zdzCq=0S7iB<0oI3(M^`EFQeymDH2%^iY^Cvs=e_uN8DJ*v#eYnr}uR_jHbJ8=q)-` zTdy-d-b&v9WAMU|bwT45?ExUg09(K8X*eYw-RjYiVRu7vA6;)0X7x6i+{POWqM|}&WUjiPf#jiQ) zWF`Nd?$n-xW7>|bOJMo>R(}4gTPwiZrSHtI2ZqJD6 zV8!0K;HVr8M!rC16KfO|r8sgr(>@&I`?Yyhv1gD4tU)D(OVo+v&iM5|mGvZ<^^?Aq z{N-ZJCa|KJz+|L!!73cGGc#DxDS%|rBQC(uZIALUCwQ{cPgpWqirPFXIrGWH>~ZTvupa(ipR^lb0k{ z*9rk|BmXo|2>?IE3j@4{WGM;Wf0}F#clxit23`n=KOkZ2@k{6zfMnw0J_%^2xBTzx z9SE>)j)f@x6>Z03fc4>V3Rf_~wQ-!U!{ZD%t8q5WA7%b_2!uRi zi|}P-=Ky<53tJG2X4$cbOD%1@OOuwVV@KFBHDm~AE*)nM@WxD9DOgtPaEq(;b>a$@ z#SAcu&WzPy?bFhAzY--RFV{Nm41XuCbQ|(?R|TR!T9J~RBlbYVC40#?7i#qm&fcIy@@%lMhiE`0T zdyDg`g-i10^=sqs=6{8?uUNbpFKEo0e+=tss$C%i*)r0BE)}G;2Lj>}7^oqc`YTeX zOleN|biGY~zX(FF(tSfI81IDuD(d(GuZRFjo=1x{FKZAREDZvtZt?|X6T`13Q#(@u zW50E1Ax_cWHcfdPXD#;y*?E%&-=Sh=7YRPo0`=l|u&cdE#A&bQhYOuoYJEgTZ*gfz zB+VB$^c4RV61RrLU-4&kA93wLnWjPCZ+MHJl{3tXn zU+)NUz(Y@az=IN#vzv)@yBC$n3Uu@Had8l;R~kZt19bRp1q*ra#7A!K{O_cWzQJMBp-n1ey|l0(tV7p*6$d}BgDNs&K8Q)B%4~!JzFFMinGdLqdIbA+ksX{s%)s7&I3m^R-n#A848RS$~>C~d*A1gM- zugS1}N6TNUQ6g&DJABz>J@ua+MVN1#!THllPBOIcea zF{MUfN|5*tF4M|a3u2aOViU`>EV4|sa!WRo8f;3B^f)Aa^?3J}`4QTtE}O8$XIkEC z+A#SM4lm=GPt3QY^`s(2HF48xO#Y7?o^TSuDaV-A6Q7f2lETWcH{+`~V&Dxhg2X`7 z?m7~e>Rl%?Mk6V_R%G0aD4rG+T@Q$h3|45n_7>?yqH~eRlrfiszVg*Zj~CM|)OyB` z;Pu%|99^NssBMar>Kyq;+-QbS2L6E-BLn|6V0dxvC!f|z@vcuq0AD6YzRW$ysk@+7 zj@NfV(OLco(f1s;rJx?Jje}%e;DcACCYzzdtGkfiD=XQ1yTU?^m1RgpYqO*SS%rTE zl+lp8Ji2ktoHv^`PUwZ0HL%wgJ0UNCaf zWkEkber+GhX}orwVFL>8D7(1Dok)gAPDx$Brh?a3sW!BoVZ|(xVI=z=ysjBjg3SxS zvmf!AQwGByTy0y>utlLWd^(Ntbfjs<=oM?5=~yi~n3j2F$LctH;)10#LMqKW8=l1% zN+n}g7lOn)>xc;A*W5ahWs3X!qEor(GD>9CiJ=Jm>7&WOlJ&IcRKf3aaHX`Ibb*mX zOEaY9WXaluUpE~VzoslFh3m+2VomZwI5o}bN1-T7bano~CAt)fu0^8bLCQhun3E&^ zMQ-owtK)8OG1+l`)LXc!MTRLl%Eg!!Z!wgu>PIl-RDOtTRY!}$wkl*LL2)yk(JYyB z#%dIl8e{WNwi}h>lTowGK+w2|SjydqE*TO6D%aWsxUR5eItMO&)Zauv`!p#)wych2 zWU!szpG4=q9q9W;q`$KZvMudT+=bLRfU?-06vN}^KFl+p)u3-cifRwQW)jut#W+!S}5CvCH@ zZt|I7y8IZ-m_x+BD=hG8;x1f)PI4j}HrTc#3ue9Ibkm~m%VXCUi~y;%ly3AX`aX7w zEb$9FHj=b#g!sMy+xIGKXf3&(Kyns03z>$C{s$QLG}6bOc+cz|4hjHYKBj<#nb+}` zUc_3`XVaJimp>gSrT=`SF)hPw?hA)`n`zvMODQV0ty>g~yG7g_rKA9JK#ad}W!V6& z8!^3U1y%9cwE=Z^q2Pm){tTs$F#P31krUzXTBt-BI|V+}+=#DGwZu_F8dP^!IS<8e z0dtl(LUjI{c?BAIBRaz*ltNubu6U5VAp?tS-jJRq3Ua4TMVujTuZn|y*TL!O(ixIP zshyn>{g7^TKn^vEOvr1aB5RT8;=IZwvI@xroK_uU{4HM<*Z4bShGd!P)i!hX$W={KuNz?6 zX=!O+@3&Jg6oh-yDOr?e_$psbqY<)UIz6pJ8E(W{Ckxd-G^J+(C&wOZggWjo7vRHN z+i5buJoaeRwe2X8eM>u&e@~+BU-AG#&qM6)P}kK&j?cCquZ{aG)w*W@K?4@|^cY=TfROVxl;Jh}_ZWjXFzDnp8;@E2Jk@ zI&dz-HTgTO98YIh5dO)sxbxgA=a~+xR-$}OYgLg=ROuNgMgW$~VB)hDL3|W85Gtmi z=;qyCFN22Vsao9dUu%TBzldP&V^B<&oA3=P`F`r3Jg}cBN$DF%{rqMyVi~aRxeCVN zJtm{e&b5-zcY-0)mCbuagvz_4P{|z!l|Htp{2(OUb}F9^%b2kuMt3EKYNOse)nz3n>PB`>edy$n5M}8+v|LFexCT8*>nR%crBr+s?0z!gF#wG*i9fBBVE$f@LoG(f!Z23rOy`SfZ&&4n7oReHMUfKo21 zAs)qBhKvR+95R4Hx#~gvJ~B;r9b>^K)0{z(RV4GIs@M56Y42M_e!Z+BT%?O&Gk(3- zpy(CU_`AZhRiyIZH#}mB=iTCxa*>1FDP1DO&NXom;>S=!5mlLGxCki4-iKR!o`j2i zc1zhM5MWE$J%k=bFOuo3p&hZ|p)UqX$*R&WfJkx(nd_5~OHAp4+&e}0+eJzRiqa@k zm&rfXcn9*d?$FPmf!c@I(P-4-_f)^Qw@!3Ir#jP{=>?{E3LZAewK)3)GSF?& zNiur|J|>(ZnKnIe%#f7Z3ty!g7k@;EC@+$(+0{y+%7l03D%$eu zio|G3^fJqs`FmL(r8oS0v1XWVNd}ZNAL-4yR}_*@-++<^dZg`p=9oOzklT=!78Zb}&s zGGmpLWG{fh)74uZTkES+GzVqVS+w}QP`@kB5m&<-FV@x*1$sggleMSoMaSEX9GdWn z{xppeB(l%nR*y^e3j~Ni)QGO-IZS95^tTA@15konEONk~Y#JVucK@VeQQ~PRX@}?X z{vUha0UyP2{eOF-U5;if1h#R-i5=Gn8;2OjvT=z`ENmxEafDNx1S6Zof7?GtxS|M7 zRMSo%I!J&(G&K-vr`}IOLJ}Yekm#a!0j9%$-puUY?A_k(og^HRIG^9ooOX9+-n{o_ z=FNQHyoaXwg|v#{C^8&g@B7M%e=icrHQ}RQ39w$_Dfko~pm^rMww;AU`4w4eDy#U2 zgzgaJsHtb*aNw`#AK3T`C3m&Q3znV%qlMiUKl}=a|rkMAUeKzl$X9ymVWeJ3q;kkAvk}2Pd4-eQ1)q$N4B`GY4mUxCUv-6 zCq2hpm}lZqGKG5e(nw_Y;o7m8glBfJll;u6`U(MbQX^3a36^%|R_fHh_@uXFM@b=0 zma#VF|-My@gm;+vp3h0k z;b;eF+(H2>K`TUiKnokRMpX1QLV5%)Ejaxm{V`mqJ4s)^Or8#OM2Iqx?K*ytE4 z{t+daEj>XGc6~vGGjDfzgEhutwb`s-1K)BjIdHgm=bXbLEz7=g-0L6cK4 zMG@!>rDztW2-}?5mIh{X?!rUDVIisU(CjftNWjY|UMWt&iqU^G{`ow%=08M9^u#*# zb0;OFwa3smnAfx;-!@?DJcelF!LLXnqPx&6K*VI&u)*tb7JzCK*tuhhQwQD@u}Ek( z*?UpsD!>ot3g}%z+4#@Nosr2x12z=CMi;RjQmVee7MnGYET>JYfxW-9ig&#OtHamm zix47|sF4uABNUzO0)I^zX|>Tmtk@7M{Z|N_)>Pn0zfX%8Y6aA{4=#L{ReYB~z}eJIen~AIq{FeV-ba@qQ z`R}@2yvO`xfa@@WK}PwyNyDw=Cnys0NbDUY_6m^)VS-kl*jE21XySFc)xR)Wwbd72 zgg11jzj~9#PQO2z1TFQn^aHTU10eB8I7b0vl~CA+Jq?ha@HF`j+Bb^6DdHv+E0N?T z@Itr`GH`c8>qxdRV8*8sS@Y6m5SWOT^;EiDMXTjo-V6k^l5V(w>!(cfNiYm9-}gxl z*Ob8%YrIGq+>}DYfgo&ArB||3RT4yPa~f71IAcnz45#}B2|3ctf-}JD+1idzV;h<5 zV;b9i8`YPQH8XFHUJEyXXfLBG)j1RYB%$MJpii7!Y&ESc^5azpVozC;V& zltQYMZ#6I1D6E|=g?h|qn?SAeHNa6h=cg*$Cl*!<1c1z{ zQm3{3z`JChL1fV^hU)K@rpr=!AOxgxKbFb^yj1Q%whiG5hU#tB&pfIPl%Laa1w=12 zvVN{fr)onoylynk`dP@SS#5;^QLwC^NR{<7iK{zyqxOY*{?OMStxGq<{EiuH-^c>u z-6f$CuFdKSF0*Hdgx01z_1c|-G$SaKtKiGMBcU`XCuanOL^KsH89_5R;%9p^0INAF zODfa@@XxqIw7vj(X^;3MOrG}nMOBrb)T-* zPmP3CqLr&UmQx9$>$^eM32ssm9>SDlmzUbSz(t$)xoGozS8d+!u6;8+YM=J3ZRtnv zmH4$ivn?{pY`ZJftee?(vtZ@YT3*{IN3}p`jLW$2Be4mt!4icRnvFFk@Xgmtxf<5i zl&eET5sWJRl&imzP#m!0H(&!mM@*K!mPq%$7{o{kvck;;wAZ9RZ}>sZ)2VCCRyvn{ zyD{7@3zEg$*e0{fTGO^^gt(enda|oUSe++=u0M;q2HAkUMW#?CT2YP9i7*(ETV*06 zy&;m-L$dCMNg;N^gi2!jNoX3&I?K8%Uz@&)Ut5N{i-BBU?2dAh%|Y0vemXQ1#CxiW zgz?c5uoVPc#{>)&KWI}WS~ild27~7lz4JO_42aG6<^EV#_kG*xgJ=y9$?C%DY% zw0~o8ncWp$1eeK8=Yq==SGWe3f!ADc85;zbnduT-W?{82!DX7)xdfM~tkMoH6PL=) zV|P@!1(%6T)e9~&y|Qh=Wp<|B@Zd5YHHHf=14_e!%Z#oh!DU9L)8H~!E9BrZsNKP3 zuBB-Qm)TeSeQ=qM4K8ybO)I#}xJo&=%xVE|N!)|W%)DTt!DZqnL}&(=sjqHBaGCtI zo`TC@gINwPb7id(T;@bYhXk18g8K#!+)^=Y1_}sN%p+k<90@SFA*&3Y!*#y@=ckqiA~->XR;#5?j*O?MD9gN zsQ5f}5%EWbaDStFt$0_h*zI+=Gjo5Ucx$ZaAJsypo&uWxsWZAh0f8M#LFlr}dT6d{ z5&i>;S#PE=LbM~?7R*m$Bu*(>NjrFvb#R=|9UOu#WJS;>q8u6?ke$%7^$`1}fqXK} z5pGpeK`%VGQHD^;db+E#RkZo|4R2uAlkR~}p8rtrDD<~vQxBSXRn&t9FTM5TT%DDApu165fflGWT20%=bY+}rSM}of;@EQwJ(gUV{JOqc} zm4};|t~!``8JXc`UK&nEV&^oY&pF$Il;|$?iUG3(j`ty^x^tZ3CG&2SSqCfNuf^^* zNT%Bhb+yF=*{D5mzJm>d8ylnE=ClPu_*nJ0+wX&-f)7(dhE}Nh!w&5`NMkdU)w4UQ zahO`k0@4fp4l*HBLMDV5j}hxTjTC$RUV-ysV`98AB-{)atU7n2e2XC7o=B|YeV0aA z@pk9o-UJ+`)82B>OqEHz+0nKf?ejC*WD?WhDqYY&gNbEKqQ>8f(y*RWUkf?^0i-_& z3E>p#POM7;uS+*g!UH2^0%&uorZS!JpiGz2`Md{74me_9_NaGSc;9~;9zYf=)?IMl?uzP7pvP+>sKfA;4dIr)t*s97Wd&Q1 zzIDLmUk^uszeDL@;D5+&Ru)pONTI45lnHeIwRv1PJ!$3@P>kZJW9tO-QWxzlp&3gPETPKlf>%{l$ASCMuNyLD+Yh~?D zJ^{TiN3i+yqC&j6_GORQL(USBneMzm9cZKexfNJsFzy0Tek$Ig(mNzMRb-#DLLinM zu8fA^6n_ixGs)x60nEXYJXRWR<&I47@U6*&Aa(G~r$S%+#Vx^bHb{&}>Mx*^FA?ux z6Vsr0PwJ+CcQ#?5LvPPLUlZMuQ#e3+fhP36n5W3FQ|ny~=nUN{`ag%z_-$zcM_A9DfVQDnEsX zR+x_NMWsm~^CNWae5zy~#8 zzO6ehk>h4`e=EI()`~~#cv31#yA)osqrZZA`G`m_rHs9d?Ph-f8Sk)cmFP5BFOV_Z zD!zl(z_7)Sc2}4h#FGL#l^FpC;YfBhq3ZHB^EWw(+xh^u33oJL6J$%3i8!#Nq(&s* z;p_ms>kjEoG2nfoduL!ZWFAv^EwyKwS*nHrlv$!mGbrDK4n+I2fsb&eIygW+Lp@s# zL)%*X~5b_grh?B@SHMIFKYT(FNq)*0vCJ5(pQ0bE(l9?bD(@AbOFNhiXO`lR` zxw6w97SkYN>Q7^fX@O5{$z;_JAdJPs1~@%JY9)!)0mxUG5a~W?elgVDpH>{;UNaS| z70WeHCD#O>I#9(r@FP;gP|arUM60xUr(PkpOmkTw;(Vf{o>B6ICswk#rnyLSuK6)4 z%$4VwAqvOm`o!@)K*IALIgVxNG#94&RP!;Y`60cU-%x6{`c(6IsQCrGnt!3xe7@9| znyq&5J=4)YB93Hjar8qc6mdMG5OCBd0;T~0kLz`DT- zI+be%t2*+|+X&i|Qs4<33X;%O=-MDcSZn~hWf4mW{I%2~{!Rjgo&m~C9or`XV$~x4 zMG6v!NwUu_L9t$M1$WffBy!j+p^Js#1W0=wO~^B=E)nFGs>hNfc)UT7Z6{u-w~+?^ zff@FZ(q;e+hf;d(Mk`@NK$7S0FwKEE-a)U zRD~{s*GOYlkTg{Byg4nKr3y{tI5OJK++L4x4`uXj)rkvh=-?L@jhDszoMB6PM}O=2y5k zzwHJ$Z=)@zs>F}mt!_27kYNqxBFdP?4{N(JtnIkM^3x_uPiLkMDHPI5Dx;D81wGLB zjvFJOBk3ft$LtDIsQ8Gqm>xKf!Nm?b0a^jgtRQ)dwdxoxpwtXfN40~mV>GTKC4=*~ zTV}Rtjry7Ls6VPRJ!!3_%vt`l`>ZjHZmaBKq=5bq5);Zay)-<=IWyf@(dM`-RcU#6 z7@b9LY|{?+rnA1Irnk5@jS`_{P)B8gsdt-TPH(sY6AYthhZ{x9%EMb^ipao1JK-DW znu#eobfYL5flV%G4eaAcMLY|DBqAQlqJwTM+I0g7I>{46Dfmp?dczHD{eofZ)$Xmk z0rLbY9CKk5gqI<%fx&GgXG|7P4vdx!rkL-l@u^vEs&Tdq&siR)s~bnkTz66qmyzjH z(b9QY<{(8ha4#!zjHX>Wx_iWM%BtRkwU5+ERUjcJ*!~_ zwHmg$Sq;k+tAWhe#pOVZGF_8%TV=Wq#f`noD2p#+A7X+JI0>H5JwEMxJe_-d#rb$F z_jrO`d3>=HKPC~>Nu06~Xu0!U6Mg56wRMd4IojcBZ5>wk`C6IW9ObkezMcDFiJ`7b zU!VjaMf?hN2_anHQRb2B5vVMa5MVFo35dWF&r~e6ao}!1B6C0jgR<~Yz1?Ccw_6Mb zHN9U#^>!s|JF(F2cD2v&Hy1F+6N1DZ=>NswO)TWLE`y77o^<65C3|YQtFD}K(v48s z*Os2_O2rr88F2?Bp#20gfqW56|3r}U0{;RRlMk$7_g_N}MDW@Fq(QzG_dE4nizu2= zcBpbQj!P;F=TmS_PW_kDv)ufbTT68Omvge@6RwgndZq-47VtymhQjKyw%t&0z5b-S zp#ayP>atv~OW;vWuS+u*iTSG!|87zqM#S-~~ybZjV{42zZ0=>jB&aEVR8S5By29q~S zpi2TArui7JA|ahzSwIs`nJhMUZDzpW=5*LL~n^TmulSX z@~06}enA|VE$9fIhXR8<%{LyB&h$dxu0VLR`!YHWGphd#+FnH|rD7P$u(RX)nHBPV zDJUnRW9e*?DJu<6aA`|%*azK@BA3pY1%}^zQxR?n^X=H4#+u?T5sRlMXpY}X592pZHGapH-9#5>a9!I1g`g06jU4R9u5gE7 zsD!PWm&k%p_zl=GWb;ODp~m1*ITrT>t|2z6)^beBCwNlAm}ra zLGM-vOQ2_I5R(KeL^8zoe2IzPb_t^1<(tRB9d_=nkAeLHblr#MX3&7$5J%bJyu=Zr z(b+&beR&|9eBy2@pwTYT5%WN+OC8FhVBp`zE~>WBcNWr0&bHd546^f63~88xShfw@vD#^ zzdBJnidfn+k`dWRcMT@q3Y~1C1Q`$Twy7(&x$&EyGcSf{;yci)&XXYfdsxsKNR>d; zbJbT64t2QJZbs6&rQpL>W`xUDrWNmG66pPML<6`!h$d{;gGtrPm;*TASVIAC8XGA7 zD>96TO`g~=%0_e_&qH&t>FdEp76YPOP2@mO!5+@_uz{G&5k669r|W7~yu7YjdP1c2 z@dDb6*VPcnQ#EOW2?D87Eh!;)IzZA(aIb38A>uIBkX0v4H&8=Dj5LG^8Pp@xC+$!Y za~_BzN0V*d>UNldv;=Vq0<(KBpX-B>jSZuzWaovJpTdTij!p%ubSlI}r*P-+gORdw z^u=F5o^uo>a_eK1geOXb#!iWFpG!dCXVcv#8D&oGs4u=kQ>fi}$kd|#4!=AKdwO$= z`p%H}TXtpWC}#f%*eBl(SBA!x(7f1h0s@xIrAZq?Po@Zj&q~CGfIIk`l1sgysOTk%dJD*;!a=@Eb1kPh>a#}N;>T| zN`OnB$t9Jev>@0mZFo5Z&VN#ad<=i_7rd!>S>WC1Izuf`W%bJ>q{dobt9(sDRWFn6 zlZ0}q1YbwRAVDr#@R%ZF|2q+)_rUL&?AH$ z@}4jVh?1x2+P7b$63?!EGxJogefzwlK$KGt<7s9^p3}c?VxhKw-~K#yK(L^Y3+xt1 z4*O051!z|hfl&>@Sw&#A%;CIiAiWOru1PVFfCoOpmAE|SOOsS2V>P&)vv5NM!KK@n z082kSvE43qeFdEHdg7(c?$Rn*ZEA8^J;^$xXpPTMk8})^(A-=(cJGv;a7$n2YUl?Z zz331O=DT}QVmhN)Mc~2ZbVA&KUrPbQwga{=^-y z$X*zDJFkn-(N312OMjQp72xatqe$eFHW%Up@M47DGqAI^NIx=gh}u?+#oK912%WoZ zd77A~vnBk^`dpT23#(KiS;P>Uo^7^-c!yag1jEl@vHM@#LCfEG0xhR%gO(Qy*b&`? zd^gZ?Nxsez-PC;9k~&kMfR?lJInZ)j!3_c}m*%^ImIn(M3NbI=1+=VbBN2w6WkS9o zXnD1OosCB3dkI<^a@-ZPB$#E4SD59uhyPueE zMLIckxacNsN2@*1-W&#Ct^q1bicB^zFMouYI#%ozYmK!G!1Br!Nsj#)|Pk(2T~5|yuqW;PZ0h-Uto)-xl&J&|=OqB*uC+!FlX4~IaG z+xUDfIOJr31|0H7tQ2`X9J0FLCWAAt=Bwb$*kVmMGrN$%nWcF$oS9wdgfk}>Xu_GR zb2vD2UU9qN%%W%x&b*LMsThtX7O>q)QL!4%%$28@bNTvk=H6^IoS9YJemD~jT~YIL zWaSad7Q7hsaRE0M%!&{s8a!!fNjQZv6SCD%=4E-g9+&S9W%72CE0k%tYD-o!I>#1< z|Mw19z%LhS4%mwx2JBhYfL&ie@yp5^fL}JW6~DxF@BA&vX!dJ7n_#;=B8;uqA#l_B z5ioFipqVgaEa>D>yo&d+kprtJ(K3?gO~d98FD(q=8Bwtf(8l<3@a&VBR0A;S3VYoajC*aDOjfl zM#(cPaTvZ8E+P7ek4EQf;-d*NKDzCBdBfNrjmCCqKf?AetmyZ2aFI)Zkd&$~I!?_x z@il;{anU)7We4%Z-T?C!5}gbs0ma07A^o|?Is$>E)&L-{&F^>uUKi&8@Y)sS9yKM1-A0OC zr-k52`vHim_or6*0k&=4#$((crR72@Wvoc8hrWkt4fV)V7VR4Z)9%bBFzuEjrUqTr z)5mFpTX~!ot55^niy=L)3lS(jJ3BAJea<0^_Q}=A9nP(fa{FAKvFRaqX^uIh!#@Cu zMxh;;Ddrv~K}gwRG9gnB!GwQbzNNbf%q|oD1OMNT8}ZSw4@bT?ydQlE4}C5me_=AQ zhKG?q1BU@MAOG#|!-s_heqb`2Odo#y(fhdCPltc5+{}aD9bvE~H>O}rPsSN~%#wzo* z)B{_XgG6F54kaGN;*ao5^$0oE9ZReU=R5IntV#W}U;P-rdV-vBqtC2ZAG!&yU-ZLY z^w%!@G=B9n{#BUr>N))C1?^V@@hch)=5^Os58zi1X}@xk;r40(el<}0)wB53^W3X0 zpNrCCsih2DMp28xT}YE%S(MFF>yKfc7Zy@kK8fZ75fW7P`` zS)V}=voQQ?h)5?_e`HM#hYitf=vu8Ak^u!%^fF0>cEaErai<)ewzZa+2oFnWd@}yb z@)+62U4`-wvGS+X<#F+uO7SyF@o`G=dua0yv*IUpil0@Ak5!7_hpt2MM_KU`I>pZ^ z#UqvC524X@xcDGe{J2i>Z$ME16lFII>j$3#jh#FA4cP#_*1O-A)Vrv zmEu>EoU9uU#qVRq59$=Zq7=W90_;scD#UyqjiYX5g?_p*4ab+KtdXpQEP&>17u(%TV(MOOD zjj@Kh3j8R;)eBlpKF?P7mVAPOVPGgL4pTX!LYpKRq;68&<027dw&U2rE zwv$5!4c+EG1Fgnuf}o|t+-IP@#9>22SGmtF%U#gWN$#^NPQJP69`_k&o%kSGTikSv z`wX;8d<=i4p-bFnphaZkr=d1}#4eqJRff1L{T(bUp&>9dNc@|G_M5`!BK$Y0hj?4G z*y*3J2KW&NnI%*qZ$rE4xCLOETA7t_Nur$Q7JR?z7-XH9+%{mvhS#4LiH8QRZC@R6 z^AX7E#OwEDFG$%clakgEq#WQ$;m6QKFGy*UNm~sHlizwl%5j;L#T`M)Wu6p%Dn8={DW_yo7Ig$E*LYI+>Hd@# zq@0mSncoqljM>DI!Y?Vu-AQ@Um6UH~Qs%Uk6k^|$)zR}wyjCCSCiJH&T6WzHJ+ilnzZI*R#R=Q@dV4&q&20onl{%O&yQS9S~DW6 zsiD?*dgE%+n$TEH+iHzxC$1)~`H0ojTx&eJa5c4QIoB+-j__x1Ef+Snep+u6;6#R@fLDp|HZ(le$E)oayBL8&j14SO|C0|Zh9juz1 z0&&sa^6W(R!dnO6U4?R&p*A?!``qxW27rSb{Cq>~8$dGH0!a3;Kz|CTc%hQgW^qz@ zsLY&|UX{ZQehTTu4LUek?x5(8*(6Gzk>eNK&?3yjjhoDH&I7*{7OquTSW8)0uwTE0 zs=)>VGKkAVl0f| zSU6i@;Ze%M9S8JVh%1<3ojaU z@Z2jNSP18f-!c|1=2$pMVc`YJ!nA|>EhN8Uz{1Tx6SzxB^{@EA!eu{$B|(Q3E1WDW zzYX^i96GxP zkSdasBH;L}uFe!349C`JbW}JjDnRGjMOX$1ZQUE*Aig7^&n+RcbABJunV380b?PWx z`jjBq@ygOIK)f@6@Az<~FC@%5w+}Nb)FZRT z4x!At`V&KDEe5)$bIe-UVo3I`W3FUF1zRcED=FD8OK9>;T+^$hm6`>FYowt{q@VcGCh(!VHe=Jw{~Tk5--|=#Kb+1WVvQiR7a;kK#0cB&MRDY9m1};Q9WufmSv0|x9^_o^W~);^=pj`j0!&*t&$Sa8sw)#_IaTb=zg{Z^atd@D}o zTRo%Is(L789C95>P{XQZGL#x?$xs?3q0~9JrkChMGlvYNs6%)t4fQybCcR3B(uHRX zhtgP}dkHs`G7lLrYu3*VnYHm*eP-p)!HupIBug*0gIr10=b>VMbm&kxpxL*eT`z>u zRodQQ4#SJsrb8Nwn3J7;;3{$D1;N!*qCZ+PNJyY;8UJ%ZMhMmC1brklH%QiEQPs}vGMJGT|iHt-i(o#R&M4KH&8Gc1rEpl|jV zWHKy9d_-bb1gGLJh>(4b3r!QQ0p#Y#{r%mkniK5Tq~r?ZAv# zoa|>Y**}G<4>Q>x&yQfjFQ>xKIBYEZZ`_6d6q<>5hD`d=FMF2$H_r*;vM)=rvTYAA;jsw2;DP@)(;`- zUb8x!-MwE|Pt<+qUJZqy@fPkxlTXsl$j)B&t)4vww=Lm41`(!Xe50$Y*M*hDZ|QyV zdTOJq<5Y;sXYcq*aGZ+4^BtOF3l~^Et)b*t5sl*<{AwfqB66wzq^1o;0&i zWvznL>h$_|;F%?m_{BvK2fe&b!oSZ!FN_>c#e5-!NeXOy?5YpmSHf(Yfa1-|L(gIyXZ=7ZshG!RcK6Dp}_es3|!|%hZ;2ZtJ0& zL+2`Ib2@joi_UGGLv^mX&Uc+#KFbT8TYva_o%2HHq6M^Mg{*VYoX#aGI=6-DT>KFo zom+C?=Fqt@^EjQm*G1KA6-v*s)p5ukiT|Mx<&UvA8^8}Qx%yaXI&W(iIky|0# zgM=omh=5zZJZU$)A!Vb_mT8iyNya$?6wR!9{;a_p?O$L0I}n=F^a1=eC-# zFlfrb0TNmS--2iOGa=%@5b&Yq^V`FF4lpi zv;#}EKp(jSD_iwCuytycRX%MENIZ_aU$%Re)aW@(Ypm7b2`$DdCuG(S_B98&(d5}D!h&=qn zN=2R!#e!eG$){MIXvP(dICuC3oJ!Q1A*cX?$OK4G{^LqX15e3ncS;tvpOR+pD5>Wu zS>sO0g7#Cg!#hg0@RTIDQ!>B(lFsMY#M$U!)+kwq;Ri}t!|JAlkR{oV zys3d@nSA{5!P;0D(a@~L0r3i2B)n@D0SlySB~XOsm*Ss-GU zg+?{#V#T(~-PXQh9iHi~ee4ibv33K*!7SJ=y#4@UINbrkcFT)tu-)7o5^OiS*ge>; z9L5xz=jDY2_$8L^n(T1i(v|P12cp&zGYhusL`4qfg?j^wuwc70pqV=`Q9#Xos5mDA zZubo#fmV~u zXc-7WmKF{sA&d78^gRmlg2Ap)koS@*V`!DTeXa5}+|R)*3i2^Ki-H_os*Zx3;-Vsw zK@?;%DbOg$mx|;OlC6voIaW7Tr-?=6OBMzBpj|bAu)&aCN}PHv0e+Z?D4Hr49G$Wd zY{$yX&M3(6$yEA@pArRGq*0Jb@Ei%9DPw_+x956v_*ViOPby*`Z&QD)83p;9B4-rj z#oiCAPHd)-qaY7gq96}Z1zf$HM;)SlkAl3L1d^u0oZ~%VSfTdNlCDvZqctk=90j?h zP!$DvhIbUSFn=YWfCWI#P=ufkfSg{$LW))9x&=TkD57Ug%l4WqK>->8D6B$@ASKw{ z51a68xphGV%SS3H>63fnjjjnRJPT#Ji%NwY7cDMizUw>PMTHl1ls<~YcF+!#d`&LA zL#c5XHcKFgB7XafJ-`y_jFU{Qjmx>5wc$rjzS5V;K}#GY#sn9Fq7^>~qXp}lAf~P} zmhnW8P-7M!%=ol3S})(lCGJ%AMMol0!wm~!JOvbh1u+f{1%1LciA$E-4omJm*R8Q+ zlB=*|8x!TYnz+TK>J~?!TN6T=cgM!OaC?U(miI8m|1P0wpgk$S2`u_` z>pE5R>ykWm^y?kK7$y33h4y5OmPI7EMZOLVm1AF@U*{V8T7NX5x{KyeIf(UFX!c+s z6qt&R479rhxlSPQp9gD&h<1t(e=-iYLDqaU8e5?^{M7r8MyK8_>QnDTkEh;VMg38o zdN+t4pu$BFvbJJFpXOb53xXGgdwG3Eg!xgS-MM{V^)a_^ZY~S|SX`tElMR;h{%lW{ zGuFn6A~{SpEQ2gec3lw{CVSCyBtW%aM@Pxt`I1YJ>@~S8ltX=yOOWiDZ6m=jM)n~m z2_8aZ7v{2+l zhs;=eHW=sit%vBxTwdRKKl3FKj8s zPitiL%_(S4R^P=1EJAHmj%HThlmZq6`&hOd1bY#jefU?1O)LoZh3p%Y)i*1j+PRkw zKvrMmTNrHnTqO*)$B{t`Z75R0V5j9OVX$GeXlM0Jm8Xj8BE2}+vCj!Ug~5J{RAUwOjgY#jz<8I4y1&E<@e&tM_e9Xm6#zTyWj_A(zI@I2*XK)E{Od{C za{TM_Fcw+->zW+R_}2$u6v^?gcjUJ#{`IvvT>R^t96A1VNio~3jxSKhzrL8yW|yoS z{rJ~0KqMFc`fC0SP3PMa=t6<@LC*$UO!&Zv+MTY6QvYe5V)w z&!qF+sx@?TwTEsBKXfky{U@dJ-8j=Ql`mVs{YWa`Z}XH?z7q@E7_NF}fgJW1hS7~o zF89)W%7-h72!UYfWXJNPcklf zdfWfSD9DB;@R@w&@9@hVcpG2rmdW=G=3KBtmC5(~AmUpv^#yP(I66o#jqjXNirYH_ zvdqo)B|q<;68X5ykwLbg51~wllAjk0%|mHAICZH*52voE_;1P2d%cAEvO)|Xf7BRE z^7F13;5#zi5bTOfuOL-!3ns|)a$l=_O+s6P88W>#gCWy34mC1;&TfoM$52o@vQz=3 z^9Si=<}EJeG3kU1Elm2f!^|@C0^qzYO~IsDX5JN*E|~PDG;K_pZBddc8O$7OH^!t( zO4-LT>W?)s>C#dsCcWQbOZC=Lc?6%+n&^z*jC}pdz+XZ;jw>M_veFvZ)H<;K-d;so#iIViTBwHUQ)=7H1uv9bY zt+OTkO+ks0^tQ#$7`m{iLz3RU?qky1V_EDVE4s`L&5O>|Imnt{CYvV*vJ^CLX&Hy+ zRXuZK(7fbVUC_MkS?q{DzRU&9D{31FhG<^at43(vsVsJSXe;v)%`@b7I}+X=-uv$Y z^DZq=gL#wo6EN@me0?zQNDBk=5*Cmt$mTFkcpG1ARwcZ3{L~jPZ=!(GUZb1tyi7Ua zZF#wwS~}x0|WAfdeE@p@E1(}-pZpV}`sBb~0 z4E3ETr%>NP2KBAT{0{Qn`Uvz*UZ?{4GzSeWw6IJ8`dYFSpbrL;X1?3K@+1;drib%w zd`9pI=leaaCic~KXS+S0^FNdAHuY5vv|ulA-UTiA9ae}}IkaHWGdCB|_sw7)=$nzF z3G_J}4Cu?ukbypj!wK|V(;C12D5IDI`ljTx3+Ss^zyW^ z9Lm%O`c4+9fxZB_g1ti7o-j=qdxShX1NpTyM zW1QkPc8*Sp+l<^cVur~j@_8wY$QzyFc1f8gZn#{=4Xd8MNmJaa+4NnexVNLFK@OCw@1mP zC{(`B)S#<*?ay!<_lo*wn9w3~{}Aszk!g*cA@PiC1Vl;&q~xhpM> zU}z@1cA}X%K?KcoybNe&N{}9!xyj+YC%t&RhkMdjH@M%EZqD!p^jzeSPZg)EC;RdH z(AfIqOXV zdLH(*%GV?m{U!rF&!sZZb8?j$^vufe?K*CrLqR?xgY=Nk>kc0IJe8`2d?r@$$mgPU zuE^)UY8T{l_BvhU^GG!VGxwz%BcG!y*vEU-A8R6?V=A1;=c){^;5~+X);qjFKF4OZ z75Qv*IFZlA-V=uPX{$pM`COz?iD%@q$)Q3%7kEbjQK$qu%bavLkkM2;0H&_4M*a+zY9SnRskRhW= z&`wS{MM!s;)DS5FY3(k}5^H6ST+u-tTC|2|s7FGE;Xy*rjQ~f>2)FcA;j$?X6)szy zp~hurI$Uwt9c~OGl+Sf*SwflR6q;QZbOWJTU>OI^22ew3QJE8(J)9Ncv5Rp`O)S7e!o!wEvp|epx zy)o$Qk=I<%+1PXjtn8_9L1!nljRZq<_Uvm$=xka#JNDgB;Uzk2$nAEZvq`)DUFd9D ztQwu&xQC##>tgiL+2lP8ojn*sW}*5LV{~>;nHrs)`jju|>@oqJdYzs;M5f8;taSrJ zXDd@>bT+e!ptEtAZANETm-FcCm8WkEI-5|=5R`Fgn&@m!IYVc6ub0u;RU0Te8*8TM z?6LJXA39qWt3qcr2MsOMSfQY^tI`#876y_gI=e!iM7CAvp|dl8D)@xX{*zX-{k3+Z zvpHG+GwAGz*EA5H6~K8H#OMF8LcGQyK6?k;TH3OW*N+8j?V78v zTzzswX9L7PF?jZ>Dw6f}fdrl%HyGgAGXwR)SWmBV!n6BQJixQ|8h3a$cD*mLq_@Kv z#2pekHxQ87$%CDdqz}50#|M&LP(|;;1}W`E`_%4!*6tD9NLdV>llf|7+r3 zaN)1H!3w#@-5Ns@TUT z)gNnmE1a!zdMl)RKeOOIII1{rh2b7zhexe%tG7aBmD5`x(R;$MDs8CJ^j27{QHf`7 zg^g7zZ-tfKQP4o=mVH%DM}=xd2x>=##ntQ_aQ8YlM}^hk%z~Ezdt)17hp&luiyclk z>v#>d*j@8{coDiA0OPck5ei~`F4c)xe^bQ}>$9o8Ul>0m7e1rZI7~vD@ro5nZj6U& zgdUGd4R0X`JLy8J+zmWa)oyT$B|cNoBzm%YyCjx)=neBe*s{Uw65jjFz#A1xe79R$ z2M6BJNa9D_8f+eza3dQ$=hk4|jcxFnTZ4{{Z;*)(l+)Q3Rr+sbrS}}~drz*bV~L)| zlS8fs@8hHA2Sa%D!T~PP(Q|^G9#YfY#+p%ZbSv(CZ#9Mq6T=9!u!==g1Lv1ih(+&o zM2f3YIU;RO4Nq_juil&+;r@-&lc&7O>@mDLTd!z5^aN)-^wGa&@z6&Hy2nGmF%C8? zN`6L_n}dyW+6s`+u?lg$#x!TP=Y0+98 z2rjBx-ZOz|$=s9XRdeo1_5E**ds6%xF78SD)-lh5Mb$3uNgLWmf}wj-${R-RNf*~K z+;c*;m+nc1+-^@O_|~R>mw(dfrE34A89Rx8(upPd{z+$cF#n{urDQRiS7;mxeo>`a z6$-wtpD+GNa|M*}DgP-)f<1%EcJJ)z(aRWdJuinW@d z;4f4%52R&lWe=qN8>t7<1m=O1;#RVQLcx!zq}!Ht&20z;Z;ey=AZd;aT4-jq;)8U2 zo#KN8qeVLu{84$Tm{qOkgw)ty@W~13eOk@zH`)~nero#vQYiS;8>2PwaX`5+ah$UaET`y^W4T@f&0Z3>Zc?G8FvWYE7r1G}&pW{)r9<1%JF!2?akp%{3If zy070|DEJsN8nZ#=`vdKFa47hd)y`1xDe2yaf?rqZF%*13suBu5r&?xRY`V9h;8&~I z{e39-o7Si2I}ZiFGLD6UU;nfx&z@zKEE4>d?cY1=bc}vV!!H{Jv~ikv%7OnVu~-Z6RK+DL$w_VEOtWNW>xHjtE+V!5mGkmIU?+Q z{=X!2!jT&4hmiLu?2(FoM?xp$JnFk2LgDXR{Sb0Ul_kF;eh7A7t9(sD#lK^I2xSS( z55c}!?T7G9if^G4j@Ky82wQ%l7dj!SmUl)dRBI`lH=8%}p%YH5b`6~{qu#|C;oxfB z&(hiRfQit!*R05SNU5%LtbopUlod zFV%X9OB!;!J-Foc#(x(s*%GhDC1bY}TyoEHeOz+%c7{vNjwiTee6BGrY1^pAC3imN z3obcMK(W77aLEM;3NCqYGr=X#rnDKC+_upJE;(jhdvM97jSM+xNYun7k8WhRxhYwf2wbdT~wH#hJ<374F-)DV|s3pm9k*H$aIWc9i>;*#@fgh$-R$v04}+Eqk>Dut#!pE)qVZ$aLEhUJlUwiC87Ne#w8cjIdRF{ zb>8EW%Qt$&C99JaTr#;%iSEA6TU>IHirwGilHcQ!GA_Ab1;Zr^pYnuD&e_Ot$vq9< zccNi6*{Vg246@ln|DPe1zWhy8|q z@@3cuAAj`YrvjhsANX{?5g!fvaO8W#`_ZTH(B}g37bX*Hco_LJa2QbY@!$SFd{|iE z2PU)0^x?-Jy^pK?boeKq;s*$mD}HI}Y(Djw#RUID8BGKhWyhdj4i=>m-P)teb8 zekh>~xWETrd?@w6X44>%SV82IAZ+ghVlxYd-Rq==E^mm^W8}3U^%lF_BMKw>id`NP zh1|Y<1I14zv_h~u+xyh5y=hpDm&y&oC({JCZ>;#6T=^UPM-S1m1pkY_8{{PHaZFf0 zjxZ{ z0Y<{Cl`0bG5f%P`P`zShcrYRAPVxp%)EgUN!$K#!Xs+nPQf~rJ3TSI1rTX&(nd&(Z zGY>Bqgz7m4RQF;GI~PwF)(cJEW(Iww)b5SfW7s#_Tp5-MIRs^fr5ZAfHeI!xG>x|z z+c`#ME!S&0b-QcRD{yP;kkBk37DSl8X9;Fn&oi_giR{XL~@k2^+n^L?NI@83-?2=CL z!%Fe#%ZPRc0OdjAW324OIF*V~4Ld^%VQ$Y_7T&`1f$U8+dX2gYe1Bn7YW0r$4EjaZ z8jW6Xp8@^ExX>WjkC+_aHc`bGX_XZt8b6(9#s(qLjA$>F^7s;_lrwj7lHI;UPbp{Y zbXCeE+}fUzpp@{_A2&%VwA+H90}o8i4|PvT|wOBFK{pG40<_7=_Q^&{c)ks$ne8Wt-^e~LY#yG;J3oaNQIHt zC?lty&~KtH*NBm8i*T1-P#AeW*B3@wq3~0B{HTdi7@5s6a*THc86#I2^m1LUCq~YK zlkzQ;k+V2Pe!E6y!?u7sFL3#>mASBM&Q#oJ$#*YtY05Lq=W(Mmod(B-@<1sNl^8T9f{wkJl;1h)>x$eA1?=PHamOc|MUM!$*D3?oM7I-pAmBadeI z!pLb*_#QoeBu!BmS-Zx`$f@2HWQ?pd=w*C{Cr187LU|2@j{#r@2Z)`(7#-qAyxQ_s zk>&n&RK(lEYdqM)z%hBr&1_)4CiSb^7EYeAVFFm!f)v0!FIJILe@ydeT7PFWdNnqF z*~jDA$Kr1!WEb%6m~`qlcpuX(TGg+sE0~cTxfPo+@-ls7g@L0UZsKAi>sR!uHuekK zk1rDE3+UZe;&TYUhcI7MO3FbmNVy`D64h2xi1|^4s|llqnssHktz8`rX0u15aknHp z2=sYD*7wRrD!VW$=`_5jA+Lr?=;T&&0u^O17yYb>CvxnC*7Dnr91q(MUO!iClXJ+d zXqSF|yOr0^Z&ncfq%>3gj9TH;&vWc!aU|@;W&P~t(y936@(z&S*v#~>vEe&ayPb6^ zH@;n+irvn4YR_`gDNOU+?W|LWmODEY!#);ANT@>T)CfH2?p6=FhB(r%yV2@qJm}BRuj9+w)-M}B=#rW_?c}#21zwO6CzEodBS=}xlfrLza=joWUMA&W zN073fCxzcq*}WiTl}t)YN05@ilfrM?GTcdVn-vpeQuef!6f!GbX;NmzO>yBNdYZ_h znayZ2Rx55#+9pM^vPq}OSZ%nbv=oIAJ-5kN>Re52k~1UvN|Uivor{9(8H@{FYErEX z+2_n;?6E`-bfjFAgDM$S_hd5ALdszDRy4;V3W@;o!YVP1657e+RN6z^?+Ze&0jna(0nJ+(Vg3QA6L<$GI)^t}Oy}^f4RkK{l#b4& z?7BI0t~Hj^xyQ)ABNUyholbQwr`BZmRp+W>ywJHRyT8{tFLZ9PfL16vx0utp6^hPn zr#jc7r*k`Y-W)ntx|q|sM_qJoGSj)FHt5{qSTA%gYuEQW=Y`J23h3JuS?6Loo!c5K z>)fi{MCVF!HEa@D=aMD~H-*lfJ@+rC&i%k;ZCz7D`i^#$`@Xi;oc))v&VBQZ@V(9% z>zqwMSu13n>xrfuRZnI;oyIP;b|=3Wtb4^9b7kxEn6ce@i+2WS8`npp@pJ=bWLHa1 z+UjYoRzb(a#{$TM`_b6r#3czE%5c+e5uqh&^C-^p9*Jq_rvXvdY^K-KCAef2YV@8d5kv)5j@yMQn$=ba|9@)`n4EV7x!o?p8%ibbzs}$shH)a_$TzA;G;Tf|H8eWBmj5w8F?BeYP?H)U1-0pd!cI)sA zA>KLw z!b$fHr|6kn{85d)s&o3G)++I&Qd_G}5qmv>TESOd5ELI#)!Aep2`wEYh=Iy^?)Vpd zILfJx$|F&$i<~@mX0}}(lku0fQcv=jjo;Q!SL88Uk;lGi z|Dy6(Jx7+u*=CJAM>1?`i|)_tDj0xq`8&k3?z z7Ax~sZAt`{%ktCVOfFM)61mt@G>!sYh6yZT0U{Fq~Gs*IZ zR^-uOXYxqjFU#ZHE+UTtEe8e{d2HUVC6CJaiad54(ve5u9F;r{`s95uV~&wLrk3*Z zI2y;vV`ejv$6*5>jira$Cy%OGp5(Crzb!0PzethCk^?&OxC%}Tk16t4bHEpQY=px1>dE6m5igGtULJNTk81`V3J3PL zT^^J0mlNlDk_QB6+)|>*V~jFBR=h>Uak5Gl$I(4R98qr>N@Gg3*64^zRirVyR!15W zQ&gj4ajh@X*p_TGI&uOzVVqmS31iYuA`H7m2RT_Z)wFMH%uMnm3%DoR^usV{E{4cq zBzOonnt)4a!O92-*)vPaBA0QaoTIn{e&l|n=!c~VSJ5FPN<9QBMkUd>=)=_DAt+7| z-iB_UNkjJTX*9KxXe~kF06aqBQ@A4aOo%uzMEqC^QA0Fv1Ff5cE-f@ubiyV59;PXncY@hU?987+%RrhnT$J^EKH#6^GXLjRR1l>X)hp8jPEy`q24EEWB* z9X~4^fxc^ivC?QRrJFib{?g_ zC%UY4IL@C__C?c~I|Uv>5KOOo0I8t@*6Lm;qs9~*79zfhRT7Zrx5%Nzsp*h>8_hcv zo&Z5dKes4!^&!KHj_y5pHY3Q}V!Y3l?07oq7T|IYGF&+axiX!d>UXnI!V69r5}vcu zm2jw_krKX&68?sSlE4+~SEQ9Sl<=KE`1>9SpC%K2#tXtTfN(gUtF|!87w2l6SE(tV z%8*?r7NLB5nJG9pM0^EX58q-V_7|j?4MirPJTEt*L44OE<+~2BprA|fYGg!t zBdkZmB((HPAiNiWnA75wc!%OJR1TM;V{q1ckUW}9uHL{;Ja>~PWd4ReM5#2l|TLl`_nNQ56KA)Zx= z0>~#ofggFZ8Av8yf6bnJ*_Y1oGggN?=*Ddg395(o*Aujk^hcx!{XJ+s$AHdg1Jq^- zCaFhZYVKmie7hyMFL>9j7MyImu*_NNZ8Wxtvh8ghwoP2lvF*ZkH@0nD*>1M2Zlr7@ zEE1IexKc8Kr{tnLCDrYxWKE;108cFQB*3U9PXgSsGThE(!)8)k+NhFZB$3DYWxNz8 zHpx=71USXm!`fH;ql97vha$$ZIA^gxqV#4e#y{$akzFUD%!4Z>F3elFqTS4E-s;Lc z>R_+MyrO1L%!^y$qWxR8YG{9H9M3mmm1=4K7ua;;w13f3XQ?mHt{s$ZU+AzcaVf{P z%{$!Kc4m3I**0#wE8C)%dSctr9iG^BX}JsAu5Qy{+rp(h+xG47z_t%@$2qp`SnMqI zA&T8a+4do0TeAk+jxXleHglI7+ftXcjcqn3+e(|fnlz5_ltjBzvabDLQ)-8IlpN+Mnd44La{DQ%XmTB1wTnFsujE~xhFAKs za2tP(hWn3m$mKR^%<#>N`5_m#OKXPjiD&qs5TnOA!{@~~iw#A2d+3-Osxwt>jNy2> zZjT!;m06|jylmOw%FDDEPrR($%dyvwW`w7c>K>T%4 z8U%}`F#jfajrO7VdfySgofOjNXfXvrg1ah=_a&_Ih0mcvkE+RO}fh_WA%n5^o(5B;FDt zc6pt6M7|Ruq1yx!nd=F%TbZ000U`H0k=smNB*EMbtLPVBLCm)7|E!p8BmNnt{7pi( z!8rTZ4mQr#o+4gDx8Z@-UF?K+`4IE^(=g2KD8gBte*=^s_&%ZN6ipUXe2#sQ)@J6hwJ5~El0t#fjOW)j0Xz601-vXPf?c- zc01q06*R)A_yL*#_iH*4FJ(LpW&6Q>s5sZ_P|g3+tPT#{I^pFG9D8vWzCDO*d!)DAPkA6V^hja0&${@+Ll&zo2)Z$lTKBURrn33iyPZUf{Uw-jTA z4xfIJ9!d5N6Cc9Wfb;$zUq-XK1QAH6^x&A?-_=qE6p09~s;hf~H8WQ6_z%{ewoW{MrM zK6t~Gz(9FcBNxfKqf8LrV+hZfolsUpf_NvIHUPd!!is=0hQKF3w~H^J2jPQXCE#CA zKwgqR*u_7ghv3|*CgJQ?Ek6j=|Af*IByjhTz!jM##%9~>1HC_emT zs49p$d~_!ox0uY(ErEq1fKLk^O9K|V6vU{};SG29YFv>|yG z3I>gTF9Gx5HnDS5SP-7LEdAN9K+Mt|hepvBVj-5Yh#Yfp)Bf0wc=nwT@hu7E{gU9b z(8C^Kc-(}syT(!UQH;?eaG$z0M*I zD|8Y}lUtaXViSXd#Xjh(1Tpx}_;EgovuSC;HT@Y6x2n&G0>ORYd+g%txT;^0(SnjX zhf(X+0y&QsM+A$*&~8&u2(Bs&jyb!9(7AQJgo#7&&xg>u&LQyO$D#PQ zKQVf0KC_ea`}^$TukdHTAzc{?hOOAkF8&NZdX7B;H-^4;@z?m#@7SXU@xMQ`bL+@Z z0vg_J7lZMmHyEefs*i#(C*Erp-^7pJqRdO|3@LrKW1^pWMCyW!ls0Oiea{N@AAH^cCoP|Y{*;WzL5 zSjP2@le$2xsbRQZd?^rqs@eQpPqBBfm}187Q_WOxSZ?q#!EAnsyj%q@6Pzz;oi;@Y z)pf2jo1Z7elA+i-b)9Ku^ULJrI(V5zU(TU5njh{d{vUoC=2qoAv-w$4YBrRbM@!9B z=oo?@zUfwIq1pU1QfM9&TIfoCARhK%;dBL6gj{tx#o?dmmoHk6-anr7Ji2ck;C0`tGCv zVhsouj|upTlY$#X88Ul#4$P5-J4i#gOoT7!h_Ka-9@ zUT6#3V*Jdr1>DClae*Ix8{_BQ2#8X2=Xw0_MGYO8?q{AZ5avyRil@6*oGSOmb+*yh z<|4URJ`^ibi!)UgCts&GiZ#e1hxVDx{~-O?4KMeZ-3Tg{8B_ot6st=w7tBwS(n~>w zmb*ieltP+W)Qk0zZtK7GX!0h-;9&r&|{dT$M7!iRkQp_&=NRj zMSEfI+6!-8UnM&}`K$v;k$S)JF9}7HiX*|xN3P_B|Igis%}Dpre|y^AA&E>DaEvStdhzH zo4?{?*+j_lmx+HNBQENoro>E{-Ch#G>eLKzT^qV2+Pd4b$(1wZ^B5R{kr*%t9bC$- zYKNdpgOwD1C2L{c&IhwHKVBXbSHP+kiCL!8>Dj-V+OyffnI?k{Z#rn-C{WHjQnEFJ z4%6Q$zFb{JyZ6>Cj^4dzX21VTFHn1v@{-Y|e58-+5u+8nI|MRjq%bV91GOL)Zzif@ z@#1757HRxyk_)Uc^i%2~5W|;rR*6#DqJQAG!azOhxw$V@8=n5TQhtr{y~X&kp{m4- z+woRodFo)em2R{1bGA`^p~|0lQG3w178af~J@FrHdCFLxT+8{b0e%5{Xru{}&!?Nw zH{g#hnv7a-0So++XoK68>gK+!OT#PiO7usjLyHn^753r};;82p3fqu~DxO~hj(h)P z{PKN{*l%+Mdl+E)J`0VW8s3+6u=Czq;m7zIQ1y;D8P9~FB(dJ!bsKT{{^?GHaMpve_4hmdcxU35USBfcjZ!}oWEJt^?v z{31?;{jdN(SCu9h)QP?t<5Jk&I<${A0qrJTH}~qhDbOv`p?jn;beAaXSsl9F5$JLi zwnB&Q;U@HMs}9|+=-yT9&^_1~x=R)If)3r65$N(1wnm3;ZDZ)VDeNU3y3Zoe-Kww$ zbm&$!p?9z9(Cvus-8w>t@hJ&rEu`*tNEyNe^RvY$6HQyw!ou=73cK%T67@8G@fLEm zvIN;r5uYp`U{#Go$oftf2O5miS`(YrAW3U*Tv{I*r}f~e(t6K0t@W{K4Un|1iA(D( zbPDvPV0%-v<6CA*T$vwvT<6QV$&KTX$^}@>jmSqww&s?YK_x+9%)^ygjVae z7{~EK2nVJB@g39NMU6YAKXhiMI?^#Y6}C&5EkVWHmiJdsy28k;H$H^-PSwmjXq?uE zkt~0}IF65+%JL7I!16`EgjhZ&2Fs5`u>3|KlM_y6iSZ%qK2??njnn!rlI07H?2@>iG0tG*0i?c=VdW&nJ!3dre30r4Y4hmD-y4 z)YciN_P&nV%OPs3RciOgr?$d4wJ#!g*$>}S5@t0s*e7X}vg0d?Q}5%+eR--+EZyT7 zyA-y*z{Gn(=X!^mmHEay^P|um&8%ozBZhaEag0ABM##xOf+3`Ck$u0IJz8LwikZRc z(uC2JquC6jxdTQs&7=({mWe()O|`oF=Y_0p5Us9VVG9qbNo*Qe-L9d**tNl&tTJxJ zej%$XO-tfMVdl(^3pheT4w~W{G~-m~?2ERYe%@KJ)8aAGp^vPY{C=YFZB^5^8_Hvq zcOwO2sN8B6hmK88=VRk^?vF($mcY-~3H<12fj_W8*`(KQ_w;OO|KHW%>KYX|0Q7`8MM?9&Reje_z-L%Po+8 z>RA4CB+Dl#?5)G0QtXMw@PXF+xId!U{={8T#dc7hcXeowHiou`!hX?p^U=G)E4;-J z;p)&GY7E^K3j0-u?vV&|Wf0rx(EZwk-W}4RdpNpx+jZ!EX$)O2g&ozQdoTi>S7AF3 zH(t(u*tl42i>(GWsRl#is=))sX?=96R&KR%T03IX8YXF7AD7lj+r@rkcp-nxNh5e$^Gk=0=!EQ17`% zLh8MxF?@eh*oI#tOyq&NQ6@4^Ve@rpH#dg1x575+y18#|xYh70ET}{GR1-%1xDMS< zbE9n9;v+g&TpOzh2xi^rv`zc<6h-==aauED)9Np24T_)e8mBcUHm#A8){Sv#{b-!l z{8Q!OUgNZ?evMGoJ;re?`n8Fwx~MUs?XIv7bVB=9q^cG|LaUcr2q4jbjS468iSZ$< zjm`3G$@1&svit+%v>u9N`TNFktZORE|5(rn%l`=prH z{%d>)&%|c=Xvy+1aasPHaavm=S-#acj^~=n^6wjC`DF_GO~>-pkt`ptu&;Eceotfg zz|{X4>5%SI9TFf72z&ocqxSw`<6PMmdlnmC^m)KIt&dLCF0M9CYe%HStTK+{(-;y{ z%de8%?H9MZi;a`2S4nY&wFssuY4_!r&r|yH&N(0g%~=bRdi3mkppFNF&c))he5ZM1 z^7U_pJ%x+3&4s*vKPN(7Co62}QEC@dz(kAzGB<~lIkdpos4^5b1F6Db_}{kxljQL^ zJ0Afy$~Ko1zRx(0IVujC1%6&NT%_?!M{|4`z2&gC z?A9RN$pA^?=i-)3=o%e4f4ss}!>?fvD^@#yD3K)x?A$Q}o@425ezx+V2At;OXR*1H zfGzAOWXn0c{dY*E zwbVGqZw`c+ow&@2;l}3}r?yXH&L@#uvId7EpJg2Rfrgng!#Ku62O3?84=tcZ|7x-g z|8l=dmFe`V_;c7aLZHoJc(>q~UYm+#V4fX{8sTRM`uHe6; z<Eq=npVBj3#;+H=GiaQN+F<7{Aq4ykV8<@v_ew7~9c zI(RB(wmFzp`Px%qA&00IQrrsCu5x3xtc%W;LCnK$f;q}%$#poLsWn>5r3$+th_XYgKgC~~Ixx?$T+KQ}8hRE8d`03V;z*3t(tFkY z11sb2ANbBV#o(csyA@Wd)K^7F4qeun71XPn;pc=Tqd*Y|GE8F6-cv5 z1LIU5iZQ^L1&TlCHeR6Eb2wC>*gPvD;qxf0?nI+oNMABOgw2Ofv6}F_aay$@c8P@V zIpa9CHkIW+G{*9a6n0X_@->kx&jq^`!SbO%W_UQ68skHFJ2uN3U&njcIIV4wEMI3F z$NNoX`NvIQ`NAV1md}g9@`H^_`8~#mud(Fg( z4BaIP+o(ggF9Mw#0%je$ry4`oOJR@e(ESvF&Zn@&CmY{huy3yMHLxQw<#wo)+u`xo zz>L$HADdR=IKumL#gizfQzkIIYJ>#T0o#gv~Vr_;0xTPs#EBr#P+X}zI zA9E}GJmZ}B=}3e1-?_#y{&J+j)NH1jmd}n%%R@8z=N!XSPlQvwB!cP^mFhk5ivb6X zQ=NGaVH?74eTrS@=q zYQGq#HuqS}xm%}F+Yq1HH^!+gJr;9p^HplW_|&!=r?w{c*s4@&OX5>|%Q&@-$HL|0 z2I=NQAzml;N|yF*xpt*I-N(&t-fjptyXaGM*oh?NP5eLtJOr72ZMI3i!dTYijQ6Tm z*DLuVYIUDOYBkRQPF$cMU=@TPqONvlo{-6w{?kb&o#yE_X^`QzX+p=PBo0`J1W&}@u@B}PWAf`w~$z0m~yVrF}64~rW>bm zSfv5}x^0jTliGE?PP-2G(6kHns;|(izF~T0LA{zYG+eLt-D$jXb6lraZIn(h@`*Ub zBc#yRh_yugfoq9z`0%Yk!oY{SkB9isIv9%5rm0qKM*JvkoAGfze7wOZ?JqS-3&f}T zigBt>AJ;9gUlg{${-a9qm-unv7UL9OXn34QRjMcAQ{8Bs>Ra*089##wQM}(c#g7{v z=UkQQ{P7G55J$7Qo{$ZZ3Ot`9ku*F>_LKi4B-C5 zK7jj!32q~OB;zB3+evWi3GNYs`$U6VPjEX3?h}B!g>59bbpUq@+X?rtA-D&p;4Z+= z3GM^J_XNS+Px!vn@U0-ve2TTDb8d+!)AS zq6dGPT+6p4vTAyAGdu}D-h!6ZCVKX109|cj?-1-RfPFHNJwmYS0TzDjfR=j&>^gwG z*Ti-b>_-6mOd@-hU{?Yx{HTYPRRVT7z^*c}y#)KZ=)-FSyHNDu0JN+Xu=4?St%)5X z*ewA2Y$AJ~U}pd<{P-PORtVStz^*W{KMD3xfUQkrUl8nZ&{X&_JJHVX6R<}o*T5y4 zn~1P$C*wzEejw1FCgT*|P51Aa3^Oo{{X`8vK*KP04>XK1UjV=N0){bcIRP#L1j|h9 zI01eEfbio1YMG5F`mmGK^4VmZ_J^S1I`c*F`x8KM9k3JurvZvNiEIv|Sp-1%u?bpk z5Yq^dH?U_2@!@KPG~}|6pdp(uKLVJu*(U_JgD^i$aH|RPF1r5? zA}D6>Q^Sl(bUwdR!{gYH$3CKlY0!|z{(^>~g!!-AYxqz$tr-G7ayx3p4ubpRb{yOE zX6o2}yB)_ili=0?+<5jm!JPoO@$AlK>ii$O9p`@z!QBsV#q4W>J90aA=q|W#C%8iZ zXJ_*XZWZC%O>hSY-$D)Fe!^Epa4P_A0{f2OegU`%Y%$y)B@8dXjbe8b+&#ph!vweM zb~3zlf8On6cmo_8KD-?b@1xZ4=Okzt&t_7?HtN9>S`Xf(9y~>WCnn)HuI3Qj+qa`w zY=ZlPgvJ8gAodKw9RavPHlN_$0JuW71@7NSaIXQ}jchBy9hih8uOhfti0<bv$G)Fzlz}Y0o+w=5x3U@_z`+{`-uub!tPY? z?d^`MP?jq&Aeloqa{mQ44p*RB&VxX)KY4@$6*as+Tc{9{7Kr0J!f`J>G7fRQY{;;BUT zTyxFIzdVtg{0j)PIZ+JpS%8A;y5^c2-aL`q@LLGAG?BHWpcJ6s`V)YfE1=c`)LawW zfl$>Fsv4l+`dffnAfQ$P)B+Q$*F#kasQn?Rg#zjTLT!*xGXM&%e+K|mK&!u~B{Dn! zs3i~{Ak=*l>R7oQujiQUe7=A>QeFd>>@G7vtw|L8{28F&dI>=_5eamZKVeWkz8v z=?6FND@XO)O*fn~gwOdw>YWKasLBp9(I1bSx`G{jS+{kCg>BdcnV`e$J zj^E6xqn}=mj{XlFj^kyBV|J3(k3(hHkNHU&j$g|VM=(isKl{qi{VYlf;n+<$?xRPF z*;(Yl%h1Pcrd#=l<&84z+Lk1hYp<0d*R~>-n@~AlAu7*nR9+$~FJikF+h2rsFMBCT zotNj!a9&=)_FJ%hYZ?0Q*OJtXYD*brRBvGW1Z;n%3@!4TNvf0DREAFKZQUp~&?vT3 zm&c(Ft}R0~|B7zhhGSS&h9>r#B-O;;SB55bH{vKp8Y^hfdy-VgdT$vz*6)%?c8JD; zGL)TzNvg}ASB5VCa8gLR0tE4A5=toLM`b9XQ(GXPSbK!{u@pJAl)h{+49R|9ioxTu z7HV+3rxd%j0v}l=)#Gyjf$IlbsO;NWitJm5Fpo-@Z2$w;PXNqPp+fHh&{7k73ZXVi zb$k_|;QBd$S|kkxpy2uwtyk-*S33~q zpj4$*00YKs_s< zW&qT)CiXi*y(7o>o8OMtGg|^P1k?$C4P3H2TLRR3lHz`Vg6k@PdR##L0#J{e*y5I= zUqta+KlQ5`pf(ApT>!Po#8xBJYZB@cfP(8s0IEhneFRW7CbkiwUX=ZM3!vb7b4x8d ztMgNK_AElZB>VLOK*9CP0QG=?dJdo-FtJw=YMsRO6hOiCy8yLNKs^Ca3r%brLOmjJ ztpg~y-U(1u0_s74sxq<95vo{pez_k-es4=vt(W;xt-nWzE2WVFh%4ElmUee7zm1HP zAGPQ>-XIf2KYxRte9UubqWmbme;|f6CTXL5cD$aQ3@|o?IqE}GI5!z!_DVVV8DQXg z3BvS8m>+!@5G+NQ(b7lwF#A}I5DQEQ@|91x2!t8W(kPPjVGOegVTL2fn?4-RGs(gQ z5}Fr%=BX-1;=AhV zI^qCaM^xChdjZ^}q$w;57mVa{U+!t_xmnBQbLMvRy?F74l0E7f8~t{!7*8)ypWcZJ zGG{|m9~&L1Y^LPkUqXi$>|H`hmu*bcM1SbqWi$E^Z!>%3>Zrn&O8mUfINZ~?J29~j zG6nCo+0J=iTj->zVx_+p`WsM8?dh0lQ2Q`2-b;_V$CDK{5m0tYGX?Dk(%8T0+P}4S z#fJAI{uN(hwefb!O}L87lia+uji)H3raC*^7z~&Byn7q^K2STwhShdEPi|-7rnHO< zi^AqtifxPXz9m!z=8-&F>iA=BB9(1`cg((fv5R{6xQ+7sCd+hQ_XQ5dp8a8gV0*cSB} z9%{oD?Wwfe#4|^i6QYaQiTbdyS=F&2oQWL*uxg&l%H7b9YV0`hF9#3(Oc4v^?GzKP z0QOb+g*c}=Mr*VqoV=wOsBS(*fadHhppDmGm3`hV6IE&@Xrs4Q+ zTpS|=jz`qN{Y8+Ca$Z|&NoP-pN87N4dn*0)eq_5%Vec$w2a&0^aHhh=f5gH5@E-ZY znfP%$Cf?8l9@>oXa6}_Kv^0T-m!CEd7r~>S`cYi(Y$l8$T({;~ti;CKvbJc)hS7G5 zPrneF(h77+h~>lgqbPS`d3ZmKXNjdSV6)IW(1nipF)mcBA=oL=^;?LirhJ|}7(s5d z({HXgw5QV4r}~QR*YJ3yQeCH%L(keZYX%%=)n8OrOT*oXy=S7S5#Jg+oBgzg;a*i% z>Ict6^95*H8f<>G@nu8csgbPsW*Hi|2+ORfxx%azMx zaHT+SrBrg|*(o)8wgmBBrp6Z9*4+vLhok{#s;zp~O#MG(&8rE5H(3gM5^PLc_Fh7W zH7lc7Q!iQb@Dx37h$mkpgfS(BF4^iScCir|uD2(|96#r0AvEaGlmK?=tpr>x-8{us z?We)u>w*(Z$|AL&VBVp3t=O+$RJ!e?@rR*TyzO}C;E?vz@#&$CTSdqJkR4wb-SHz) z9p8@2!R$^kg9NibPS;ZaA$9s&>U6cf)5oCGY}%wC^gA6uQn`63%tU8}1$WcDC^P}P zId-T+I&Z18hOU~~%zMc8s(Z~>HtG!D&^g1`Ps14|v!xVObrW9j$Gw%+iq#$vo^Td6 zC9x!vvfZkT0Yx%76xO0HYHY{8ZD?%O;bWWL=-77Y#JHg$?!=g&j^HdjprPdFyPT^eGMYi*Mo&HkEBzrVTco&EG4!pOgkY|Kg6A1GflG z{0rQbI1Z7{mhL^BQNK>%ayNAKH5M`USN2r8Llawz07)Ixk>)6DZ?PC@4*WcCHP5*+ zgP(U5_V5t(p;ZpY6Ai6Iulv$GzI!CvA={$6M22YNT;{e}WM4i$Qt21{sF}+GaGU@A z4sQB)h7}^52U^u>ry|Xy5@~j^c{GknSlmQlEzBqL1o<gGc@RGI%^0!|gHr9JuTR znXNL6rdkb^;^NcLWhiXCpJF6{5?j5rXD}ba_^Vr3tZEUXdi-8?Fk%ob#UM5|Jct)@ z5Vr;RSr^kF&O+23(98~#9`mM#v1mx3>y`*U-b{}kjiYhCmuj}Jrs38>dS0D;jhP_zA+e!sUmj9kBqshbdm9%${ z&09gyWLYfKYBXsHA-+jr8>SqjCh$_p>2RYJPaR8POh2WzS{WmDw>D~{w(7L?!_(5% zxk6jrLOFoH8H&9IUB>c;tjup{QccP{RAX~nQsbKy)~QZ6w3}lNZBC;@`%E{qr%r2V z>%)e&qlrUXzAS2J!xYw&1Ud~aQ+dlZ-0VliJWJ@+i{bMgk@q|W6K@9FG8Q<|FlEZ&*u!nK)0M%GBo6t$x{VrpJaDI#m0!}H0>md)=u*IEqXcefI9-%t<_hq1h>iX> z8h(`GR$4p7OH!tVX$ePUv+AaWvMI!KHy~`r0rQ=^DoyJC@MajC{wyUz* zDxl$>N$SrYak4E&1{K3#yT#+b;M}Qdm%*NOn8Y^o&g}5C$tL;zV};H8Gtop3wjRQh zTsSRgF~HJVtN@(M<^(2V7tdqQRWnS^N_9dQ>IxE$(~n<6{aC{JP1>aKE^P=^RqT0l z(_}rpLYJ@VCQBIV%{W0;A)K=zJyi}8J3+4YFJ}Q1k{28YDb%%+pmssCZlbCah(KS3 z%1$VO$>N1$t6^Hum($C|cCBKf6cv!gFB99lTNb}eFmk%{lzO9`eD4^&e=L#{L5Y+p zY|%=F#Vghx|CqEtkv&`GDuTH-w%bV7dd-Of|A-X4Do_RA50PsP-IbtRU9b|46d_=mKy9e6^q-DEX_eMa>@k$*?uuJauS~H`N5_tS z6iXp#8N$)Ny}PmoqCmxT%729Oeqkk}90Qzj20G&$p2Es>u_~lz)2Bo0)!_0cW!T{g zm(^f3eT*SrMGP|iyN8|RXHG2lTbfpd7Ap6cFn?Cn~$@!Ec$itItR+P0*xy53!(G5uV z)7h)sB%|2{-&Wd{gUuAIb|0Q3@TVc$&~}}}Hrc~Xwy8-=Y~Mz>A%Frh(OU~i+~ z+=UXz_rJp>{w5l2x3C6B?vuO-eA{GUhR2S>W9Fw&ZSa-GY{MkebS$?~E)I-=o|u$s zFw}Ka16Y7v?*hHm2}S3y0j$VDbwhi4GhFoLN&i&n4kBxXR;hx$>9mu0@(M5$X7h#6 zG)9)C*2*f=5PqKcm+BVv^qRa=Ui?0OBGE*6b~go29999I6Dpo>PXmvM%{rNAva99O z-)2s(5iW4%$waXV54S|g0q$5cEb2W=ExJo9{5dFQ4qp_gSgqCgZn*S=wB8fWyy=pu zeWkRPQaA8lvnFeu*brnquI%DSUPE{^@hLX> zSUP(?ict+z%^?^^6t^gMH(Z-A*AOmI|GiTzUQs;o_>(do_?e6_8RxBk#xTx;;RpUA zhM&(CPMy46?qE3d7oH9$?c~YedsnuArZnmW1GRx4QbJyOA94jA;{6f`QGpd%gG)M=B0+x@i2vJ^YloL|7^ zPMdttM!NS0G9c}t!Mww8-p%i?=dC;NcEE?xc#ymGKk4sa{F`irC(Z1usgv!z1%xdy ztsTWhGxV|R1Zto$ZL)0*&s=M@68;|u{}}$SHN5-3`M>(0G44JVw->O>C@`t!9hFon zC9CRgLbskgn47xUV79LZOPT6lgrnL#B?v;u-b*ln-AslEft|G2dAn7-c{MjLv{5nX z=?^M3rA-=wB@Sn}*plEH(=;bBD!VT@7Psr?58w3r|Yt?N~91 z@i}a)kQo5G&}1eT%HCk0aRUDJhQI@Lycc^t!DI`zLteo^9{V%VY~kikAUzXmQt+8{g>AvZ~X&KS30}Y4zzBxM9rEleAa-) zW~HON#EDbFX3n~pXD(4_>VV{YL2|4G@SkVrX)M>y|K(Be7%xtuB5GcpaU+GR4kiiy zJo^%fN?}evJIR6icxhYTV!Tm3e#03V#a-cG!QesI+dByrL>u^5?_14rKX!j)OwN0 zyp}dWk&tItF)nb|in!n)E<;gYs$%yAbZrTQYc1K2+)jg-@f!@H4Zi50qj|M7&TNvO z%p+PFFu?6ZfZm#w*8@M!vBShUp_jA*BaGsvKPpwD$epY%!0_ug-LY1xZCpvhs=3)t z1#ICGc8CzobW0$^#?K|=G%3K(Ci4V$fnFKL;4Q2fHniTXgyf|)^`wOM2DHS@p>H-b zAC&XM&obZ4&l|#1C-Y2&83$r7MX3#Skur-1u0k};5(MgC|1@0Ecj`yW7i-wY-^{J!5Yo=nHGv%;1k zZO$rev{Fmef zbqmu?uOQ);4;WiG61h47_et&3*$-jeH(aBd0izKFwl@V)+^}geawVCSqnsvLGBW5T z@$CAV7%XmlqIE2uZivO8IJ2j-+KB0y9{btS$mwAZOmS2AhMSD0M|B|<8j+5lYl1|$ z5w@w3(I@Mrtb8wnPpuF$5O7tnBWW){t z^J*}MTnGb?C?|Qq6V0S@5*eU*$25Bh>GNzBKZwl6Aad$f5kz(n)s}49^#d?t3E7FG zA!{ZAga>NGmTqZ{aw21F5rzgoY@n0_qpLc4faD6RX5^@p8##R#&CKdC*irU2OJv87VqKignFGqH zm^1wRQl*?G!h@E4e5g`}x_A>E zb?YJA^dFc!v~K2lfXT*H+A)MUDUG!-5vkdS!$=XQliA(#NTlD9tHT>*k!wsdGqAMo zV5JW9nfZ*C)A4&kEoeG6lK)+QtVtCEjP?AY-jD$kjH;BvQbf_=&!b^3Tsu}^wTO|T z;t}8rF=)jw1Ty7*VYXN=78`F`ndGi>K)C5xCDv{RvoB_g4LZc4&!T2yu){^V)3SP2RbVcdCb9)6;MY`u}gH0J8Ugn0R}V;2p%4#Z8+6GLJvZW^TI$ z=is?1mL^Pr{Y*_k5(dO_w`dAEyu z$NowcE#3oJ+Udi@8GPbKp0t#kYkBHS&ff$sVED||Bn!`3cckG^E^d5uWG?EXvJcCc z^$@5;X^eHOBBbPX#Z#zFZ=p{5r>}4;edtZV*ziUwqr^p5*7w z;%9^ARhg?5_Qs{w2oJYFb@G2YNfDFl$YLE<&5y$VxWmN8VfmJ=F_~%+=4%L&FQlKm zi(QUj0a&QCvzjI0A=6*wJf$ge=%A8^9i7XlJdg$9sK{7V&}4LcR@ytXDo6d)ks;RpJuVkc*mhI8I9Ny`XGc~0TS_B zEusQs=c!|?{A!3s60KU{?DJpZRSd6Yn?;D&lGPom6cJ+WJhAZ~9CrZ@5AucY0Rh{? zO&zF4!XBSTZhhYbWK=q4l&y0tG_&`mo1{>UrS3m^ph*FjC=$NC00XEof<;dss0=7} zE2gfm!+nvknzB%wZ-dOFopzRk!I+cTHxul3J`e<=J?*B*U?<1pYQ#V`vx5m3#Qqp> z&d_&sMhDSR6T8@62hV>#9t)0me4)K)=u8zt{Nv}HM70oFJKHcM&NbKK@^TKXV1}aJ z9MtcyJ+Ub9^|~8X7<$y`ZeT*&MxpJs{~~L5_kP3mEE(j!Q6(!7OHLU@or+>{BPimp z6uwo(Oj3YfMo2N4kL|1U(^@M1AH}Q-*^}+f!nVG~KA&wBD`aSW?4VAS+eHeBChL0M>w2_BZ+El9 zPY8H6L0{Vq<`7X;<1C(Q;ucnb30S&CvG@_wKX05iYk0 z#a{s<<1OvH9moOnJqHL_a8DQ^<1Y3Io`Ovi>uEdnYwhd8*4o7?EQG4%;H5EL%m4vW z@UzyQu>RoD)ncnU1ruP&9$WhRW7{^j}M-;KEl2D$KkE(;?ih zelmiB@i-N zPmq?~#}frFkTFZdyvKDOBtxlqX(G>|*l3?rYG}t2cC;2Q{!OtLOvPK>a9bA=1c4@b zPFEI&J=GsVluPObss2hTM3TCMz&Omvr7w1j;cw5A$MDp(&^6?~!u9~= zQ(8U4hd)m+{ZF5b5y4ao?!3E}(U%-W%-0^Wr#swYzVN$v=lW?PT8bKs%dff+V6U5Z zweq$$XnTyeet~>dE2SGP-L_PE^Q0k^SzKh}DYz4~8<-XNW#!2Mo-!IBx`Ksi0g0T_ zt_Hi&LWEI0gBBalv~qEL3p*&bB|ZIBcwT@@g6-7A03N^Re!2UWE9L?zKUIBakX{`A z(r|PK|Kw|R&b2a1JY*0Li0nVBMI9GV*l9nk+Y0jY?C1uB+7E(jYgncM&s-dDd$t98 z(JrkcjF?u-TL-b?pDLtSjDGc3+F~y|vPL_UwG2PdJ^KF@IgTZZr=tUcBcHFORf-4h z5MfRioo_%1mYb84gQ_eKaZ{j0xAUp_l7L>K&Ht7nogWfuu{-G^dn}QrkDAPs`v#jX za(d^mN)fUD_b4v3ooU&Zl|k|s_u%L{5NFI=cbyT846Rm0mK8d9W&67~0;w;jJ~=UfdZN?Unq3>G8?}HcW69- zztC?m++mB%JP+*1KY98Pewi|jUq~)T844ykou6|h$Hn%u6{^g!m0wk2qIE9Yy@rzX zzT(j5>~L#ZfBb=mmG$GrAXu5|B179mE_)H__rf(c?CZ|S32Pi z{KA1~?$WVK$)KP7idr;?+jil~v*s3(fGAj+Px?X_(vm$7z96YDCCiUrA}0U7Ci7Ki zZ*q{YIMW}H91kT-v%WgDeH3E-E+`5zpQ!e0=9$2@UBxyd3|m#xL_P;sX2&xi%@-mTdPUbfBKx> zPhe$tKfrKTaz2U5<6nnYWRw_3R^|Sc_f~68-;AAPJ@Ir5RXB3AZHgCycwFqo^aEq3 zG=AY=aeX1R3ukqIxOm#E^j?<~_Bf~vg%^+g%_L(lP$+X(9E2|ZIJxb7`HJYvHi}4*-_xA4os-fysc$jLp6NT4-CkFxK1F+4#A%n^h z+xB`ZZFt8$m?_+fk#Z+0HC5G9X3$ElG$jS=5aK`XP%Z(A(+)%cVD(u9F}TsZAsC%E z*lUgD4Z$;&H(=`Pj#~{rLwQ5^?thF%&ZBbq2WWZER%>)~)zaFouJ#5p3UdZ7TApRX zQX(GHNM<*g>;bmlV$vrWHX}*Kb|XoK{ePHbfXts{FhHKx4z64ARz0|>4{tTAhJ2lF zlj23}yJ=zD+bt0KNpZ+(-z_@awd z@`AebEimIu$yRH&Cc^4Ns-Y(@LkLRJ2@W z(e{C#qdcNlE;|hEz%4L8H`5WfKQc06*YY6TxrOA|>xb)?Q><>bw@bjzmfwQF*&x(U zdZkcD9-xSnZDPomvslo=)7V#Cpa;{j>|PC+auxRB1-R!{EH+e$nrt&__~lW#0cG(A zl^Hf#^1xd>y)O{SZkEV`A4FHQ%xuPbQ3J$juCIp9=KB<7Dhz&fSiTipci`GlL!yYat)3uFH_hNtHq64!*Bj8e;4rm^rm+-}{wRQ(N>Hqfd#ow9!{4o7=g9VPy^;i!55j@IMefjj^dYh%Qha{#!OnQZWYUKJM2`VOTfsUj6N)*kjN;j^6Vl@CWA&;e5JMhYw_e?Wj^LczGVGaZylDV#Sn3NSv8v zmKtrD$LM*80<5IAL$=!InM{o@#+ngD(>@~7q~^uJB?V;+k^G~5Q{ zTCH9Q3KCBTCP%E%fcV(t8Vy)5h;kzrgcf3J2K%c8odV?@2k^9fQj|j{fiZpe z^D&d5;3X@YQM%0Zs;s0O8XjPqcD&LW;|$k9A#ab(z+)dMZI*h;hCEwxKH)~2)0aIz z8|M8Sb2r|hipKRhj>}Htl5gUB702bqPgmxFHjcpWRVL%~^K)!U5CPIKvXOfgK{O$l zDYw7_K=EdA(DQ9DDnx7(5!=W+^Gu$ygrCFCgEVA@Fk5YL(8W0DHZ=+!ih*GlTSQwM7|tMW zdYtYjD}RT?VMH}4=Dy!6{i37rK;NStk75pHFHM_VtI%=2DqQOv%=S;4j9Lu+ zy9aLop;j{$D@8y=3zQ=tJVXF%o#yTM;2W0)8X0PQ@uI;}=wsSWhPt zedI4BgvB%nW0p;oj{3nrKrh^+r&eJ@z78-^WuAYs@?fL~#FY;i)4G5R6_1>d{u*vB zm<6M%L!+1>5PW|^r*i@U1y|n$80|b~tN)u&<_a7xyq#ANekx5fag2FOf!!SAnXCfoZ&`*f1zK~w-U)`{s1l<6anv| z0Fx!)-q?u_ZkRGcX#t^i0-|cHuDsp~i<%5rZqDKDStoEFcDpdfOMi+o#x$IVtC(BS zUa`7!U!_<9SXadYcpH6<4Mc`r4o}lA$!$eouF*axLkPh9HsS@$=|XV8JUyFCD1hz% zL#{+r1<1{}MKQ#z7y`Vra2HnVDr&wH{WgXmZKa@|%kqOX-8-gE#!%>!+wCA3VKa;6 z((|S0BvTcUAq4bIMD0_p|iEg#=?@C9&0w5DiyaP*j^YKUcIiEvA z2l}E!Misx@EhhZVDHySVu$hD!y#H6FJw9LHfd$i~!fb005(FhUjmgt*N`_UHfdhY5 z)`{HWG7t#laR!KT5&!#Gei;MT(s~3T{|$IT$b&lMv*Z#@fW8ev&$15^AcE;^S8%64 z`jCz}R5e4F(GgGlo|CVRTA_W&7ntZ<*yiUTe!tbuyWrbaItNK3PW*{AX1iU+OvhBq zuqW<7CFBVevc5q`klT|}sa(+>3?XnN#F7jZK%z=wcm7ogPg!Dg1yz>aGn@ITMEE^F zyDvWrsP*M%+eLzKNR3+{byF->E%X4(^!yx&=>21rwC1XB2XXso4o+ELp469{hA8$7 zsojUbe8m_LAp8@RVfE}cQ94ig* zORb<9>EJK32a|4NW|msYQ%V6xM?ZD_vEOOOZ)>&{aMGREeuu$aaubXM;~h0)5~svd z+4Iwxg}`2sVDxGdNTBF+GWbN?P1Y8AmuN~bfjb2k`IyTjT;$vMQg9NE))tuF5^!W$ z9OSp<7|LM!;z{yWb~U_P@qMK^f-hE#Sp$MKE0-{Q$I^~F0{B@O-W@+f0R2m%m&fAI zGITU8th}x61zQSRJH;=HyZDD*M<8An_kE>F*Fc3(@diCp*nLqKK0jt%_^-QB=44&C z4Ot}&uWpgMG;e0frZl-ewI~hzwjbDT#r38EHY*sqGM>^Ns|mPuSwM|R??h$RcFJlM z{vtdYbdwDp=%GyFZ93rt9ToO(6TQxwwp@RfU`iM7sbd$~dAr__AvH>yYQ>J^7K;r+a+ulxTpe%R~k??;qXsQ zsnLi9KN5l&OXwxA+2Z`Psjnpizp~IVL)53mHy5zLaXrss6;_`59?fi0x?D0V#pQ{P z`28GQ*~>|z(;FRq*rE2kCtP<1om_;;U}vA$y@aodF`2X}e_*eHDHpSfu^55Op%+F8 z$x2dI$aCzw} ze$jpKD~A>;FU4Khi)fETIwmV)5Sf*lIctG+x>VeloWt90;Cu$yKXbM?GAwv1-i^a< zv-9?HSL~(YPMKf)#=my47MLTafwi!>EqJE(X3lUDu2oWbYB~5b26IovFXfgTD(g2_ zFm_16JuD3JV{Bu}FnlLqn%x4E*F~L3{4X76(~pKGna*OAG2lXlyJlx{0U9aRxeQ4i80QVf#bClX)B#u>bIb#v3K|Q|?OwkCsL9aNk z=Y!!!wp@x%maBlB>0fgfQn5>LO1$`|Uc68e1dffhb?u5F9HbQ}a|IA4@?x5|>3G9z z;dy{JA7=;fB1jfK8Wb-d0?A<4(FvQLRvM#5>>Qf^ppb(c-X@J-KvX27s|8eEmu3g7;MTYgYh=q6u=wk&f zC8aCo8i-n1Ka*rDbn|jMzW*I=j;Mz45`^Gvl8w%F(^pNWcRi*BAOV8=Hz;g*y3o`1 z_@e?)Kge%j6@DZk{_W4jTj)^Xr{~E19n<9+=pwQhZ+;S1Z>HBrM4fY5zJZC7XR@$0 zX>#|>A@$Ueuq)fex((Kfw>Q}isXNCGte1z#W*K}onH>}b^z7-X6%!n~SYf|@QiI&X!4ZrwW-hMW3b%&_p*2{1SdSkh?Tn&TQ=;99~3}*GiN15A>drrA~XNNO*551hE1^Qow5ux&JaQmc8eP0 zmC(m3G(5>*+cK&k`)o}+Fp}Amdn!X@C>l#wSO6C|N<}dej>6qO-(X6zY7tiVraxoV}YMzGw4O7+LZ;b z+*Ffbo#gjc{5A@~Qko|uG)rjS9KRZAI(jhdvyrF#*+;_$xY*yV)aUJ1;2GB~KR37A#6FihF7MgZ>&hGN^mi@r6qQcw25=H#LgWWB z@llo7IFH{Ke#ci4ej_2l=g-S?xh>;?l?nce5|vHDl8sQljCtREH zGnpmDUiB-Oo_F%`{0RYWuiSx7+27`&rJ&TY$z>|1?F-4BT;-7UhQV zyTIx5>2CmEoh3e)VcB7?GuJiFnL9z^FYx5L;?FcaFGWXOle`H~V6)#f(H}N_p?frc z1s=C6w<1?19)2VARDQ1d0R43O{0>zzbaw%yz%GXeYf8CesEd@zYp{r0TC>j&Jw8AwExpDk>}qT|0B(DR-{B zD^T~lNSgZ=6&JbS=J3J&;co%3rpOnY2MJcE*Y9zAay`z1s{n*Po9roaz!c{emNad| zz()b+7^o`W2p3pRi^u16#%LVrEOSv?1CPajNJBVSh*xwsA{*3ERP+b&cMNltM>UBj z1{C}KuDqe-k7J;X^}N>DzhaQIByj+SR}A!eL&F*B^yiLu`34t_B*oGVIUc4a`_UOYh3<*e!n*>W{0l^|Lhp#EiTLk#j})vpjf(F3jD>660fH$*1VQGOTv3Fyy7}x z-UfkB=?~^?09f%@Glr2N_^lg?O29P^EXwOY-UTi)9!bH2YdoNzk&I~InZZSVM?asV zprOGCC>;2}+o0?HWAqhR2Hh=0I2={O5Tnpu$AcSQaf2|)j)Aw8ItwB-ssuoa96raW z;*xAvnX6zF`TkKDKzN50Uk!{Jgyz?gWdOFP0oYy=Haj!Z;rCWJye@yKw}`B82K|9p zQHKsAKQJPmNnpOi1aK7iO-GiayCX9*p~O+__2fGWTt)f*@d;iR1V(;xtd1feDX~c} z<#1flJ?c(oG-{HSk)BDwMhq@hQsT)8;LQDwaWKLOCB>q{5lV*bMEq)x|2i*qMm}3o z?#S#Jo?m`3Jx&-|4~GK`IE+VSzKBNnkT6nU;-Fv~B1c~d8VA{|dN{Ouo^hpq7fFrQ z<4nCsqqWEva+6zJ2)0Qt@YHKZUa_O7*e^&W6gj=%kA05ZQZHQi3t*NogoEkHi!itY zTy7`G{+W@q%$}kzG$FZ#d7uL7Jb<7K95Ld$5f1y%?EcsG8!=+wpb-OyXZPzr@c&H6 zwa#RN$bcvmKu%Sp*_NKY9GC|>#(9d0OMsh2u7vzth)8`7;N-XhVw}oxV6?|w;qXoH zlt2cp%AaGLE7w^H(oifxbvgiH%s7|VXG9752-wo15>M^~0C0@*RtPWCACfC4NSqfu zgKCDr==FDkCijMQE13u%^)FV2z@5H-|GmtP3t@CxC1t{FJWF>>&jfgrwQL>=o|*fG{O93!B~C75C^&jjR@E)QK8Ur-I00485*NBGPyz)eIAge zTRla$I(vlN7^p`9m`ok{VbI}l1AAMk$L}}h5l+wkXilkLX?{PS&y!yyojlmaVIZQQ znx$aa$x>rE;7qYgHBT}ya*!jy4n+t>$XsDKli+s9no>f@!@E627+JZzI_WNOM+Qe( znKF(*JbI?%L`1l|;T0o6Tt`p_Y~wggfR$NO%cFLlBXx27(}2X zl%U9?jFqE7*UhA4fNP>=@b!TVJdG6|`U{bv<`f|~1QVknxwRDR0mVdm-OqIvk+V!F za+mZ#lc8G2>>gn=m)#@l@;LmS0OD0pfGHfN079wA6KOfjND$=#9$&808|qG&10Csf zyD;|~?FB!D0|z!^+@4)rJfXA%B@v6DB2knWsLbVX^vX(r=+f^jK%?yg$QzyBFt{@) z4XCWXkQY*W&|C9uJ>qakg}g$WKecy-d9EhN&K1}*nQ=idS?=^em?XT3Ha)$On_&Mz zh8%9Nv91uSDFoI?Pc&dv8+SCl(7i;(*JxdPckk7sPp|I16SNF}geP}=e~gj65C)eP zItrbJ`qIPEh|tIZmUv;ZqT&L*M9K)8#07Wy`Auhmf>+`;*&0BA0 zQH9KJLJF==I-TPnM{xSVl)AwB(-jbPjC1;2+HlnHP#3b^2;408l9wISZ{(={{j#$i zLk8xIzHY>Tk&za^XHN~2N4vT;0fqw+jxX2iDe)Vaga!i~o%45liwjlPA0Zo|p7jZ@ zyX56zIpqww)?RuGjuHnHgb9xdxK4N2apJm&M7PZE9H+CpXmc@s4Xs6>pcI#5Ea31t z3lqw`;B6+9BT_$PC;iaT4=R?$2Xy}qXcQTus@wTZHFb@vHEFdWS?`$@3+Hu31r;}_ zEEyOYYcC4u!*XwjF0d+-Z5ZN|pl+xcGSz`ldUUlQ$erbS;&Ty@g~ zYzXH`RzUakM9TO{eOH&{_+GoP+rmN9(#T#B9@T&b18;{?9!d3sK{pKRKWgxG z!&LDFg}tF@TrrUCFQC+FM|STkVt82T7*OqsiZywl<=h^TUZYnJ4M5a1^s#RgaIZ5n zJDGiiJ(5;Hl%peN1f@zY^u{Sd73d%%Y#)04km~>rMUA9S0*C^rs3D`AnF+~37+zT( z8D1eL<~pM`<@77SJwp|3$KYZ8M+_X4P+C-qm20mnx0I4gu)u|$kZJa5&cY2IP#8_* znDFbq1mAdPNyrFhg7B*Yjlpt%sn5Aa9HRnbQOy2Gr%R6iz-^a z+kpKg1;{~1zb0=B7qcW)6VnkNgqy@gN0!nrTESTkip0d=7Q`r~26 zLtTZ%5T<~1-OztzrU8+UsQ5s9j*};rCU9NZ(O)b8U_hV0tlWs~h%}6sXC`>$(lA9P zrNCwgxk6C^dKJ(p2&1rm6`f4w7Py?=glzx7sFjD%3Xbf!S_p8K0V`-zUV_-jCW~q# zM0tL+*r1}rGGO4zfdPFDb<$auI|@=$jIz|Bdvs0kBlX z#EnAqM>hb^qwL588R$kWPi0@;U9;g~N-hgjz-LE)G*2-XqEFYKMXm^kmqnUfOlW`v zN*B$V>NWks_-GO7sa8QDZH-zLkR{{MXui-$Qb_=-!jADk+NBSd;tO2URqPDaJD}I} zIPJ~Cd5`pOy?aL8>6L&>W`MpVY%fX(ppPz2)d>u#XBHM@WjGsVI)wm^blq0!f`H2* zSF(Mh21R8p#k97qg)~_``t-@nx;!fZ>`8H{7XTpXz~oH}>oVi!d~s|w?Q+7jH(pR0 zwc?H$jpovI&Y&qul6iS!y9V4czdTcG!I@FXez+yZ0x(q!!3t4*W;_JSnh5_dRkNs= zYH7kL`DpKZ33vdAzC2}OD>Nt!ZleQUXooj$7+E?l($=~i5$Sv*r6>*V23o$t{6Q}I z7Zw8pgp+iK7Kwpnj=@E=<;L&92Xb+bm#?(Y=jcAs0l^XctKlruMUJ$uttp|<=~i@_ zmJNrh(fJSwLKGY6G{P3FOCaJ4+h7s4r4Hr(MyFS-P|7M6ZT81STX@7*;wcI(1c_xK zU%3a3Q6V^&iIAd^UC@>Inw%*&ZF)~PcnQnFA`1BvBC~Zzgp)AjZ5j-rqC^J$kJIN9 zOos^<>^wvCdW9_ztAoW2WVF5I46(LHL&YszgDxyC!_7h3P6~>bAj`!mDF{_pH8<3! zy8#<)%$@cSjwnWD%kWxAj~=miZ$&3!RL}I0nbEisp1X^4TB82p^G8M;aW+tqh(_@a zynb%6F1*wnGzB>$;BiQ0^F0OHmN5Me&&VyxQP{801`rB`B9%oHAG9)(^yNKz_mMG$ zK3E;>*R8+O`5iSgEvXPrL%$D;1nd+_Z#XnMo6ygjPpb)oi-43TFQE`Z?ny3`#UfXE zf;f>zZamMU-)MxBCAVFwCd5OVE_3XVYz+vFXk^&t4zY6?WF00%E9vEeF!*UX3JkeF zWN^>q;*4Bdk0>?$ua;@Ujp_el(J!k3tt|u==V>MrS+4Fg5;Y*Ld>f}E8W~UK6&I;H zZsqYQ9G+9nqhOqcPKTC53c+~#Lq9vOFNLId8;<<;+x533#M=0QG9 zyBI<%COxjs88y%`Wbm*7XGYAkvKlS#gj`o{1?3bNUPh#ajYe|DDnk^IMHJQJ6d6QH ziDlsgT0^dY5W7$WH{g#79du4x$5#D$5|3(?G-)xy)OaCh&scfI02j=*VT+#GD>50n zA{KJD#|yC?ZtH*sNc;7B>~)*wLP@=D)eTY*FNg)0IW;)U%F=Chq18K#L9dfL=fFYe zHnvR=342sYiOh}DKRzLw_UemAv4cGlaKEu5*R8J>lsHNqj!gYgI2^2Q*DFmTN`-DI zq={?iQ5@_YZ!7WySp}Cd!7vCyhZmRYG_^nWVgOJLGooJC8CrPH%nDb)QwilVdpErZ zhUdmJ6R`dbrkBzm{c5W?1n6+xW<*@WmjLx^;4ULH%yX9yKyyLU|Dtu|l=VK0ULt`eb##+-Q>6gbj1?w~y%-|DexT zdBqRBRjr? zQn6(yLA*vHEM;tpg6P)=Vp`In{cP8ba10$h?79&~BFSD5favR`#01=a5~}Hwa~n^U z5QtZF`7&^i3fB5{n=%Jwt0nZ5diEwA7v9QfavDwUSW+N;ht;z^6b5>J6EQuD%3qh$B!8Sf+l zEdgmKpG!`y5`%fN?=}Z5o9o1hHa_WgpirhBdn+I|fl3T=LHZ-#OAre2Nm@c1HilOS zvxb9|QvCmL_b%X(9o2#G)nhao$2K7?EE}7S@&5Mh+ zzOr6DM>c`BAwna#`i7)}jnp$z6KI8u*0#4DYFxDsH08clwiZ-1DYRDNam@xOYDk+X z!Wa6>y(tCZ~_)?rDVz8Bwr_7VROWb4pFJ zOEqZ)t#mcxGRiGVp0{E)(4t+5QW5OJhdhOem{}I&Y?-aVFcn2&P zgjBO>x-A39+I7(96ro&xr8$mZwXJ8TwYK2%nXfj*>udZ;%%IH2IBK22?1)M%)D7Q*VF$h&DR)S&7SLEJXZxK|e8 z(ggW&^6=zB{>W5jG7@avI+ZzAsbDz0%8G6uQCYBtrFs;OvxaS_qC0oOdetRYX6nx- zAxFinU2B`SgLelQw;g~1Eja0#+Kgw0d?yaVe2yJDG&(B%vLt_KSXkxiKUXV3m_frm zT2{dLQb@OvTE3<*v_4B9a>+NN!iKmGS~BB|mBj}vOo@Oxk;X8q72=51Q_?WH^X( z5@)oWrkjy?r+nC;BSS;OW21+L%pxjf=sLI`Be74Y|5Agxsfk;Si#797vEm{+&)ii} zE+uBrD-mmbDGP?|E*^YW&^;2Vx8$bm|7G|=e^*bTY0)KobXGV%MJ5R1N~#(1c={l zyc6d-w2pKn8qvHAfi3ZtQiiFRn$}+yhmOZ*)I>$nu8C8P2`}m+>`>qkv}tukVldOa zxcVO`RbUWS$(9+26WGgx?dY(jc_qK$F#?mGTFF|>&Ou~Qt$R1it-gyj+z_;bm>d~Y zxaWT|Hl1?`DZQ_*CKFP6CS6H4z zjqmPqb6np#KrEppu96vxwRB_Fs&^qan~`+i%0Eyt!u3|w_X9p3QQmOW>yi#A3T~j~ zIB#ifIdn)IbsxAYEHItmJD(wI90Wg-!QgxEWT8uUs-vV zX=thb{x}8W8rU10S7n%>xFTaYE>2 z21Z8WB4cHS`rOy2B!+KM6R&V==`9kr$*8XtYY`Q^dp7)onwAq8k8d zT#9WWio5YjhtRrOPPDs?<%MyD{VIOY*G<)Pr-rd45c=tD&wLJ|t&z>0gP^4Yh({IHyBMt!pUjq4kZNl=lHZQ#U*(lh$3P31Op+3A zdYYdDvnUXkQTaXi*AmXba#3sfn81V<%e3 zQ_w|{P!o(W7ksUK!6gNm%9BEE`06B|Vc z16*ET&o?455i0iwu`p21^HLaM@7I(*G_4`pO#eWi&jAq*O~x{s+$uRqv}Bl6Uf1y2+J75O-hlCvZIm09Iz>gYU>5TMJ*M}h73w)v61M!tfZJ`eYW#U z(qm^s2N@*ShML{d`O>oVpQ>#ei8!bQ99#~=KdPkk)%xW5GP9atauXeUN3fD*1IOoD ziG`!mhInVnTF7ut!^1=1CN)aiD~k@m=BHVx8`*0sf(~w8ojR&aEbp|8u4lk90ZyoD z%U+_sSy``&Em$mXiOmZ}ea*Tc43;;+TyJHW$jBX4G7LbXdli!%Uf~@1x2#m)sHU5OFbYcWIy}gVI8V!-m4_WU*66d`tzrQ|3Vj zc&F5ZECOUkDY$63y#UiuGyz!GJU=JTynuzl)plr34HXo>0-#-pc#{ZOO*<1q zaY8YR?OX%-I!PFm8R#3d#UV&UU=^<;+?nvAS@#%nYNG&Q0ydqCkgM#SbY}^PHv*yG zYt;q|)tvIeAB+uEA+vOg!4soeCHwY7bZrUe=9vq$v2hwJwFQyEPzrV@F1kFqDU;|o zyWl$|SK6igFK7jrRfstcQVJTfZBO=wHtMk(o>7wm;eiACjR(p_~QEd}~X*R2eVM1?HY3CZU$LSDWm*J-g?wWg{`Ns};T>6!BC znR5ji>PvfvQ7%%6>5Gn|acnpn)e7B$zA3sHB3G*lMoGq8lHz?$Vo5rm>{COu7N)t}lIXMb3^+DXC9s2P z_9Ry!_=t_F6>$t4YGF(5jt1lgfBi$F^18`a1Ir+#c@;t66*M0tsC>=m2;vEqaI8+GDZ9_a4eK*35s4 z$G=h1UK=^l4<_Co32+>uaiqZ#wdfQ;Zc6a*rC=h@?M=oJ*mI7C@Q`mUt0PuUHRd*# zT8&}k+N_Mm>tfepVmqq6z9H5~nI&1eq3IZ_yW$lpz!tN&0SP_Co6K@{b7hkSvft6D zSkSWdIy%Zpe<2mLzReuJ$LwKX-z7H|i`#+Ie1vLG2;YK&3lR1@W=&#Qr#3dK^`?yh z)jvEEiT9RwjO2krWu#m!t(Ow#-^q}YuirP3h4v7YUHu7 zeJQcfZZ}%Pa)bYvwv|IF1_aJZCZzm8FmkgBEGwlL4X`Q}cN8P=w2rD;QPDDvPJnf@ z+}=8vkIC@8YcxfVA;CkwJ_=_NGVjHPe5a1E(2&BiI&YG=8t^2jEE8_t#2uYztzv2- zKVN|{V|E3tsglxtapQx)wIC$}ih41ef5Qu>$3?D=+|~*VOLSG@ure}0j?7JkMKGcY zH6a3X!i)o{lE0^9)aDr<$La{D5*42>7mZ&F>0#PhYlIVtP5>`A4gwG(h*lXn+m;^8 zOE_WZ8^P5o;j~0DVi0g;yp6U6SePw1q zu&x(7X?2o{Z_nY^aRp(wdd8y(*9ky?kJtue4G`5qdLw9SLG5a1#)iK+rSKLd=k!<~ zF40VSJUMn|$Tx}<8Xp)8uSk7K8bCcT-VZY<_2C6dVtj0o>7Z8tmxRBTwHz@kw$1aH>3eNVjXjtTzsm~!$}N#n|p zW=kgbMnk`9Q(QRfr46veFHX9#xArbW4baP(fe|YQA8EysB{uaUwl*5JaP_l3SPx<{ zEgHBH)vI$e`fX_LnvD!8)r>NF_zLTo7B2*gdrm-4U+31uCdKl_H_F)0}x~Z)@1|U zRG8t99*U&o3Iv^WLkDvY@BBT$a@Q*`d36#+1))6asT>9UvZ2E$5ON9(zD zvwRh00VD?_N%~U7`s_*;5^e8X(S^?IBQw5PN$3Wsn5uO_y@@%q(d03Ux0ECr0kC*e zqS$T^PZNrlFyxxhNS;d>SSdFu5*3x6v(bJ*LX43VNzEmF7zG-aehT`HHmXIbv6l)v zh#RP#5v1s|&|vnCV)w6a7EAOLY`amYJoRY$c<>cQWw7Du)q_XOmd#&iqcFXE7 zjCHk8UjkmmnBZ*Iv}8PLZq#f{u|W1)H^^8`1#yL~P$10pD08zJ^aB=Ux9^r=(z5mH zvZ0)r8VbT?=`mUzkCtW9$<%iA9;L-VZb_vEbdoZx>A1!D$rBTkS!o5A8$W7(lwKG#5LeSCn{KPm^Z?IgK+ijl zW_l)nBsV)gF&V82z5-4Q*z`qbH_PI#n`#IykgR~9E9#|Msn7~7KiC(`{>VF*cucfm z3X*a!zFGEGJ z%bNry_#vzrN#;l5{BlfPCS|+|TelpEH_PYNY-=PGf)+Me>jZ6IszR=l2q2N* zpiApT;@6g(IW*Hh?7D~QB^>Bu-v_lmau%ZwJHN6GF)$Vp$FAuTB;Tr+Xdn#O%*uSZ z)s@^$`V~K_Q;|^Ppb)@VOxn;x(EQUFV_%0D%9q8go~cSGh;psDexlH>RnMuIj)jH| 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 z zJ5PL@t>ZRo-48q3{ZjE$nw47_@(Atuwmg`hPdSGovSjyJnp@#exZ^uC-zeHMrRE_^ zO8&IDWiUUBRnF8LtPeRFx755u%95aFMoLTVw7D7GZCV;EpC-Io%Wd7ZV2<4p8uuYn z<@C_-_pA=mV18|y+ht8SpGLLAx{~Pw&tU!(c4P>y3D;5Z(0 zBuBeNt;#MMR_fqtP?^O)M%jugaH&(%;!w7@Q~b(dP91_ap0yXByl@c+O>m|tXzl?8 z`OJ(Fo-)FmE@gV}RW&ZikY5u=JgmNE4?`eyByJ&JFrzo`#R%0AfFleRzLg~6YTMY; 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 viQ*^m#}e{|r6V?Mgwvcn$KAcv8D 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�+yn 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%0DRW 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

@ZPjHv9 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 Bf2baqt&Y?7w#s(8R%Od#0S7%2uW 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%0D5Se1ZF& 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


{fJlm;W3)Y^w!s+eccdhbw%?%l#ZQd3Hy)~< z9+-m7SxPZ$p#o^A0_@2Ki2PK53BwTSTYyGe8*EP|qkItAh@`azc$A}5x6HxzDWJ%a zz52*SyZ0=`?fw;7p9$JhIfHj4k78g*2Wauq7;Z}sRjdU34$~fBu<1o9?q)>``bd5S znXdmME!`zS_ZPJOC`c=TPhT<&^4yPotBN;eOJ{hTkZGv%r!<>B%CH{b{WJR-g)B=B zGLJ9KmMs9+Y+>2g4_eFqD9x5VhSo#bvMNS*7na#>q2GG(r5nHq?@`)#4;k`~jXKwD zgR*mrTxI8eSlZFKYkbt)WMZf`mx9dyE5o(PQ3&I0A+C+VU3;XXMj5WnKxqA0h-&lA z?5Z~Qr4QlX3d%C84EMmfC=pkPmOh8M-~S6~S0V0(_Yk>LNbdJEzIT{v$@S$1B@qCQgbqI6A+ zwQ8Qh670jEEKdY%b0{_{%CLtSR{0s-a{_h=wBiZYRMbb+Ci1y|%eQ|Ni>_S!W_giv zyl|2qhdG`up%vv-mwg3ouCT+o)T&cXaST{qm$crYSjYUK6ecJHvv{+eesSV&JFQ6< z`$~LB$K!#bU;(8Nq7clT9yk|mkIT7Ov<2n=>Ifs59wP|_fI6`M4&4~}41$&iuPUfd7#udv-rLb2a_`YFbWqDru*_*(( zHNWeTk}=(Uo=2S}z1*a$N;@r2I421?=1&H9hgEJB6epa_f$q+n+!=D3a1K4)^tb0w z1!Fnc3%I{laC5#|ViNsxS1(1X{fL?yznPj-T+MBQ4TmalCqIgAdsuXGp_$?PuNAnH zzkt>=`P#86Uv-u5eg!$jaR|C=u)*xlV~=++AIYm2-~B2f5?qXjosNjKE9N7XdvpQ5 zu4w#O6kLR?1;uDOcSP*hK-w!xXDaR^eJdspS~OvJv{QAnUL4>x$e$++HKAL*I87Kn z4aOJ&y!Zf27`{R1h2(C$Asa# z+J=OHJfHk|!cYymRZ55nL*`wo<=N5zWAy-L?FzNdCD>(uBQmZ86K+6c9f9OA8E%O1!JFrSh> zQjU_$6n|8)0BeTS#wEEcy>r2+3*@de0b1irQdjz2`Nljy6(mM|h;FoC+yKpWf>AoA zV0?+ECMwVtqzvBwVtw`M{7)QEbJT4etKE|*YqlO1trj(_c|uXMM@YRVYIbtBY7GyUt^oz$^JojpXCud--q6j@zf zT&_y$CrEuDsO!6+_NXkj=quo!Q-P?{e|Yhv6R~%QE=~|PLV<=A#8rDr`635WM^zAy z-Tu{fu@QoJ543j6#M0i3#6z4{?I}8bf?+>|i65cB9YGwUB(CD`BL(?0ag2)^|0jqi zKx@1|5qs`cIeVq^>_9S6=M2$J7Svl%B*|Yq4^dKk1o%jq0+@P{3+h23Ox+4vEd%6s z-lL+9aZ-DprUNMl-4T0y-7sapm0HW%(r7u2tzl`d1KXQbxu7RXmL z5!*s^BLs2oKp!b*ptz!y#Ql-lGmwcdxu|omDonf^S~~;fc2@W8@y$=L_Enj$+6S1GV&WhtHu|(|~qDvRlEl{L!u(+O;)GLsh5X{sSTu@&Y z)bFA7R;Dhmrk>-ZPABTzA-X=*n7TkkA1QZ5aYdg|o?Sy~|B6iA#07QpYD~Q!T6-%J zbxk$3;sjFY8G7^(qPr)kpP|SjK^>!{E?&t;DqKlCXmmk+N>F!(R>w+29s0wTPA1~K zA-WFLnRqe^jH@KBXeDtPQm+c)i7triS7+jKm3^c#m5I2cy3UWBb@n_ELn%e$uxIDoR-K*LW92L+uTMd4aWu%F{ zeYZOVlp#KRh)8_Uu8Sy?DMUB72HV~RYMl`5A4_1(Ho`(tj|tEiAHwwzTFQD%sKNEv z0IejVwk$Z1VZum{5W>iFhXTA_*WgD8m!WwvgjQo``4NJtijVX)gdZU+g%DSTA0Y_A z;&vp%BLw;J904B*@cOwXKb|XB)ki8-)$w@lEI*#>gQRW`FXh(4lq#EhC^h=x{rRr$=sQRNQ4yxVjRuqOfx9|df#Y8aZU zG3*i-uulYRQ)o4*CO?SH080-BY7*?p0I!O*_`yIV6bDwLha%_r!N5jH>k%v;k2oI; zuvM{C{8WHpN-ehPJrrLHt1=(eS`|}^t@5vq$x(H(DzEY>mHlPrqpIftR|1UZYVo49 zEef@&&WqBSh)l1}i_%?)Y$r(jdsAfFkYHWO+HBhwWPPkIjv$@T+Los_+ZI^ENAj;h zw#BEb8zP-xhXw1#3)r?$Y*m9{&z;cTg8ve*anPDYu%?A?G7eHh1-jpPpic@m+!E+1 z(BCD{8=Z9V{70aFgw}i6=$h6e zATvMzph3b2{ZU0@m_Q#5{TP9+JFWFmXMw&8T002cvRtQp3y5}!2HjNc(5$TJHNP(J z65U3jTU5~FIGQUS7M!Z*Ch1clSZbrM*XCWKG_q|?MdRDLd};JWPVd^ZXMKTpiDp2W zTAQzrQ-~a^?bs!nq_$yo#XR}z@h*`^9gKu^#4b_XP1P>Z+KR^i$J%>XqP0DFy!#$K@-3t~52jT&1NV~>p(O=3r5jm8poV~16i5+9FPe}#MftmW04q1Op08C z?moXlsq0AWMb@tRJo&}{N_Xt4nP1|+K^MN5b>m}>oo2MQ08phgBuB6A$k9p1t;GF!HJ>JpS;r-ypWl$))kqz01G^5;m&*H?j!%ip ziE6q{QpbjkjG}HM*0DyOy^aeSvyPKMHL(%tc=q3qjgG&AdsvL_z2yD{=r>93Lmt}q z;1kLH7O3)wyGQZ=w9^d*8ld8QEnU zb1-I-ZjmvrlbUc?EJn#ffFG5pv9S->_l-F=ULx^#V@ojZvDG0WrpQ-KI2faw7)4YQ z8H`6B+5}^%7}sY~Y6pZTLZcy^y2;(3uMy3L1o(#oyekl5vjk3*SeD^hD zmwb#$kEo(s6`0oNva`6=94=WMNKi9496BPpt!4b~E;=<47EB#y<4~iH8;@^=+B7j&YqOnUrgeS)#d|C6I`3E@ufOMm8tM zY)o#0<~TP&VmGpOHJ3-dkn0rBj;VgVDDSfQ>qRGp*6@;w*-? zfID{8x?=`%ow~#*ty^&S-Gszz&AIz7|7G8Obz5-vnOYb{KnwNQxVzRJS8}D~78-Zl z`j_pTu$3hDi}BeGGV?FKQ;s^$)&tj?0DbMp`NmnxhKc$M%~XGEjPjs`Je5c}s&&_+ z?%Eb?-IGWhZ(;G*u&byxK1PXa$qjymvga-2YU#0kgDbX_kGd`KsN0en?CGI>Ypwo% zJ+aM<@tM$4wuW-l)^tRb1b}|WV+XTF(aO&Z;$JQal#cUdjBiLQh#iB%?@@OrKsN}; zO(bprTzUY}CE$;t6<7mY8Uj(>Q2)ft&2kLdb)8<{O8bei3ZO6FiVf5WiFU1M-f`xN z4>SrE>;KdsGN^UiVhVZ2L#KVnSPA+it>~lxkiU?)N60ro>a;eBSb%OVkYz|LAY?I+ zCrCUXWIB+>@fgbhy0Ji(Be67|P6I)X>qX>5SfrL+7no0?3rYO{QBsjxEXn5{F&NjGW;%jk{+>~|<%5YdR1CoAkPCCvj;G7yK#oCy0|5OWPplzq-QRH=4;pdJS)@~i z$v~nLj3N@CcX?`4LH#Y`qGPsuhzKt7kp?*yQ}`M=*9H_WMdgJ6-7+8-kT^@oEUMNP zaSCwW3S=Y_Ljn5o%&dU?g6LMY`RdM>`Op&7b81~psoaKRek-bd)s|y^|3CIIAKr#z z{ywPgwpHgSoo&o#5Zm}_1;@7G6{B~eQ5X`*yRLEUw*=M{p!ajH>1uoWP#<0(JjRWX}s~XB4J( z?0NN(sN0Ta*xh)75Z9f>FjR8=VLZRSqa3Hv)imp*E-XlU_$oQUa`>vYc8WkBzA}gv zT%)*D?P2AXd8FD96sALXDnOSEWHAy8Nwo<;jv$c((Eq^oEuY63lc)LNl|_%_ojO(6 z$X7PP-c@edvMmdH4|eaQuww0vBCI_NOF*I(K>yjR|2JX9NLVykr%aXRJEVZwU@@~j z3)qgtR)8OosZwqMyG~O6dGo)d~2SSdbtzy?__zr*zm#j5hpgp(2kdaJwVs3lN_wSwN*DFRv+JvrA`6a z6D8kuCd($6Y%FX3NqFJ5oeYM0P1<8s_q}#i7nTP(m112>w&xzb4o;UlbC0G7 z`=faQ?OCpW7o#ZDg$BH;Che-O6j!R=UbCvJ&6(C!T|7yy6I(E|J^N%G@QMZaQHko4 znZRZN^yj#?#V4OyeKM2y{28meCtL6wHJ)_g7DPMQx8Ra&L7A>bQK~Do;9AGp>cTs4e5)J~lTY(`h^)SF0L>1tU#KBekCtGSNvz*<%AW)#ugSgRnN zy;kWRSgS#x8qkfj+N}LXlG{cMsbM#r#V;Uq{X&kfNjK^CsdjvA!pybf>yZwY@zuLf zzVVg9Zi=(b>CpvM{r>B~VYdLP%qMl+nn7kJ#FgrVuxkxuKeBgqS>Vu)Sbib84^#VKvNH+DBOd>t}7jJL@61|t17W8m)~dIgy;g3WS*spCkrJmg4dp`Cpek)s? z4ysgA&*O$&KO_;`+c5>>yKp}&2jN11AC;*6@Br8!0DU!IoAE2#`gEF2d>+Rr^Sj7Z zelM)@d(nlHKR9mEfu;76OMN63^|A~!xm5jGjB;1D?l8&@_L9d+eC=EJdlzoqJ5aqL zP986VY|mDU+jK#&s=h&2W?Q1SQH1nnwh0C8*_Q7rjRvaJ-ZUTeH`xb=xl4%qjB2jy zB=_Z@UnsdR_p|3dS91RYR5w-bKNk83_ax$ewyNQc_A-XYMQ`$NgS9;o7y z$s`B0CUKicLm$|-?gsCiBE2)01fA1*=afKu?~Lna@y>mL`Mi_dNZg@MCBzn5){WgL z72^9O(`w}oyV1|UP671)6|r$6&3&V2;?pA5^>H^j;q<|T(}x@F6Kvn;yl!&B0o8y$ z>N(-!w!3SSf^EjyuCW28?s95CrTJ9R?I_k1NzkBK4@?a|(Uuglcl41PzNA}^SkIx| z*~OotihoN7QxF7}ohs0ZAQsg(<@Fk^wM2wdximY6Sc12bhkI8u?d30<*%_Q*afs6s*)fb>k z0I~&%b%Zno@(PK6Qt0&=>NpQXPDp>F2n6VtF<<}wPWhaaB!u0Agvqf1OQnR4sFB#8 zB`ifEvp?-m0r4YRmGeDh{Xv}fJLatVsVUT^<5$KOK9t0M8aluzf(MYFzNKwbF#fwI z{PY8mCdjTgKwds0^|E3Ofj!w{mZ4Pmo*TfoTNvRz{)_x%S>3Af@4P=2EkyuMiig-+fr;t*f zNZdo#&4KcC4mBb>)_nP_`XHmIJc#`??7rDgFZE=9nTe9=gVblTFdIMRpGqIbL$^fULFv{TRob)qRWXV&*c-zD2c|=1MYeE6hjjx#_&EunUPD>AY`o z7l~WM`!Lu4zwIa(D)aX!=C%|fI9c9r5`m%o)qonDM_=Gebc!~A$1iX?mv+imT7gSP z@O7(Ej_Mi~aVg!cnU^fT9O!YDFHD&~TgV7~C-6|RJW`?gPN4dA!V!F+nl42Bm27t* zD&HNbbNn+R^m#_5kENZ4?tHk1t~3?v~+rt@$1k^EC3- ztua_<8hK-cc`DKETh?0 zHjMtqT4$rIqh2}7{>R!sKWcPWFPu&J&sy!WMun0etoeUy^5Zr69{n_*v-Eh+dlKf~ z#pZ1WvR7IXB`*8#N)TG`)~bm~>M*#)gP)83mKLs1y-XMG<~B!#aeCdnUB zGEDKa@~fJnRrhBSfP=V*?dk>fdwlxfg>jYoVu;?RIg$>i!XfX_u4W+;SmYann)z^ zZ=KV>M7UW2H|I{Fn8xY%5Qo7sVf=(JkZGJ&%|uOS`o+VdgR#m2IMZ(-c1NN!A@nPW ztC3g+Q0Qk6A0qL95c(NJpCLx!1#qTcR;+?VC4l-{i>~y;h>OYciM(NgML6nzcQQ;9phwE4U`HqSFi|hZ;rkp;D61pU&#fAdZugnxUu(Ku;yAq;z1ZLs`-iBon>s81UN849I;XatZklh+<+!+nTu--#_ITq_XfMNvl zc$`sO1t=wfBNj3RA7#?%u$$L;M&|ff``xP% zYm}yDCYqhWP5m8iYFnc~?|#%aI^I47Y%@p`I^Ldx#9n}&$P_x}?mY<@pwK7GvZG>_ zGZO9nhh;BN-&eb-8wbR{NuZ9Fo~m1QN9E3w*sUg(uy?C1pfv9od2K0~--qc=p(~xy z%Hn!*xOQq0=t}dfdPd8c&S))#h{b@y+Z>P=cbsFaONr%r*sl{{(iLB=Um*fWU+5+G|QV~7Dbe+FdKr$*5S;5-LN`zc1z0H7xZ zN)AmCQ{ip^H}Shc#Qz1h=U00caD&#Rkl`GHKNnH_Gr-vwh~G4$FaY#Kt5inL2w+11 z#=1c6bEBfUQ6n+&DfLkBEhxSOC@qN!iMs&T*LV!SZ)0w!BVT(apqjJWE)U^39pV6r zACQVjL<0)bPiEOxb1`~2(=TVq8bX*lLey&}3t%#(6EZuXyq!wpx(n!T?orDRV4wcl zV-qxRIZq}yjz6D(cq~;2Bs2YPOMl?&K-F9>WG)xgOk|nBU5*%?L=32<%!Bn63NLh1ln zheQ@YPj!?&$hi*ecYrb!NST>N5djEl!)+N2on7^+e5}Lduj2&w=3@HFmtL#gc%f=1 z+|!t1JQ%o_EM*;Lf*LTg5=bw#GOdRtYp=~*obBU?FSNM=o4fId8zcMcm(_)8V9<1a zLu(r}peMlj5s;ZkOa~|~Xx=wSd<6*b1LD+83B!NC0RI`_dht6C;lX?@SD8Lv?cqXv z@1pQEs9pj@Q1Ni9bxOM1TBk^*aBHWHB=t#gb)|GR+$M~EUG3T3UH;ap8s0vSoz?7{ z25oqU&O)cm;_&WoggQ5T$D9p;IF+l7W_^B)?uU1%IvN9lrdumlI_ ziQ11wY0oRN?r*CLsh-#ZhsY7jOX&fWR-4#$|SNV&E@JGKB}bs3V4vGbqTCEA^QwKeX`0VmEr?kFM9EEvB`X+XavwxiTTM2*ueR`X8Zz)P4m_GqfPkF zY;|ZISVTaOGi}1(2Hh>9RTrt7YzN6Ufvyd`S*ku0UYp5_)F>p%X0pKcNF)G6$Y5Gu zlTt&FSb?mCnQS@AbxH_yRW0`xxi2$$y|>L~El zUyI*|d6qWkr})aJy>=Kn@L!^N*zj^IW36aeztap_t+f3Ny2Y3G8rDPR+NDOGNwc4t zXVNl$+L`nxlpkBlGpXA$5HF*p_EVlo2LS84jAznh7FLsmttrSe=>||_FXNf?8WLBQ z@l2X*s~=|4aRqrMEwCKomh(&+fkesWJd@g1lQXHT!87UT(hg?Q7ASAF+%l66E@MBF zo-3%GNr!+qeYu=TGi~Yr*Gy_hoNp#w3Z{#fn`ctBw>H~a1J5n({kXUGfpX7s*;~0! z&5t#g3Tb=m7Rs+L=iUnY4E+Mo=gQui3~a(@+*=n|nEa{PmW8;t_Jd;gXWU!=Ao2V& z?yU8+Tu_PsT}khZsG zf_VB0*;^fL>Hk-6*%9aKt#82es};QNq2~zk%={d2tS~=ETtw;5EBHCWcO{0(mHZsh z8i~dLJ=Ia4BenzkW+gvIJVxR^ASkAcby3o~u-$V+b1uecIi#>=!EAkwXj?|JI8n-K zo+Bd4S{El@6t-QU_?#}A?>WLe#PA~o4UmVKaV=>ZEclN2|BnSjhqM z#6qt7l0epd6|ehbJ$1=96^Tz*@sjT=B(|*LCEsl%ZUNkA$(KYufo0xge_rP4SHojh z(`x0q#-eNe?Us2@xOk_(Wg2pSrLiGDKuu@sl#{CC0jhTZKR`u6P}$Y2ej*YHt6BXq zNQ_!7AE3Ibie~{|wVKzev&-7ART~FzBMyV=5H-SUU0G`*@;5;ElqsEWRcSXj2;HW- z9^x;|X}Qd0G9L$UTGb^AQFa8yg|dv|E@}NUkOymw;s!vu4&+d_QFH+)4}rYifDiyE zuYnZXVibRF2BOsS5UF1nMO%PU5Xj6gjbai&2?cTwi93Xp1rqa>Q4|6wu|TeVjd2E` zGy<~qTcel*@NEmEU|0P4se)PE(C_Qg!yawbWl}#MPSr)2czdq$Hmqc}(W31c?+*?J zHeeg?4=UyC_Xl%~y!843RC~7Z((4Tp&$sc?tJ!v=Xs})G55}_|mNSRBtHOMx0;@r` za=Y9gY*#_^G|;PpgZ;rbWk0q*m_uzln(95>#QTFsz&2+)?+=RajNi918O^1z4GLAn9RCX?cc_RH{CbO8cbSy$I{$ z_dQ05?@6EQ74z$(eu6LPB^z!dEWM_P=22U>V9P}HS-WU*lzQmLYhOhxskuQaS++`6 zQIZKa^&l=;@UK*F&tT|5Cn&2!hpGTQl_+$AayYQT0I%H~E(4-8&#r1eWD=Lhsk(u| z+z-1!zvFvucU=el&_0;k{S;J>)po}?=zBF9bBOz!RHbnU2SdPa1j23_HlA}dwgc93 zH%H^ND4XdA(U=#^(YO;-+jes_K11T+ZjQ!!dyJyy9vO|s%J$J%K`O8WWQ+F5Xbi5b ziN?~E^G74K!fR|){%9O&iN>eYws)z%n?pDn_k->3Jsgd%k@y>+Co(k}8}BuWx`0C4 znC0>ii`TmMscaXG(J#RNeX8<4gnMQ&Dlgp2J+s3>&)g5OMB{H!_L1Sg9|4#It}Vk5 zjfb?+xRqoTOmpoY%Ch!B&i7JQ!SeR95<@Mr@+#T)z8ZzAD&=3$J9($Mz76Fld=Bo< z_Hq>3Qd*)=QmJ}Ks(fE^3uSLK?lTJiedLY%D>;fn@AB5rDjDV=3N7K~^;xC-Q8-c? zg_W#PsO~$EOhAY`&i=&4lK7cj5Qtwsu8Njxs~jDOO2nff9Qi`Y0C7X z?7mr`Ujfili5fpwfnC_g@snEKK7PWAa{ScXZxk{6IetbXF?2u2&q*W>@0am2!$JHE zkqQ*~0bTZkjGwvM_*vm7etMR75I_FU;C%6D!EeRji7&ODm`N?Jl;--pDBH6>gw^?h z?YYK*J+BwFc%rEM5l;-RVlF5nn-rbqI;9wU;y7?0^8b>)iX%^4rSZgXi{%^W&7K%-@x;I?|HBh2D>3rfl+ zwMldJD#@Ox!?S=>4tt_4rNt8^m8yrN()R1?65OwmpbDqw3$LP89eH9zwAH<0Oa4z! z{O|vRC+3jl+NUW8OS0u!Lx<*4gB2JbHX^~PX}W$9EVw5sbo)`haM22uCFY^Fg1z825iIyKP%Tph-*+TfeJj$j zqRrmil~mt_5&Tx<04nb%2F5-Z{rfPf{6*SlkwPc~Q1AyxZvMz`NOGwq*Hc|zMes1< zcGxIf4%2?(D}F;#9$1;f-17sF=zG}mh9t#SpKGZ_ibe7pk`16+cUZn58P24Z?}OY( zb?q0)Qcr^H_+cKr9wYHc3iLl>6a@joGzz*;VkSmrqKrmnB8n4^aD>}ZIOV09-<*sA z#i%3P5tAG|dt8p>j>rPlDiZ1SSw;JJ;W6iVMVrl{^fcY%QtS@LQTve8$d=OL8ikIc zX-8S3=N0W;V^As9C>B)Jj*>=&9jt21t`S|yrYj1h`F&lAU86fHcO?e?D_}73+F9Jk z!mFw#cW|)S{kb$7c|54b9Va74Rdv|yWaXU7HZ3fk=I2+2t-KDk zvx$TMIp~xLHCkcuty}rvkPa1{cBw6_; zZ8nfnw~%O!tmY@>%Ry>HBwKkVa;KhTE8nYZ@5L9W9s!`Q}E1RvnrHV}p z8>IP-Da%&Ai`ut|gTFJD7GZCk#SVm)q6gyn6KwbsTR9#jPL0#_=gV??8=|B>QBaB6 z=t00ze&R-NMq>R>7AxLljS%0cgV3Z!?ikIM0ebM#Ylrg zuj%!Zrly^=397VDgzdXudMQEsE9x5u;W6jDLFnecF$iZjA(FUdKgyHot0q)L^RrQ0 z4^58*IDZMG{~4GW;CvX!lCv1?0HL`+oI-cuulWq*z^XRg{V=OgKzZ#M$l>Skba#%= zK-!YaGmw%9-f4Pk5L?lG^{|9f0)ebY{xX0P4y0DDQB(r>R|Mko)>+(xFr^xh1IXPE zQ0f7>gTzgMD>=hn7AilA;^ef(^ZW9=9t{2&Lopz5jD|Ab_gB?R$)Je)ne+?V$TVcN z-173hLZT=lD_h?@(UQwQ9_qwF(P(N<8zB9`rw^deuhsaGBHFqYYKSrC%>Z}zLX6A> zB8s)BX5mjSGSHqL;FbZ_P8YMnT33M4ry;{-5&k%jBf~++8i4a)AbCh!{h3Y+qk>;H za@_WjrK$R@ERPsecm53-f#+ddfb(e}2}s1Br<1pDX)Hs|C}1N1>f$<&D(7S=MJli{ zSD|FZd5*L%tJxdVwSpYaKy~muMcO5sNK;=0$hx0aw6&-3T3*fC0n+%e^E>#Y&pT&v zwgR0zfvR`G{x-m50HWhcUaXAbflR|MXc{1pMk6<-u-pfImF209M3PD!iK3B+`h`cL zjz}c_qAr<2u0eeKJF*fIOOd%4;Iu)L3b!s<#YRoy%!u1j^@E}&a4m{)inQ|O!r z-KX*Bd=7sKBBgurorkCiwlyNnV?(awy~>2;u(N_GrWxutAU@$hRw1#JkeWaqBXOUQ z#yjXU$3{^d;G75~6Nx#5^Z;@ii4%Yl19s5yW>I2<`oCL=N$USTCFZIB8%wNE{|_s% zS^Yn<#18fUXyp+8cl#CG0Lob)^^m9y2(3UTNJ4|uzdrQWyq`$s-&H_4REeE*ENDmn z%1)ZcP1QQ-SC!aF*MMsEujHg}m`wX<5tPQ6WSqN|czE7bN*>Bl{nhId6NOaPJkzQ} zHV@qDAl^|;cT&HC<`G1vZ}$9z4*B-ALC~e4XdVbe0oft%szJy7D83B+ek6081oGlH zqqqQ2o&brz1iJtV{tKjDteHdTEg&NFSNf|StB8rQ8NgH4=r>lD$4Fh5Vp(33NqjUU z=ZRzo3SBnikKZA>(c!PaN%LTCe<-K811WsjD7*oxq%UkG4PE0OP=yb0^aNFp%SM*? zO^nTm4bt{RN)o4mYzn}cB!7d%SAYQ0z$sq%2S9Axzs_Pd$dw{ME~4~jfY;B=luV~R z4UE1i4Z6Xoq?940uV57iP&K&}W3xv2bdCSnD)wzx7c@_7iKndb^{dJYnrUD;hmh2!!UB+gwi%Dpq_;WT@V=a8!GuYOly#H;MD?y>fRYS*glugyW#^s2gd7VBWo zhdQAo7g)~b&0kY+RaNeU!Kj-?^@CiQj7~fptg7|gk$jpWXo=($BgC&}63RZu+3v`G z&e;`skISn}b)Ldv_>9GC%@H>9%SH8W(0iER$QorvHGVMs3`#A!DtAWSYwrgk_m(tH zJqN}aQ;m%ia?L1;07S{28sh++%DqO1KY}C+Iu8C_wfrF~!hg_|o~~wIxzSV{en(Sq zr4qbOA#i?oOat35;l)QaY6bNMQ{)2ikJ(T;W~ zZihD11t{r2CS5m*Sb*{gkk+^GoN*J#OdvNO8O3;jvJ}XfXGZbcQy}Ystayi~M1Zmt zh|7DUIR7t@AAl79fVB`n`3XoS5*dJi-&T95pV|z#z1qAbsXRks2Ii&)fPnwh+$|Fo zLzaiA?rajZbta)0ft2w!i6@>W;a3ufQW1Z;1(`%SfKms@xnPs10#I52d0X5hasWyv zAYH>vq8UKx3#3tmNrVBEVL<+kG>Ke*k^$sJX_GhsQ09{4awg#cD7XTMe*?4m3a$ro zsRkoo0Vz?Bk)1&5)Mn&B7JUGpC)DFW3g&8Z3SJ`BTQh>ilIYZwk%vI0N|rBxbg9qd zY%iF_$^SjFGT^U|`yf#M0}@@{B#Hst=+a@_fAI5}!Ah?heECqlgLx6f=K$)x%@WaQ zJwUzDnSw+zA#~UCDe@@3 z{Xp6iU>?ZgYuao&mCVv#tdS)il}w@(Kvm^Xb(>}2rByz^NmV`p)#ysB%5EgKS7KH4 zl}$ni;JbPxGof$3m~2)$_k5upYnIN&=P# z`%S6IFMK}*^N9fUh3^kY>>+7HroQlf1ME4#y$MH#_HrEYS`qAer6x}}O{yTY0p{Zm zHSG6(&eY^FH3L)=0K$DqP0g69vJLwHwyT0&V{0+n%^+Ma*@ik`TcQ@T{R31tiLKWR z4O?&ieI(Vw@x*;|u->~iTiBy2f(oFg617{K0IOG(yEV0jeYbv7i@S9Rs1{V^Zv7dF zQ&qWJi&Zm;BGqKKCVen>>zi6EbOefq0rXU2?$)slHQhS9p`&i?S>t2fnn?ma4=&uL zHh1ePFkfDcyY*Kj&XY7EQ@gcb3tE%~~YF3?guJFN**CdTnaTJzO25UP%oi8CBgD8^e-SjDTPKmX@s__X%bCpve2S6?VH&rj)krS)n_$H z=-&K7ofqUz;H5PQP6B(UKZBKLvc*55(t(;RJX0(DU*x`)!mHM@7k*0$uUyL{D%K(! z?`^2Hu`B&T*4$b)GmBG*U;DbKNxzoW3AH-Zq6ti;G>P$q&<|y`t8Eeu0ZJDQ;24Xk7S8@ODTs+AY`l*Qa%oguQ+O&Un`rY&6r3TLEBhIda-(- zo@VF8dBOb&F8Pm#-E3*4Re5AgbWvZ!ZnZrirXEnDMwmhhH>uA9TYD&y5XS@CLL}w@ z^hBl(Y&U^j0Tc@6C0cBK>j9;0E$jxnXdU<$3DIw=&$f@QYZ7Javh7RNwhzz+_1P>b zpz2$f%yO%leSoUkClU9^kisqvSo`^)pIw)=KZnH8x-<#sSo=oxunGng8pMKMX|zAv zT&umm0WOq{ic7&;@d5HBDsBXrucwjZ(jj`a<6k59MLq8LT%D%lE7muOsQTR6@wM$e zZDIp%?Ep}v)Th=yv1#o@^RPhe70!@aIi&DQ+1>@HF}FUq_Y@Mx>(e0a%uq(v>8uM@5(4w>Z z2zzhHApS8S`W+3WH#CGdG-Ufcc3_`14W&1Ls&7Me>Cx2QKK>!-psnEEpb>hjIFR|E zo!yXoi%OhgxwlRt_h>`ztvqKsurxJB3vq3L~Ld3OP%mMVpvJFhEZw=B3bq7Mi8dxfc1CLTUrNs?^E96q;aZRXho3 z7@~hE1#|)P4kRF6w(2ur3z~4NhB#=|{Knj>H=z2b3Ad_BQc$&(6P0@-f>bK?rM)HKe!rG4YP`Z#Kv{|q=y23jz!Ddvy4+W8|xj~1tg7zQ+9 zuNBSkIMtN>#1LoiC+(WBpTvN&YBTbaNC$pm-UcP^LqiOQB=;Vm@6wF9M>^pCo#eg@ zR7;4vd!pU!lt*mSLJZMOd3HJg!oAI;+v_!MFH6+f$;aJ1I~kj@kk=@AsW##9M`kA_ z&N}0CZ7PG(@$9s})&J}4r0ys|8K;pU`rA#}HlfW;BB(jrCNa)__Bbci?f|NG%}MQL zHkMZpov%a(4+i&<%`jeM1Gxa&vCVnBpc1E1JYIa(+9VdWX2WH>YYg`Yxp!N$Hp3nC zRJUewyokqm5l`AIZ)Rh}-}%>t)VYJ?&JQtMXvXbLMxCU1mXPN_!a*rv6{uFI5?tDR z#M6WU+zW*nDmG{Chd_T&a^GCn-kQP9nfqN(-B!8#JFuo2=Wm z#)mc>=g~++wc$ALh(sbl__xePheO3jsHC(4vK-lq+pyuO#HmJ@+3>PNRs5&}#ebEG z=Yr}ivG*#O-+TGtj-H$b6YI~yl+RjfpPXKy*7G*}J!tq$of2ipO{?QnnZ!N{KS-PFh4OJY{9V@hmx9Y<$}SWajCJ$9od#!7E{l@!?(8J zmTd>s*0vP<0~*;qF$oXz6H^#9i6ojIT0G2>the*q)U&spdrQj+#YK(mJKG!~NgkRf zqbpG3qHIp4ho(7Ei6#-5$juqzpg9v;%F`;K8ka~NwZD-~gvci&^_-I2LA0DxdJwD> zZ^d@q1P1E>>N%w#ri_&0q*8gHxGt5FR9dA9wUWmU+L?r|9oaaxK|UKddt(qeWP-!N zo)d|B1TxBkG7{jN0we{AWPnQ-AbO(pn~YSU8O&&KE5RG~?$tS9v(*pBsc*)YG_aZP zjs)v(wc@bN2HUK5tp5@R`d^Ux9|hH6RsS!v`m5>-PpE$`*t2$PR{s$Q?@RR~+nYp* z_ELSKHLL%G`IK*MQGZ8Ut@`G1n|S92>zA}O%`dkBO-NVd%z+Oxeb*}ehQE0t}a9ouYTn-^ke7SC+MI+#R}4$L;I zv3-bCiD$MQLDjwkdF{S7_Mu`P(~0}75W^P9eIn?`N$%$x+bg|Da{nGwJ5}x(Z9g`q zdx3k~FuhwF=AH-o%aVJwCidK)N$%x3nnan7#C=6aM{|<-`HlGZ2-BxX{_RmCz9aLW z>41NmHq3uLsMf0dk9GJc|0Lp{8m2!X`JYCOW0L=62mH55{-#bQ5zvYF@A)|YOyWN{ zOdp!S{NqrgW+&$V+yQ^z1m-^)R3nMM`-YCTE|WuShlJ@zO15i2xKgq$+|-_Jie&p6 zs4l8(zp-Qcl-Ldp)1Q%S{{!J$$+nsUwg)BKs+~=ua%W;&p@S{kFmJH+4>go&%WS)W zuv2Gdd&dD=|F+C_38)qkTdx+0_AaQ7RWEo&WBCwec&K5#l(ZLhcLUT@Jd)Dx6weJ% zTq7yw<8otK=BION9%9@=9O<~6a~I64U1-5j0n4^{H0_T>EEuW+DTnL`fO=dmgBsl` z#FO6ZscVq2C>h;_w)#<`E=1M>Tit~hB3F_4y^E>?9haMFt3%6>Vr7XH9hdX(if7)g z@+HXS?@<~FXdsh}X1BofbB&0q)ypmE4kT`*?BVBnirCg`@ z5Kr@&?`|gXUsvw6?3VVnJe|nBRvnZv-Kf`2wY49X*vbj5Y+Bee#OT$It=t2(yAcQf zzR)QTYBX&RD-Q%R1KE?iv6X#%pkQ){XTNsb-is*tr5iot`mmM%1@^idH@aGPlc?0) zV&z`8I`j@Hwy+&rc?jszyGtvlwX(5tpAgUAq|~J#Til(kybp;z-C5utNZcSMA)}#t z94R#hiQ+v>BD9BGTT&zXvX#3bw^I+c@|afku~D(Tj15pN>Ood6U=tg>Wuwkn#JfwV zVRL(qi2bOsTk_x8+P)VTO8zfE^|#8ub_e@jG*4Z`y?dxZ>A>8Bk}xPHG55Qz?X`a@ zxwi#Xn7U=NuAx@kS7heX8N zcu2oc?>AEF*C6|{Cws_wByy#|w@ADsCLuZGA*9qHBx?4;qkAvuA=HSJP;b@7vc!A` zJ>I?t6Fahvr-N#0FS7BAj*jBcKbJNgz`JlKAp$OHHyv_G;;>N98y&f4zX6{wq|~|b z_C5QPlzJCbw^gZu4th3dc)axy{J)N}!19DXg^O1X)J~?ZbeniB7gd!89uXSQ6Pl|x ziw(Wer2zF(aWoQ90Iv&NMSH1Ooi%Q7frsREG}Q22CvIzJRPETCXN?;UEUdP3A}Gf9 zHpy5J1!1u-LJhv1nad`Wt?SJeGbY$``L`2W>^i8f5+|>#ojww2(Zv1hP(!-pt|Xf< z@-g?O3HJTbxifRG1*#g!#Qk39k3?FUjdo7kLjzZI=1A*>x=B>u{||Ub5)`@E1(9|i z$V_BUP3B0;Bo%jtdOz>XK7R-$2b1Z&WI>L!`@n7|v*Q=aZiUL`WBo zv~Hm5(nm(xtOT1#+ZF2Fy9-O546=+q9BG@8*w}{!oYZ8XO z@@*b9;(LxXSz>q;ph~Ujpl5@wCs-pbrK??}Jx*{GY3jZG4ASXHXu#2~ z99^d%(TWi5s^pS{|z-vlHA9Eew5_Cv7No$21)MUfohw|J*nGABH||-?VOy#0>A3U z5%D|f{z~=zjp#|ALW;Q89T5=>#3{uj-u2^%h)0Q&GnT*I**9CDv{?%6RTtuj7zQjo zg&p)8B)&+oM8suV9duzOqPufM+y~v=6d4hB+u1~f66QTZO7-jyH}207Q4xvg{w%OF z67Bm_M3jc^8KhJhBvv77X@8Cg%5`!HGe?9hQEmLpK@aA3XB*!G)g5B(HPLZIREMA( z@LtdZ5m84Q5k7?>(KpPqOAqc@uK_0EK7gfmXm8)Mje4-uMxbgifTa35=-Hs!?X3|p zwufCrv}*s+h=?Pd{K5i$>%kF`3Mu^u(A%iO91)v=tp|8zwRaE^=5OnCwAojg7Ut@a z#P>q|sC(3Ic?d4|s1@cV9EqM0=Gr@n%@HxsB#IA|2WC1t*#A#rbMydJw}JFjw!e$r zwga)98RoiIvYiIP$&zhd2W-ERY!85HzsmNQ9ot-DJ1fl9wDF z@F0^28boY!wQSw{@^L3R>KHVL-_p~)m-apRaCJr*>*4D0j&Isb<$Cd8GPNi7?}-WK z-T&pZ`)|G}oIqz5h5Oe`J{1}SHQ}A_bad#CJvHyY=^M#(1G)D=a-gCq^j`%Lw2JA| zfZyn8eIr3X0ur=`3x}cbRZq+N(4Y&NeD7WsrwwweYh_lpmsPmRtemE>scm6`rm(MV z;V4bvr?!QwG=;nQur4r|-gaNqzZ6 zLIaF~af9SpFMrJ&jS0vdJBUZq`3~M_wCT&E=`K+1P)E~S_Ah9XNaBt#-FYeT8YnMG ziJ4l70jVb8m&y{qb|CSvl-L?nEmKLNTVp$kIV5psn65!TmN*iWLsMDeQ?10U$o)!6 zJmo-Qm3}PoKB(@h67My%lNc5NiMzsdyQD<#G^~TtSYmvDMq*RsHcVrQw;f2_EG13? z)xUY8QzJCJBfVTpn1STv{8lBTrH>#zwH z!FeQjcbIOA6kHb-YNfMaAEQR_IOL8>XTkpU?FBECg1-aRHdSy_8^OaYg5$v2X-}9g zus;jFj0(R>!GpDe3k^02pTR7+yaU08{w%l!sG1EX8=tc8)ohY@AWXMNN*n>o^uh9F zrdHyQ$UPt>Ce^oJtd5rw--7BjN%Xp3KYvp-mrqO(d@xMsHGl;dA7T>0Lu8PeG=fJW zckmDv{E366zLbKGg6i-P68t*9VD;>RC0a>zPMB_{6#X}<{3%6eYDIS%Y7%XSvgoA_ zL=PFjqPKu*(@+xa*1$&eQ&qJ3zH<|^h+-B_hr)D42C^FGQ2oqMe&4x+DZ`{NsnSbO zypSsGaG;X&K)C=Mh6Ug-Qt5)NHO$8pyyP_s%dKbY%CC(&Fz37P?9uKQgYbC#7Jukh z!whuQnMQIKx~J?ySC)mxMsE+{L5I&g=%9}WeWTVu*Xw9vccJTWF6zxV4|-?mK^F12 z0j4^qzYJmn4v9kmB^JoI;UMyu9qd|S4-XO-F?s?w(|*49UDP* zHg0+FOZodF`@!O>)xZghvn`Ygg;lc+z=_Z+1MZzm20E$U(mh= z1T?=---q=IVq)ShM@9cG;Pn*7X@^XuE0C(AOrj#d*dItet}>YUcS)mfxu9S;C92+%mtL>j$#9MDrJ8`^h_!n*kd#vSn1oMURz4pUl3I{GkbG^C9o=P z_Kiy8hs#Q+TYfZeW)4K6Kfr4NSCP+^G&Tjb;miwYX`?jjVq-h!^Ruk^yOY$c@3}x; zA$F>{S${N*o45pW7LDd6e(#`(Thq9SdqK5ZZDOvYCaQxm7X(R3wKnU^r?aFRsC!LH z%5@+qFr6hik1>e?V@T2i8%cDVC#b5%0FBcv1@6A3&H3sjdAG6X-FWKIdYe6V5a;E{ zCS! zlt!}0q?2@O*T+K`Xw0~eDlTex>oPq(#1v4*aSZ0@WT3no0R`8h_)F-sh7|k;NS(1J zQ3>F@56BfHjuUbb$ewW~u@m5Y3&=l6JR{@@kcyv}L=+(4Ur+OGya2tId8Z}7Urp?u zs1!%y6VMC*DA7O~jyH)|fKm&{JtS@d3N`~$HOZ`M!L~sBCDIj0o1TpH0aBKc&=a0? z+nVmnW|HmySz5toh%n#QZ9D->E`WMlHyw%83A9rjNUuMTvjo_p3F_uL4THH<{q<7) z`VL6tO7Znh2XVWzemH7mAEe`^SDwq=2A)kNNGJBq~NiM-kN7ZMLFOvczUDX~l+ zF_f8<$uNmh8O$UBiTDg=G8T!E8796DJ-LU?4q@G8o{2*p+`yiMMkJv{Gf}8a1F{!9 zb^+WEG7CXpnRw53AU78Ni$Rx*N*Afp5+E;8;VB?w9gw&p=&JQd)SqM$bpY-@JvFRG z_tdZwu6r~N6DGAyU8Y21E$RFV3de!N7=ZIJAnTCG26#z_vs?_$vCj9-3zpLXQ1dhi zWt=7~Q`QY*|2T!($0y0Biy|8TP$rv%(`5FKxFmc3STsz&I003S$>blIJ?)<^f+2C@ zGNsUPmY596q{;H>B3L6a3%M(##O@9xD#Kagub{f1N?egoqWOctT(guk->aqiEGhjx zYQ34vOR?iNhPG%@?NgJe@+oU_+<_+Zr6yfL)%jEP$tuaN?HSbe{>v1f5iETwC?|d@ z7bV)ZpGWRlDe?23_7a^&utfJMn0Kd;#J}yW{gfmQSf)&t5-WhR+!U4=7NU_j5V`%P zu*Aa-Bo31j*Mn-UD)B)+i9v}R6EqHQ9bw%wN~G~p-6^C`4<!gVI@RjR9{p$))ttV{lk(Ca=m%p(FEi24veQ=ujfVPTP<$1t9|Jf~ z19EAqNt^`u?gbM1^-KDgL$>;N5&k-<-{g_JtfNJ?{>zctZ}QBaW)gD&>Nk08$>leB zBoRi4!{8kc;~yJ^5#j`pUC7@KP<{dO5{buzTnEx|x=ADglm{9zzn4J#bgvA;wdO7l z5yBGvq=GH7eWSqIxdjRrqjDxO=m6wA5QDx$I^jF z^qawB=@uk50EE#88YD539?WDnwaFI+k3e#p>VyF4F%!>MfMWA{$=>6y?v$*~Idtnx z7|Vh9Am_-h;CrI$BBM~?q{QOyJMeh}P#OR!J_}1=K*^uEQW%Iu$ySU}uM3aC^huU2 z_!BW^8WscvgvjIaZWX0}q#Q-VXQ4O)+y(%Y4M29y#v>^}*#>0oJcKJiIRL~n6XPL3 zIW>)bDaj-j67u^rS{<0gDBS~7 z9H4{)`E)tP8-P*?$mW&s8-NlAnl6KqkwQ=|IxBBy`y{x@w<^tW5Z5zaP<`3xJHwGKpSUeAPZWlot6>%9*j+ ztM;AOz**PuRr}A8*tmwT+W&>bgEf5BzCtzzA%LE^s8{Vr0UMIdSM3iYaVVRw+DCFr zEQ{gbtYQVmYOmTq0_ojs>Cf((NxWaj zs?-8fZ9S_p4~ZG;k~NcZy3adnQs^r9naJAmnhl1 zNp1s%X{P5p$i2CVTlS}emK7W?cY`*YM9^kx*;H-IcpEUxe8XUcl-K~2ahv5fpjP4p zz+XbMxRDh%ZT@(M7ep=36kkZDFB-$@a~B zBZamGRm&~vUV)8J^IbmP0wl3*qm)l4aC=9i%Fr!x3s5Wi6mpMC(c2w}9zKCZyMB(& z{G2ST49~aRy#BjEg!Hi)faXN`-KUyQP#A?;WvTYRK)NH5K#2a5LA*xd5h4B>#4ECo zb#9~^*_f@|{N`h=NX?oT<+o@T9cw_wH(!`U20%|GN(JP6`;|!y11PnDjQJK53P5QN zWbAg6hyf@aflS+J65#-)50LNnm_#RlG8D*&AMlt52$(pZCasK#0dv&EjEMoCsfo;q z$|fY7b4=p;K~(w<$l^m-Z2*)UAZ35VB9@RdKwca*iCX~WGLSpROyWC$at}!5lUVPZ z0P+IJ%~Kd|00B;!{FxlDO!H@Q0)jI6%Q%rpq@0F%07?}g?Q#*!0Hq#~h8Hl^{DN7r zHIU{Ld4}tlNxxdiNKYUS`Y|#9NZ4RTh5@PD-;DTv0;J$n{D~RB#q)qv8_mcvAca#I z$p-R#E+d}0lVfon5fWi}aYGpS<0A1xK=4YHn> zj>wgyw%|Hv*PZlEJVWxTWM13A}?`x*F96YZT zu0&1d@SFj`(=PGzm^V|(V;`1K{TdWsUgA)dRN7Dtoy?(n9#py1Zub&>^9_dT^g*_d z3sgS*O7g96*(AzeCcZxo)A03r$HuT+l-xSO#d*7$_XHUUN?yYfPxo+WQ=D&y$(cO zxAf_2vjX_)T%#!MH7t&c)^T;wz}{w+jVc zzi>(FQLBp?T~V@%?d&hRV+wtB5(NVxu0N@!nm3-zd++lSH>G(qQ8e!+?N6e_kId^w zX7wX;`jQz{^M%~wy2>LY_JMvUKzRei{}vV>0Jjns4I-D=i!V$*Q^CHfN6yAh z_Q%Zp1BK@_cCuX5J`3=AG4p>p+54IKoh)vebTVbuN1W_57syXD_M65|_7B88zhiN- zl4d9CBF$Rlu1Og0l9QGEzdBh-cCtj!C){Nxn~uboyX<6JOPZZ5bvip)IKBzysd*0FPxm~LrgkZy_9#p+KNw$5c*qH(U6 zCI1)addklAW(HefGQ^I&Pv0Gp&gJz0vGahPs|6BG9S)Bi2@z@M@uO$$GQ8W1w?=RYt%l$=31h;;J^;Qy;&6z`=Nd&S4`Ljt`!vYUs{0sgKaHFp!=TVyy z!voqtp!!3(vr#hrFS)(3rC)wGcj^_cES=5E&Ep_D`WG)ZA0zSTFJ5l?KgIy`STfmb z%cOU>az!$!2eP=w%%ndO{T?%u1xU<)ERXa0MABAvxKeQr8~-4R_C03fpLSsU5_8!2 z??Cm27`cBtMr-_vwAsqH)GhCmJA?;~riyh?SnP>OgaN!t@MDDaL#vh_MGb5T!nM=P zXt3ncKD@AVXB0F>?S{nRz%&~UC+^BfrbBV^xHL8Li*Ro-7u`>9wDpvuzRpeumx077 zCdFKlUuUaJOu?3Jl47#}+!3zSnydW*oo!(8?Gv`}B_u9BG0EScB;g0beV5JUof*?p zxE#QRc4qWctnSFPMOJG-pInPJ+*-v@T=OhwG zpVI6mB`D8K;sbKr$LHszzLX+fKZYyS=dm9of;j$}eD|JW?+0b)u^-F<)vRaa2b(8o z_k7fMA*I0fJe~z4+wVa5?K2+5;!BxFu~CxMUnqH?vU)#K%Zgf?L9C)9e1DtAt&RBG zB#Qqn?MTIb)XGBh_(Ai;JgxnD&#<#!4som);ahD!bLQs zbX%K76WiJm$|cEm1qhcuXPXW#ZMNwt$?8{>oL5k|eg*B77GT@oZ$IgD~|4E$309EJsc@u*CpnBarI< zm_!sn*$(6^5}7;v{e;OJ2g;mT zVEKf}JBh>(;{R-nNIQlEvFe%F$CW*jWz2Xg%O9O3nDuIxghN zXDz5!zv9W~8WO*~;-N9>wMj(2mb>C{WzD!r|1D4O`1uCbJryW-x{G>hlb)9iOj zgx86I4z^0nV=oCXM0zWWIKsDp`G(gV;kS^uPSS`>jqs2+c;EoIx1VMg&0C3=XQZy{ zBKCq*5cYq=UQl9?z2RFeVlUVTs`YQk3yMv$b*?;O>m8~4PO?1>!V{8hKL>0#O192# zu_An{e)Q&3EnAxMe9D1sK&1DZMSO^>90()c(j#g)p8CcD8wv2bJ1F1O$M#ci`Vtpo zq^`qaR_*}k_r7K2UOP~(-eOknEvR0Ta$Y`j?H8W@liEGyO``0-)Qp?6Y~5urv8@}a+>&hDfw0ZL%r?aV+Y6HITu{wc+18nD>n_>Ec37l$ z(WUGzyFj@0UwUH{#qOeekJSTm+@Gdd-9Pa~C*%Xly=_5rKa4?LJPMxx;d9?a5_82Et(v;8}Bvid5D~%B2WaWTQaW1YjV2Hv&+;- z{b9*>5a ziLp+Btj1j=j;h8M&~9>KHO?Y&+KJV8g~T%_sm9iHn`vWqq%u998ubbU zins!-#sDPx7LaP}v9-$FNc|zHh6}0TLgH1i-=Nkes%Z{J>YD|Tit#h{PcL1da0i%g zH9PQ6_s`fr8-c0;K)657w|r8+j7MzSmeMWyjQ82oLD(N){yJWH?dgBy?w0~12ire0 zkCOs@odbn8KzMyQGT*={cP7k75J_}mDV^5}7F`onsyef15v>tDAGtG~S#ms+7!lIKMh#sC zTD$V+j|-E;_N8=hq{M7cu96aSv=T2P_g5)#yaS1UNQnhq0)>wYHFkdf#`6599`qu? zElTMIu4KV=P@#$o3y!Ox5xfhz+g(`j>e2RsyRKxxk3sc_1iQ~1W7pKd;OW$|l4yl{tE<^G zD^Pu@o=uZcNn@G|$jy~%Tz8rj#n&{K&zgPsI-)PrYGXHW3- zR2LTX5r=lRI@}Kr`-fQ3M;vN{uBNA)s*}dqOx1se8>(ls)IK2V4NwKnLSlv|3*3&x zH^d~QHgtbVO4XqRvL1V~ABR;zBOZnutk13e9T;_Lw&l6C)pQ3VwD4~Q#!29{U@hXP z?E+04Z6yiM!}TTBavYhw0!3jjmY-Ke6Gv^4+uDme_x}*~9pF(F-`jVSY_fZkY<4%v zZnB$%gq8r(L<9sSfCU91ARvlh=v_zvX$nD#h?LNK@4Z(kq4y$E1%7}Hloq54sNZ|$ zp4q+GUB5ribHltdXU;iu&h$HXc7FgpV&}4RzXjDd7INZah^MPF$w>-z_2M~;>#XF7!4MfT`+V|gnehr~ZE9_BS^UVilSi_SQTui7g6ti{g^>55Tt4JTA$*pn4~YN-|S#A#II7Y)z?Q zGbG#YAnYR9?hL?ov}C&kREq@Ls|8vWRnuR-@TsN)Q_UCW>1UM3k@IL2SIG&AtzOLTkM?x8dsh#?W;z9sjniU132-ePva|B+?G9` zJAevSmr~wJ9l*X^)TT;CW$6NR0EYouAi60Y(Son}GI_ap!shwhf|rA8sa3Y%U%vD) zO@-oNFXnR#J`J){R&K#h5O`!|6BV*yEn<^Q?)Wl!rFdA41K`A4E4jqBS8;PIB7Ta9S|F^BC*&5uKm_{ZQA2aIj0>># zOc*#;zM^O(PM(QL2Jz`#+_+V$w-wno#>gQj$6vkWQoZ}2x+m1Tl-PK(W$+k&3qDXOUn0$*IHGA2hrKczR!iK<06FI_(oF^uPkR%#6-c<{ zP542dphk`LdV_x%o$NHZcwF3K?l{a8BWm>w6lF>**XnZ!oFSudrJ`)_r-pS~%;pVo zPy=T3P8{TK-j<8mywyPU8d0lx`pp>8PwXA!)5II5#!g$z{X|P-`c#PdnkEX+VCNE4 z_>ll35IxKxCkmunzXSd1;Gz|Ex|C$6XQFW4SBFNa$w^DN zn`r^MPn@!c_-T+&578twy!8^6IuvAso!mn#Ltu%M1)fIW1TjgPO7jC!YT8)39spG* zPEHhFLm@s))lC#`1u*KWC7xclh;FYD{~Swch5#lFmtuynYOHRXaSgFD zbtc`3ZO_!O=929b5I&G>ix2i^TYnj|EgSDrO2-r1IeNB^30V8g0bBD*`lb({DTo^4 zF|9)Pd5Q!cPjemuo6uc|FjI{47((Pm%feA!dwV~J3b*CRe*-R{ zK+a#)0cpsQJt(IG?nVsgB81i}_%ejFmps>C8KK#P5ERBZ_LK+| zxD2Z+=cdcB#;x$a_YyW3uGt`0vq8>4C1wPZuUz3RwNPGBSL-$0qX%d8>KfREbjwjb zxbTfeWLHb3E=?D&ZAi=0$DR%8k|k_eD|th@G(24bkJymzj6hogv>}~`z%~N3A#HcN zln6YQSD9IW4e8G~$+O{Fri5|RO72oKk-3GNyVRiw40dyux)Onq`WBV!sui!CL9!Q5xAQmM~z|3(X%04p@eblD*e1YKGCH_Cvwr+BhWTc?gY>EwNJ$o z=1Z&e8`9%JJ2sKk*owgBL{{T}2wYB-YOL_(^lAxX@@lqpaFRoT~>y29qIa3R9X*wd%nplbHhjFA&Y1X7h$FJe($2O2{ zAyUUrH2r}3udhXKcLU&8L|-i=ryo?X^{M9UHEhe5lU+)=WSV|dLZXnNM;YZQd~-03Ja`>z#Azv z{dh>z4^rw80y&5pkRqoauhT72`bA&qk^UYjz1B1Rh|`a5Y|fBzK1C^&7TsYjn{zQl zEhH@*pJKeoguDssV9quGrx1N4h0U2unv_X1?_SFVODv2<8XhyHh|;|YlwO!iHxPmT zg+1ns^VOkrTGH*cY|gEq+gwX1#>i^TlNU5x}gM)_craZF~WuD*5R}}YUj;4z!J8zW7Rror} z-MzfCsL31sW>NY%lUlO3PN%A0=yb~b!dv9S8@)wd@`bm^zi;#}@^s$lp@TN=PX~FK zSU2gtJ5ZOBw#j?`ZP8ac9gcqGC3@dW>d=0Z-d;_IcoH}SyvKB(#xr@f?01rH^Q&uO*OP{e(E znXrSK742Zs=b-OioF+)s`83pFpj{-7TK69;Pye%i?KX4ku9oUjDyMSm?t?&fD!1;# z2<%OD$1_m*T=>rWEZoRF?r>Ct1E?Q1Bb!i>yn*Z-nV=OLr2mvrKrk zEqu1+6EJUtN1ScRLtr}rI@|IBfyX48@)+riOPvxfk7fyty2?5Gl1{yo&tE$pb%pgL88996Y%K}QXgj=DzN50?q+zLjnE z9Q2Ryn6F7k)hp>z-Ym(E`Yg-eQBhmjQM*C4qa-`(Zv>u{WJlF2; z>HIRQ15hhGF*BLv?ycU2Ig^F!UvLrs<7L9iY-68nM&|V|u}@Y7@JakO_Q^d^-Fb<8 zQtZnBJ`u+yiTkNCVM8T%M`;XirJ4J|0Ni^^?)5-bw=~UZtLV4SwO<(`w%?ZtyDZuE z0%4Y9`+ESkCnVdIpjs~2zVF92pV*!*6IS6nW_t#NrzG3(Y=5@JzLW1&%eXK&5Zjh| zw&HWl)||0|tZ0qO7Cy)Kig;K@p+kqXW!}90y~iPyE0tWe?{Or@e-G&t>w&~E5du1F*o1NmMT)# zrKFT)1=j{pu>N*dur{dPE=vj?&?_iJobeUWr;IsIis*_=ou!B~0Yt2mBF2F#SBUuC zPs9^n5q-;;i|mkfADK2v5l;e$h~2>=E`#bvAtFNmb*i}BAh`yr(Va5JyF2xl8w8hg zDgPpexZI!?!0UL#pOoj4mFeMMvU{>*6<&5J5Z{wR zGivIDmagDZN>pH>EdmttoD|v?RIMwJ&?`Pd<>dzC${Z4Vy^L{dp5B!sk#BefcI7by z4pd-Qx?gcAv9GWzJ0Z{pkD0g#S8fGb{|dX(TG6FMRAg7?)zn;hco!S?J*2!{Q5sfX z#vzE!smNt~t*3t(x9#FGZU@!2isZ^#{rp^+TuXCh%{-R)Gbpc0i5azY5))r_DeK z)-LFCf9{6_iiEXIg zIr4O3yR?k?xnx@fgcU0@+qVO-y(8IXfvTHe+f09sT#e!TP{aoHqc+~fN!2~PIC<*5 z|1Ma~GZb8-SR&hc_jScge-7{I<_{2ix;F=iJ>91Rc+8YnC3&ut3oaXce-GExDNt}i zWgatoGi9rfW5~KWE<|&f+qD=5vDRC1h*GY-WTRMsPh`lW( zE(;*>fRvc_noBAE8c8hSFR>hW8vZU5{LVg>SRa&iUX!Qr^b)^8?9kU(;-LT%EAL~8 zyFs-}NNnyeF_$F%Qzkf1O1ufmU!=r5y~M&*T}o0_mUult@3Txw{1{YCt5QeMuV2BA z;0ur7d=mU`ncyn>S@0la__C_p<$GHv_&daImV#ddC~A@YEcgMa?hC<_eFSS?rM#qD z&HFT#MnOFk-^-!jITfx%l*gZNx@?bjRYK{myimF}FI3#17tvx4=A3WRrE5Fs&&VhE zt2z!cA#L+6(A?5Xr7;F2#Yzcn07@1U?{e9bhp6 zqX^suIP|(p*@DOT9ANYt=&|uQO|S7?HLoIz+Pai6cXPv6xvoLg1?Z+c$+48-J@z9RJ1Q7r0L9*BEFCa>*!K~@u;&{BmP1{97v<=^?C$v zJSbZm2;b=_$9jDgT#MM19k~kTP4usViw<%X{2f#`I*J2nOZ>UbxTc-CKH4oS@D5j<5&dwEk)lKz2texcsY$p!i>KKLx=#j)0N8u@2LYyq8BP%TQ1WT%eyzlm4Ns_X_`5!5%JE%S*N$P7;bS1Ft zWAzFgMHYfPO!3)UiO(_)l!7OM)p#kmLjb{9Cs^<{P;C){ztjsBZ|T;M5d`pdClsy zf>nvGS-nV1=sJ_xAe-4o%4;yqr$b7eWllQ9^7esjkCgWZ0ym|+=)Nu`sxQ^YHq5~P znpLGPZ2VoeS^b{7sYb|u}jn=6?+mz@Vmr7M0f-1i+t5U9?ODWlp zRT+dp|9-M>wAR)7#)qd^=ouuP#$%=wt#6#JAE?&)3{=|Ae8|-Q+L=!$0Xwo|n|#lG z<8v^7(vSPbiv3+m`Tq36rY`r5SwNlfs80WWFo$^U$~Le3o?A;E2)Fm=*3w|Ae`}fj zJ-3#ppnBY&T1#VnKPY;)0<`iu()h@rF(f5D1K zDt*tCcA6Dw5306bP)(RUHNccbC^W}cq2t+MC#6Cok$HqvXyJb;v=$Vrr9uk>D6~~7 zbPiN!ghIP~6#CMmP@b^v#>+ERbPd!^w2f$A~|Rx?-l zy%cD_%%|ap^hk<2qu&?{9)MZ!0C~Ctfz$zVW6b(K)HU`9Z+C_(Zf7L5A0T&Kmia5y z^b9LCA5?P(h)>a0`R!m4+t422J0#m9AUq)1P7T0zwPYJK5G?6Y7x}U6PHe+^gvXp^ zwk1GVY#_7!E&$umv&^<7s6G{J*XY@*8>e_T#?<5N1aZtTY?&9hOD*&60Q5Y|y8u)2 zwMeaB5gTXLFrNdFwU&7|&gP%x&9i*oJj>M%L=M*uL{1r~xEnHgu|A5jTO&7=ODX?C z`}xnioJt28@12#CJ?&>C=~t5m%43fC;s+qPpQ?o1Vdp%ZqPxioFPF0Cl>f}Xex*16 zJKp^2{*^i_UC@JDI$%*(dByyH71gToHQzzwwI0TE=k(Qh7~D5xAXnp62rL^YtMMGF z7_av*mOd{hWJvl$R*bs=8g-%bazd7a30V$RjJFCb3dBwxv2D^Lc+q)o%nd;JZVoqQ zO7%46^@v@a!vgI-!?yVTMGCwHs^3YVWlF#`DUD6mdJtSJEBf(y9-HigT#99o{J4^m zwF{C~vZNd5z5W@!!f$-aAbzP?VeemH`_u)m+Joc=ThsjQQ~d&~I|Ni;4I=vlE%j}W zImGs*tgr==?Q#$w;~Bo~@%6X8dcwcE&|a|7-K~U+b#s({&zM zX4^#;rhWx`e8s}X1`rl}k%iR+Rr*&X%;8stbYfdG%iK+}?FhoQlI`~C{+|3;vYiX6 z*~HdTWU0R=-94v!C)%Sgdd^_UF9`-u_cj*p-bj@y-0IK{dRS6mF zQi2APDiwWH@%(63i5XggOE$0uSz&E{WJ#rvx5Qw1l4FLyr20Ryqzq8i6OwAp@GrF1 z8mSyjv%J+hUmK7F%iP@e5;c3bCbO5D8 zE-_on5SJ1$gp}UD!rwfOKB#9(hEeHw8I|r!eWja&Si@&o=222+MQ|xUgk`=l(_dyE zDYGl6It!UwR{V#dP7(KRS>|6P_X(iSmE1p?>2IiWlKU}G9U<=ONk2m=4d|nhEOXV% z%=Q5Y?@6}b1YleGGP5l;6!l;zv3;y(>n=ajTbCPM)?IQXO&~vq_*^Pcj+E$`6_zKJ zXb86ThO!ci0w}RgDlr;VBZU&T{mPa}YzJk9Ij=C=%^+Ma*&1j0vo&8~w)a4FN3bpG zH?znkw!^c+dP%m9VOXIJW476|{QaCM+13M9-C?3Ztojc>=MndBv%-Fm+T16R zL2S2Vg{56%wi`jXR2J|2z9sIH z0+d&q-8H6@?^$8@B=<(3&-hlJ-J9p{r0bIVNKlO+?&^xQezQAbdkYiapPB7?5U!SN z-~LDCh)Joq(n$|*h8sAS+FfN zij{EA_gCUKsYGW`breec;8(V5#MYJ_R_9ka%>rSrWczslwy*yx+XbkO2)4D>`LeZs z2)1$AVM`_32OzvB+5SA=-_H{y+ft)3%^FR9etZ3Y_&J@pyR*Z>ev|Vj(AOKy++!B_ zbN^Fv9|5Z2f_v=x05!KR)m(7@@CIsb1AWcSCz)lk%{`^ewcxT+%Ivqm-%#y-W0}8$ z>ITVFP3wIPmE06;%VwKTOSaZAn2wKOwvz)CWrt*28&q$Pp`v82`>zH;++WT%m$<>) zyMey5A4F{%oH}wrxSxTCg49$Mzbr zt(_hAiDWwxgu^Ar);c31$m-6h-Wpt>s9zOl*ALLbvj1=;4alC5bRoIj4) zZV15kpk$j4syD`o_oW;3b+z6iZ(WW0qre8Ex%}r!LWQDVDutsA4NRX0NBoO_E>C4{ zwy0ob_MG}pCoS7#hxPx1wQLW$t)-TS0%+Ow57u%vsAdW+hivdIe0O4-l^u3bvONI8 zJ(6wWV*l!~PqO_7R4<6FW$cFk=mzEx_s_G#D&1o4#m1vbjc4wi18^^Vi@7%kRkQKL zy+Q!)j!mdbgZNqzfCSS5#FE3o5h(3d@|AV zt>QrJPfg4O_Dc^Ef3HS-0^(t`Rz)bQQ52t#~G!b z<+Eag?y^~Tg7J3J#*u>MRu1I8dJm+<0e(gF^-1zWZ_?!(UO}KMqS{Z9=kKTxuV#g7-<)uY_GR))|30AjJ+8A`K(&cj zt4G%Oo7cM9r^aMv#kRc1=DmV!mnf^F36v?<+^CGohZULugiJ;BRQZK6QVgxL!nfVy zf>uMyYg6e9<>qYO)peE_1<;+FD$V=SYM)x$CM&#T zK1=-@WY4Fvc?(Z-Daq4V;Cl$XJ&nxU0lMdsQXLT(fv92A1@_= zNHL7h3b)odeY zo*_39*7%$C%zckpGuQi@^`o^u4KXh(HtJ6{>&r7;O1YV2);uV23UX^b0O|g!wBhVh z8qZ|2DxX55y;T zEbC@Tv-V!=(;4i`3cnzwHUwG5EH-Oz1bWS4fwK{qPE3+cQ?nzben8+lqAty1vr?>K zKbuvi2(x~**1t2T@PIpmmu9<^lC!BZn7hH>y!U;w8uGJZKYPIDZGdd`DXZfVIUDk) zJ%kmW0rW$3&)M=82-569R`|gOT+o9^**}|Zfsp3C3-rfqE^Uc9E~VHUk9iI2e02CT zEBVg{Y~I$OYdJ@nH*%d%t$mmkUg;rA9S*W#bJ)Bq5m-Kl1)fFVdt#ClhAB@TDP=++ zcCJgY&6RyE72*+_w?1O)%w_XB*7?`k5f44Jw(&-Pvo2ikQ>6acvHKsgS-%G3p>xTs z6QD%7OrvuD5zIOjU=5;|&6RyDQVavK!;>Cy0iPq~uesF6X0lle&vPkB^SG4F5%_4H z$E+KDb@(zn`Q1ls*2$ooI8T~&_j(_*4$KZ8Ev0S;*|vFX*6Rpdl>*K45tvVAT?E~8 zNvXvM)Iro+^JO1Pg~-X)%sLIR6Xwe)<@x~oV2?az{X0NsuyTV>k&?4x6CSf!e+A>8 zNt?KmP+}XC)?m`iCopkYBv=-}ybEN<&=T4e$qpa%mI>x+I0&@G zqr_K(?x&fF{1VCdIwF@MdEr9YNl<}`vAKUn?A3+xo#F<6b7ws9nEQEv&f(lfpMEbR zJNDZrY;N}=%+424E&dcrWJ2zNr*uUOz?+DEW0C9}NTUz3!+&`q`(C7sSwx+KH1QUo z4U1&oi@?1_9uxoUt3$)=VqxQeJti)AgQLNsQx$`oPN=NtX|-qlaJ?{zM5DX~jvF;-Z&eD)lV zP~0u}h&LU@`R8eXqc{V^K@;E4a@-&BNgujnB=#@Q9V1`x;RkX1#tj{Chw%${y7}Ur zzdXw$_3!CAqPQ7eqAq`V4`I}wp<~-#2i#xla?J9wb??)~Z_=zzQ3EN_m;XWmmllXdaMo_WPho2|>dZMK)_J#S|9p^iwk&C%s3KgXNn3ol#u zXS(N1a+>m}N%6Sqf4r2eSS@l2QFmQGxydEWTo=U#E?^L3ds=X;6Lo_od3 z))A@O^*PS#a(wK~;WjPs#%JrqnHTCZmssc}nyeGoT1TYj=yS}`%O9kzpfK^ ze~~V8#9}W|=nJp7>WjTZmXCErvW`%B9@G zV=M+xf3-__9gp#4fP^(JMa5&R4)F0>mr@sxu`a+91RfFi2%z>lmy&?T*bX3ZgG+JZ zG4=rHi9mM(IRMH=^ppff0lcxrr99jWFb&{??_5d>9^+zwt~)UK#bew6(03Pmof^E?Gk|P7yPl`A^r0-v)CU4jAI+w{{<+wlRLXRFvQZ`E@d&E zPy%5^u7)c!nO6S1uOYR%?djhje+7wWLHhk}I*ksHyvL{ENUH0?l;5vWl5C zmS5@K6u-0P; zk@7dfuTeQH7g#4g%gxdJiCim`FFrlE`M-*GRPSrB9=u!~waY1dPi z{g=m|T}atMC2;?`(>wmW^RH)*)RJ|e;JD=djjdc#;-%`w+<$q`>^Cs_36Ev_KL0%0 z(Gbc~y1MbM%#wTnwfcbkz+bBJeHhtV-mlAWB=5Vdq^bLXP;jug|XnI|Z$|Eifsv9GN*zl7; zKkhIaK6s12;h!4V@FzfZ>@Zc2a)$#{zDe^j`y=k{sz*O5f;<}#5q`v_+(({}#Q;@~ zx|BjksjiU1yAjjkm`h2=<2*5+zZAZNz#qq5$}~LAoAb53apxluSTfKUv;bZ1_uz-e z7zHr%2Xvo!j0phU&bXBK@fb@0gq(9JXU>xQ04iN@DG$z*`v5GLT*^N`0%QQ(2H1ng z*c@Q-6_+v_kFgU#$Nynsi^td-pu}}_iPr#z062efDHnfsDfY1dzZ~Muc^W`lwv2r~ zz%y>w_7wni_A}TB@O(RioeRhV3=RSm;yP_V1+Y}+xdUZ5~$MWAa`zhzPrtaIvc=HW)eY$nsx`> z;2jqm%-YVVtO#X;?MC#DJIv&nFO#5|u6mNmU!Zz&M=l@Z_WP{RVcYScY}=%}7|HIk zZEGP=<1X8_GXm}Jl5OL*de?0Qtonz}swYANS@n~{daH`x2`{nLNAv3O<|1JR?RUaM z>371#?}Pi21wD(`1gEus2QJhnpn{iegWv_ z-IG3Ovejn^|7N_|X=15|L3Z#S``|7Dx1~TwK03sFTEd4ej8N8)Qeg-*K~%$h`MDAm z;;ndX+LVjfk@-CGwA|`H@^pew-Wh3ou)xlU!vW68?TyM}vq5pX7wUf9CkL^H_v6FN zND=e4V-RsbDnO~8d7JA#=BM{rfq4NGcwpk8uOX;1?$gj0cj&+7YHLVvMtoSNnMc;X z$k0o&-xq*=Lo>5q3#!%k#Tf|QR8VnG<4p9Db*P!@Y$GZsZ8Vhkyl@?Q&`adK>E2Mz z`|Dc5@}ynEc;i1(y9kVxMsCDPMo$QmQ_Y@(TINOPyujA?39KS>_X#HynXsPgves1XdCgOEqS| zpXc(YQ+$sAS-EX|`05BA*B>Iw-6wR9Ku4ZTyz>$QvPx&?!V+@BB!G^nV2kv_C!+lU(~~Ol#_`zyLFR^oZUXFx*YMVE|#yi z`7G0*W$zFl{#GQ{clR?) zc%I39$N=@dQY6>+4?)%V8P)e&`p!)IJgXDfj)`}!AY%GFD+h#MJmXJ?w;{0U8GWeS zi9a2F43v*2=JW3~R+AzP@bVDSt@M~)U8h(4l$sIyUd3R^ip)(=G8 zJJY8J@sZy~@j%oDA~OG$H{NvC4MejLJ54H3ZM(k$Uqo>wItQvVe^VujIHp%btDGcp zVSMCIQCvCy2IXIpZ&m=lXC&W>|G1P2{}A6SeE}^+wtEMcf&+@R3xq9>53g@!VV@v- z(|=gl=m5fMSXtN=qBqBzO?DQY zs<@RRc(lU-deJQr+Z>M&y=Aw*=)a`ssi2xn-@B_FkN6cfk0fr1H}{hg^FX;>O3c?w ze1_P^QsUJB5!lNQqDjUCl{1hhSr9kLE@hHxUSKl{sOvq7H#k@ z-a^JcrBwvoKd#z)C^`*8u$8}a#J*$asa5lz@u1>94Sz5w9P$n;*q%Tiw`dx!`v5wey-#m zAAoyI40FE%s!POOeM9dkG31^iwg=qpi8yW&aJZ4G}LvCZB26!yldwuo{^Syh9 z)^6Z)C_a3nRBtMBOvEGhT{F6A`>ua9Q5sFa*5Rs@!_elTv;QHP{+uX zHLshlvc7}ZT1K|Ph5$B*i)DcWLG`7P1Wxns3-U?gnfUOjQsN>|&XW?8yXz!gL+oWK z@lpVZBc#N*P`Ba;C5c=7C1!x9;cR?(xWgcSpW3Zd4P}WrdWn4z+bfhM2JQ2g_(Dot z3#!#Z;<2lmPB=Kgv`LNTVyBzld$j{&rm*YCZ+=?BKxE!|;0vUKh>2h2%u<#LETgy-x3aUqaFpdc9MuURp@h>j9Q|8>vx_)?$~mfV4$lp^TcFD(JmQj( zu1r-*@|ESg3W_VTd|d-bU+v`bg_>b*Gd28C1$Xu3fFbV};;olxsZfvjS?!JW5 z;8F^Ym}NCapaHQJuAf78`YGPLB3|$MiAW!7X4juZ;G~&dpQgH%qN;Q~U*zOL^bKtj=YkL%M4xL#a%Jcl?-cjrR>h;S~)DSbJ9M(h}-c1C>_y|@?Qt6dS zb+J<0K(&RGQmY^I>nfBUFu~<`^Fz13zFY_Sl?bjcg(5K^M{<2>j=)Eevc6DmQD3Ga zYJ4QumwW_nM{<2B*F&o>W;YkFq{Xcix3HZvd+0A=L~N#oi?sBxf03TaBFzBRGz%3e z+rO*G?V;6|)^2@$$?M@;U-kr$(8%qnFN6KNigTR9^LqiZ?(BvxyDaRoUzn_bZi3>Px!1t4}qO z97RP2`V^Mqhv2@&d75O#9GUZ@Kbd$R28w#B#D$NKKEmY2g95EVd52Os(+G~jd}=~A zfyHGoW7iUwrY}_&Yn0S_2I}TT497rURw^XSPg46Vshm_+gy&csHJIc+GE5YL(NDbO zb6b+>|K>lsp-EhID`cXs_pkMQfB$O-1T9@SqOKtS9``WVz9V{YD@s41a(b(nO4gqC zovV_iO=WxlNTYhz7$UnPK0O<`c#1ufP6l_b?*Y^MNu1zw=&uvl88~7s@_= zA%};<2Rqc(9j|7IlY$@Vy$J`)t^!Q^1Pk33H(H*_ZPyI^t4eZYCwNk23VKPlxNUiU z`B8g(43S>efO#)rsMp;zbBH^F0R9lJ=>gYgEtF349q#vU9&RqcO^xLERwMvo-2>r= z1f=Y)P3G!$dXIzjZF&#Y+M%I*UVt1uJyrifcH-iCR_?I#jQpM`q>BsesO%luyXVIm zL?CQDi-3T?1Zl=_p{SlY;+X5QS#KS;#fixE6SLSmNWvkG|Jvo#APynYbUorHeUidY z{v_aF;6_R+t?xv*DVyo?wsv);WHB96cHXG`jCD?G$qf2Fr^sAk_{^~@xhjuLRcKn8 ziC4xVLeR;m#3Reu6aPk5($H>3Vtx|y`I!XldZ?~-C)S1Ltp4z7W^DsCV0f^h^+#}* zg7-S=h9CKd`^T_DPHWJ&f}M(o{$LoQj3I#u z=jONZVxG2xMN|FW8z6A#_IVmNF&dMmw}pHvygUkFZ5sro_6zz)9Q=04w9CrB=8pQ zLxwtALyR^+FkEo2=vD@ZhdHa1tUWkE8sI0j`|{*AafUhEut?+)6ekeLO)9cwpx;lN ziETgedWGqPU(-saC0M#OyNFSBj|ihnKO}L#?I)@s5%ilk`)4F@eLr7cNnSxj2pGWeak~k&()rDja0mQ1YrKH zo-X~V#pM%rPr07EO~g?g2Y9@{VQiFP|)@)@687mL3+C9_~AiBwMYn zEDdZ9tu`F#+Lkm$(Pa_jgB1W+KxXu9u~fX=6MYn$fkMQ#om$&Vn)Z`G-{M1j;+ea% zw$_AAK>0WST|KX~pKyjtRhP2399#9)FRkb+XGjmb_EmX=R_*$ZHTfK5iwiRzDT9jU z2Z1ZnWnonmbx-@U{Y?y4!UZ#qR#EAv#h+2IWQKswHZGqg`Wh_<`jrt$%S1ulY%%p3 z@u7dZo2x3{PpXxU|1?L?GgoU{l!U9oxaB#;UH04MZE=7sB48?#lA#K1ZOx%nl zir69yC|Rfhv7OCpZF&xQPx*_pBYDtjT$y0V^?!hgx}%%F?@*EM^>yXS5Y{qH#pnIu zm$2=TF0WDVH$*^Rh;Kjo$idfXB;~l#kAD${L3HU(&Mn<;uG2o#Nq<@+5X^%i)68?oAE%Rr zKkcq*6lFjfgha126q{`+4*31(?JOj4^bY&d?;^-tQS3c+hL<1SRiJUt3XfkIOnr^O z^A8IFVwAC$V*qzLJ^)Ug3p6KEVdDr7Z$Rd5(^0M$JkfN8-cHClibR1a*`E7WzGA<; z1%>Iyxeev+8T!-m3G`d`2BknW`5V_yOKCGmWl#DRk2X0f3ymzUbC4Utbt$^If$>ip zpD-6pk?kNV9;5+nr~pqSA;kZ0G6xH7$?z3M1q_xj0}yY6QIJO9r?aU!!LYF9WZRS? z<8a`>&eGhI>!iw&)#cx!+3CnLqk2TkcoW)yOdcdBjkxWCdXagjw}3+7hE!j?+Zsa8 z9Va55(qwzh@U%+_)QFbPC0hGT@W=*w_i}? z7~)Se(fo-|MeRi?D{!Q(#FIQNEFt?e&L9&CDvdUaxAMYADX-Pe_o3g=4ZuJKpmcy% z!+P;~6Yv=9yLZ$9FFy2UkIvlsWX#A>jOmSRfwy{5IZ*TWUox%4G@AdFz(+b@phT8* zq@eK*mjKZry@JJEoDD-MU?_NS)I`HE*+eQr1Q{WjMnGr;_7d~fqqe@9L&roxX|@ez zf&S>IMqkUO(Q4M}oxzk4hbSu*N_nl63OaA7iwEb53y%tYav{V@sJyZNxd1Pv(^cbX zdF-8qqGaBZcWYYsO^JF%L<4*}FX&&V-i4Dix?5Dw%#YUGuxR{`o1Q33OJ z5*2Ol1IzP`T=XWLby_7DoNi#H96XrbNK&1K851i4{sx+%;i`3aXf@j$E!+m8$9uBD zfHYr-p--daz&Ng!Ou@0t(61}Gh;aT0a@~8iwtKJ)R2eIqHx?>qaZfJQfOW}SSO^xW zKgRwtP}w8K*3d}G=zfJVAbZecgu~79lM@e0g9#zS8>UAdwDD?mV?IsAiwaybX-E7W z=;h2Z^XW|KV~;BG&A1W>;`+xmWBL5auBl0UuN0_g$AKY$qyXIne+!`i9~#(boz9QES=#!Q-f~tMXX^~6a?M# z0vy5dtU_;nK^@rjyW`kVlt-|k56Zu^0@psoD67gPen848{Gm7fO0pX(32S^AL#C#! zBNH+1Be)YB=Szl(=q3mCln9FQiSpJ3h#)IvXb$X3C7CK{>T}^O$&`r~OPuM%c@m6% zBcel`B5gwxitCDxjBvy3DoRv|OH)WR1(3_`SrQRsy%1y0IinT!uwoS6Mu9>hGDf_5 z=_2D}3WcZ;kEse^o}xm6DW~L@r$|mhlcyAoheX5JB9Xcf40Qa|!w{yq=!;5#jii!N zCvn3((V1iesXa~U_}_sHR*bxW$U>DJ$coO(rA_Q^?6ETAZh$NxzojWjAs#06=I z0#z6CE5OE_7+NZ_hvuBp;4febxhRmvq~Vlm&krg`8J4y+LTd75>Hlh~%kuR$vHuij zmVnYSRE(kz$HWoY+l`OEQ%#a3B0v}Rv2ek~4*AXQgDIO;yUk!A$2rCA> zt|^%@ex5i1bX8q6`%zq}vJUDTeuW6pyrfM8F|;|?fi1@+f~Wk8DyQFk4ZWmd-HcW6 zBwR*vOf~S^7Sx4U<(u4v@(){&Idv$#^uG>pCYLtW-+;&g^lf%3p{)Guu|!3D6Ehf! z%Gyj%#at(*SCz4DtwW}nLOP4AnAG}nyM-}w_Ui4QCyIJB69?(p4;AaG%zn!~GFh_dL>H-;=64CYOhZR&cwuWqzcK0K=D%_~ppb51qWE>& zJxGhsZIQcX*O7Be*!81}V1%wkG43_KkS?C)kMLQH8n#TIzj9{r&xk}#y8l7R5(}`# z5Sbzrw1)q&A{|2eE!G+NIjRSx*Fr5svXj40E-R5(bjmK4VO$r@vc&E{KH*+8C7;nh zdq|7A3I;kc&)^w>LRxu*fhtKHPficqBHR3pF85?%Dzo0(V)a!1*a@^?GmZIIVh#{H z(%r(%q#CFC_?DVczqMb1kHs*16QL10sK{sKe?82+GY3nRagKxaxTmG#=Z|0o!E2{^ ziVHTYyS4Glpu&{){!vLguf&Hzo4sjTDK0-!D;3suUQ zU7hFP?x;n;vgn3q(DtnpC83+z^?sqrXHjwq7{|(1S3;&WCrJvRCaLD0<$`VAat>ng z0-5zt8efMnzax57Dv8fEw69qOa#qSOg*ch@5)^<*wzSXvfILmKAjKmDelVCYO<3OA z?fRGOizK#~zz=bv=1i4pUC1!Q#Hnr2+ww^|ABvMbMRj$Ojz3HL3x&~M(>JOV!7Wk< z`u&jW4^q}D)bAzPJrSi!xwJ_gyCSs_t0&h9XJAR^?Dv~r`0-V~>w}>4ixmrCT=r`z*y%4?uZt} z>{w^Oa!YnrF!u08@Ma)F5ET}sS{GFk7YJ4pd3^bu+)WLTk4g{E?t-!FMyZf+>Tchs z!0lEO(jcO#g=&g^-9W8D<>&E=FqF+1Z4zD;l%Iq1REPl{WElQbw`_O}t zxlD4pk!v|i1@rNriR&js{wn_S=Vd*hgV2iNauP*N9fb%%+FWE7_SlONQE#}|gFfqx zkm~`}VQ0pk^&jA#*ChDfxjmi9ljYQ5GRBV^z;OtgIVwzmgaY8}usqU#uV0y+_E)GI1g9vAELjLKBQ*-bRaDf5k^`X^_76Q;U=>Hh<5FTEA}R(|z2 z^4ll@X?OA5>9PJ#wCk($uzxrjroI__0W0wOsm-{BZ7N5(LENZ)s z4eQQQb;;!XCpq6V>9oy9mdBm*dm)xD`H>(d@?WfFNJ`EhKmFI=M19Zi3BQIcy1-e$ zy+VQ1Tqq&ryg+SO)ync$8aSe}?oi&^&>+~oR9r8b^?~?}T7B<{1X+}#9jydZQ9dX@ zRMq_YWH+~oXbb4uo0&s-y;g#kUB>j)BZOw!8fpjhnXa^Ho@bKSQ$stm#pX0u!^ZU< zQLDHw2f&3HJW(5UKEhw^wvql(j!V3Vj&y^ogYmQ)<~PPsE#A3kxpF#n5ZNS-y3q~3 z@rk>9m;~5{a@PI^%OqCx4POYvU*`Xvd}tZ&gi~7ce1^gCH`mD7%)rVhkLY|bQ;}kc z`hzyXPNw_;$W!bCcWSF(8Y?J)UH!qWoP{W-JI=)>xI!U>TVYS&qrW(o@+Cy^#85bj z#1b3t7a$Z5BCTW{6aARg2;D;8>Fcc0gS`*H~~(!MEJb4bObnGWmX)P&%y8?tYWXqw0zN7ss>e z1JFJN{~~TjmmX1vuS4R0l5ZPndc(E^3`eJ>fcbqfUnTF2Z#xxn(=&6wEaoAKcWA+7 zt4Dk%mr@UbJGGxrD^?Xahf@ML^n^V*xtTx4+MFlVT2+Czxik4yU4O(>1_`1gtrbz< zmkv*3G12CsTKfX$zeP6HR1+M7IgCwO^OQuCU@K8`qf3niXzaQ7ehks=1Sss``w!-9 z)@ERTR>-{ruqVL-SfEx&d>F*5L-{gMa(hyI%ekxsZj&E+RmKR?q8LKEe?hI39D9|# zqP3OGfbT|P>Rhhu6ZC(Ni_MpT-zpTAwW56Q81L$fu|$((%fD|$mlDxnX+(^N$1?W10$lHTg(Ok*q=FsXXu9Ig4YT>|YF@0#p-}L$ zM!;BM@Ax?=vOc=A&S)eZl8ffV&1ErZHAP5uDhQoW5x>*M76-*ARw_po7rC`fG{SqJ zabS^X_DaLyhaaHCqJ>1FS25+7NuGt|2aho$)rl=@gp*Y3wT3e#X?Y9xiJvnpiOJ1? zkU!|w;dUh^wTTfd*i{0>g-*hQ`rP8V>iz73{T!9_ir^ck!W|(-DqWQ;vA@?Pi@06Y z*-V@QiCF|lV=65nJ!RxyQCWsb{36APp!zM!CX&1w$s(6# zQpsmh*nkuE4b-p#ue1TahA-thCPMyd)pQ^LVbjs)sWQ7gv=iLZRgqR-7g=st7dotH z1@=uoYZbqw89pW_Dkt(sDM5=lH0C+9xXzCz{n84)K`T_lvE4!7eIlF#UP(?Y7lWxv z`v$}#{l{oBoMf9>Gyyz@jY&|v%O^j{ZMFp;R|b|g&4A#=q-#13c?C%l%p*NR&}?XXai8eT+*8Rx zXq6yU>IKjYVlw4bxmly6;2Gxz^Q7PesI%(+6!5%N)SnXn!&0z zWgeruv?4e#S8TrwiTN@3vPwki_VbAr=f^e)oZOy3;kr|&6FmAijAyawbXPYJJAj;< ze@MG@pCNk90S|s`E9oN{w323i>sM=k?(i^8&j)HAv~ewBR~ zuBsr?%+MFpQ`lKL5CCfCR%5&q(oa(^Ji5p zN+)Bam6@oQ>cgs-Yh>JM^fPYfs(cs`Nr#GiL{2PjU-u8H8b954Vnorr@kz#xgN)cQ z1ulA|H!qBV<*LW8Edvy1l!v}m(>^glwNKthXjr18!ELy!p!CDrywm;V5X)Q1dk&sc zaG~U-gg?1^W(%B=;UHA!hOg5~tdS_EE{nYHJE{r1-iSq6MH-CtPC9n6@}s-2>(VkJ z%`gy-Blg>^c{#w0!d|ci-QO%*-BTZ%ANs(URD!{ok+$PZkvr0KWDRp5gXJ{P(Z~~% zoNU;jjU;I&lS_&fc*Y*nyjGySoO=G|Mybb`GqCnD<{d|AFTZ_*EAddL*0;CTRe@}b zOB=K>qaa62U{e@%`NC83jUzQT3N~KBdsPz>3;2Vla2LQV{)Qr@(+iejyP*kgOrGV} z3}BBlEz}Rn6$zr0Orj7@T9OO zPpXrl9&=;CLH?-YsDo%w3g&vEKj4iJ13y<3)f2kWV(i9qgDwr%i~1X%!%{yh1It&a z&$e@?LfebO|DYMP1N~amwgFOuve*2oru^c}2Q2!7Q#;&B(R#bTJ(Iv1bb{R-yV$*+ zfE}=084$b0Q|~Su5yziJ>cGCYC8>8JxN36DY=$~v*FQ^t0bR6+7Fh;?^#=njf;-S? z=Jpu)~VS<(rCv%$4(Cx<-L5--~5F@sR>*EmSmwNepfekHvTyRA> z#~E$ZyA(*<9)BoYSyPy}MN{ zSf>&JsRof#!PD|nE-NsGtD%1 zQ>%5TJyFA0R-={Jl=wwXk7{MKTHP3pTU8fcO_$?XxIMGg|I?PA!Ub03^L*A`1Q~z? zD$Z(#f7lfPy3w$hbyv}q{}^Z%wLikA_HBV3OwT%d=TTs1B-U{8h@1|;`?Pl`;G*DQbm(W5I*&VF6#U3BlEPQ%14&pb2IZzyNi!>Y| zJy(_#5XL007|9+CZZm*oj9Ee_z0taD==>|%3g-+@Jk1!w80QF2T+XOyo3v#_j(lB- zEyFXSM^*G-QCu|zuHMTcY15f9L>+0xk|*x5RmEoyT~TEH5#K2MU)1a3H)i7tD@w5AG8gyAhRge`Un1r{HwuIK3+NPeFzHEC>iT8%?6v2zU_8K`1N51 z2*o}4daRHk3~|HdQaTXV_aMpnNlu6hrHz$!&qdDUR2wgNB@wYwJ6NYEEkz9sAy%3M zJ_qjg#6~6DA<~w7eZCJ3*q+|?;kOEm?r8b>HD%bF;+;q9>JXe-p|%(de1HD&H9go? zF%k#Y+5V5e#G6X6e&N4^ShQjN0z(oT%P@RnO)DDHFs6y#eYM(1Gn1V%F}7o#N}Nie zB$i^MSP7{5AM!b2XM!v?Fa)jp=%zgdv$gzUAW17Z&b@g1O#wxkct?u|opHTnyMS--H$y2$d~q6WC$O zz>-j;1|O-lT8PJgt#Q6W6r#ozBo1%rJo59@Tk!Y0(sh*=6t>Z>4>C{Nu)a`^54nap z)>}Uof3%UzH{q3r(VUJS?YTi zY9zS<9>hH9y*Gk~DM9I3-J1obIH5YDx_-di;ixd~SYT zr;R_>*1?y8eyt0oAUyprR|9*z-O9rR=HlNefjYgx5jtKhjJdRsFP7gTCgjP4q~x}n zQ*&iiS5~l?i*4=pZj^y;O2eBXNde=ws1xPzge}4G38_^;LuW;cVzMYP)EBC;irS9d zSQoA89Lii({_Ccd23vPs8`swn_83y~wE?{R??whp`ndvB>d|mS7)(Kk`3d95VaAAJ z&54lE^-BrpL-)1FF9I}_JqETV`nko1CT4?K9J`eRd52l;v%GUOS8F(eAVr3Jky-DP za>n+TO!-)}si_WrSr@H=#q=RhHe(a9gB<)i*Ny@lG!TXmE zz$;wgi$z`g>*ww}k{!0+sw6cz5bOhXan@H)%>&~E*rhS9Pg)5o=qvo^@%-R!8Pa$w zeZYJUmJVNCBpU?-X$JJD>eCt`gp&w?b^@{UBY?I<9JKYd+DR7Ph@ zDgW1_<`07!^ba3!E4hWjc9DVun|z^AmrL}drVX}xo(;qB+A!L|reMxLxrU~TUq!&O z?9&K~1?!|7dqP9_1PW5{cpOO}UdR7D$BGcy;x6Kw14-YgsNE1D=aD z`F8)_oB_?PA{Y(ZaDVD6+0mjGOZ47oE(jqkfFEY(@(cV5PY?@jLF0okY8Jt|$+~L5 z3TX2j%|u)P-+yDw;WztLPEiRt@jSl+w$0CeS;4x}G*tuHy0Gnu0FNR6&(&C8u3Ov7 zuJK=T&kG5*RS@2~2d*@Bt%#Q;FXWnE7{VPzW5UlUA#h3?4NlC7HSj2wLvUnRU*zbI#h-5t@oacy&>3yQ=62zCY_2^~z zVYT)iZsPjoGDWp~JE zaIef!R!K%AT@z-Kzk?wN-dvSirTo;=9+MezgijxTv2t1u3Q{@Fk>uq3L8wLzI@Z#5 zY8G05LCcf?H|8}Toq8rhfgP4^dR}tkG$O3j_8<>%ub@`z4}2MQU?Nb^LW!7hRSdBIy z$zYgCqQH?&c)RDsl4AUQJVBG6Uq6|))v}8R&#YhLmm;Xb1-yuDDzjiva)XgvodIF( zo#!i>-wtu%V@-(((=wYs=(fuOLdRBq`z50Cr!ED;%i9AJRQmxKc}Fk2IpIJMFGuy< z9~bf+&B!K1!ri6Mwcq%t2h2TH;K&-DBNCANqFZ8{DF1ab5)e}TDRix#HVMk<89!ZW z!J-~Rfz~81aV-w&W)%9z?3S@$S~g+o@&&PgellU|GnU)0jwZ>3rEDIE;BuIDZPM~^ z8O#H^IBZHsL`W!pMbPn&8Sv8qAw%F}YsOWAh{A=l3BBWJoxH?00*067i6>lSMPSBq zdoBiHbE^wC$_xrvV>*4-+Z(6w+GN@kFITW40;(BHkx~QyWct)+C~kxSy^0yj%(oO} z99LsT4;)GIO!3;Jh#kuLMAh1)o5eCL2BQtT6T9QhNY~n=7Yp>Aj`ymW*$c&B(j5~Z zYcq#1FOHuH3(o+GJ2$^6%gI780q)@8+GOQzVtn6Z?$jqr34Z^h(#1R!2JZOh+7yN5 zG#rBQ_obOW=AQlWjBRWYGB0P~TVvMKXc&xMA3%f54heeH)qK<&zAx!u_S4X>mPoUTv+61zZwHDKV|FKND10Bb#} z0vr3k#dRIwga7*#D1=b~fF2pyse}w#)%98UnfrmL|4SIbF77NH9%g~zgQOtkT){cZ4ZBP$s&3P z^=$y;Yv3evcmVk)G}q=Bpx=9fXVm=jnRAkdY7%jK3Scs9GzWTn0MMABl18|H>lr|B zy0i(t1~_rt%7D@l2LK&Vn*R9Tcg}XiKFD-|Fpq@&(_QN0I4yhpf~84@hZEM7{OpT#fwDKO@i#^Qds7%s{R#zWPzb{2iCylo z`t@fInIk)8ALH^Y<;)O2yJZUS%Uk07KjiTum>q!JxP%%ElOa%+!5pp#m^{`nA3+OL z02LrR;T%0dOXHl%soMg~(gN-~4UwyknzAON)osNP+cZMBZlE>*=Ih28WF?00(H4#Y3VVqIQmCn`y7gpg%}F z6={%Z0H$jS*O4!X2LKsSvP+m3{5faY&6a?a7uECfV*xY`H~qY;EW0x1s`p>2{9rY=Z<$&dcQG?FSvfyFO*pr1@U zUP1A=ZL+M0>I&<4#&q4#e1_St20_J4X)Dk8TjyBXu{~&p#gD#`X1pQq%_)Pyu*E&# zt>`0FmN}4t8PG3);P|QO^1p}OxU}mU)gP-k_tWCQU09SAy(F)Yl1^yC*?DVMv zeBlD8a}Ni=B(WoV#sDahBW+ME3&7w41)wsxEJ46Ug~N`)yUuaiDUd`ue_Dj@;%=5~ z-o&PGx9u(E!pS+K)3`FpE5^bJvmFT}$16LaakD8OPH@7wX{OEzGLp{U8WD51>rgsl zgJFE`mv-iqH8M+k!{lS@1o*J{lEL5VfuFPvT^iS95dP^8kP`GC3Yff0Hb4{kW*7Br z@Pc8#I>Z{$(op>7_7v$7G~$mVqpT!Jsgyf(d{ z%mc1KCxAhIDP*Nvw1tyvMz>sK-l@xWIf2g|hIGExHCMs{h73L^x5Nv-Ol{p0XUR$##xFnF3Ix)- zDId0IpuWZcBXt?ezJ>tQrV;9E3P2I_r@jr}3n$Zj37s?k2awgf)h}g`#*;w$bL%=a zPRUjeEQB+_ret*u7U&v!QAD};o*P&ZyDe{#D6;g$2@ggv`xq?;n3*-~pn@jk)vw>%f7v5WO8mtiV3}2UI2m zce8_YkyqE9>QIxs4IhJ$5ZlwO{1x_Y>)yn=Nd7+vd^}ZG7up1dM8v!dG<2h9!wboGX`1)gf9Q1p-pfNz33n4s1wAzk^S}o zGrz!W+8YFH4?bO0Z-3iIQ$;7YvsIv;r-K=u=eeo))5PoWf~f7S!JbB$vR5VKv*~vZ zd~6p!sR&m|=d=A&@UyB^lXG3UnUi>aSyYRa(D!6;@OM^yH@T&gT)uADMVd}_IqVJX zyyP+RSy=>QcZ>YXb!v>bvC_Bg0*@N&3r^l=o=I~NX`Y;hLAPk{@R}5#pDyr>@| zF@;49!PT}@4zE*{L0ifPuh0r{ka5fGoURnOueNu&B}hM^S~c2y(Ep;wd@fV-33_f{ z`~6TQ6NUGgQfWQbN>op5Y z*6Stcm0-(k74VEqj&;L_L4ldZjUNQKez5J#HOt33tTEowJ+5?m^KGpbv_nqlbnhJF zh=-|pj!oQ7dE^RO+v4(a$^Bt_{Sruj@Ji1$WW9bh>lQOskKE2<_9jz}$FJ~=*goKq zoK}u&5|tdvngL~Hp*TFXfU@#pJ!vLMdz0obz>sa5;0-V@)#AuZ163Ff?@Ov}lUd+i z4DZ`s>C$=y+e62QWxlMoOuxpebff;avn{f8tvU1jJC>Jtk%b7lC#E<_gS&W)~VUh+8O)R8WS`$KEbrni)yj zdbz_jzIxY5IlUzoJnsh8SnC7Xz^G&@Q=_Q}2)s(`MfSVmYTBG+>M6Yn7PIouGB5rm znU`PDaMaDxwo_r8{T2=77V6>Cd2%oqQXHMe4gLGUWc1xGFxpQ33mgfHno2d|kN?=V z9AAcW=Z!eZ<k}vwjp#C3inDMcZj5UAmS~%ZT3QE{A2VK7LBG zNh$QptQn=*Rr$0D`wrVx^z$oslYi9I0Y4p^ut)t$nuq&9k3$}}C#*FHGBpv)s*udc z{YY5y%rt6nET*QkQ>%&K_Qci|gEKk0bHMm3Lc%Mbnz94sHiXJvejkl*)wb|rMzJflC zf5JNfAUT&8nfrkU|M;GFlyc=b6V1)LzHr0|Pw$;|EdvH6OY6i66FZEv@INFeGl za-Z7H&H>q8Q<|PP4iS$Zlb650gh2ikH$w{2%9!QdP#uqsrIx9@&=Jp$cyd2s0w2@o zQ!HiMqn%?uz5$1d7nps)OLRFE^IL|{bwZe{7koTfo_mzlK0fhJq1K(gTR8-GHQlnNEh4-5?A&7uQ-@dOE@ zm0W>NIB)zbkKvjh(z2BMGRv# zOh$Xfx16fFAKH>HPpU>%Ed~GPk|<{(!98+MGvR(Y3nHJSY4j-FzaP$$GOL_I6!iH( zilDuw=rX~{@#6~;o9_Bq<=y@!-3m49?wZjoLgtjrA-Q2q8$@l(<#ylZ$i^U$3_5g+ zP6QR9Vbl&t+uTKS6{1-$d8Z83H#ys`YV*wmX#YXIG*1@GwrNH=T;D;GAJMg zZw1ZO(~O8jE21lE#|-_}prtd9%s=`Y-_EYxAt`JKQ!>QA!6k|x1)n^pen)t`lMjj`_9_*?V_NIDZ&KJCZ-jf?UyDpGRN@%rf?(t7 zT1v5Qb}VcYB}GVgu2~P5nYF?xC!G6lx4j0s+mWB$>lOyI<#+#_15;`VV6(ttzoj7x zZk)xK>L|=A5TBNHI#vs~i`)DE;TO^A`3y;NnBGpz5R`gOvWs6Hjx~9|`ufzR_UOUS zbxU{=%GCLIT0HrH_gU@H51rijnMYf#O_Ps!c`9~%nP63VG8w>e1C4Dk^SZ^Y;}=P593JqBjRTuat(a>}gHeuKSK2Z|;^# z>HEnYoKNWWiDkDYYb@ELRa-IFFM>CZ&V4#WXia=xm|BXt;7gNS(R%Bg_yI1=ZDTZ- zGP39xe8~1iM``S|-hiOgtoTU=%igMZMy6+osi8(zFjCnVyQ<2y{TiCbB7bMUNqHkU z#3bz+X4mPP=37$|Gn%#8P_47}EBK-Y2$kS^1s;Tgx&ICq_BR z2e|i)zjI<7bLE|FN26+m-%BlOHkvt-~oZKpXDN@G-KAPX`jv{za!i9|JNNJyGWuY?q-`>#A zcnAlWN_Lz^&bOeQp5!y@I-Wh>VcK-;8T``4e6e6^SPm_A~%eRufpVU6;b1q+v z#e@%Q7M8G@1s`B>#jwkb2wIc0n!Ad!mc&|EiCU9jmnwv4cko%V4nQKIhH1CIG3o*- z%!O)qO32|s$k+S?D&nXm;bKbZS#tJT&4ctP)grbYH3=Gwi3(p~x%U{rJO9ma<@D*sF+y1<`VmGlr2@*i*=7A#n=sIk&MC zSq3m2;)Qh99d-#$f(CamYhfy~-iCG7A13zBm<9`Hw-7Ueytte+r36rO+${#pW%e3V znk$H3fXdAVV?|4YH1?1#Mk$Hqvta3QCb?Wge}+F_PFdI)(8KfZ(WZI>>=9Slvlj&g z^eqnW;imH9y5ra^hb_c{4=b%8oH(vah-V@ED<2z}>EzobV?==H+`)SpMz{FrNkj7N z!+Rm~^vKV|y}gZ!-UoG4#zo`beg1X=AE`Cyg2#6og+_Gs;*Yu&C`R}Z+4}mP|I{ZY zVCS9GRbcP|SF0jq-Q-(j$Nd~wK#beHhX6S`wNht?;XH~}JSnrBlDBCNtMQnmV zSytNDwzaEF;C;(S!?$U%8FnF3>p$4ajU}l{l&g~teR&VAHO{#Un6UtXQZPxzZ97IQ zkV-YJaa5*JXrXmNk9pmrN;Tyd{8oGQoM5&SSyvU;1s&6dk~3Z;QEbbZbr#PEAh#IB zN?rPP&7PGNe+w{Vy$dmCIw#gJSRfg>wjg<4Uty)uyPoTmyRc7x;7{aZZc(05@ zC3_oKCD=CSN^#N%wT@oW#8ztBR^F^wp#*4b;#p?=I1#qaUfa>(7+Qr{mb|dP+7Imc zGelq9!j`9OXKs+^61fXYuG^Ss&o^P`s%;e-X=vx}xeGTo9kvWcyh#xRtoeRl&$TvV zeRCzNcJQr8B&#kdDa(mfDmhx?k)@JvZX8E36j-KhG*T2=y5Y%rRY_aPo%%qZ!n%wH zd%4`FC74KgoWM8?e!tx$J2?|IU2=@?k-e~;?rBv~J;i~23f;{5kmd?na88Nrxorl` zrgh-L{oo&6Ig_CyRgUlZ6`mi+HY4|9?bl5VbP@yOsv&e@Jt6KkIdVqM)d9ughw()Z zgW2zLU7E5I`4>$Z5)@eiXKNsQU`@dq7_;D>%xR;`fVjyGnH=r`aWWp$3qSF$zi49h zG7Z>+lvP7#lSoixk7_MLavKWD8mXe3Ix>_jy(|u70aJr;?&8|^T6%$S2$zkWVhuFk zkOz+8OCYjJnURND+0i-@)*k59wnE7TK9%13=siP&ZrP7~={@tbx8vWQuaFKyVk@$u z>kTE21<(}OHm9Y*z^%Apz7srhLnKaLfBa$h_{-`&eBm2LU*hs2Y&+xH_O@W>Z#_%K zud{RVg=Z?M5hwln%GJ<|mwqLiR|VIJo$r(6gHUdX`X>;&t6(Nc%J4VPwoV(e40eEv z2vZJ=BgAr7+}Y*|T%d-TsCYrx-W=;)v*WDT$^aT&Fs%3GU^Z=U{(;Q7+1gH`QtDaA z^Jfgv=r6Bdsve~aJLDH<3T>-p{|fM5P**RVLIQW@hM4(p2s$Lu5$wm8>Y#(t<+5|{TXP+pxt)gioKAI% zk_Jm7pso__@_Wl;N7b;;A?DIipr7eVZ5mRI2oB?0OD4LP8!MAU0< z^D-&?@x!rM84GFR_nqrbg50`Kn8bes!xm}tj&Y$E(S9PC(>V8 zSdKjT7Vp2{1l2{pOYS_l0v^pRv|HyN=m55jv~8k^x=)%2UK<&*g#@d}B5_{N=VA`-HA*2dP-|RbdCNqvG)+v?wAUV&Xk5lw|N&k9$VC+7z)Bql{oymmu_^u%cXBM3evcaZgrH8l< z$>qQ@oM72;2(w0o>g`ePqc8jqcMtO;sBhgFi7!U6VhI~;Vn zTcqcwo$YmaNu+joW2zD3pHoq&?wl_uhaI-6EfBz-hZHUFys=tX^}(Co497n6FWSH;KXD6XF$ zawEEVQ+yLlP90eKfNx%qfRjIY9O&0zOB7mvCx$e%f(nYHY!| zl%o#z5D%&&3BFHu!7dSpgL+}3W1z1*;e;lkw!jmwaD#$lU;AjwJq6k;H8n#%q`ej7 zf>qb14Fm>g9y*14y6;uicPBik-lA8qd=rZa`Z>*m9||57m01OQxjWt^zd;!(g~#;D z2Os%hvLUu~@*P;NZ>&(0^YU5H2j+i{nN37}4AN8kgv3ATt5wq(p&Y`GNq4PBR?TyZ z@QYkiW!=!dqLPRobi4r*JwKQ?&2s;NG}sTSL+8K0j8EO}B*D;7Xak)`w5Jt)SjVjN zoIer5KAr}JqoOxLy)Au);!VlGC#8BKjtJ>bzD6joCWkhX!sl2#j*aSwM6e1~<}vvE z#sE$E!Oc;22NBADhdCab$6@fZQ(5Whg@j3JkaOm^G!mWkkcf2OAPoIJ15{2vty60d zy(#nxJYT40ne9iWk^cm=bc_>25>mO(oaEL8kTY)Hj?m-*XdshC4zsJ=klq&x`mc1E{Y z03l%54hqK@Ba_lZfY7<#NRp(xhf?7A|UZ26tJ5$ji8M`&2ZyMTz zg{o1puQKI>14iQlRinXYU#^2X=zx)^c5x2>K-S=OsgQzbcX;>0WEevOKx#pPC36{T`mN zlF;>_9bZLo(K_DAokT&=Jr9;ATV8`tAE_cjr{Mn8LRcWHkD=p%l>1T3(Hi5q|7Xl0wVCx56=h)IN$=kvR4u^Np^fo7;zUz8$jbaqis6I>UM_*Y zW_uT<+3|E+yo1Ibs6>H2jk4$An4^B$V2}&h^@GbI>nGMf`Zrf)J_t#wDdzG}&+dK#IqPk#d7oyd$J{F9#LgINA*z(FqSMyu!$qDx7m46x)s9WjS&Ok36l2 zcs|}g0S)M*0SC;SBBNQv%D%@JVwk$h1vQOrCx;+OTCRtif3rk@VrG5zb8O((XkND5 zNb;*Gi)63zFwBanOcMrI#7f%tuK^5{pQ@cCmy zSUpvcburzrQ(N(N(N9pykS|aHtLXW3$?DxxxablcF0btZzO`f>8#ykH+@IuEmSX?(Vy?jsl85?G6{nGZ zE}*0=rA~N;ybeE12}zo5yIi$Um`BjreB%oY8~VOVfu&(fh1+`66S?NG>9|T{?k0t`PRk%bV3bNbXx=`a`doHSMQNZ z*F{PYS`-qU!xRmZF6lbhL4?_BYWk+~ zZ+fDk(O%-YRt>Z2{ANZuwEX@ne0aO}6=-~t$A~^rrE+Kt4z%z*A^oPs}wr2|UR`xMk zw0&Yy7^Q%7O4(%)by4Np_e=Au8G<~ZmCd``(d%-AZh2ZdOKkCkWnU zUQ!nqW4*U6@@6p~TN2FZ^4)l4p!uMeg~jKU8nNbF z#qHWHTX=n`v%Zokh7ioNchS#bRpL>q6bhGbPFbxADh&QGy|7v}Qw%-H!C}^qGcLZc zkeNI<#QG(2gk^XUw*^5qPbL_wlre#YE*p zO=e!>L|B3lY@3LYJ!7S3!b6-&5O?s=h5d2nYYSB)ROlF!G$V9DiQ`N{I?8!08D=&X zGttIq4th2bfG6mDGqC_)7rxCg3P8|q+>B)l?U(-|J;hq=tS<(?4GmbWE(8z;zfwp? z!VI#*Z{suTuc;nY#1i;p^F{1uP{%2Mj3J|FNu6Kq3knT$FuOH3nYR+>%`KIed=o>}ls)RJ2c*y6=MP#YH1P2S1rez{K zLru|go?**+Q%n<-T7&Td@CM&__Df87{dfmWdAJE|6CT)z&DGg;@QucuLX-?6xo><4 zl$)#SbqL!NcZG7YQJOmob}@4V!ul_vA{gzek>b9lq1&h%7u{(imGIo*!%o75tK~d@ z$RV{2Q=h;KK9UfxRx({-@6ys~tpXWSw<}w{e+5kP^V2XG=Q+$l;JwM8JpgUYAPQrLA_({HZ3u%^PL-)(VhhW)5rQkhQc0 zL0y2`9VJ2D8D`vRgP7qC0;Kyo9&4099!OD(qZK!ZfxFq_-wNB2rG9cMl|h=2ypKtTo|eugRY(S0oQwyY@_Q6t6G=}e0zGGVM>A?o{U9&d^jS&C_19V0MpnzzO|0MnB&LCKP#5usaAG_4h zJkX#n{7TdB3ZQ?qQi>y>B@qAVKyY`ZO0hA}=+V8J%WeDu;Od2$-h^D9Xr#=$i2^aw zBEP+>0#e>aji(fVjW(G0s0+|4s@ujuO4+bjubKdvP=F3mdZgCOqz=Rj$g93`3c>pq zA%yNE88B*Q$9yA)2x!7;1-%3L+K|V+vjTzZL)jtB5b)x{A^aO91gt^K;03s@ifr_| zX}CO5TQS@0i!u!`JZ3l*T*rqssK$m$&NH1W+Zx3!1txdKGX@cm z!@^BSM8b}&4PJCU6(8m>kf@$Zc1B+5)UXih_llrqaYukL7mmPTaVNUZ!NNaxuBy_J zRQdWCr*Iazk}`Bzs6aAYFX_-Zpl2Kfi#mWlo)0o1 z0>tN$Sor7xo5#dlARGWVhp5j0Esm!16`-qYbfX{w@VySLh;2mxmoNmXqvY~LE1oT~ z9I4k~2|uS#3~-^=bTcmpC_9=K=K-Ge{&Q@O1+?HCsDA-HUSrvmvZVx|&9AS((5~rl zQU(LYnnApML}x(f9d#W6F0c>)s{0VRv3 zao<)498+yjC&&Mh*r&?(0BR5+uXF%xFcF4T{v}bF$WTirD`2#(+TR1P<C2{jp1`D zpCn*R)Kn&@0id(aB_R!9Muy050Fbne;+*0DY7cIL|6v;648IzH5~%21|FDKVCIJ)3 zkU{w+0T;ma^beyzv|}QjP0fGaffu0utKLti#fEWsRo#|aQ-ASB8(4>wK}fQu!e zh4?IzN>1$oBw-Lr9l}6^jA6J`^hua;;xox89t~nIDfh>d=@ftlU@RQe?+3m-QAOKR{Ehri+4MS_9*99F>DLVS$d2w| z(|^3Hl;=7n2BZOfZbI4sS^G8Q29OFQemQ{!*dqOf0>%K_l0AbNJwW(atJ|Cg@NsfP z7z=0-#x%W316t>UiXa_8OEl>M^B)<3)T9BBa2RDy;8P?r2(ltOQ)n^SNGS0vOAFTZb3Weayyl#0w;PhZe>QROgOU zIzoImV~wDOUuvL1CCzNr8CWXSx6Mt9fQG8_hA-zq>J@QE6y&7_#QXh43^)P)Huxil zz<#ZQ^115^4J4VtF53>^9$#gBm<%@#xtsza^ornw%DDpVq7KC*r~%(AvOhZZg&y*} zsLw~DNev)!80iw=K^PI&1CYAIpuV1A11@ks-~rop!7*xu6$mi4Wczf10mOq}-Xg;T zkd8Qq_MaGjg2eNfO;!{ED)i6H&bb%G%Uro(JQ2XN!*Jt*?9d_;pvkpk=kkov172;=wb+cX1752MDKDXRR~j(Cl!Oj6 z7*8|NJObN*Hp~vFmkIK$>EEv30N)$nj_v@d0mR(HszDL}x=VXKW&>&krbvhGfOYv` zpa`J8wCQxS1vszf{ssp6#CVfEcP9rx;m|i;pOgW|7J11%h|FWW7Ku~#Dd#S)o_|Qx zn=61gefcT~z4JD(&pXxtS?8a-g9oUu1zWVRh8tr>3`61IC|mm541qsJIUi&fD}M|jJ;GS3&DD<0ir1OZ39l1U@tuZ z4HTFzIv|6b|5$-^k45@K0Z}W)r3xTo4!3;E0Q6~0Jl^yl<5fY>!2Uc^X^!5*1b~d` z);nS^`$VumG-dizysEL8&kuIwp-SWb&X7ads}VwE;08(Aj}e&o1PKm?Dp6$J*-yzz z-Xa*!zwt3i3nLkG#q4I{-@z6}?uOyJlg>>#>BT+cawa71cHy@Y2S)>+x+mb-vUg+f zmr(Xxkq6V*Z7}^VbRulc7Ws3%qRrbyq)A4Kl7Y>c{TQpy2br-FKL`Q&VW@I4C>psS zTJ`Ga1$ew|q%v`LWy#WuPud^uSI}+~{vBH3_+<$`PNXhn)@~L45^^K?U^9C)k_lym z=tw0het|l^QH-jH+o48;bgleHyQw*>8j<1OpRppYnyTT{fK53;vu>BO6rs22SfG># zE5Ll|09)Rk1u|0Ys?%*p4q)$p`iQ+v46tyK`hb>=h(X5kfMcyq%pwl}yM!^}X`gG& zg*?Vm?GYIK18PF%{@vN zg{*dHNHw$cv2WssHI6?kh>SvwuNW(i^4cjGEofP+_zEO&Revcw76+ps6yfS9zx;q= zbTN^;Nwxk-1c4Qr`AJg&39&R6k^km|$FNw%A8J#Z6KCDO13z%Y34DEBy}6hyrmo1$ z+h%^riMsYnfbA%{ncEgS^!bjBwVab}_l_8iLnp3v0+j$cUuIR>a#_RWp<8VnCIZV* z6mhz5Jk~*%hbpX%f*9UH&bEJ$(}iFo>?4&WX(*BoTZcDlC_CR}8gF8M;10Et(U%nC zpD$Fs`w^T80g*hrpC+C@0=9%^sBihh5|I@p^1O1>VwzhVu(mtPx8QIw3bpL*2@}?P z(v{7Tz6Oa-LHw@h&FA(`*xwyf_y$!i@@Bl^tY$Ul*M@RLU!pXoQYO!<6CaLj#~+yF zA~B9b%FgaRX}h7v1D)I1-yN6<)8RaMjgC5eAKA|n(F0+%uBTn;yp_*#uCUE3A7L?dd#;dibO0T>fKg1+m&v*AMd_itN#8Q@43=%k zsrogKb%wAzRu)HAc?lyS=f&WB&G6(9^41cc#Qz7$uWjJlV2PJ!-H)ws3~%y?B>oiQ zqi3Ykc&945VvZX`KSS>vB~gKguS&`lbUqGeOWNBy)Z6)-9JuprB4g|LI|B?SlzKl; z{OZX3o z_Dia{1LLL&#tRhWosQ77rgRKxFXG%ah?+}gtcQQpkHVlC&5>ulBCd0<+I984PD|>bEX&yNFo*T_|WAYgY`& z;Fa2*JL(@p={2I-H`v+OekRwl6#*yQuIh${_>uGYqA;RSg5>K zoz)h%@9ugY&RT`?GJtzC7m7=sb!-iG+rUNAxGJ=eAYdGe&?`G$AZ`m=4ZB<=puE{) z;CRfR`gO>irlW9kx3l+r?8vPxhzY!2N8OYJYk4u?(^KGEw8sAXYysF4Uw8N^g1xJb z#q)s8uOB@1?e}DZXKnPHUC9o|Uxpl>;0bQ6R<7x!1hcQWDUo=unM$?-E#=Cb-}1QIZ%S)&oW2+$AuFa<5T zBYHL)MQ5$oWww;LAL+yie#Ac+H1i~HD#q|+x6WxlEHb53&mx$wSSlQrl z6v>xd34c`iWAlwcYGwYxWi`OiHr|8)=1{GMW&h%~u6fZlIiolSLl=Bg*3b;rb(sDl z;s9;EF;+&}UhklgXJ~?NpZ&Kq>*P&Efhg<6nu0jlK|#86vxmi{!<%M_E?5({fz!rc zYirC#-rwW%H}klC0}7+M{kg#XjlNjz4I7k-V;T#O5z2gBo*bT#$amw%*;8L4 z&6>=~Imj-UF#Wq2iuH7f(`+QAH>%J#d`cz5tRimh0#Vsz^ttd{Rc)0Ke!mG8rR~Pz zg9v{SHFXunKy2;SpWm;%(9{M)?-HWy4ww)LB8dN}k-jyko&S}x_BNPkcw;;SZqYGu zEP0tKkVUjoSQ8_C{4Rx>Cl@MnY~!0lkxE{ptAF?|-)ZrwjC;3*-2JBuF*ZUb0z#H& z>(Hyg!fK)(hqoKDOBy*Bl`Y>cnM=!7oeg{L`kqyst8%xjk<7xuR1+E%9&U=$DuPe!i z1^$i;$R%%O=Kj$jrAQEB(467nSm{*(F`J6?KCz}*XzV4O4!_2i61jDrcjcTn-jIwZ zE?GRm5C13k?tG*VURIiXWQvX$vhrU~ODY}nlcL-bhwU=bwC$pG zA=*xQ!bY)`n{`s1cw_8j#H`vYJt`ecDm8snpS;nNR5x+!n0ikV;w&iYolk81i+}Py zI#ys`0@aY{vG?9X%JSm2lF%tGGf<%JFzEcp-`6pfd9DNplDk59{NJ2k)Q-t2e1P78Iwu<(PfAVOGfI^q1Tk z>LwFU(ytOXmzj>eo6mdcPYQ8P@0&hQm5x^2TAngz$^$6mUAC-3KAs#~)e+nUta{(q z;2M*R13d}6H^yg#ko55BZ7xqQu)bvR5>P6=*QjuYJ?%hRayYx1> zS@)PRC#TDyndmibx+30qfro|F_&Hzv%MA;f!pz9;VUkX_K!OkB;X#I1SdK!(iWEeF z#Y6{9V;mS+pc>AFYh0#WwC^P^cIO|nbq8T|Ir1M_`$mb5#4Qb*ym(!EqiPBA~7AKZm+p1ilJU3b|Vr^$1~DF>E96hHG48eofDnBIf(~0J!WXX!9a2vvu!v|5>$SbIBS?)K2W{RCq7d(?rbsJ1@?S z9E(zS%l(mG<2^U30Bgo7r$BTCo^0o0^j7N1Xf^9A&P7_@^I5RJgrk}3Q)?a#-rN}T z!U=XR2C01b`KF++4%qVodF5zJUEyJiaMM?pm)Spefe*J7Tt0f?@fse5Ur{U~TN=rn#~DM5@gJIO7-rLR9f=>&J>s&VH9dX1GJp2G5p&v7MrhgcMkO;R1pD+yy+E@^5sWMLX z3%aGloR}uIyeqHwS?g#{Z(9@nDeb3zA36C(uxsmiw4(9jDsi(Pm#y;do6uC~n$kK3 zrwv=o=F1CVSUxI(@UQ7#^YEdYg*B89Q|t5Xbr>Bo=yFW4vP^Z9O^eA#lU1M9cB1JTr zeC?V;+S+~MhI(ts6$5wff}B=l!!;uOfbX!egr$>>HnFscCEbO>nl_0VCm; zw}U&g;6=B@Y1bj@df`o3dLCNC!L^kjnJTjfY3FeD+OOj^50)sZ^IvA{qCMGJv+*08 zWnhmSpc3O4(fsaI2O2A_H^c5~c-k_2-fpoLho0K8d7@bJ9bj-<9uh^g3I!&b=1QBZ z7}b@hhKQ;8eAU2kz2`&HP*jwpRNk|OM~)=QCfaj%o3>d>P}+VE@~^eO*AoxS__Y@=>Q1GVNzPsqhduaWvd&?tRUWLl!J}aLP4mowI*Lj_it0y=jVGfR zm9vy&vE%r=~a6yUr^Y|ze zcOC<@ncQBKkU&&@>`{|*yb-9bl!F>e*WO(10m78TyrIN=&{#Ux3Zd9M4rbt?-mKHo zTsqb|sj+ddxzlU~FGVoa=->5uPbAB4*6C^LY*v@LIIYWq7#i&V?zb{`|M=kn@@e{^ z1@fu;pF$11WCAnl+E5ec-82xRP+xNz^jKoDql?1vNoS657FMy=uBxB)S-2xj*xkef zx&b#+qsmyC;5ab_DupqnQ4`09*z_=Uf-3B#X!5z62ckMM2l)=WhJdLz^{np+esqxh|Z9eKP;`)InYtP%f9d(M=&n5K*>pKZIlGUGc^nPE>ND-OsnOTxSx5R!e_*eMSu2;uy*a`hlNuwR{HSHX#w|HlZnCalIk; zU$dK?U}ThWQ+Ilq!!L)Dd01Kkhwc0^B(8a{fa{qvnhCSChwbCBH(v+zN!pJFTUUa$ z*SK~o?4L3~CNJoWsplZW$b}-WspHo+S2mJoq7BqdhhzNI44gLoraKIw`mOvs(eA-& z_m{Ixx6J^;Vlm^*MxQGQXaDDjncZKmV9oe_zPvSSU#d?5h^fowt${L&%PHTMZBFc0 z%F)4yqkcJ!dNU>TFq99bxrQ&UIm;aW6|HaAhi#{X0dE^TUDEpn>-EigzZ>i~Fh?)( zM~&A@slS;uom}%69(^gu;j*G)#)wTx+;;w!c-nFs2&(f`qMvn43Gojxe{N_#-H$pw zS?92wxPEREBRpbxeQp~Eb6GllxMj0N*mcePp!b)8HIoCa&^ErwuOohB7Kx9${i{CA z7wz^*n_%j7pUZ{O0z%}4(7#2&go^W@S?`!P%eR{i8u#2$2yNJYd!xW=8Cl;I=adPN z?GeBKuotO?4UYlNxMg05GITQW;)h|`fWodvQZAx#{AoU|Gtu_xKDB2~YeiNi7X{?) zT^|OTm*vn)9A}j3gY!zJ(d=^|X0u`1@nkaK#&9C6pwB_fOk~NY`J|18q?HpAd4LRi z-Zv*;kz>E($T#GB#&hh4!?(cep#Q@th|6W$KdLa&_DckzB;E;9o-OiJGc%}MV9Wj) zCwu76o0C<>Zt=gT~XG6~~z|$6QlQ#d+FqEw}Q)b2!lmHru zeQ1-$CEs3Wi2aTgD*d>qC9LyDJ*#)Cn#l7Dzcp$%^!lT_Z8cA6Pm%E4>&5a{(r<3X zy@)G|X4r1OtVAcZ~6+(H!EBiNI03)EW-^ z4<080#>3P|hC}d1%qH)uT(?@bZtriO`gL=?Sn2qYN+Nm zaU)fmuD+N7O))va^MW7>1+MyFr#v}m1h z@2S=5=wYqVtVaSUi{(^CYPEU~{2API>x$z?BW#P`$Od!fO8u5z-|aDMndnrO3*%wY zOsRUBm=NBy`}Z=qtSb7kO1Q_Ccd+Pmrox%&l$JjWMt!6-S}qK&AK^SARhYP~OhN12 zDd)Ipi@#_vW$x1Xsf49k|_&nUFWtc?#BZBOm4c6347MMn3YS>-r@8dy z%3*xJg_FmDqa1zUgiFAo^4{6BvnvXIM$UfMnI&H7sL%Ja8+dS zHw{WlEV|E82y7j9dyu6Zo;^GJO!8qYM&}@|{kNNZnmatU;VNcu8DetJ$|niV$DhK4 ziv4d+{RE38d${H5zMCYVmW7=|L&94VfuCGsKTG%b_EG;D^ofPiH~VdJx<`SZ&AKiMlh zcOs173P<2l6(+Ya^Mj4Z%B+KU-PFl1gCCqyn3oG%urW6NstL=pu3Fl|=dtX|JyctA zjjiCk3#f*&+wK1P04dhUaS+?aA^dYhLxAwDm&w9%--hn7Iu!vzqZ(RHc;w=znO!gD z85d@pL6fWUC9#ksA0dTV6CK^;*{2Oo=`*wXK?dKWQPK@YbRU z+K|mKo!2&FUx_7_z5Q@6(?r3X>7sJJ=syl(&`u0^S?Q8XmV;a|I3bkql+YU5e)g`1%$W7Mwh*>@GO-GT} z#2Bl^TkAPwp$J@~7>u{5&9R_v->XKdfV-fx(5n&n!lV&AxMrF@(YpnYMyK=`x+Zjs z=@$}QCXkB!7v0H(-m?Y9OTY{r&((xhD6zFEHKMrf@|h=1@0*+8R$6Jh)QIS0XgI@} z2B!`k3+F>rLfLPQ9m=C!mNNR{G8lN3Z`qTS?kX&2#WgjNaeo$|4KalEc>WN&xD%yK zDBn{EIUVf(fZ)#mwqQ0ObfkYtvLYnoReC#J{X>&_OwJn!^_sw<)YCzJOVTG66icnQ zU3kdkkEdXR5{{?vd>5a3tQO4zAD(h){LYkAshASjL4}#-AF6$vYuZ|d(P}9VUe?*l z!rTgM2ov>e3+s4AoTbTSjJCWuApG+v5xpC#|JH=5qnya$_qcqLKOX*0z55m)6hgR-q#LO^M<(IZ!)&|aOvclE zBz>Q#QD|&xjAM1ZB%(d%ZeLIR4$>vNqPj4*e(8l2+}+OVHp`Ye%Guz+U^38Ie;F}B z_>9=#W^?gXR<0y_?~{Z=_N6oWS&d!QxP^Z7z2*=UogC)qJ}T3Htqe^?sgV!*%=6Wf z4Lm=DTN%cynx=TD7o;Yf>O~V)-FyGj{e0$oFx{^r>{Wy{nr1Ms-Szf}iO_!0=lh?* z#y~%w&Wz?lM}!!NEwd9L;B+>Jdp(7!pn%u2?fS{vwXF=2FN2^K z+WEkq}~l)qReTX_kRe{+@#D|Uyj3(;W=skC}c&tS}UrnGxu5yYkr$r2$xWj zarp@5TG!io7LT?W4ivmk?kvl4V13|l&SQ1ia(7&Pfd#Pk$BJ)ha+)b)D=y)~kP zj&oS`G*vdIn#Hf3^90(LxqB*sD^zcOwau?rWxvS zpuE@~uEO_*6Lt!+-{Xk=Ve8(JX&Kw|)I2uFQ}LtX>z{IRd4c}B4!S#jRRfcyL&+;y zLo&l~v{Df;A{hsK+AiPX=^-KfQ=pC?u-)7S66S75JPzpKaCLf%u&?%!LF zM~cCMrP(?t8~CU`icKhTFBHe-F`+(=lH2&&Oc-MDlXi}d3vH%7c1qtI9e?jTZmw@_ zap~bvJIBDL++7>QigLHBYI7pcU)W*3eA@oIqBPETq41oz_sXMO4$OhdCH93UMtgOKW% zIHy%64s;G`J67|GLJNKRow({n(BPRV&waS!*tPlIgxc=E4a zLXTf|c2=4^xf#Vyb4phbNC2ilYIxUa4U^2davPpOvv??xJFBcZVeO)%NaV+@YVkbtw?Fh>p_jrDtcLvj za~);KM+v~qr}Te5eOZTKg^LGJ(>!t;#Nkm6>!|ZJmgCzZ(k^40EA4J%o7K{H)d37! zJaZDfP}hK3j~Sxc+=rdbTAGjno{&z`a<6@*EcqrBCYNRK4 zm{XSv+BwsrTSp93Oko`IUApd@?Mh}$u1yupSEY?2 zmUz?ckyk2N*S$0){Z~hfG2F%5i-Zy&-5uywy` zN`CkVrRoHSfxgm?6hbq?{9;o)f^W|C%{Y#5FJBTXrF{q=3rlJ0+T+ee870}*@!Yjw z`_OZH_Jqs@{G#FMz67eS$@oe6Lw>&&hoVMnMvwl7)}(HYza}q z4%$8DvVAd91Hx%HO3veb7(*GJWLq=us^9QFZ_c<%+5$3+#S%@9sF&DMxvAo@`mR7r zsgfP|PJ~f$4I4Im#On8S3GARvp=nCQ2#ZQb;|I+ec5N22_(_@AYj2k)d;<~bRLA7W zpHAM{bla>M6?@lissYL@vwiyn#SrZdA*>9`7?+g?sV5x+5v^3XUe<^ph!Uh!J4TTM zBSjIL3dhA8gM}4ypKN0o84v+6D#m4sj_{h&tlG5)0CW2BFtPfFDs&hcI)VzHnaB6fe&C&ezHfM%^BR2 znE{PMYw;0}?>uds1p=r4Dcu%D|GiiUBlB!j-z7bfUQWJ=>?#|%w<-gQ-4^QO{_M3U zIxOfFro|TZNjh{l?%V|F2ktYbnbNey7Rw)XUwqz7#X2K+MWfF#nh$tmY+}|U>89~O zCus)?k~b+k;^m6V5X%sjl%Mkloa-`l)0Steao5@oZo4ky7~D}`3Bi<|5l zb3hhxkVmjihA41&4#@Pt+t%$!bR_yYrU>3(1$!qhH!uMR0CO5VEYAS?KaKU=Hf)6z7WqwT(oFy&lZ#~ zdK>e&6)o*0%pY4HOE-#XH-kTz#NbH*UR0X5N~ z{RaJRGmF~JY-VuCkr~t`RK*1`2VbU1%MIJxBRd2;!7c6Z9J>lDM&_ZZSJ>UHb`fZ_MtyPAnySvkIw-% zQaKjxL`xB>Y-g<7V->GI$6yTME4M0ndY+r$!GZQ=z+yOJPBw^+3|q8Kr=@2c<~Yp3 z3l^h9sAaP)K|;e|W-ijFZy1RCV^D*#QJHasG|Dy8>_EM>E+x;>a$WUS<8=D_OU<;| zQ}-Z57<>Q`*b`}j+PK4DDMJ(6cD$6t&OP%=nKZ+_{bQf+g&(&=qLm|G5h0k(+q%H2 z&YFkK2~w&RUAmOb`1{`rTHC~-4XNG!p-oH$mghVJbjdad^LLb%fT7<5 zR^=z+h0`$UyZ^kt)!^}X-wv~%_OWajl1xA2Eftp`SQ3T`!97IPS!oiD^!qb8Ue@E8y#m4!1QPU#zG`ZIK8>Bhb3H#x>H#s;0PjbXt%bCVVaxNUsS8>1H5uRgWjd1IvC$%3fWe-p4W_PaENO~Z{wd8uHdKUXED%O9clrW{Cis6iJ zR&nI|`h>pEO95_c8t5o>Z9@O3p1h{63wWCI!=ly}M~X)t3q%VsD=%WWPL&y3rqw0B zL{F_y`hNVVG96m#TZult*O7w>Lk)E`L4c-!l12wyy4#+9Wv>9d=7Q&*{;$6ZU^?7w zGwd%btz*F7uco~IIQBnzD_RfXgl~KjQN)%%kqN70ycf1<45nwWVf!X7)@%N@S!sy= zs`8JdHT!hMq7oOpvb7gY;?#cYpWpspgMXiGbC4`V!l*dnWHaGz|ms+R{2monjM zNDqEEv7vn1OXe&nv00@NbI|Vc=L3&ygq@EJL?C__-|kQ|C34SccL)2L4JTqw{u&(x zcrCpi)t>6YZlysxE{hdPO6Ao8L9kS(J8~?7ok*Fr*bRO1jXQ(<%>cgxq0IG?1BvzM%vEYECua$9kg=QWx~ z0;uAp{Qonbo?23N%F|tRZ?CmqKF`2=4cjH*cKkml+0)hfU4Ob7QR{Ftr-U z;RDm^Q{%BiE*AIWF5&YYA;cMlR~zH}p#Ssl5gS>L5cIxaTCIMJ4@Bv6h8s|44W$Ff z!mKu5k_g>WOe3xk80FJr9U7>l@^_YhkQPb}yUfdc`3hyU-4}y9A!UvBy?FN1x2NRI zk_R^Wm}kV9WkaKLWP~)74Z=%^_gjv8xQ(Vf2C?LruEWi_cbj!aGeq@3G2p*u{GQzB zz*wZyx!KEom1vduNY=nu=9~UK>SJ|y_W>7=5k6}C;wH*TyA9Sxn?xqx5KUVs#;IAB zlBI;hC6UfkUDdPZ$t|3Jmp>}+J1n}^0-XM1_R5;JGqS(@p`~@^!#A@(RlPY_<8IWZ zt8vn0*HF3az3Qx57hCB;W{}eETs5s~bT(3!*l5$)Z=V>iVBLE87e-^f{Z>xZes6(S zsx@ALHO3|<{n}NSAEj@b#k8Wtt96?N_~iI=#}nGkpDU!r%09qI^(7}uT2^Mz;~ZQ18HG0Q zM`_SB>rPW{UG%`7qR(@OPMQWd>^EsO4{tZ$^?gtG$G zuxj#$|Hsl<0JYV8e;;=b?(Xic!M(UYxD|>OcMtBa!QF~Wad#+Cio3f@`{wt~f98Jf zp7TBD?ww2~nVa3sS+6u_7eV#}MX0MlMC4(%Y+72Z_EJ*?O6LiBO?S~6qVQtC;QZiR zUQc`0(+T$Mv|sEJo_Wttef&|x*vA_bY&j&PA?ySUa+}h2q0`+F%Lq;k4tAVD!JZCd zr2WT{X3m70voA`!wuS|!UjeT|H3#;($UXOHeo?5F*A}#BDLaE}$a>iA9OZ+R?|H~2 z0j>pDa_@Tv(u9|>t1&qOO*vA8xdiU!wUNlBsOJl)c|@5b_A#8sc;*kLwPAYEoUEh$ z1KiPnSqZD&sA*dD^O(ZTo4mnTkt2Im(u5f?oVDKHnJ|M}y0^aWyMlDwdWE!jU!8aY z#sojW`WYWpM9AT^Yn393?Ei=||FKRIOdNW-ypn15X|ex|ow|;>6F9gtb9v5Ba zWnurPljhY)J9)i(=hu_R@-ATfWYnVZ6y=h1=*^?!`J1l%Vt=Mn`uA9_Es8b8H&Yr~ zuTVvdv`<$ay(a+|H8`v>DS`TkIXV3Aq!aqj zG%g6MEg$QN%h%yQ?79?lXO2kZMQ5CM3EMtT~NXoLdlq}VNm*0r$LtxMFl?PknL?OHLg`hIv zf|nZ4jOZE}Z+n?u8Osb8&rFEp6`Fd!nqIw^;>gDB9B3o?GA?CKE~<|4)bAl zEq@qW9;)~}EfFbIsRWRG(cC5|Nwn4*dGt5^#9HhF;~C*_7rH8B7jk6H0nR2ThqDn+ z=b*@m0Up)*i@fs56Ii(3-S@K9T;FDy57t*~_3E!D$DL*@X1(MQPNiY-+M#sYNRA?F z9b|H%k%eLL4J?d4b=buRE;P~;=kZ8%^4_7~gLpX`UtGFxcQ_7C-}tB<{kpLY{)oie zsl7SVNU!+CE6iUDP)h~PMcysQq-Y;r^QC)dZob}NdUN0J0ENXE zWV-=8Xs()3qL@vI0ouCIqEnx>dCDfd!{W3o#i1ORVG;Ot1n%AdAZ&eqslc(9^%HlUywBLo0Ol))9i0FD5_bl3yjnX@fX_NRm!3?Ig*zeg_MGD8O>}%0q-r zyPa~cnvmSB83bqFXJXp@$(q3jQ@j51_HO9hEnD>FQ>R{LmFqDCz>*f9+tN}mVtZ8u zYblOMplX)krw&AF>l|wdaa#g%Z zvX1k?jZY(RyarG8Z>1=uKUG3?!4N0=}6=xfW|Br2+G4N_U_ zk5in@D_YPdz3h~~bR|rmv))$ zQK1rZl}782VWNtYkr>YWlP_%%*`tD_$a!)w0^5NbQI`gHK`;Bkos1ZNYvGxy>ZNHf zXDfW8`_9P0;(KILtX@E}g@gFx__F_5a@FfHjTUO9d^x^;q6%9jdA6ax7xb~=<(^IHm#K@ zZ|lZD{{D>&=S&$QJpH25^6SLNUjHjhTcmfE6pXP<1>I{H1((Kr!0j1gMH;9zKH>|_ z-+G0rqB;`@xsea>x1u3^=Eyc`r`pv~OgX+$lnPrLMs`jgq^BEUD+gpq*C}U7 zRdlOVT0A=#B(70f5HG%3rhMhgm}*^bLhkygu(N~68Lj2Q^Wd`Ed1KY#s=1btF+=Wp z?R7+zQ#}t?>)3gCRm1?yON1eF(_?%1F#B?b1_;k+@r!R9kL$SKj{`D?@OsRpVF8U4 zUn?Tj$`ga&WfF;{v{=J|#fnxW<-%2JR+Cy;BdSaX?2Nuj*_+p9e8qb=wv;2iRwQxq z@1){^Kx5T*IRCC?^B4W)?7^|}dc=pkppLeE{KWe1N)Le@o`hW$!83{om&jEc78j*j z+5f}Z1G#o-vC?*s3k;fjgrYH$#Q@>jfG6PrQs-Tam*nq zm&Dic?>@8gF82j;SH@Y~BZ`kATE5kynz){mRaVdeFMM3DPz%iG~l6W6qA_pa;%uZr$aqEY-`Z9O3 z4Rf9KU!)v64HcHE$VXxP*#r9fVcfL?o@lt8^>KjKF3%@!!3%OAj6)h@NW|uXs4J%K zl$OsRI=ddZRv1=>ZWwQhCIo{pUhXyod)gWVD%S4Eswg>9AwIir0_~CT^t^lHHK*9W zl!2tLJun1suydlj=%8CsY!ncTsSz(N{S6R?7Uk8kDk*Cm;FH9-7oQ<%@dbTdhP_^D zo~cS|KHE5~sO39()GXj&SFD2we9ej)W`l7s{eyctM0Vc&pcqE&!nTjd3&I-n>KA-zepnHJ%E6_VXnvY9CAbcrFFa%e?UKnJ8vYnm&OGtY8dgd3BNqI$EGa#-6R>0vRRZewm>?% z;I!W`wugmqe$L9Dcx=$fBeU0{9Pgqz*0O=8Q-CXD61d1Zng$s!U+0YVvYIkkNET~x zk$;-OAq!zq(3i)UZ7vh2Cz8kj)n{RuWPI8odJ#)jBI+GYQm&3?_eu zTM(fKUQYoFAeO5XuQ7d>qqK)Q{bUMg`Cf3rIJ@$ns0yy2I+hqEAOaO^YYqMi0E=dy zG^%JbM)#$Gh*c5Bk1${lVtmBb=z_a&Uxbgl9fW^8ewv^;ZR;dz?M+fqGX-b|L3~O)bHHIAX6_&n%d`+RAvj%!rCGbxNS$9vyfkDXP>K<8feoVNp+1 zS&Q1M7fw9EIf>2{)pY46yUoxheh-(^&D=hhD z`;B!i*&Q2+Z7uk&DvuoeYjbLDlO5_uO@7gKy~|WK6%*IEYVv8(8A@ z;tM~hmS2FaAmV4;*i&l?q+N+xF!+vNs|M$|wu0!j|N9<;yqyI_8fOS;o%DTaV)dFR z$n#1c@5>2@8FwkjID)!9Rflo!trSJpxT1PqeD{7YP-m_TLCsZc&5*(0~+u!krqP?cb4KsZ}L zWHaH7Vc$914vehXr1H?F!uwsALZ*Hac&-v{Xa(N30?&k2HW*^{I!iy4tKin-1FuoR z9@!^|0C1rd7$^IrfYOi|;4|9~6z73ku*qh0L16IJp;zLenoI*FOaOgCPY|;!XT$A^ zRZ6)4z*yTgO)@%F-d4tTGQzDD(n6h*h~F;0Qw7=rBX1X;m` zQ#A-Fojv|c1;gLHKfEL z((ye90ID0WbM;63w|O+w0?cI7LDx0)DFNHA-ciEccslfb4RuN{eONEOPXx@_*E|G$ z*AbJhG1q>@ZW53;yGMWGO(tObO6lmGeK2#@k9lF){TtolRi9GnW+qEA&4w9>beAQ4 zdQ(&0y9kHP^QR%GyZ{jr@UO!W8k9*N$0n}_CfqzKl@`*ZD@c6PrpATWag|?dh!Ghy zS?Zv<&>SJ#rTCxmWrWOpmH7&ZCVG95Z?HeGemLPKQ)w4TnRl@NZ|y;XOO?t2Ke|!b zJMZtm*3{ef8`yo!fRP-mktyJq6&QOdi-{yC3522&O+N`Fc9-I{&H;Tkb(oWMWB6gRF<;RvY)!a|H>5YuM+(>1$5=sjFx-?W-~5? zGgd8ntlD{$t?>yXQ3#Z0Y6j360s=O&Rd}+l$+;ux@fmOR7NYEYIHP=;Xlc$tVz$T_dOH?K>bH~UcFMQ9gAFb`H zDZ}2T&9L<|EIS~1uaM&-P{9qzf=c}>g1;)OOcFCQ1a=5aGD$hck(7M0yeLV`Y%-db z21M&bd4`dB)}1H(Y1%h%-!sxhrB+YN(@!xgDqn<6bchTqa!p5FR8~)I(wcN6P&UuF z;Wl$1WY>nHe;1kJjdXcQQWw*)R0y|}+D^?=5gd8p@nM94{aY8;pwdvgBe*R|elq!E zPJ6=T7a5i$`BokjjZ9~2F;?9B_q!XK4XG=gVlK#YMEvUHIc$`P&rJo6X}B zX)B$oi1F%0lw_SU0_vJcM&SEpcEri_(HbOT5MjrjVG>=-T!B>=c#IDTvjA(hUn9ns z5?O#p+>oD+%2HGb@{=9#z?3MajgWkd6B;6A3=?A$H)$yJ^)1eX3r=6(g}g&s)HU{)Y7=K(FlL~h zdK-D|>?Z^W`sswUW@Pkv8` z2`*G{FI-JrJgdb8O#yR8yYxUBEATIF%^1pcI)Exa6>}9@=bsaDrLF6E*!kn}SXx>vkw;GU-q+*rNF_JS%+(O+pa#^UzI`7nHhj@Eiv(HKU_1kq-w2zgl4B$`BK$=!t_n1gXd z0!{*TvR5oq>7kMn75{xJn zfbxp9qca{>L;{~uEaCsJKy+X*i40Qx!bbsaTf{4L)CIjyB*+bh0(Dk3DbDNbAb1;FGU7igv;QjZ05*V*jm;ILz3eS0vKw{|UJe z!4x9ALj($l;GYG#oR=bGzr-Id!Sa>SQ@mhq5Dp~)05SgxQcxXQiAzs1ydp7G++ly= z-52~qpRlh$#FIcn=ST|q0J@Sg@xzlcJwb>aQ;hU|kv-Eo2pL5>+NT@hBW%APa}Ta1 z#K%3%tMQtc;zMJ!ol}p_x571*8x3k+2 z$yCghYYT8&fSX|>fNu%#*@J)iuiK0rCfg5!Ed)Jw;p+YTSZT#VV_c=TBkH8rL+Yf* z;|9&7*JJRn+F)Y@I+W&qW8U8=ld>nsvk)d^7xrmhKWgVTj021ACD|p;@40=vkppR| zc@yF6U4mq3eTq(egbN!&S`Y6hR_aA38j0AeF=yKOwTC!3<&TU=T4$xZ%?|fYPL%4S z6XZlt75p zTHSTc*)cJF^zMLYw{?TY1!Od5N7Ou-i8kLi?|$>nuFc8Xs9BA4k53=&-wF!+j6xn} zI1pLj*Y5i668lXP|6TA$Vz9TSZd>RkxHkXcfjYkj&$?IXR;|KL)_?%Fhrs$13ZyN} z0@(u4=9rjiC$?GibVRYrgIhlhZ{mvww_cjg_^jySl6-3OntwB{cr?rGo*GUy$1Vu9 zky1chHsk^uYbwVV9(nHCh?1sj8|)UShRV64l_VhfiLrxkTcpsmxX=eR@|5wF zP~rFjp^V>DQviPC$1E$fkI6Towz)l$n^Y?>ivj)a*Nou3uh}QM_}k_7nIK(jOK|J& z&=dP?J4=2uEOBPQB|nv~B7GMvpf_ixB&aHpk~k;q9XFHa?O;tFi|*(~arVFL%B}E9 zO?vKeptAeRa-B52FCAiw7v~r+S^!N{RB;yru_Cv4>UxZyggMJ?Hc?F7u&pz^kz!da z&26>=Uy)FH0`6_LC)(4p;U14ncF0CTX;tzx(g}4qd+NX`qw!+NF)|+M18KoThLrIx zcsE?d3J#P#jwEM8O`|XgluOD3#q}pa$O6St(gDzsOSm;RxP$?9?4>r~4oek!Lk)!~ zNLm3TOama2!WjsJ*_inuu{7x7f$8HNFIqa(*?!H<7x@bHnr|ueG?tXfVjeG_N@X{dbhaE^fd`dJVS$rG4I(p7(MEa0T3F;rpEj8qI66SbI^UH{@Ii!G648_;aS8I%H|7s#o(Z zzV#5xsYfa0o`(_mx$%oM{hp_d<#_JcmbBcY;?~&-AqVZ3HKiomxMZ+lRtVIuq!5_j zqiDF6yw;RRtdo*hcC(UL`gtLgSXmQcAr;)-J%kw(m@-|~4sj+M5g&6lHxa}PLg(FR z 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�qI_YyAqVu>@$FbE|QgF78i;`De3{cz?4 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

mRw(kUos(HCf~3AbO>XC>I{Oow7=olQ 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

E!^sfi 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%0D`>NRb+$D%({h*gK~rDO==f{rd#r^w_uMu_DX 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%0Dh1$}eI^VDaKtb`eUZOY4XQT@h51$rx%Jzu; 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%0D-2t^hc;5!+E_Jrhd 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

h!Obxol9hGp1r3|ahr1A`vT;8J)(P-Pt{tc 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%0DhL7@1da8MkC)NCl3NMlx>DX+=UNcN!|b@csl& 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 T(hr`qZ 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

SkAQpf&(jZap?@B&E-#Z3 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%0DcLD# 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%0DbR@67|2Gw|8DL` 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

S!X|05mOuG&>_5$(+I+zAB5Ny#@T!6sjg!FH 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Ð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 z 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

2v?J;%ve$g>UW*uMpuMo70rV;(*YOcGfXw3G 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

09Q@`iC@)6Do42stNFEh?UE3&}IS1 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

%(wsr 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

8)N+NT?)@Ail|7?ty#E^N#Q~-4Sk^U?omyom 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 z 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

97;2Gw1E_%rVZD|;gn?>@5Hk+*S-sd< z*Sg8S(Wz8PNg$}!&_4T(hq?0om;f-A?o~$VkgVfz`p&xi5v@vGOZ2zWbPMA#4p#1b z$|TMeDnFz3AbhEWIO39Dy*AbE_w(;rI~KSiSDjV_-a4`@&mt~W%wH)zTzM%Z`W+d@vpK`XWy7U<_K=o0a{KiJHv1@7|# zq)i~$13f|?VCxHmoqy%<66aWTCcP1>zc$izHF|aF=(3elk-pdgW74ey<7o^UQ1g8D z2xOqbSt66biRu+79Mlf*FR(@ zKn!BCN#Nx`)>MK}s;d&t?8w;+p=t*ehM5nFPMv!&kn^s$q z6^$8MDDEP0^2dFVD|{zrZK{HSEry0o{|s>rU6~XB(NurRxZO%majCE76j@5g4QI>A zfJkyDwbO-5_yV6U^lgXFt1y;WCb-dls9)5fbpwn07*yso<|t&|2pp<%f18R(3RQ5d zRUx7>z-r>fsILdEHd?C60N(I)ULsZhJB=OYQ@GL2KluXg> zJa5;&*|xo#H$EIPqPlZYGM}E&IoD5B>u%A{G`AQx+dh=tbJs~XaoJAoCmV+fXiT?I zPWjoqD2=x;^`is#U&QJax!^AIn}#lH+F&lCUSu}*n+i;Gw0x?7a_HrY^~Xq}8Gbk? zCJ#C;X+AQklzuJplAn6T>8`H|e!KP=J(8dk2J)e1g<+7%oFL@!S#CKAjF)u|oVTq; zwQ6lfX*|~2b#~ePBnNpnHwbS#FXkqfS8^=|v%o%@;)@AK?zSezht=(~F27M8N)-XHM9eyAz_W zbUJ1%si*$fX8ga1WvqlYN-t*Dnol{ZvMJ@en43!L%;}p`o}MbGWIv(ji#2P=sF)-t zzu75C8&`KChJ8be^AFq44AqD0rj4~^)lz0x>6tI7bZRHtZ|WklUZu3K1K z?c-akUf7-YBp!mg-)7rLIFUel%5G{}V%=lHXP)YaT2=ubIzgyf_h%jnh16T9C< zB$h-+Q}v6G*#FGBc`hULCAq20@WlMp$un7tE;w~;=bpDJ+P)1D&Rf44RZSV;P)oD~ zWPh82Cw+BXCB1JeU~%e2PxZ8KcG3sx^BQ<}DYZYtO|S+}gH{F|dz=~)tpY%YtZNCx zX8vZf#&@3=!omiVc8OltGQJf$!MAyf6V*ZJB z9^0lQ@4hV6SHCL)mI+mB2`ZSE+L+3@+qBbfNHCTb7MXQ?&yq|qS(X>KMnOnaWIzKt5Tlo zSoz44CCIr70Jx-hmAjXP{MzglSa~+KW)B%>If4)!^F&yBwp7kL-^BC0u znF+AESamyc>BritN&CAj;h~~n4z6E=Svh4TGe1h(&MG?86ucIqU2Odd@hC8u?tZ)j zOBVIHm|b|InAKfQ((u{1*AEZnNC`91$^L9ni@nO2G#$6AB?Gj|vcm!7uFL&C9=C37 zuM0(K3YEhD`BHqKWs~pOUi+g7kD;TikP4@vRn3l0OZ5~kbK0WPDpzrK_*TEhTX(N3 zzFhSN7NR5Wy9__U~Ebtdo{*X!V~tSxZdmh=lP{v8e;M8 zf~RFai}kU~eS~wokH0_m3wl|KNXV_9O~PMsN>UvJcFilgo@Z@^_z29Bl6|rUoqNXC zzAxp}$kUbETlHtBE=={f5wXKkr~~cGtYCDgwsz=G40Y&f1d#s87OA3hy#lK~2fT!; znsk<4HiQRR3~N5XN{%tHlOhGSFa`y{}w1>iV zZWpC_4{uFA(WtDiQ00h!3~aHMm!mHCk}eubzGyg%gO5=W7-irQHla>=~J@J)o+f>Wht6e-n#fqpx)uEP#I43HWk=KpFRkQ9}rbhqOV!mT5BHrX~UD- zAn^I&8^xJx;h<&Wp%_joXotDA%PN$7*t;a|qjMJ#BVCBeD6S0i@6G^J2Fm>Rm|!7~ z<<6thre>iF1_peH9=YM+H74NkLy>ug5H;ZnYG^$O*D+wMmwR}1LWm?jv(f(+O!5%A z05H9`NNF6KOA>W8!V?%be$xa#GyQ{EuMlSmU)}ry5I}jVHCcMZ2FXo*#;4HM_7T5^ ztVU%tXDh)pj~`j<)!t9P+5ff(m{Rh?rAvpW*mG)Bvq@foM2ARJmsFcLNkHqDgX5Tx zLxP@%M8Q{JVH%n^wH|TxX;jz0sAVWro+8iQcMH4=n}W(Rm2k=8gV%t6S~$Pk#|ePB z%(|6KC(Ubkp(l5p${MJs&aOX_AngL~rG$ZXw?)0|y{fFD`5uObNz6_9MY*pQ109Y# zN{f0rP&(LHw-vr##UvQ~yOe0jPBS;=4$59CTeEDVY^Y=WEQ~3uZ=$cg-Os7-T)U*@ z$~3)l;QRatW|D2`A&yVH6GNzDZEpA*sgHYTRh0Y}2LJ;#%^UH`u69J*e%gGw3|25vF8ua^>-$9Ir*?Bp zk^h+BCSGTl^1Rp-85(A?l2I)G?yTiGN>gx9B!MJ?1b~zF2xFhOay~TgbHh{CD z>i-9$uE@N$!m-TmpQXZA4z#_YGDuaT$cIt-7Z>M zf5q?d1K+RMU<40iQNr)g5~bWNwKkO-y*uSGXb28&)(cc)n*r2QhiyO~=s74UZk5NV zE*SF%YucBl|5>y3k^yy@WR={~+(|W_=~-*LPSc*LjYzy3(nb?^63~`>AuT)Y2N1%3 zZIp_HIjZ|1)*Si-f+=g+QlskC1zNU7M;c81xR7!IgYv__v`i#P^Av?Gb)|AF7!X7g z8Nz}uBROC0q?le?4g_4lr(o%$M6!y4Y8O=@O(zI3O=f6mc(Wl1C|qtq9LMDTrHKl3 zUGlAMRQEr=YVW7ZF{Rx&p6ZVFJa9j3^s}p>4*7eRA7Jpcp`GbHEfXh8P6uJb_O0zi zGg+(P_l*j#X!DM}VxF+s-@&q*zZDfmU(g?l7Rp^rfLNOdMV$h58d+vL9vZvq#2jRC zU%ZesYA6SMH+gWAb~J>W*FQszc__r|gX>x%FbP(PXkz?-Rl0g3#^f%mm|XMG2;e1h zNTmlD!n#7_H_^B28}baq0=slFSyv&LJj_9A>PqQx!o%FuT;OftcGiJO?EaqZY<#0Zl3b$e{i5WAgfCmGwB|c za)W!?AibN8duy{!Vi>xrgZ?hR_+!VFHca(sklid;GBhp(FqX(NA;>m4*J!-gb*c2f9vR`kjT+pnqGn$3hEJa=N`1D^-Bp@uE4s1$u5=c5HvIwx^uFoIQ zSYU@kl9azM7$+_U6}0}l+XGRj##pns2`bX5Aiw^$DaNrw%cpw=|nL2q~_g#y@=9Pp!+L9?WRDwEs6koj-p`6R^D#AN_ zYf2u809;_B0Q)mbm@gIaqy zRZ8J+z>T`W2jHwBOYC29Lf8#8`-kbYs2|QrpaM=o8 z!O9)t9%|w0C{4o+3|xhHix?7zmYocm@k@@S%_1-fB(h|74(Vm4bqrdx*`iG#16Ffs zX&90-pb%yM?^9USlSG8?g(%>-VqpXcQ0en^`u-a? zr>WzK+U3pOM`l2;*G(V$30pooWf5cZQXI}_S1~gCX`Uo=obA-CZF-ebtRSLLOL#1o zZ0i~|a1kjilhYeHKa>6H&M?>34@m~k`Cv1r3t7wt(K$S(HB2Gpt5%qOgPmrBa**zG zo#wsdd1vc%tTMUo??wEsl{&Ewv+Nt`8Ireapj2*S`mvo)Bdx={Q`^M?%-m5WiJX}; z8vXnZpD1An-+=TJc>(eT(LW^jfdtLTbixTtSl?M)du_m5)C$4q__KceCri7$BeRD3 zy`OwcH!A@*jt>=mDu5RA{U0;>1x{f#xxQQ&_op=UUdl69>$JAqaWgMao|dvF2)`Mb zg3+>CpnXf~bh*D%E?;~g*7w7qPJ5M|+2ImBR06*%4Iedz%fAkn(=R^`zRn0#EZUD4 z>asnUm}G<~H}=h{5}?0{oXENP`Fwer(>_Zr%m>Tj0D(Nx)_Z3$;(U0T&$*Q@V}S<$ zY*}wzrLbsFXXrpOzH@(5>~*Ys`x^blqf~uxvyrFBM%4C8e*lC5)(8`Q?_9#y-x6GI zP8ejmWuWG%UKA47$D4DVGbyg{aW>7JoYnIQ$7YYK7NsU4;!VEfJ$Fh^7XKU{{GQYG zx+bHB<0cFdNdA(uEVL8%(ywP9U&?H}^s1}9YOMnn4aQe1=FLsGOAfSuN-#gpzGKq4 zFSxXtyzB}6ZEQO#-L9%1`7U^mkOy(a&Z|_7Eev>hEOCzj*cN6hgt72#Idhvv*C5jV*xtpJhQLyfhb+c(ote_tEl<-0I$TwpF=?iy%>TJ#(agMy!9QF_e9mh!2 zIKx8Q<+hS4*+M*bP^FzaUG5DN^!bJlc4ve$26dBfR^gcqbt*}&k&OFtjDlKV7QPxZ4iDhw@ z;)mnfRb7iHBM_7C;0V<9TWp>mvm4sFCm0&ry`tGPDr4Z zNL{z{!+;`)4zznr1-|+^BCpNOLa(b_dPr&byLx*DK*JJ1)4-14T7 zv=M}Jx$s2_$h(;BMQF%*bhb3$(<141P*jGB`9tou8XamNRE261s|=Ud6?=HDEI;ax zSjBQoH^^ea;mb$Nw@&n`3ctC;U0!iA?)vCB*(`qoalMk+3dC0{Vcn}JU5P=ymeRab zEX_|_P87}ahN3uWSy?)Z>3IU9JuJX@4!Q)_h5RAbS&wi2Jw3 zb@z)qq$;-@<>sjWFRsNxppTk02ZYV*a~q{^*3IOcXTgZjGKW8zLS@r;5_Vf447#tK zkE|`NZQW3vC%2885?|i0fijnArT`zc<5NTM27fwkV1%1a&3%GWBF;`S#)E$DlKF)_~7gkMzu>(Uhmol?Ud0 zhkEV)QZ$W_H;Ze{D)jge+g_4m8S@QfOyB2Gbo+q$R!zg-a$|QL-D*KqbrmJr;*Ud2h0HE);bXpNumeb){h>u#Zwz<_*%sNjXGC%8|NCioCaMnJaj z4CBan10QEQI&dZuxZMC{5Jl}tr4`Fs9SOC zaOew#{vE}6OYg*|sZ|7^YyVu<|8*Dt4qiyBc|DGkeED!3e~mNObNvTWp9zn_utpj@ zx&d#hn%c0p)zX+G9-7iemeqedc+nj@einM%57R~^nDe2pXcYSkqq>FomQ<;a`yJ@s z?Ce_bcVdV0Z;kDe?8oKVM@)2ns&;M%47fW=%ky{Wl{#BM2jK}W z9wXqMO+YU{d7r87!!E15u8{pwJ%6N~wqD~xUsR(Nb}G=%RXD6cpK~rx4G@v*odkOlMz) z#EAI%U$-N-!_G)X&x`*rZac4%(rMb$i7c?qr?|o@rtsP7f`M zf)se~o*f?s)H*Dt7BYMsXsuie8qNZ>#<^S~PnuPx+$-=_p}3)Ty}&mP5xAMVR^i z74`&22T0cARAZp(-=W)WpYV6A?AuC*lWIOC15dCN1cPK3LlZuv4ko1bUCK!%CPstl zK$B(mG|Wxo^VKzthMyz4-SnaxtL9$JW~ND|^gMJ^YI{I=qkaNo>lcsn4$~fyCg?&R z7!ha+0j;o)N}|Q}7eF^Aks;BpfB-1dlA8o9~TG@QPX$_B&7uG)!WP&Q-M+8)4w#ZJ~*P(T970E1<0@^YN#Wd(J4}f%muM z(!~*pAD8s8J=vAn2-PNZ_L)QwQF@A@esO+G-3QPPZCR=qgsD1ad7U(=1=r*_7!`-O zBck8)DOhZ#LVI}sZG(3|giYccCHcF6+XYDzX{f164m?j+pwsf*HC|0TP_f!}r_rGh z2vhS4HX|L`aHn&m9d&)a)A;hrd#ES>`P3Y;Cec+0(A=PjNg6-30(p=LHKk1PJy=z^ zw#UQWCWC=%aK-e-a`o%;b<8@>=19K63Q=(TJteYt)j__!f7TDm z5r%rbea2b7W>jbv&rQ_De@FWRNRG1yr zr0My}S21zyPD3}=Fs&!3VIy4}*p*>`-Qs#f@00yqz)%_p;GfQc_#En|!h}_-xL|@# zeQ$HN{3m(o|0TiU!HN+cj}`fq3+q?&_w&oHcG`r<`W8wv$lrrULu$lE6fzNIarpl3 zNhwy|hDj+th0x=}NK&!6>9Xr>irmjl3}u+L^UEbu(rEowBoqteUGWM__Xozf3aA!l zrc5w&*A8Da$NVKunR|Ccs%8YU+|9|kezU2$#P<4ad-+web5e{6m$t`Io`|Y^Qi`iQ z8A@d1<`q#xVcvZw_?2X`@^Md^CVL82(w*bf@$7}OXC#{_(#V;@OSk=_3gk->@-$X- z{TbF3N0Cw1O0`?;J2CC?Kfo2I?4(>xU`?!J+C+kjcKqz%Fl(bQg3PrqLd3-*&E3I? ztkiB&tYI>AMC|RFc3< zK8W^!##bKp#j*&9Zgg^T68bpxu^~}zD4n$1V*^SE>GW)|t!`@;OSX$zxKt4Ul zj#`BpIE5L6Gds==BZHsC_f(z23y&p`8(VhL460f1(F3N>5>_ZcuKt7yN!bc9C_Sa< zB;P2ZS4P)@8rOhm*PH}JhK67IV%55+%BI?^%FxnzUi~|)V15$SW3c;Ddw=0^CKp2q z_@d-M^Jkr#aH3G}zZYId1*V7}Gc+)yD3oO!?lS*Fft3 zy8*Yi?k-7{u2M~Fdr)ZI_4K6N?9p+;4GFBl|2S^fYEJ3ay*$bs#GDH8?NK&+n^7Dx zKe{4EFyBm|Viw$aD)LKnMI7L6_7bwEa(d|66(8c9Rm1d%O5gaLU*BPx5l7$jiGiNW zL5$ZL+a9T>le5PW?UQGFmrWS?vUhb{PEm~T;Bf% zuo8XEHE((>`*iQ+iCOKIDGl7M?NONKzeNv!7C%O09e7M>mIAp6^hU2i2IpWLf3yG~VH4;L=DJ4QR z(SQ^;xN4YH=BFbsh!vpA%jx==72;IQ@ME(wYg4O=8U1?0q+%{^@`Q1!iJ-=eoFe3` zwo~`MKvx6~j$oP=f1hxvu8M8#AO3;45T2O)kGORD$P(!&CT0V(U_#p;ZNMd}3Idtj z>>|$$ZI>V;6ta)^ZyBOtU9zEum)S*{9dy4WxA$wpW#$lPTsjJDBkrn-u~VbPD-Gl+WEZUom$zT)`Qn{><(2~s&6LQP*iVUZh zF|{od9W2gClVwpElk)zlffMzu=fh*SUjEAJ!ahU&ALX*Sr!N`+Dx@5-*=f%-KjR(^`G`cZ^ z?xfrNdiedN`Teys{8+dy+0W~w72hL@gpnZF8!uxV_lhC)6Y7L6@1nE3jM=S00~NZD zx1*aSs^C*d$Qs)^nb`Vjbo?UDwxcBR9a^rmYLMH*QX_uNHUT$gFg$_h7ghvr&xLH_ z>)r`OPLN;IrD5zdGJDaIO}I(k<}3uK|GkrWBs!pd5=S*7(zTw13rlYf{-I;u@H1ZE zJMYC%(ucq9=_~yFdoAj-bu-XxyVxrc1@cf~cQD0xu54qCkZC(k5gEY*5}iNr$31Hl zHUkXUZwN{Gy%Txw9-sA{E_J3+9UPv7&^h0jr!|laY>jf5mEKu&ACxvSgtUHi?C?~=-2y#GfvB)<;luhy|i!}VSQM^^grLUwQd=?UtE{4wjyC&%tw?xXu8 zn;{{=3M_#UwTU?WFl~vxL44c zB8*QA(P5{f(v9T3?r zoQ7!1N zk`>HBX})IXTa}Tg|MCGFj;XHVXgyvmTv~<03u+EAG_(jaO~xzO+>x?;x@!E(E+*#+ zA^tZ{a(-%0LT8hHm&` z32BIFouHi`(zf?mmN>dbvHt#_&yG>MEtyvQ^L(RyyjFUONmW#i1{!`Ly zooZ*lCVG7pRGKTxnfD`7RAWoWHd|O^GK_wa<{f@HJW5W!*U^zG^EuzB51GyHJjfRL zee-~Jpz&Ctp{8R;G;QlMz{eUdkE8gLtbOfz{zhKMqjJ3;2`TrJH)ulT<2D&m;I1f$ zNTg1rcoVbak5*W$${vf)3SO(N%Tl%H*^#F+GAl5>ul=h6=PiXZmlStY74X-8Ml^UWt=VjBQ=R_mdgm$$c%cknyF z`fQ7o)0ff{fwFUpzP}l2-GhcSBAlXCX{{u!!j%XxnXiVE1+>Nbp!g|RjCp*4QL2`8`KTnm7`B$12ste> z#`A)iD_$nnO3kScd6dKw$P{y5{*KVS-Wfo_J)XK$kN)~t5hfp-92n}tETPZR_TM;V z>Sw~jcG5o1MkKY=N#L=BNcMCZ_`E!Cogr$U1eE!saESRdS%R6zk*eDshJJBJJ6ubd%py{hgw{mXFCk{>gZ z;?*`ev87}u&pQXJqs5$;3E(qW^^%tp<^BTH&Es^B>VW~m0Pshv22+CH!AFP!jnyC2 zzA4{qpd62t6xt?VIQvPCscGaeW!b4{c1Auf&33L7LAuZ0OBgCe7I1@oFgB=*i*+84 z7e<_(IG}cV&U^|}$ve3c6xYO?CVF2Wtp}yK5P9uDPSbM`>*MP};Nf+aa|Kb`q&L|t z)aX_awVIKw|HD_*Kgq3}+sQ%Ujh^LB*F3s*p~1fjctHw=9?AUAa!Zm1IS$#&E>Q6MGoH8oKT~gJ+J6-v=d#zi}(G+ z+XEv7HFlNeH0#KXAfCOUH7v!$T$1qIS*tzjFKl(xt(CP89>dUKrd4LYXtA~n<7?VS z#kvDj@Fil4w`WKxhKxKCA*c73TvFH+s9XWc3;v_-T~Nnf9-FjTlblqJIHw?8Bh&Ff zQmnFf*t2Nw~yxR|2_l(b1PN*xa$! zW@2rp^PxJ1<<*01$Ewd2A$`-^4CK{6mJZnn_|(dj!;v=#wT^t_4f1?E-de0}`bxy{ zroU&~?uD~`QNy1srLDPg=@}8jl>&B}ScCpC(``oxZC|=$4V-M43y3xXRd;^rVKkYyJqQH3J#Tqttz6{sd(C5 zm;q#$HOwa`BULzzrcx&B=>*wLNpo}e`y#Jb8TMx7H9D!nHQCni*BzHhh$RO~P}NaQ zq+S}@ETE_6nrsM)vMdtno|{C6{<@9N5~nllslSZnvXY)B#w!a>crj!I!h5HOTB8&`$}X~;#tBbB5YVgMz0@J5 zCn)1WXO&U-Hi}z8d=Wi1BE}UY3Ly9+82gZc%4EAJ9KHXeltt_%F|N|>-ED1PEo1&j zYLmN0nms6mCGYu}2!f=07mPBzFxN%!a##t|{u@5BMdRpI@j2nhty;=Ka9KqaKG;I$bk)DC}U@eWd>nmy8T^{I5+ ziQTGyA1oMaSW%^#cCARu(O z2BKt-)AdBtnSw`p>7M;MZ>>alk4M`hU^x4a?H$<$kfzZ?$aRtlX#rOQ}Fb$39&&^4+LKXz4a z`K>f{EtY-K!ee?poLsfGAH^?25TW*46-|2kOa@}or-*{7UF|T~42zhT{SEobyusQ=REo`dunioAua-Uj*jdwdY|Hu8woJ2qk z$c&t#2avY?J>Nsx8et=m#5=_qPzvVKQt@C-@UU{exUjOo@@~)U=q#o}4TvXFn=ZlRc}pE-XNL z13df7M@^=!$@bimezA8^zsc=*bFGA60T{_h4;iI};uQ}L#Wx(W?R5C?x{SSnCI7mk zxXw~>?olf_(AEC?y1{&_eM%ZaFaa>yNM9jwZ2A0o{sGJ%DH0VV5Eb(ok-6U9^C-PM zX1~P5-da$zsEpzk76_BgCq`}I`pcZzxlC3if-fUPAYOg6@naQ-CYJItixR!T|6c_n z(WjC`l$C1B6Tg@ICUJ(I=DnDC#7(scKF~1^h@;BtwH+0T%J*yWE8d1!Ht)Q$M_(gIMOo z(=ut^L?4nla|9-CF^0?FTnm>_%G+zUI{5)Rv9Y#$dv!<9C)$} zjXA_0=%W0k;IrfNPBBu3X?f^5e9EZY+hqp1wX(jHf~;0kdCOW;sxBirFkGW83mQc~ zCY;1j0RV42rD|DU2g@fh{PACka_k0~lYYWfb8CqajIt?1CajKV| z95oi`*o^(uJv)fN^C#=iae9_P?qn#OU&HaBoiEzbb^kB^Yjzq;Sb+|%>-^L7rx8*_ zL}Y>SqkU^?n}L=yM#`dqx1`8l8QnY>+o-(CK>knw5x7s~Bo;$i z9{{!B1;?oNowR=M$l}!CAqwU0smDeO?5fpse}Tq(+%JF_koJzw2sF98%L8{n13c+~ zmAN_0Xz~pSq>bbjaC_tc+AYQm(>JC4A(6hAl!YBg7WIK+;mify8Ur5Q_ity=t3t|Y z#U|e^#(KP!4+PGgtk^mnzQGYdWz-khO#J14@MnKrAbB{?dXIChcysZ&Nntt>CN`^! z7OTZzLo}oW|2Y^ZBg%ojD->G2EFm{7xQZ zm$5lTzTqzG4ICqGaY~iO=A!JZTAQ{hnNf*7Er^X?l0|(hI_G%1Pl{>V-+YeP6b&2l zDKc#zrS&E)D@u|nkne(n`+C23iQFoUQN=YQt>(_U-Vby01$gipjb-4Z|1Ss$TV?(Rj z-RjFQ*gT<4*pPVe;=6Sz?;e`T3AYOAtf1JwK5vF8vd9)s(0R%2zYt_&qT!=Z#Ya}u zR7aThqRPrhy?!4u)^QKVv}IW^hzBLx6HukqZ{y@gq^JG!dVevS5EH-}C>TY2aO|LT za?y0mPcGurNaH21<$2DWRHx@}d=bC9ELkmfRswU@8>cZsoc*Ap{B}z1p@p+-xOgFs za&Knt&tflIq$0+hGRa5%qxqxQMsAv0Li^25rC?(xyx%H6>$b~M-R*_*E^$iS@yFo; ztCIZb(e9_;qNBxJqp8iDhN+LbgXz*aftt$-uJur{WL3tUCz+yg*M6iUWu7g!#a#fM zNb}cBl(!SKT=v$V5GvvNdMh^H)p2@{@EZo{r@G~QA8iTdq=oGe3u`t=17cvtM)Mgo z;_>Mp6t{9dYYN*m;m;hC{Iw!9R>X$%dtb~?BUA%CdJz5TFRK|G{zW#-c-moX zsK^3?4_-yWy_-t-pMw0XFm^vbR(Dw2fsL_A8ctzp(qR?<9ToP9MyFevUhWu2wpW%tCK9 z(aoDyiJLd`bw!X@uq)sBTSxWez%SgSLY9Pt4i`D&RKgy8>UnV3X~g(KUUX3!FCy?P z%%de$iJ-23aXA8t5?QS5a65)(&J@Mh6j=HCOj5$XUTl4Iy`v`EBi`ov#m` zXkJ;FM^_FN+o=*!=?Vz&PY(09R_-Dgnm3jd2iU>z{)NJUHG6Vb2~DPY6kwC_2}Z6b z4xxmTj9^w@O#Sq*sj_{V(o&8o&TYS$pu7wc+-#sYSpDqHIWk5l7=B57JkO4PiLSJ} zF}b^TT39qnQ88^n()Jl?1y+mb5KFY-k%FY1tn`x&tWlB!Z;y4EKNOfL|_2ev4C{%)0%gGR**0TUyKs&a90Z(s?@jKE^ zUQ(p*1yCHW44?APL54#O1Vtj|^t6R(MXM$%>v4L*xXaN0y^c9)+Cu`#PR<>KCua7w zJJ42ors)MOsJEqG2;I}e>=O>xYebCimxy~6TF;5p@ma3lnABTXH9G$16QL9~tqled zY<-x*c7U}<8Q4k}@N&XmZ-*g6Oe#;_wW*BS&xBcM4e?v&|L|8|ut-$Q3q0{cJy~`{ z`>?+?wFsSk){&8X$gf}~{ILk^ZFdLu3ZkAnz+YeY=W~*-`{x9}PWCzOjC{a_v2yg$ z-GZx0cF!!xw*i|_K{5ZEY0~_t5>_x?YXu`JqW;5m)X|p#_AKC1e!!P&bnW$L?Gu!A zv{C;qD+|P6edsB7CeQtd>TZVt+7wa4i3EvUJ&X%q1TVfa+!WKehyDEhbnYpCobBXN zMl*rC*ru?XNvd!ewJp$pFhVy6^{QJU-lJkY+z@q=mH&Q%>0i>|F_})q6M~KLC(6y& z1BaCwk>&@FCM8_sBZv$isl?l|wNwGDh z+dDO!0r$IjfZ1O*B|0pbC+^3!*gCC%Uaha{>;Djat#~tU*KeE{`ma~#Z-a#Was~J4W|ns3$NR}@&%6bx z2*XaLKP=AQJBMfn2^_YehK-@fCV(W29{l88f3sQ_S?|nPbMbmdm%nYck3CGDQ~>?< z0w)dL-ZdvDi++>u$KUVl-W~*D-_SHaYe(wJ1`X;xZ9W&D{&X;uQ1DEb4SGMEA9qs1 z_e(oLhWqXQPr-K5sf&F7O?SMPn4RttWb~d0)Y)MQ<5}3?Y$f--SC&r|;LlPG8wHXf z^NPKV!@5KlvYmM?O6%$*gJ{GPUoqU3I|ijD!s~ET!yv7KlEMxgDTEEzIox$&IuSZ> zrDdLe?`$aid<)FE7Q|5Ztw(>1FlOWXN`dg)_N-(}T>{v!7cj(}7~AjL^_A4OK4mh(@Bx@q6P=HU3-X>aSa9<;(J8`t93%s94ig@M}5q^JxHQ5aYy zY-CCX;s3#uoUr4r`k7XB4d=tZq+VY>8*uTBbaw3!Gc#SV?BwJ~5 z35Iv|sk0$17fuVnip4Wr;sgj zL=OzTOQfnOsysko;D9%&i8%*Ce|`?~S@m<0W5k47em?;qTxp7WR$D`Jr0Da?4l4l!yqs- z%d$myKGMZ4YInuC5?{Z|cFs?7-yk8wR!PU3{F`4(f2A%AC-%uA%DVacKE5q^HPSZ6 z?@C{2FkDaYxjMLUm5DC7b;R7OB~t-~sdp#J!M-o0rk{s9aG7Ajeu3j;xTn;9!=X4t zx3;8}HtU&mS@kHF!~a<3+R&%+TZ(n}`;3bvvi`RfT>gwu~X^Sy@wwQ`v-j#pFwV-x!67#;PmaQ3W{+~HB zqa)A1XW$06Rqk45%vCAUj6A%UuEw00GbKnB(Rq8r2hr{aq9g8g^xSezuiMf7!bBby zYv)b7%LxZw6pnc3@9Sy}$;Dnq)}Box=CKo3xLM_xzpPUPKM%!6jYpbk;*Y6o6t*ug z^1Fkcz%j2d7MstpaA`Cc}% zQfrq>@a$P8rQ%PYB)Pan9ITk5m#~VH0f4uqdxth1Y%5 zc5D2|#D6x(_BWeLIf3gZ9r&B(iM9@>kG?%uc=B+~vtr2kkRL0=d3KbO&Zh<||o&2MNSk&q0MBjw974%DM9I96%` z-y7)=zK_O1Y(LIx{{01(3IixT zgTW_x`zwHcvSuo(d@q%PUn?z+5U_Y>*Qa3LK@@s!dm3}uMHA5!!Wfx^HhYW!GR{`8 z%-k{P;vU^pZtwLCz2O}7^b2PdZl`79S60gW8AVu=C909vK~siyWz{|xr?k;vNNKB- z&tH@UD{@Raq0ej2sP4ucrr2_3)34y)!8>RK1T(acMgl6)B)NW5XNXIJGshquD-BsDmZtkF zb^xocE(=gWi1*mNpL+0hZzxsR8s_hAz0Bgr_>|zj?<~3OH5pKkRa&w%>-mlQup-BhVIG)xAN;wZ;+mOhkkmDzT>_ z&UP=L-{%&JWBqgz9-$PZ@>RymBscrGqQ(g1?Z!@wX72wMqh3wvLaCq9Dkb+V1Uf!|fPu*NQ`FSAz((eF3X%)t6d91(ba6|fwkJ;obp*A4x zbsE2=tZ|szb;+*x;^#aX-_MAOll&m7;VXC9a+1XuBRXK){#CRUKLg_&3w_?tMl_^mO44q|4s0 zb0Mv5U4af>cb}0VLWrsh)-L$BjBWy(p0Lo$pZ>#IUXOK^1%g@JrGz%jZNeaKbn~@2 zl;$ixL(bEd8l3ms)Yrj3ZRuMWP87=fmHo+IAx?A^g-|&vVb?G|U4tjnW9dBU2l>)Q z;K&U;FTXPKq8v|!|E?Sa6 zfs76aspbAi&^FP2y`7}sF@p(K~+~>P!+rWE-G)2+= zrO+EUdS_g`>jRV`A~<)5C$+p2S?(1|bt)m~+(s<&aLhz5TJDq}ZH3KT?8Qi927u46 zokfqS4;}5~b0_i~yl*}HZCu<0lDV#PA|UqYw5hmazn6(#0$8vk9Wd^$j!a7tLo8)L zJt}bZdPCFRHouGG$%qf~S{4uPqqaX3K9K z#IIuPlhsW6@1>zt9B6v@vl}AR5)>l|xn!kzeMJ{wp~rVQTRDksm@zYp2;%=EUV_17 zM}8O!dA!2SE{_@6a_)6j@ATH^^D5f()8Q;&JGs&1Mh${Fm%iBMeuOhGb`oQWwhwWt zS)TA5c78>x@H1A+4q5mOU|}oMAp9xlEj#K!G>aK#=9Xd6&8Qaxo6M{FrCxlpw}acu zi@ucPJC4E@F~$(fLoW{b3<|Qpt5v`*DNcV#?BtiB6JJohtUhYW8847q!& zQ`LMZt-&@zJtm{{pI*N*e4b=HxhL}e%Y6`e-#^;@ zm;8eNy?%VR&;ts3MDn(i*}twqcKhysZ;+}@h=j9GuA6?aCF605YLb}Ah;{XNGF2F_ zG@txHh?&Y>K2~uN*C6{OmG9UTR#BafU|N|-OOLRDbx>?6Xj)wqq!f6RnC=rdp#9=$ zdD;mZ$RYP0a?tgBsZ2lkJBLdu`d8qrRia)H<(v$;VV~+%IzbWKG1ObBahnabU*AC+ zQnz^?#0)hX6r>*g9v*%c%Nd4E#*%<#+vI$2S+sROuoM(gr8KHlBkLiEmN#3;{ayPEpQgmaV^xasyNA<>R#wmF8QlF@HsZYD)L_mJfG&dR6b|QEj(IK zs{ia`|7@_QYijoBtCbr&vZ}EYxn3z>hW=AU-IY!#-+#Pr1ktr7x<#7O#h2Fi!JEE= zBI7wm(&JN|2vCm})*DnwCM7uv7b7?6^W{%H#*vCG`pEa6)XbCJq}2gHv&pj8+Y;*C zzmq2JPazjM9;-xW94u?MX_XwmK&;l>3(2sSX?KIUhwI8)cX9K#X=-zIMXi9*->fB1 zj}v`6zqt@?QYjLHdrMMf|HiioGYC`r_Whyk$*TX#KDC5 zeM^#knF|%w`Jr{y5xt|93(-W65Nm5DUxuy$ERNB+=B6XDdxKFE9)wy8oN4)jr*!0H z@ZNjr#SBm?4xr+XUCcm9N4n8cszu)=%-<<-LRx11o4GC9?g3Yk3kR8#*nVFx@JyX> zW40A$k@C$qY`SZnfq5V?zjuEzuNwwenju%;;1)9lENzjd2c7XABygydx%WFMDlWVB zqxo~-brB0h-bFQA^`_UyL6#bIhaZqLAoT_fzK(}g_jxD5pq8;F(xu-Wfx{n zw<8jAAl3Z$U6!r@kv&lxul?lwbf|Qg1|`V(W@oyxs9!twfTlAgb=~zdI@5xOYxy^8 z?a73?clXp|XT=Dx95U7!93_3a<~WjpWm?u~i-GC8#6!QGx#gmy9&9QY%#g7-z@_Tz zXVLzvU*)U14|kA7s{@GZ!1RR)R@@hY0`Hp0B5vLH!vG2oE&MX7W(HGqg27JR%km z{E>oB9GNf)xqAHHw+5vA3`A1_IGA)HOuH}$u;334&uXco`1zR3HL47J!K&rN)$SbXaVC}6gf`NjoWt*A10qccV4 z9z;X5qB~}Kqk+J;qU#4JVenP@+l zjPujYFu#w~mhnzJh0&!<9dzADS=0;Cip*6~X#fb1j<5`oRVGe3tp_v0w<*5yF`$9K ziv0I5*|7Mk$%gO^eGs3F3!Fsuuk*s{YJ4VCQ?Lw#91Gi<4_i3ZVA8L?^`9~)!92^y z%D=h&C#31aPMrJfA-A8%53U8YU_O0R3wu$CYD7Ol4jwh1b8MS5v40u)flJ6B1l6mlT z1Y{5EE-~|{Y%rrjRD@Xfhwk!NE6? zUofy%x_R#uh8!;n5mzkoJ|Sb2D>aXNNZ!j<7fMcKIjh!ym>VlTa%Rs{AC*Fz76k&}FBJhZu>M$QfKZKI358^7(O>zAYgj;0M<76J9S121!+@!JG*Vj^Ln= zpZ#?C)GloG{ni=7-w!T~$+B4`-HT06W4)3Nh2C^5BPj(BKMK7Z8M`;hll=Xzd1B<_(vK;qf8jZv29S(nNN!_~1LC zSpt_NqF7-V_1o6T%A6qwyS3X@Mh@+H_JG#owh6d^(4EjR-@0&>}ULvB`kwKH}j1fcx@+9jMg`o z+uiIdcWgUEV=*q@#xkTrgHVEhG>da-)nYp`+t4_>kfgz@V_(%~EqrsR21DYqsY--@ zx33`V)HK&6CUwWY11itK2h0ICp?a~&@_L)oDMl;eT(+21prl{5N;Qyy&D(cGTk&mmeh$n2|4y%!(iBM15FmL4NmYfpd$~s*zd?P=`P>g{xv9nO2tl%R=6Y z?pu(TF?4|P(W2XVuYyGfzVx|6sqF0tABg_*#rK1o>2Z`-u~B{~N}kq|U-enFB#%<< zrh|OTTf(jwe4%G zAO`nQnA{rM=}Kb3OL*8LKkY>N0B8K?7tUXIEa(StU3~|<_b1x<2kMdNgV|0#biYW% zsf@ygfcEpt)d~brGugzWXaw_MAvX!Aq!Y1}ocGL@?R9fAiIiE_(S}^28AM*=MPLc} zl-#0(PjH=Z?Vr9%jpSEUgqb&EylnWHZcN&tSrr^#e-Y@YsSX~&7#Y2C+fNq8aO|0J z!-VD6%W@Ol`EBjenYfsDxWU@wBR^ex8DvHy8{+ag#5L7L=W4CHVG`z%+1ZM!0yR!s zP@N44Tt^ccx%1Be#`;xkZyKn7-(uc0sxKa6{O-^FmfnyMFNte%9dl{JU?KX3Zzw{U ziJ-g>_!ON*z(6`y!kyhlgs(9@pCFXEYS(LRag?{z*?+1n=nU(cR50|}wKM=uCTx7* zdMGCt>4=36ab21Wcr#eua&g4JVp#>}u%sQN-UYAq#Sa6^qCuO3cYd$}evdD9whudR zPX}+8QKYxdg-5f``5`G^qf7FSuOs1kdt1j;k!rWVk&f}ud`1&v;YX*ZmO!u;GQ>Ho zOvEZ4ssk^$!P8bV#@RJjGY)zj+4f@kNUmEuq6Y3(xDU zvR{}y2=CxIQ=IFGDy_^kBZ5U%2=Nc=*P07^;iZI$PhPxVlxqSgbrwq zhe5k>xZ=s3@uQVeyHxvB2a*C+V&Y0$2f(ME+1u!A#JxqGTT@MW6jM7aA`bbNaV6nU z&3(IqK?L7doRz^%V=t^!P*xj!)#9A&BV3l<4^&T_>cKLMG`>Wmd~1~zcxSdj@a@_$ zl;&u*Fw)E+d;QU<*QFiS3;Ww3In;z7==$w7?5+N7&*1H$^KFa#^+NQms^)Ev{Ph9z z?c(h@$Lp=p?}gm}v)gY*{!Q)mq?3JRSJ#GXa6H7trEc9P zDap3KR`e7O-U9m0m`i0?02iwF_6#7f;l0tL|B#Vz^oI5(gPEE5i};Qes5{G+0H#8e zq|azns04{7nSFNu0|h&=^@IPU1^`UZZ!~^dI0W!kcJ=~Zn`U>&D~1u)vvN6!NZUNa z($fv~?1948&@GnSslCyQlhJf&t*O@``F>$d570T+%SRqm)q-Q%xZrF~0-MNBmq!Ik z)S zXPDeIa6uTVvc1&;pwFW3+f2VL32oygzDEpu5Ee|T@(tM?h9X!k4`>VSB<6OdYwY@3 zkmQui&?ma_R(%$QQKBlElmBGd=GS%q`3e1nP+8W4A^UWnU}l*O9({#2g(9IqRe_4P z^@(041G=ta--K&1-i$<)(mYZq>#6%T24)#JalXO1~Rrf5|pIYiaihg+3DZ91Ie7twC%Ku4V0S0SR zkf_jbkrWJNp1O|*xT#MB_h2bmumD2dOlsTjt>C z?sHo%F*OQY_>BjM$D%)JYFSlpJM{TX#dEo6P-yN>#i0BOQcia6awJ>=kp!jqveLJl|m4bl=ds;ftm%U8vUf;H*3qO5|< z2E$HcIP^q0Sa~vj@4Fx zdK+ERIL^8Fp$j#(<(Z27d0U{U4#DYEh?yDC{>r7yLT z)nNUN00ogpzA`HMII6E6$kEMVUrfSsld;Dz?O~@Sqp)11Cwf%Z*=G>r*@VWgRo!m| z;XMFQUp)gHr=?oR>#5UH5b2BJ&YN|L9*U3c^U>0lbm`gD>kjr|a3H!PS9-4CTR+|I2*I3Ox2WYL@{&d%Jg&5goEl-Ru=>QCyZ{va5q)7!{1#!|gJQm|(V! z*H6qslJ8FM22lNZwnKzo!Gm8r>I%b^UWl2V723cQ{KWdFfmUW|Z4LJ!Z0*17zto%c zb)Iu<9vhR72-7N)D9!l@5re(D#fSb%P7G)9Gt|H~r?E@6s-^LB+8E<}A2@0lUf+ns zRIZ#W;=}Xxj>MnW35f2|h(40@HLF+N(7a2^pX%y2OdDQ^XEMHq)-IWhJ6fe-_2BV_ zKpqjEcd7hZRsD33pEG62GvgR0f;d3~)t?C6Wd_`}?Xd2?nJ-r0;%t5*Jp)+hlmsQ1vrIA;!<%OT zS5KF8Pg;O@qL)v^5x17Q+9ekFj=e%U%9**ROfUCD{B6OQq^BO2vU~)l${LmTduVAG z{CIW;Gp7%GXjA7g*sd|MRijRdUs>~~Qz`I$0@OGZhT|ZJ*(ix4$J?_!W>M(u^mtO# zuwScJpB|s1o`(xMn|BqOxN%jO+YO6+l*WA~ND49TWXZ>G5lla}|EVcNKnKl_D%uY6 zRV8ldZRC>-oHDKhC&iP))_!G@Y_{vEMmMCfq9Y)x?4MT6Yk*W~>~#0H(|FN!9R(-b za$u&TT{3q(Z7=;Ck2bUm&2^XeL4w+MH%-x)IjFZoE4kVyP*3(bpM*Hg(03Ajf@JZ_ z0|w@~F(_^0-#b8iqM1KE$$U;2T5M2B51}xm+mC#4AgJF-CYLTGB3Mw+oY5|nfeAR-C zV`1kGNS(e0<|n zf5*d))^Qc3Q&MX#|5GjKl^%1LSGt^hTJ2%kS|Z9RttB>6ih1(E#$wB1FiFIRKu!gR zrLy5;J-&1fbxYW!ol}ZmR+H^kNm9`&al{KFkUyR^+5I40pNN2V79|Ec!`0RtXJC>w z1_OcNd?st?z@M}dK>y;#SCh9==N(bIG^@rv>M~WJ%Lj70>Rgg%#D_8%NCx`*NxqdV z!`|+C8?6uJPyUg^qb|UIri}pcc7w&Oi|Nrqdskv7g1nmj!HTNvc>RW`56*_NTCR&V zFeCW`Oa-=0DOZFpq@9)p&mU_t=Tn{F&Zb1-%lcgW>(w+G3Z_k1_dy>N9rzmDqr3Eo zEAz+wA1#Y!5#$06n`=`3*{P#@@;AtZMCE%I>p#{p3)u|V`X8_i2q_Ep$?nC7XbmhF z{=UGWvl4UPn*2O(#JizimngpRt7tRSzH947u(5l=@rUYe*SuMKGwQs*wHD!6`u*P- zv$ehom?`q8w-a(=ib3dG=yMOBM-kt_X@Wp5843(~e_h)UIjW-Hb;$+U0?pu%_8gFc zMvAPNV8jQw(J?lkDzYf@Oa3a7D0*xk>^2KK+Z_w-^_vEeQ?SiRpVo5|aSGL%;Xu0; zY|#w-E9f9V08ik&YRJCfz`hdmr;I1HSNT1jr@VW?> z+*3aBZQII`z2a?kpz>c?{YO%O_K-fjH;YGYHBDe6+w|Z<7GkO}D^0_{-2v1O_vtL`d;_V{G`z&Gpfxc$E>7BRv6jP8ojO zp*JT5^>6Rr5tJbjn-IfyjIR5_V?SQgW(dFRaf*O)=a82r?6nyDEYe@_>yf}L>TlM| zD|XoSq=Z4e2ukX0))jEA5-;V7C_g6wIZ;ZzWinsI6Bp~(*p1O-w|@8N30p=q!Vb&C z@>^+1^lPriOy|cx_C>zkBHC76a35ZU%So5?yBz%Mj1o-3%<@!uK<#l`F^T|4NbAN= zfpr7yObF^EtuG|Zl=}gJPC?gLAJNsW4Axpib3tF&^@QB*I&F<9q*ilTb`;t_f|&r! z0iH)_ZR+r&?%?DTjp{SQ!cKS|6SAjd_ z5tS=>3!6l|h&w65d@8QG8jw{GIUmNfyL6JP7&+u!hyfP+UEPKWX!IMkYE6~=7;~s( zEqzbSm`(EshM`$(Al9pIS)e8v_@G!$VrlH?Qbn;~yy1y83>eCUj|7osBxXGy6K%_A zeye;6;%L{`dSo9mG+<|*(p!jrKMAPXEBLo6jh2#tHsL#d2cm+zziq6c4v-?9r1-Frq zK=dh@_m`^kjbBx06O%ht{bDoG;?_3v#_6l&47_z!)1GwN%5Ek3>U>BSf&OxY?VNHL zG2J@%~r?bvR%Y z#?6j6F8BO{6!L^$ywf5}DHf#=R|Eh&OZPhY=XB6IzAtJKm3eukfJTmAIn;dmHFKey zwuA_!Lg$qe?f|uATXmgus!uRZ~p1QccD`@sHIPdA*Nb2 zTXps0YU_Gon6sysCnfTl^h|FwH>k20Z%`9I$IFGhp)5BWsAv*%771OP4@ z?()QOvt|K%>{+J~tnL@v%pVWef_an6Lsi~<*}pK=?jZz6nuE7W0O9LQiR6l9^;s=q z5|#kJFLYY|&I*BQ2v5PsiPUzO*<2~Na8r+{)4h3b=X05nJ|FaKyD#}79g=5n(_otC zFi_FNYY{DCa$vJN#KdnY`d#PY&jlZzB`sgtIV-9#vJ`Y`**` zj@(lhh!zBY*D@HJT5*m}t>x?6iKdqLRkiF|GPua`njOSkAbU!kxN(bOP`yS|R%| z4cQJnlim^qdqJDqzbD3OKM1gzQzO+`5!d%O`1~_8y*o}=F#EpY%~LKH+z0y?f;XxU ztT>cONn9IjWj*WrQMlH>31;cIS5>RtzN(tBJ(5gZA`Pb%d?xtXJXcj{&BK8dJ3m#Z z3&S1Y4qZc06=#c)t1<2rjtg%(n@sK1$ocvw@5!$GWifP- z1A9p&!++v9Iw>KSlM>b6**zB=AQ!7kx=Pj&QuWVR^W{?idv?=VkFV8S{|ivW38xA&0Zmm-eOK&&^{W{rLEmn&%<7FvAyD!ZhYOxT$@= z@j${Ti~P5ITJ^YA+87IiuJh_?L_2LikoR4T={vZEMD55JEUl`eeFQ^xhXBUgv-6)v8A1(9PI1WY4HCP3Javnr_k2H~#&Y zE^N+zSvk(UI%kvRFlDW{@5gh2R0B_~Se3HyYAta=7(=>3C(?MX0$mpGld_qw!5civ z?_gr+W?Mj4h%qV<&SqQmU2ks_emzHhV=TM3`jGm|N!FKxg2hDZ<&Yfo%|eG z|3PaE*ptz3!w+Bh{@A$EIj1bJU?YnqRQ~&G)W2sd9!l+gIv;{hSJPSgWiyS*&RYXb zTUv>Wji8mY_M$TYJMio9qa-nRF#HQGfXoK!uOxEG2_JHeIY49p&*j#O9s13`UG$=wtjCjC} z7s7S1GO;CFZdOTVqcnP=dEVYnf0I;wg}a=$c*YdJdc7;xg09meG*W%h~qON zv{H0pNnE6VCsf7@W(^`IvHa9}hQDZTx3efrFiDgelxJ#`Rtb$N$w|SD;M2D#i>b+Y z?6SF~)0H&QB3X+flQ%eg`yBi`M7JYu@b07G&lvlbf+5#-UW4y2ODiJn_IdrsoWL{Q z-7Z~?M}{-EZePfEm-;1L-W~F+N65&GpCyzCb+sngQ9yQAv4%|~LcM9k1|ih6kc5Bf zitcXe7)6v(JAA%*(rAb|%}&8G6wfcYOwE__c@J<3DBZe^7}*o2Pxl`{z)VY|#Lk0h zP<6PmF(TA;(CkiK1{*5z*ty-AD7E}E(jfH-(t32DpS36K3B+ z8nNvdW1RJN*aSorx!<*s`uf{xGi0ITG zCjtv?wIC5bp~R~oQ(uA`B3GUD34?lWUyM_Clgst2=ZZN~XHzb+iL+398ehO^5phtj z*_B)x_tq6Egcc@`0fQOMJBCDyyryz;eW1#VBl}`8!H0+^Bh!*N)&OrkPST2AI%;hI zx_~ydtRt{)FmFpZ;TEmXTfXw#j`71xc3|2{e&}G(vz*ZL@=x{>oiR{edZ+0BDS1T+d1O3X<9^95W!FQ{t9-!xOX3(h*9HUZa9FLL z@`tHLBIp7n0-63hy*6lTrv(Djb{%@IXUvmXQgt8Is#Cxb`(4Doi-j4{QTWVIHBm@& z4y$l&*qg`-0s-lsB#U~#S7T3n<1t9}=&`=wl`Ml(9yqJbLKd7~clGKUfK7IR#(|NC zE2Vgeh>(Nen;-nKVTsVyyZi2*U(g@AuX?KQs(K0^;qia68ZwyOUTuZESw@;=79I{^3EeG}>ptBW z0{BA?Ibkd9?5~KuDLHMqx@Q4`AN&4c z5y94p`|#jsZvgAWKxI-bF++7gEF}LtwJm@Rd4K82ciY8*LKPO%7eJ!Aqfc}$o1WYU z9OwlQ5*zd9IH?(<{IzuGd*|-;1i?hw?M3bxnOc|M4QnBUZ_%L_nJ^XOdLI`PCDw3@ z>+<3>Z-vHS?r#%#=#>-+FQoD_V`gp|=zca-{_xt&g4#;7S40g@` zl_!XKAEGQ~?hY^9SjQw+AbYzGDR&djr%-IzPlame9lzsBKgmxU%%kIyZEAxS2v#zP z_7WFd89_-M2P)EqaD^Y9pq!lpv(i)+Z-jhEe8W#lSA8$}zZ>V^2m5xzS>rrX-6ie! z=x{lX=lxa5e+}3)qgP~0(7MVN(;;ifBj9tzov(Qe*A-rkr0u<&Z9UkS6Jk5AXs_3| zH?`+;USV~FSq<<0^{NZftq3qlzH^@bdTj*Mp+=c$1B@i(>4=(K3_>nNwHL8E)!2X#(0`{_`^QLr0jf`NQ`v4ob~C4n65^@ zU|j*BbqfGCOcc>@u>%asBwdy>w`N`S-h`-DQJUdw8llTzVO=6jz5YPltQX_A=RN8{TAwbp41Mkazc%n zpf94|QK5a-@Nrp4*D@+COez2RnuenEJVd!UZ3Jf&z^k-Jq~A_li67xpMs{Q!$*aHL zRFMmF3p*&Z!g)*){?#1|6gn)Q^>43t$$_#pl=Emng-)!*$tJI6dS#P*p|=r`A`s&5w<)q}NYPl3O$5uFjz&e>T9vg`qAFJ#Oyj zLahz38*+k0(+m2CoVXfFUjn#Yjcae*BtTl^kfxd`!^7du zt(|0W?hm3F>Cow~sM@VcxN}dmvG|SLypUa{_CMIrd7$L^A0!YX+gJ!JC(7~`!GBnG z19*fHHD{kOCb(4L!z!uS(ie%GpU0;euH;JtMI)=$Gmq#*?c})}`K@m{kmaTl=ZNQs zql3*1gujt$l`F&=_Wi81-ZB=#gqj%ScgGsvnTQnD=LL#lxD>-)4d+rd$7>ME-xW%l z)w{J0R2#Sx36phVY#JuGJl?`uKug51hX|jo;QH1J>dkfiX#yfGV>Ga=26j6xI}L}C zG%MG?D`-~k2Z1uUQ%K$H#HFj$|C`6Wiz7lBrZG&YiDdzrE)q$acR2TIG@qZZq6&E# zBkoTkb)DMQ^c@>tdjCM#VA8fjsu;P3<_mtIoBN@EaN-%`+}T7sqqZufSuzMed-SVf z{#h2C378{F&66&PRM+hJU2P(4YaiBmDqcl;-v6|wbpF2l4bCx!Ya9jUCQ0zn@Lq=j zrRKuD((I(QIftpuw0UFF7+qcDu#O9Df|SC`|A z?p#U*ALVTelqa}(-BJi1)%k3F z?QzYDKaJx;R`U4H;XPeUagPUCO``wR459>oag-u*)SWt?7F5BeGo5FlN-tdEK+dg^ zsE4K01elfQg>Rtp#DIt(Uo36p<3`5^U`Yk4nTzbo!f3HCR%vd2_GR<~ZTR}(mp)-Y6Zl~?|!&ixmYa^r&I^ix=g zy?8zT>7GD&qM1MINVw15y+dH2g3%A3UsB)*GQd{sxMnP?+SxjzdA>W}MiaC;RgEB< zZR@P&pRFm2S^W};qhxsgObUTXmyzDnUE1Ddo6^<00nQpMeY*eSiqS6@v?l- ztj^wPq(@t2jf+qx-)MODt3_`&U3|sRKk~SVY~VgL%WA`ba-GXS^RDl8&R)dShcKod zFj}F>lKtc+4D%Hq5NVCfFja3J=qme^(QG z=jfxg&FTEU4hn|Fh9f@c<(=$T!Po_I8=MM%yQGxv?uh$I`Ac=b!#6G>-x5y8ktK|2 z>KC({$%}1WX3i~c(cjI)_6qDLYy}u)k}Eq_#n;4Z%97{g3l6;|9V{cn@PqIpYi)@S z6Y#H_+zZ9^Q%&*nGL7`{6nFx68V4(95@0M*SgT=r*OQTZSCj6ZL1Qwn{8Fzrt#+6T zEN&h6afdJI^(q7zN*ObVp9aJhaP*tLgdi`^-SW`~Pj{i}9|AP)0Iion3tjG`@;-^i z1!N9b{iT}i!BPwnbL3QDuGPW5f7=I*OR4Z8)t131D7Gqj*FOHQNd6Wx;_6NAX*jc; z7v5NRh-ejN+j4R670D+{x|U2ei(^RM+1wS99CnZ5yV(+KbM09oh?Q6Hs@nIm;o*wkgL5eUgzqccp5>6F!(_A zINrTc%w8xO<|hN#d1{sdjK=d)3$j|F`tfadbKZMW_f7g}b8z0%mJ~L~o`t_w^t;8| z&jnL4ApxYkt{oT^VfZP2;4))z6KcFv^$Gr{z0uePpF03&-^Ks&)z1_puC%snO0vc& ze`aH~Ucp@LgzD`d z(;f}8AKN9yMzz!|f4PLx%6S~Y>mc&=|Hs`BN|?sI{hF(Bw6VC$>Q`- zZ0EK5N|Y-aF9l{q>5>RAhuWvSFP>je%azff93KVOp(o`X_}rjNK~-u6;6Uh1|7 zQKaoO>kSz{+11$a{X2J%hPV3XZGvGEjapgVBgu#Mn#~!2XeZ8v{OpO`sY)Bw)27Lh zY5Pf0ldL|KVkU1ZmRzb}q4C~%iXbKj--)~~pKbiqj9tA~`Gf9rM_eru2rcEb#tm-U z&Qs*v`mnF$&mXHleV|$lq~KGn!wf;@YZK|{w}yXax3l46$SHNx8+mo;_YC+AZ7WUa z+EY!8tuRwdqRdbVi;*Y??_gRoR(t5Kng>22Sj|y2-&Qr4^?r^1+U%Sne?ce+VPKXeeat-W9slvS7 zyn1()GrE@YTKTI}RZD7{8yj`pj>FM@fK2T0i0!-CI|EOklGBAq0U4N(61AT`hgGQgT^S zXM@oUmD~bENP7cm%7mM*kVNAdhxv}on){ME&EFUtv-S}K7%zkDBTl;)^U(sbC;6c6 zci~F2u;3=|R+Ss8qURc*g&VtV;45y!*fX*Uf0dFP(HuSvU;5b%BmsNA*)D zOdXrFsEZOElq(^&R>6$6hn{9|XWMx1r_&STCw zVux#5O-K8+MgMZ_&S!@jD*elCjesVFnS zvl7d~0yxz-WB4i1w^0q#=)zvDFEC8-Hwlj$($KRZIF=|eD_PQbd32Wnc9T^TA{hV4 zVpr(80O5!ncFTq&Y)J)|`Ip-ZyB2KFe)omz`?9K(;Tt=pdvZRQG|=Sg&ONuYT9M`KAyQeUUg)Sth5W#3P;?cBOj^R@VnDqSVnnvPR)32w5A@DWu# z*9{NqF#D#f#@ux}=1Mg!4H0WyJ>}&EsybL+Cu^Jx?ND?cDOjG=beuG_%-w7UPXQKi zsoq$If$i4a$wjPLl2~11KZDQV(|YPyC5?`n>=5ZU4J>ABSp=#6dQYDr(e|S=1o8KZ z1%~!;{msYh=ZO%Z!>l(-7i(%FXr_T48Ia2An(3J)DPkS3mw4P?jJ2eeSp1#M#_HNR z&B=o!sBHM`;AtzN_mR;UEa_+^N}-!yX4lNyab4;Tw!io(Gg9Rm;Y+#VCdoh0Vn2R~ z2C<8N9O}QhwuG%ZMh2_?v}0@elwmyD0DZ4OAFvJR0E|U@*W)J<*C2Vt&ib%Q5D7AFBhI>twP-NC0AgEfMw^N+fe-Hl8qDH=uC*7DV^)n^xf46`2G&BA(l zpklGCgw~ez6|GOdvySqLs+{>qgId$RAx^jw&Qvw5gsA7_-IcQ33N8OU=hJm-ITX`j zk*ETn-ESqO0=&MB*N$3Er`gN~?Sbvd(XOm#1n$?Xn~CZ-T|Ks8wVi{Gn2l;xH}g3# z9vHsi9yG4lk60x~>Y|%JSQ5G}e`;nRLzkIMBy+$%+!#!=t+y0yTWD7%c*)+k4@8=$ z!A7&}EVTJ$=)sQF?syb-VT&xs^%NLNF6EM5on@Qb=jAyIB}GaNHKrWW1&E;=a?~6_ z!ol;c!Df!f>qY7u^sS2-EOI@vY1QOgF~Ty3_M0OZk+ZhPosCLxb*)Z#Lw`=ao6GKL z8G$kz^14 z-)Ho^OOt6HKi&|5K^;3DuXMoQSk|#Lhg4Dvu2u48S;a#+HyY**osfO27jI)|hB+1} z2>h;9a&cp9LA+e5PP(w7B#qOf2bhi`Tnsy()6|);8_YJmJtD?Y1d*Dl-!T*$p*RDEt;^<%yXnC+A^Y!!*yyvA-vC4FuQ!>9~k9b#BT?rA?n4Ap&x!Hjo{) z;4-kB=R*$ks2RVsB(Gxf9>F*y16uHkOr=R{wxlUvdl+4467wB?7hH4)8%KejL4f^D z^1ouSl%#%CKkK73php8T)HK|v*cnNj%*%OffhKqQeH846fRJOCzIMk$Mpsi`EZxEg zOXev|1&y1KJCTH8ENjy8Q-DZWM=Tn5MlIjCvahawmbuXmD_j|{@uH0rf97U+^`ATJ zTXiotzMJSiw06zyS~v3Z_M&j}J;-l^mx=q`;)X330(0o}ChmLQN~@4W7wtbAezHFC zD14h+&myt46+|T&ATDF(m9`!`7R6Y%Mp0mPFqd9Ef#K=Osfp{VIa>qYUryfn(%R9k z>5n;gWo_POn^I)NSF1=y#2z6U{fACPVY8#-ATfB50*|c8g)eBvwcK}dj?=Qj4tkPH z|6*;@y%V7n#b%tV^ZMA7Jyv_P2)_(E3Q+|)DK%EyF)7hQwk$mktcWb~1)w=HCnHhTbz7%k=B2iUEh>p1+)I?wc* zd6?UPSQjl@SRuhCojG)os?U$D3Jp!ji@upFDS9%kH_f>QBMDWFFO*$VBg$@~4qnDZ z#ydi3~`mX;cV?f^z9xu z^^2ZW{nA_q-Bs9=;fA?aHwsQq>bIhJKR;=fY^TjjjDG32{1vAo$nmj$^10TyJku1` zSX?k2IpMgCwP1MPWg9E$zC^?8ThLcY+^6->NNHZ@|xK4;!QJxP6o!{qh1kv_t z6&chcyRgE$2*b?N7+X_j36d9RX9*4hh-Pupxm~DWC26I62<$5od#Kws>3E_7hpm4G zaz7#$G1Yn!V;VQqbvBUe;ljdKWre~XW|BWNQx2f*J%E24ZGEbVA#Rp|X{!E58Tjqj z)uu+#Ge5$XaT#&HvcHO=bUR6B)kT&bG3@u6IPtN$^=5QjX4=!w)79Txk0UPt9=*_? z2G8_vyaco%V9cI{KF?u9LL=s7Mm=jM8OEP*j!PjqNaK-d*>d_oy`n`PIUjjs(-|mf z*Xtwl^=Lt0A*p@|->d1T7=r+xTRmE{`KkNPgh|pFG)>(`@}l@N6s;Qcn;i5#^)m<~ zaNMq7C!zrMY;XxxOT0FG>sYJr+B|$;^Ul3*=pd4vFCY?D^ZZsO7O!_39MJsue9#tyz2;gLVpUT z0%{fkN_3QZRZYVzuj}XRf;TcWl~AR%YP%kw0DEpPs?HR0cmTT3e5MnGktG%44N34s z*V+wFoZk@irlsp1RN;%J`iiT@t`$TCd$=yh#gu(DFSv|GHt2`B#`W{yNTiO8<$1RL z>BKh0lhAsP1m<^9ejNUn7weL1afK1(dYO&=hbiiKH~yps6;FxQmf0OXU3;BANWr39 zy+*8ltthw-R;r(G>Ndz(%oUX)XL26t%E?aY!gKF?B4gRF+^tU6Pb&S%-LF@N|N0XG zWeD1cM!j2qO+$(zgl$^0q)+hat~9@WUnn`itIr|R_H%JGCRiS8UaIN;p(>movkEA^<+HgDh>TK?3d;(_vbD95<2E@O>_=Z_{ zGbiV536Uu-Lj~cI{OI+s=>1b zMt*x|4NC5k>d)He!&@x_s|?YV6m<=04ABH9 zKj7`2^a2ud#{4_5n?$u)%#=S4oT@0?>2m2_S2GceIgXi4-+4_7YD1Z;Vw zjxd^AcZ1;?ZCN6Of&j{ zOh=xPFP(KUDs`dR9<&nFc$;W}$*+(g7}+YAW@9bUw=GOGax;|_z*BF;*TB2TB`fob z9o<-ZE}UY+(2fc33+IU7am?7qE&*jJ=Z~bI0DsJuD+yxsMt!iIl@ZF= zI&;2Z0gsoHEdFX5R!f4BOjQvoI9Ri#uYBG8^PDWZCA&D=}c4G`*`WczGZwNO`g`xFO;q} zLK`+gSnmsG^Fbf&JIW=Ty3y%!GiFJXnMdRqwHnMdx~M&1pI3gImIePTMJC3(!Z@jJ zjM`8ZI&A0lo~cg_9W^>@WwW6_t`@T12zUF0WsQDEEpzE^DyGD&)_%r0ZojFJNX1Ba zHpa9=r1WbSBPCLL&%;#fqA*%Np$QiOahp}Ys? z_F6F-E2Y}x2rCf0)oE$;ssNg!5uqem)fMc52J6237{82P(%l`WY5=^{1dOd?n0trf7#~ zktF@Hs==fBg|Bl&$VLumCmL70u69t|6|rtu=Qq3XyN z;8)fCs!pz}@e86JRa;+p95!xbewYEU7!TC$h_wEt#AMo&jph0?x#pU`@$d9H>)BAHUxeQQvG`w3V^?nGNmucxeW_X!w%j zZpvvE=7&gaU6OASaJKe`s5aA`1fN@K^w`cGeWmDWwgMBKj|1!9%Kkd-2=acx5IK%h zOtG70Nl+qTNCvO5({Rui6CR?)%4qkOAlGghH=^U!s)cgfnGR~BIp=iCV&tY)4 z%24R_FwnXX+!#fdA{XBzhNR*($YQ`+uF8tRORjKh1y1du4o~Owlo{z3-2ZMF7ylv<+XK=B4dX~i&^-`X+BE|*3j8M`2w4Iad)7@51iB+3!Si@o$ zI~0b4(~=3H`_hlMhf;_;J>c``Dfow;-R*GOx1_ttzKber%~Le7ZbC8;`BQ6zV8kX& z#-Qdk9PA>RUSl(CnY3k*jjy7xso6yL>X$ml(TaTf$DKS&wdL)OQ=dRn@pq7Io7|7j zk{v2e4fL?z_Ys<#l7coi@*-L;uN6Oi0M&(^IO)N80Aeiod|Mq z3^9Q;q6)}WIf~JWTIk>$uH_5X!Oqp+h2(8;xfCsw!B;jrKDGa&z2l(oeEQOr#Z?!s z6AU$51T{3p5{hF6@vzrl<4`?7X?QU*P! zu8{yeLl;KcMVQ4%aG{-6k8=j_pl~}u=4@Q6cF4$qVh_FWgd z=+LM($|{c)muxy$!l74eoY#Urq2Y>8oIMo&2p2nN_Y6a{&S2E|&$ow5k%!(N!%Z(j z!M!0-^(OxP{OBc`T9a4D05!4t>RgoQW6d~h$APO7DH4&eHy%{U-Xgw-bL1NB&$CZg zaIiV-+|?!L81PfkQ=_D1%E}%m48M<$1zkzLlZuSl#GxV{w?%ztdVMTrzz(cY09v`$ zKOsiJ3QQJ-z_cr_)2dDzo=C|XICidbhWcPdr}i-TAH)cZb#y^iPacDDfEw8`6W%Tq zYNR0Q6M+swRjWTg@xn5lf4V%9Bn&P|+)K|Oqstn6)*87TjctCqpA}AZDp!8ZhJmU$G@f3ESK8=s zS=TkS9CmR@w@ykQTbRRZZ&7r+)ZOsl>2+$`!2i0pj7KE01#NQ_5cVdD=;5>QCpj3W zU!OeKHa4Xid9V-=8I`rU%@2KmB*ac?P`4yeB(;V+hp+RMvcJHJKZ95HdddF2c1jN} z%UE@uI_LAohW*fR5IspuO#HDZGWRv*N4lhN#&8DwW6pU3#A$gt@~^egy{ z_hMP*CSi`fazP>JR36k+wKgL`+eNWtk#cpR{j9|>jUT+_f5oW(e?2xoG`Ec_7vy8h zFZj1TCp)Eh)I<>8rz_niU)@nvl?wf{oaiCe_TJb=l5<2augewICX9IPY87umS;ob6 zHHc;=DJi$cZ?!M2d?J`wk)uq#;Ska;Qqx*u=p3Rmy`%MJjktWXu0P zpNG@^>>C<#`8>Wc5~e!!D+0e-|NDg4;}~aoo1s@?&w%l7rRQ1O24N&A-3Xkc2Ft>Y z^gSG6XkkbnhDxySiG~%9(qhh#2g*Z>@GY1X?^0zdf7=XMEF|6K{VJc{@r#{-`72D=b;Wb-tMaEj-36qbO zR&FH`dgKQXxPt$|iC{`xjWn)0pWqE@r2e$NYva}bhb4qcitgL4yH%7pnOE;T@xC1C zfYFY6XRD!eX35Un=QwIrQi{pKpt%<3FPrE%8Mnm z8CX((6yoP{yd|Nyy08456p@h3)E2QqxZgsVU!EEGig7LYW3>}HJxw3U^ZyZkG5#ye zCtAYBTyqPazfC{f8H)J^l&v^*)(;nn0mNi{h|GJSX(h?q654f)l22<4G^M;mMo5cr zj@+=u1{@yyMOoMxR6^`S4ahUyLbon?Rvxg}eY;K+^BeyBI+s|J+d*uA!R*@5U%*C& zjMF5}45S^_fI8)!eCO6C6FhKm^&(*6%?}VOtdT!i6ACIH3QE&-)1JY7skuB!8NUXp z_9VMZH^KK}mWNjh9J4%0$Ca*!DWq-`veqk^e-ZZu6UY?H8R`bO{d6C^dHoY$^1EA8 zd7|k&wGXPWK&%2P1(-!FL z$trx!xppL?pz;)pkAwHd+?VF_Hf2!|w^=x2j^2@2*Q<&Zrhv1-vTX2P*V&E_U$2`N zrXxAx%~cm30gE^-}HPs~ra_u)>Kgy^^+UkDjoFwTIOBsJcYi?ts=Q%LpjaaI@`#@_j#T z^;-?ioMI6GV}A)NY2A;0%(^|z&)A2rCCzH(LG~l|pNwz|!8!SXpTNVa)PMd{cF!%y z$q5^OYyJj2bP*?^O6E)->q200gnq-CZl55ej-%a9jvB@mWoQP6JBtmzVTi zpD9p;UCQv(J@ZNdH9I)uO*4EaR!(x2Dy-~4I>El zmj=({z#8mL6K7>VvveX+EDs{GpTZ7g?W|J)OEujp`hqADaiI_Lg0sWhPYj-)_j$ok z*bJO?J4L{Yo)Uuwc%CCK;;yu3IiyULVr5uNt$JNT|MFaVo*K>Ah`U>>Hs5$l73uwk zIyE7Z2Fpk3{w{#S%*JRZYao7T%hj(uhN@R+K9S!*LN|J>#0&+$aJ?&q-#q`0k@wFO zMSeQAdb-mq%`^vu6I4uG_=Zy*Qt{gP^hrJ0eU0C|g8mZoW&aT2=n%~nx_cbf#XsHj zXg5U5H4du&(yiw)E?w|fn$q4hV-+`ID)XUMmb9B_rV3WHClJBmN`&%N*o7G-3+*F| z`uaJ3Gr!L1QW--3yQ-k9j`_@c*dZ||0UEdUwN!$9iNj6Y5XJI2T=F0O{^Db$AWo{o z!IT^0Xs|LvL+(Q@m-_9(*8Z*$jSGjN+Xy(4;+WkU>vs3=BhR zfMeCy6^lrxd*g7wJH>jR#`qRhf*{(jmm2Xp^n0CC5r^<)+N0*`l|{o2c- ze<>H3m&W6?o=r0?i6dq9iO0mLo8jS{gbQ< zzvGv=Mg(F1gDXB~b^8oIOyF) z1pT*BhY`58CXe>L7+RdaMzq9NR`v|Z>1ZiZ2 zr#a)$O1r%nP!Qd(o~xITy_8fNwW3)5g_CfEL)`?oe|=cn*ugUmbus@3vQKNh&zNk0 ztW?5-HjH*9S~SI=q%dpDZ8R?S?myMpd1o3(^^C5mt8#txhBih;RiZfN_bRIdz8|NU zKkAs4a!*z2O$EWADLs*`P4?w0U`1Q|N6sCY9TW&{3QFxvJGH;k^S0i)$DUq^Npus~ zv)qNJT{Iaqepb>j=Ppscx3on8+gWCN+BSE$3pdVp>ibeI$3I<-c8F2IpDD`{3qoVH z*$g1Hd7(diCIvV<(nars{>-kZMo%B#u&!Ce(Fx@~juM$d;?pjyj-mf*L_pM5s0T>6 zQXi**;R|1;1ilFG6W6sS&NSFzMq}z~FwhO?EN;{`y@gLdzzMt#z^T1%8hN(JyfX#r z(H(epo991;Ku>Fc^?AU%;l7M$(L&~F|FUC^mdmh3k7|d%THWP9y3`}(;G5+1io=c@ zHfvgwxFbQzWB}%oiSajT{qT#-ic=N-HBh3%GDS&QV@b4q+#cgh0?Hf<;wj}}VNb`O zd`zIRwuix$RI|ckORzJT!ksngsO*4|>qvR27y__BV5;@)bo(6Dq2KeR$I!Iu+YT>a zoYpSlj3=09^nDvw{0A?A1of4uN`uq7)GR+Go{1 z9{Uii1wfdmp70Hh`@k3k4lJu{XPaH9B}whsKWuX^i=tKJW?z1K%3l1=_1jDy$4sS# z_H&G8BAAtB<82}_ObC+9jO{10Mou%Q1s^@5yLn-E9005NJ1I>H;U| zGL-x<#{D#tJU|S~1%hK{80FVVxBLWNd}0&~Yn=JI0p8U!#ERC%lbBGN_Z^^vuV5S<*VLh7SA`IYjY{#akUFGtB@@?<6+C;Xs zPhU1R22Pf8Zy=P8)0H93b{rcmaEK9#I2Y>r@Us^3e$39ZPzTzXfO77+U=I6F@o89a zZDc{FF#&dI&UYAko)OOYmK+SfI`kBW4FE@pJ?+z>^)o-vm#DZ-RyZF#o#XCd{$X$V zfFWYJZrP`yxe{Q|me!4{cr9_jSCI-_4noLOX^TID_40}By#>`y>z``uy7WYjSg#@2 zmM$iHur(G^x0_>1eEA%;p&`_=VNIs`6BTJu*vzGSLvMaM9L!?NFM{keDcXwuJBT{> z%2pa*vJWQ_v%nXNb)O%W5Hk( zkbKrD_Pfq-=|Z{8RarxoBphWpBv(z?YFRe#Wc&qf^%1E-BhcCPmq+wcqCsxjggt7q z$74k@uh0D#a@hWFKg4N2{`B;a+rq9!{#orkZ8QBJ2oA9^W*v#IwfL=3Hv5 zH^!Uf^firLrm^Z06r0G%SICCK$#<_4O@~Cl-a;@cG!4S6oNSNpgiXmo#~f#73#C z?JIEG3a-|#%yiLg>o?5op(P?(OMUexM-|VR?>07NA%MlObvuQ(skfP230395LAO~K z6n4?zi;G`c{;cbM2<`t>58i84X9_UZLhV9I7vss;4R4!mK%cE(A9Y92j&-1lz(FEF zYl-+OB$uL>XcVQF-%1U(IwEh2S_qwVd;i-}W*EGEgL$0F))Be9`RSqu$SYgFkrFzU zbSF%(HYe_@5Axcb2Hi0poN;zbOp*7jbA@fGZ=jgHeyXb3u+C)mxa^|IE-nY7s=HM( zSgbZks>tPR9a@7EbUK&f00hSK`S5Ymg(qc@yJYIS6TjMn>^EwIDR%uwK$44U38gHG z<&5Z0X(d`rkzq?Qq4S2U*wh>S4{axQ`puA)KV!7(S7#VBA3F4ULu@QE#(%eo>B|*^ zS62Jj4kTl#LgWtdBuXd#>YjJ|#2a}m{P*?DpZVUjP|Y3nbMd_wfHK?!Lg8|=PScKH z_?37gF5u5D@O>!>FhrFTg+PLkr<)dWiqIRmYe7-x>3tP{w#%0LEbr`t9S3iF1WC}P zsZuIVM8sX*KZ1N@X_k?lnTf1gl>)*K5Miaq**>55wL`V7D}2eUW{bAmv7(ASH)X-m z^5c`?ECiz!-Yu9@idG^{&V{bkYqfP@Vt$4uJCF6%`@ngGX`*pN{AEcLF}~*L%TY@v z2@D%cu0PA{MM0w;C<~EkO_Cp*;dln_HBN#8RsByl;Y`H0P0`tVB=fzcJow0!9{>KF z?$;V|4T6#JQ`FT$`b;2^o=Y-|=v2Atmais_2e|V^f}I zRZ62lPX&)P9&F=maii6BGB9GzSy|2}x*JHp<_Nse-?Y5C``0+#k<0VzFBPt9`9Mi1 zmIb!+Mq-s~%026VHE^$(TN&g|Kk9?8J^UTyeRoF}<**uiH9R@!m8f4ZA|`hIHZ?;f z_7jca1vw(p$ZrWoZ>WqCEsq9^NpIXLJnRj{_5S2X!qzTRH#!KQ@_*7LPz$hgu)Alh zfbr--23N08@Bq(qRRVSM9o08JE^S^48pAL+LLhTf#?!#ysS#O4lH;1Gil=*(o=u0E z3}IQaN*ld8&ZbebQasP4m&cXw#$Rn_-}Y{^U9f~qBRPPViq^yKw?mI5+r*M}WN$0KPCcT}goHHjx>-rqj1^io56`q6i(z6<8T6HgWximW3e zK$GX~*L_7ZEBP{{OC*XfMArV?>hX{^qbV#=3 ziI4~9@X7qe>(|mJS-b@x5p(HMtO}pNxe^Cv0r3KL{ZGH@Z6kh@5Qal=`Xd7iSQ6@d z)VY6SL?p^{;X%g737Gjkh7eH@m}ArnKmQ-m#x4@E^1v6xb92)pHCZBdp#F88M44ZP zrt6eFOy5mg9OU-x=UBr+)_PqXK_di(HJ-;9_^-D7%&w+N27V@w47u3qG_5rl;e-54 z1^R@(Rus>7CTVT>z(!V7IQj*q|5U9jF6eAWVYYC55_}?oHdE^@P^>g*V3NnyuMs5g z^?oI+B>En47Z~XdV`Kduv4%H}AWl(y7pMyEu&s8kHm|c6xW`=_kHrI3LKDztm3AIB zmt(M?^?GvrfF)IE+rP$Q_#er>X%Sp)%T1cfLij2gb)}|%m!RzW;QD&mAVl_*2JatS zR+6PUg{m5N27!!`J;&`Qj=siKY&2By{uT4=cc?k|)`#{H-$S3=5B6ewBNaNE8|kw2 zwUN(x*^P53XYN1fJRBAgL_;Og+;Wqu%;G?D{V)ZefQJrSI9A~$Yjc$EYBl!*Z>E~c z@PYjw(Xm~xWB%jYEQ(LWc^7w)%C)V}{_1leF^oG3I6Rl$NSg)JkR9vBPP#k}SMsA% z36C!8#@-U_?!Wmb&;%}^si!sQkHbgI(o;dj5Pgp5-wtDFNS}wQ1FnO&T2QhsSv_hZ zv}>57M_wNFW^YLY_Y2veaa}sRh#c35v>P9{S4I zX^x&lAT%4jKhtMu=eKhoSc;6xjMcDG52;2zGT)DgGGc=EKVum)YG6g$ju7!PX)Q-` z33@sKYfetxU;6NU%X+lF!Dm`3M2Liz5}VNs&FG}%X}EWgv=wri*J{Woxc>X=^-qdW z$o=gPlqngavx}U;ux=Am=AY^zGcI}BB1E?HDOO?%p+A&#zea-S52uG-PiR;;mlg`z z&2!V&m&XUhSMwQvY5!AaIyo>RIe$X%*aXrK5eAX=PD1w9-Kg122ia*weM8T3 zo2E-#dV2^9k9Z$<)J5cMH@qy2ICho53A|O~KWS98OWpV<+xZ*ZJyL@aDfO${pyUG( zrKaHA(x(5_ZDZjkBN9~JlZLC3ned)u)VUZIGF%jMhV=@q6}LMLAGU^%sra=TpPvK# z*+$5=Y~#Pe)Opk`l^LQ1t2I-7#CyehMYE}Id;Ha`1FDd~b3uV68*TF0gFT!`I_7bgGsq0d0z!`|15E)nLZy6D84t ztik3&+i~VS)aCc?MX=0n`4Y6Ro-1JlIzT;k4%Zp?o?h>!{mwrXwQdG(*g-xV3Y2Wv z-K0nA(T4s7H}=9X$OQ@u|7(ImaaJ8$ZHm`-y<=Dg{$q3xOd>XE!=$rqo$zU(1zFGH% z?p!<)xN5JnRkHhWl(f1N7lQNN@F#J_UFRL?G?GW2=1VP>e_#i^=D8lW*vKcel{s>E z;SHc-LR;;gV(js7Qi|ZISiVEVVz9wZJD3(UE=VS()=G!(snjuM?HyJ8sD1mth2^0* zv(SC)CXq`7@+MIpV#$+-#;OCm`cawVsis8cCv$D{ywngg-%n33-{qd~csrr6fS+q# z%g%kP&vO97VwSdnpkXG99V10T#MQH|wub}Jc@QcIcz(wyu?$F-FW&q3n2s+z3>k_m zQZ}Xk6x3&^w^Fjh^4BLTii8J0<55f;TPsjIlQaGUBjtDJ(G-Tx*efQBt+U*pS7>=#mYIy;_qq?~{}#Cn8ENvLPVS601P`BH)1<>&kU zf^a-GKYfIQ6`V80BU&L*Kywk^q(bzXg1sWv7IjS!lFMCd0%Fo6;4F?;MmtTrI;chL z(*q<;Yxbz0F}Y`5FgvJJaHjzIY3qdvbAsV83SNg8tC^D*=++aVuelWQ33W?ZoLn;J zCuG{MR&kUW=6oo}d5iw*eC=?AB6fIq>(Yttd5p8na?{v(H7 zi1XTDgwCe0yX#*UGspPZcyy?yaGdaz0FnMIZf!S_LO4z`gDF98i^e@}wS zgFmA`xJ$1;bUt<*XI8W7j8K?K7@4?NRkLsbZT|l1kRIpnqJA&e@J5 zLQnSFBMH!BG-{Rz_YD1(wiwI|9nMjEnqoX}Z}FBqCH3;`2t6a|PeZ3(GHahx^-s@X z!4z2}=}shB3LQIpF+Z;tm~lwLri>W6S;noSD@&JE?HK%7PQEOoq6+8~1TBpJFT#eF zyIUpq929HGM}$_vC7$3EIhe=c8rm>-E#1NXV~2-ena`aC)5+`yH0-9|5cNuDkA}{> z?HZll7NDa^xbC`bVy=QP?7>-#rlA~F@^yqwKnd5nO8^t@4|}O23ZP^4h1|dy*)MXX z0osi45j^uTyke1Y5LVt6f<%jq9$Q@qP*C)+!K2(`3TY-Y0K$J{=pb+TN*a5MVm>U~ zBYu3;iaf(qZoP7q#$B?T*X%tAKyjg}CqP4>HUJ**B#G)V2ZXNq(Y;t&DKp^*3@gHW& z`Bl_?l+!VItIa<|r_K}EPy9ckzJjZ+ZD|(QV8PuI9D>8fT>}a3?(QzZ-Q5Z9Y~0<0 zY}{Qp?iTcM?mgdqzhJE~d(7EY)z#fhQk}}RfeopSYlNJ{2_K4f{m>HiR)n^nZ0moi z@R;GSgbunb#)Op5xegXfO#Z4jD@o~UZI63Kdv+D&%)%#(ykc^R%;w>7i=rpZ&NjZV zfeS2N5$+@(SllWfXRYi7xIy}=aox1Ie%WPcB<*@G24atTSvo!A)5QJ$Mr}Lb34HMq z?_dn7&{eDl9pJD(Y7>%OJHxg1ByyY)c?@-{^VEj|sK9C8K3(Qe4a>Ek zv5u;_OYKj5DniSqD2=alzvp?$T!Mt#5f8Nkf{~A_rru(e2pIE1ZksjGH8;LF~?P68JuCKDw$UeEe45* z`ir`mqf8iIfgs~Dp{;ciCFCdQmS{}q_37yD)p*1waDTiS^5^~Y zgcoLbm4$iF3^6VH!m0K0iA0#>iK|al{gf5Wf+UIgYIM}7w_I0N1*PR`Wn>HgaD*YD zG42wa#O$(Y#=<8s4nKVDUT^q_e@^57C&CpF&g0rL7WCkaLK{bn44BSLl7WsK-3`&3 zvzCER%|_W2_Em9B&1gp%Jl$fXV}XT22^(8Z4#_Sym-1#p#Dqv$)f1ZWTG&G0D;{T+ zaSEYR5iuY~iZBf~$T+inh!F&{COh@?GRKR_9XXB*0}WM3S#?%&)?3kjx=iwnqxNyx z$QR_;FgDn<%l<>Q#dRZL?oZ6 z-|JN!Iis71I91u@Xj`FVG&onbm}wOOCeO-K?}v=c=-XpW;X`xz@s+kXK{=BXj&8KP zI|Bzrxwq`fe_dPBzh^wHT)X%%-nS8zA8j&KPx5NRzj&g)zz^10lmRo-vYd}XGTXX zcG8S^@8%6k?fENM)8O4c+C;usxwY?=W*O6aZ7}k%is9?@y=H>lePgE{7F>3C6(gCL zZ4DUQ^-Zqw7Pp{#OFhgt(6bVkPF5G+smZLcW>j@xmGfZE48>BkzJuLUphUR12RI$)Qdk;nR<@J* zz}usO#dw|2%O3g79ZC*65jJ4)(WqWQ*s)&_^v$J-+i2JNBBX%>8uY2qY0Dbi~HB+QuYcL2j z--}uWJP|EUGMsh$--qB-Za}Fe!CLsTes0jdW_40lhwmmP#zn-BucDK@b~eALtpeWa zns#5vVHYi=>a%&eGm>!CIc~#ffnFSFkmX`=!hUnKDJMwi`$BcGEKJEmsAnqI=?I9= zog=r)0dsXWV&#T@Rpa}Fq8?-=%s3%g&PU9N!k3lJaevHF?C;C?L5T8PgjU|NmmZu* zrlyggrJ?VM=qYSe2$$6^(VBZ(rosqX zdik>tck5&CwX{zYnmY3$&tD+F3!;2ulr(!VlKO#Qw02rL-*5->#c~4maLT8ya1q`4 zT)qJsdmR0aAo4CAbFFi26x0u7;Td>afvUrR>;#JT+RhR?aWw_26eTczsvy?rJeiK* z(6zzs^!;ebMyX#EW1eB^5gKz!QE&Dp)e-6rb~@;_V9yptmke}2#X$+jzmh)=VYq4q z*`R6L7z4w9?+*QjKQBe)Perls)rYnt2DGqJM4Ouu(wEE@k!ef=(BQ5X6EcxBWk7wg zTla@gf97A8*k4LM&o;}$nhYEhrn09rvJw{Y4&zPJjM>Utpw?P=u#yK<*i=|6Ne$8r zhi+VSs?{%IfX>Jf#P%hYzf@TP$K1Mf{nPq}GJ>J4nODuw6m2FJQXz!D9L8cK%{rhB zNNKE{e8?ITDsNmbzS%GVPmiC&*1PBe_p`&AZi+(5i7$ja`NFnLgc|V@lx{j_6@sCr zy;o?ve@?7!goRw0`=OmwnX4ZR7EspsJ2kyF$gQyKlU<(hr5JVckc?o(t#o>%9#5us zYm<%B>1=j9k!EIXR-E!DnGP3PBvmkOHrOn8QYL2SL(%dPM606Vmq1t)SanT>#GR(} zN7$;}vzl*NeQA=kS~&0EEZfaEp*a1^Zi^FU;3ziaU>ST``Zzl7L|f^bsxW(J*a%TI z!L>$jDA~H9xAZIU^eg0CqtCQ3YEzb>t^qPN*ily8GCMw`E+EXg{-Ktg6+Fb)cIxd1g`em z7FPgit)8I84qsabK~Bic(#Ht{A3lx-lU^Ctf@S2x^?(J~%ONPz2xl&v2zX2*dJ+8} z-EJb>EvqQm*xe%sKm{-w^F&Mk`)~V5y{Us?nJ?iZ3oFK6(N-HUGZo6~Dl@y(3$*AI zz1VHg+f1>vXKk&c?;)GO8^IZ*Ui$b8TKhk8#C>1Jn4R=XD;=6XCpe}nO4voN{&`%N zmlyo@{l@nWI7L`fiN;CYx$QU0hX$ECW;>17(WJ(-ZqF8yR1QfyE--;Tfa@Jg4G3c# z?p3R+Djm6-sCcg}``am_?}d|vyM-FDl*?ozdr+3$KuWVy?|lC$S2mJy0>@WJ=!}-S zuKLE;47Yhv%GkFMEpL-WbpNDMme%I-5Bk$z^QWTOOJ51;#W0gD&TApzM|Oln43aK0 zaH8eDir)*@`*T_OmTE(DT`KDAX?d|yM$#=ZFy)Q-m@Zk%9cdGy$#jgX9w7m}^JeYf zm%g7N(BBm8zGc3rt?tX?u~MxanMeHJydCiyg!-K~d*1d(U1;GBvK!OsO_I5}(;Cez zV5GipC+DLbOw$8>5PsyU6Dt3MXptN!HWvUaK&>5=C4S!kLxAEwgAF!f>=#zPSUhZ6 zV*Pbw8o!8FB^m$i?e>L{J6GGu90X0HE%eOON8mcY5b*^WGU5C$VK?8kcW{JFg_%LL z6P4;^>p#yy`$6=UA<#OYxbQZ}U@}T7FDn`cw!=2?Aan9tkA6iU1B^nr{BbK=((`-s`oKyzch>uiR%Rt#^&6J|_ zhTv;q44tpO?vBql9Q_12{A*&eqkL1qI8ol=`B;NlVcE`msguD`Z8;7}$Gsp7Z0%65 zUtF9YRQm;8Y+ty!B3M{PZ6U;7vh7M*lnH8#)Z{4TrMw`c%<(gVafK7m)zS6wJ z*m+m*q~!>(4PoWi&%Zya{q#Yr2M5hWP_o)Mi_7qBaY@DJiXn^80sRX&=a}EA;qS82 zRb=8(#ZO(h%*Cx4NV|bJzFxtCgs$Dy@EVr#H^&jLx{euC_J}YPZLv)}4c68@iH=CK z+Fv95OQ4(LVqT4n{>t&EMc0jg+a9@v$i?Vfj9uK9u}hCxS3!C>)A^0|6({fk;|7J)bXmS!rHwOjhq*y?m$aTsoY83MVp#JMIe4 zKlV##(SXn0?}k_BBWmc_7-{h`en>?PvIV8=h(n7te(F2hGIA6e8V7V-W!;;E z{puK6Fng5^+%oC@c;9R}CP|1Nl zR8UVB-Qyz^Fp;$!9CcpHV|SEPoQG^oyQxPZC7)Qp zZ2Lkug9-0Au9*a9Mo;*33%t8#WEc^MxUIfdW}%R^Mi&vxbebPnxAx&*yTDaP0K$yV-r)=< z2qYfbRK)p;aA{2D>c!-3z3;p&f*Lfp&f|p*t<;XfT&CBA`$nSAD5vy_I_c#56uU}7 zUjlR9G?V)WMQx)U;EH4+I^@znYYqk5K8RqfFEcx%MfjhNx$t}W)WtN8F-sm2@v%Ce zNkFv~+4@y}oj>F1asXZ?-)b4Xag~V(E56fN``@JTjt)b;nZ?Ysc!g1i+`ho!<=GFu$VUc_pWGsQD6d{+ zO`!<)mP7Bn__c{}Sk$NYd!Xs_WQ{HtwCtVW6{Bi+|EKQo^-VUhVO5~Kg}46t^DhZB!zNE)E$L1^$9Vx}Q#5&_ zqWrp;Hr|;uyZv8qlykbe3RjDeQfXxl6{f(6AYuq9=+rkqFp^W9eIZ8%)~A2?r&HeF zEUx6M>ZQ3XniuCoMje$lrl3G;G2y1DRd{#B$2-WJqkgic_+1wf43!@j zL=3C|%D7}7kTpMA^eVwAZ`Gt@99@`L3?|W?r^_!;0NScl{f}=Ly2(#fPiT)!qCNvIb0SvyTZxV3?eXs9>P3l2Mny zvqNvoz})1?(ZDIq;&4M7!0rAa z0ulyqIjf?%0?eJVvbHd8z6wI|N=Ts=Z$2gK>7C8Vn}7I2=Q)G4+T2Qj%XcBtzX-}+ z*_CRDF#U60Ed<}_FXIk`=CEAKSL$O)>2{flDs1;Tikv)3RlL`#6ghvRy^y^={Ei~C z0{i%fXLi=9L)mG!FYRY=sXYS`FSZo*{ zcvaUYA_4xKNuMLE;uVz)sh|0Iv?j2KpSkX6`U{h)!;=CJY3}kruGH~JF z-Zyc|K%l*qzwg(sL66EoSnP0F7&E0wJivk?bNSo&N85j#m}gy!HiPb;J2M)v^8y(2 zLmm%~gzJpwJ*CPf!nMDn5O84`HZvKevpuc>>qJ9Jt_ghJ>}~I2JpNu;aSilQG{*eK zUco&)wxIVJM!Fi2mQ>w8_3kG6DT7+>`9*SBIuy0*zcmhefo9V)2L2!5F#)6nZD)z3 zg)-rpd5xJGy$`5BsvTb;HiqCv=D5CUBS8K6jX?WuyCsI#2{-Eoft&p~^9NzQFob!m za7wjtn5DXeEqZOF8j&n6=tyza$T*_;4IVi0tLr~*{r2+TFiodYTHujZ@l3xwOcm9# zzlI#{D;dNV4cWq7F^u+k63bgB@{YJV1krk-)kOHvO_OdRc}=pQ;7%oKR- zX68l#(?9;mEJcm8y+4t5LIR$%GB_c=%vCK4CcAE?wO=~N%G1eyb|Div6ESN15<8p~ z2Q%*ly{SWs7#9+Zk(=vDaP?pl@cQ9Q7u}lEJItdqW6worE4f8f&ApjNFd%1K%()kG zq1^Yg0c%GkL*KD`*wf2`9;IcwpN2`w?@eg&WnB-;UZ}1|SP{GOj^PB$8WeN-C_I zg;~_6l>F*F=WpMB9IvuSZbp4HBatG?J)2Xyif(!EviH9KxlCvuB?)S?;u;G3tf&1= zmNe0(ABudLh;PzZYSIFrkD&hA&u^AQsymjaOuS-O*?NrC)#b4N3#u59PS8q4*!5|W zsw$4m$FXwTljLQl7HQvtu!pXk9lh153lR@Q{xa9j{2DXqfm{sqEUinIlP3wNbp5?v z9YFDl~c|Ns@!cOs{PhPnC^T*;E!3T5%6QJtrSEyu?tj-B81nvj=y%|0L zB-lAcVfN2&uy-e?Do$f4d3OLVASdvLb=7)&z#?sY0r#1woq`~dHV`WZ=*(8k9xE1v z{6{)O-sFNOsQCb4dc*C{wpmX7CO@_Fw-=?n(!70=p1RQEvAn!)cs$=yeMVa%U0Ac+ zjYHLvC*2S|omx*T5;0Dy!w9wr+H0i4U?$-vmZ4^_$Da(W&;Mlb@bG(Ew0Wme-t>^% zt`pW=55O`DqKySQGWv4CHeKx|2FNkR1vwikMCYsf=AQc`NjaAYfs_{_Ob;RTLzvm! zXy3L)OXCon4V}I{|ry_+LnhYZfr$^ zjI8i!M6`j;VuDH^ytV4_u`Ewc2FUrfs4-o36i-4%{qWXFJZ#)NNM!%6@a=V@n?Lmwl`U6^*u|fm zy5v{IaNCYT4*I(zkXZ4Mc}((^%KHaKjgP3G>sA$v30ygvyDr*HCG`ohwNuMwOO0zH2k@z z++m2|76qp2hQNhdhMS2-yj>-WmKs0nZF6^mmA%3_!0=cmaqGtkq@Gu!_-jd+OtNY# zENT{!7Oc(*h2$s~O2kOsEps5%x?7moJeyWuPai>i$8ON6GescYr0Rq7h+4oky%#K# zBSpR9QDfHGkqUq#qssZO@;Zhhv$n7kxq zV;C{$(Z*!{)|DW8hD_d+)U_0=P+$5+eEr3R?8RRG!MEy6ebz0(xM`Zoq_&>^F)G`E z3O3+oqvx~8Kp12v5+p5Q__F2jX67b;>zL=28nxRKVbO$R3`-}=otZQ5Vz3~MWCG?tJ zPj6{*EF57dLS-{E;81v)CJUU3c1X72}t_dujMvfA^DWe>;b%C5Q(#Ah>NNs*Y zu)*uGaC+{d6cgP2WsS;IY7oGG?!dG`R_gw5gf_P=(~HaVOfXL@N_I2as}EI%b^u|6iG-v8jv@Ka0_-N!@HL&4;Un1K#7cyf{dmgVpj6lYP3IZCK5sPI6_{Q@UVJ)*5H9`%T%lD=S zCfFviwKS!LzMnrjMaooi<0>Ee)zj4ZB(Ime4b{fsZx>l;W+am8AvlTXWL3r@|*5uMB z+vy;H?mEe1+4g4kJla8NNe!#k1?7&SeHv%v^*17ORQtY~C`elzQ-?FQdL7=HG6ef4XFatX@ z$AT0KC3!;pseRDgqlBZJ#XiPFJbN{Z5cI$p@{BvTG9*~h$msDk)$ke#CW8aN&d;{x zQ=Bbmg?$zJ(nSWfk@supF$9^*Irb+Em{-#oM7V1&pNxoPrw*@HwLFJ=ae_Ml`e!NI z#vGWKq8u03;~Y7G<)ub64pTn<>2Lc4nDT_LPn4K%;dtmUP>Cp6yl3rd2u)JS$xfIV zxu3_b1=8w>>eWu8Hk{ZA@StGTU46LVya%7XhaE=GG_~-3n)H_8whTY~L-zg>8$_jB}$`rxMeNgtEnq8|Y$f$z2{5qPE>rxIdQE*Ls~ z7G@@tGznCSCKD2QMbIOrnt}bal(7NCKjpQfeumTmPr=%)@{d#onRj(JRJtuBb3y_(?)#G|>^YWXP$Bki(2 zmc%lT5J&N&)o_fIj{3_Ur0sl{=)XCtgJK-sLXE5|@ta<5LPGZ=)zdToE4W=;@bjcB zZ6iXywyf)U0WPa;3<4;O#hp?fstRIiU6fZp94G7aRT1$Xmh0Z}*>If2J(a%}ol}Ao zy3tmF2QrAJ@tJY{gxlgSIh`AcKo)AOL`e++4xLjqV^(>AK;B3GLul^DRemiGgC9My zU-1x*zFJMC+`%q|RxvS@dC!F(WYM`~Wexsjr=cbki^RV3oGc|h*Zwxoa(@|LA9ivM z@Ymnsw=6@pa@^AP8Tdm|Km?~OFNu{Fd1C#0TLYdS%v2X+WG4Xm$8OgrAUy;#`$uB(=Nh;p^=X#)*aT_I3* zZ9QRQk}+f)aS?kHES++lIk9_hakC=5`DX{{hvEh62hMkdT_2aKvmb}PdcRX@9gV34 z!sG>AAVa?yWMsnRdTr4IL@n;jU%vMxHbk*BEZ%=Z=bfz8%*#Fd{dp3R!E`N$K&Jww2821=f3-lw$T31Ql1JrEri!1(08! zBv?4>B8=zw>oe<5%6IV_lFU{D2IPjRvD?vMvrTb0Z4`2Cr2{uG&6m4s=3&y{hUUtb zPptA5{{E$MQsW;wwam!lnD!$nO~h#o159)5%P z>TyNFtCC(Y*yZ~IG2IZ z8Xt;X!#c|8!Fh_}%T7@ND?h~vj4ijN9RMn)GD02#=gfu21|8R5hZnLwsc(b{uoP$N zZw8_T93NZ5OJ_RiT;SjJXP=n74rhd+_UyVZsuhm;NK3`W{Vyr8y+*i`^JbK;JIB6+Ny~KA$MHcS9J3eZV z)p_PL6RN@CcYg#7zW9ugSaYK&7t|Aa$Kah1jMfsBy_$B(oFm5xKGi-&u9NqQnXQ5R zk~rTIjr$77J!=Hc!)pg0f?D-kTeO){pysHspShO;`B>Zbx1DtT$FXuydH7@C?gD+( z5cE@?xaP_BBY7Kqc~YMPyf#%UQW0A%4(fE2?X#G-Xp|$0*q$|?RWP(@@hY`RbDLiE~gIEZdY;Z;2)xYVD|L_ws zU{|PcCm%J!T%UAwjh~aId2XIeSqeEN7aFL9m5+S4(O$>o9?lJzrJjVj(x~h4&Kkk@ zI~#9gSj}{8_fif-kp})K5GS42iYFXJBkN)TYFcv~li}7vuAaKDGa_$7?8lh;q@|tD zO%h`j0Jm+LO>A~2wJ*|c3y4o##Ot+&umxxHV}jf^bztz zSceS$Tn?+>+U}DyE;idu9$5q{S)Rk?)2rPfqoX1)VjH+w*(-ff^|p-LN6pcy`WlUE zj~K1l7BE*$^vLVy_#o&~{bSgPi>G1ePiDOVs@CMvv0O^Zf@P!Gq+Topv3R+Q7A>>v zvU~1x$3tuTwGQ8K&vzh@J&9B$>>?|_!FQr%NRi@nzRo#Z%l>A+=79&owp|&<6k<#t zYA2FUCs*UGJcFZfF}LZ0x_wQ}+>{AmU#G-BT)(SSS;|;~B=?w;I`4Ur;8=ZHB(24t z%4Dv%ederWE>=pQecDLB5ZVA&=}{nAT#_b-n!X5fk(+SE*PG1G&dC3{g^sEnx35Ab zov9>B=rPnNNR8{-`JVu}Zk|p-jlwOlfJi2e4EV<~J zxSgx}9SJ8DtbovY$?(vR^Mv!TmpL2XxS90V?rGYYf_h`*5|s=xu&U#Yh!NZuE*VrX zZrmb-u?G4O1NHtJ9_*Yk?^!SCy5&IY`<*gbL5f|bdi;g<#Rz5g6M=%g)+4Cf9O!LN z@-G`hPEz38mDU6XsY8_Vwu7&ZkkwZ-O0_V7qs8ca>6g83kh@r!67>5Dlzkkev_=N> z{zS0%3wPBTf)l+P7gIZjm>PkNWM85$vq@Ai2FmG$P-nO;7UW{u>NadhZWPSK*)!WO zbv~7lyFV|gK;xiEURrQ11^k^K4xR{1%HPWPV)bbTn-}4km5#J{PJwTK z9q$tR;)Zy5`*{}KHKWZ4Oz$ma_<30sae%lcm#C>8BQRonHqAL#6md?7Ya3cl!}~o+ zplkT}cylQy`&Y`W8y)2JQ`KLZS|&1l{eAgr>d~bVg|R+kQB=%O()q)JIb|>Wt_Jc+ zxND2!vZ~Ez>|Y+C3qKBB^?nz*8Xky|B~r9nJ0Fh!JaNW*7TofxO|#g?`)cL4BlQzt zfWu-4RJm|7@7>jFGunoCgq?bimZj{*LO^JR$3JRNsV!RrSznHy4oQ3{Xa^&G`IaR1 zbKjMr%~vh$3Sv%>8Q;x9SR^K;JC{x-dRU*$>4|#Cz)}~m);)D}B|J!es}zKMvG-Z3 z7+=lay7;56kT<}LTt2<$sOWB!n7OqzXi&Vxz3^VOd@e))3ClT3tH`Wkd5R@9j+5%Y zGy$cXCT<+lf2`2vByW=NyCHjUOV{TW=VZR@_i;cT(kRI5qzs;{#ZU+g4NRglmr+wQqxoyNetOB2fSI^#Haeu4UGC?np ze{~I2rQbY3e1VT0E6=rb4!ye?!JHLOEU$Q4vBTC z93er?>Lpo}qyN?P>?16Ft}Uslj(U}aw6bD(*BfsZjsND%@0AiZCg5`|LgpX&Q`HKh zVY9Qzn+lM;$fQAT+b4>UHz zjb~mEt^P06a;$cs1E*2mI$MImB`oH<*SLqhu=o)=6*o zaL50J#~P72hux2aDf9thDq=sQ>KhyNibmmxB3)4K=fFkwoaODlkA;E{yba@ex%=UQ zJ>KfJYs4nW%WX1c*^6lvg=_r~U+{1ey`6VavxavcZ){mt@65hMnH6S<%+Tv_RsDmp z`gt1Y%mNn#w%R5X8N+2n1*&^O{laB3YeU?*jjRd^IWu$35lR!Fn%wO8>qRR@t+-2X zw;1lb3f_oPtE^5PR2!35qC^tq;Gl8ktJ|aHOi=hpB+d51Ga?L{VvBzg*bm+9;vQmR zK4%hZ8bOlT)+Y0#(1jHg1C)?@CGe!He~jIyJ4gVqWh3vRZ+G$t<4(@?g<*M$+@lGS zNh_D6xiSdM^=!053&+TGxSJ}JB62XeIZQ~F1PL1$@Te&QLNz-O0~3^wR?XdzYMN_87s2C*~P^te^)*1hBjSM_IP)PuK`UMy6JGkIjP z&+g5#PD4K6=!rz&$f~IPd|5kA0pMQKdbHZAqFw8vZSK$`@7G6Y(7vyJr0Yt`3Dc9@ z`$XTaUI(?|@-0#MK+&Wqs>EVYWiA3-$S}2akC!3@somyl#;jFHK4UxNSquUD{M<=Z zPayVytosQJYgSUi*QG&`&#Sn9(|fvJnNtc;S26=SWMG<4eylzu>YM|ig^EP+4f}l@ zQkrnQWe7aD*W*liuIT_BkjygqEU_~vM4rUcIf?$~ZsxR|pbAwIj(K6bpSYHbTlAEk zgg&KyN$IJlr$YysWk!nV@bwvzYUG$O61jk{K}Ap;IX>0j>Yw3@Hy(HziiZzjD|h__ zO?$?A^Hllsat>;5e^y~3#8k+F@HrSiQ^Q6}z#F$!jp9>%q-#Vd@~NT?p6Kc=kfy(& zlv$%yfI7R*!^`bJWp1NmLvv}!5J2-xeUs~JcFar#!4;swZc%lLF|;XM%VEZOT!ks=R5YLsxA}`ge`LL&lh?>)kJLy2 z*M2c#sW4)YDm5_kS?SgUIFA}lY3oWjxnDWE2r5FG$s+XK4Fc7>lC}J>xg+br;GSj* zoM=NM)cQK6ld8P^K~_enjyy^l+Q8lYmtxIP!VMKtScMx9H#jd9B81WL8b3wkO3ta6 zE-vzWpxzmY09C>-8NQM6(QlAZ=EOoF!+%p4Uu1b29zQ-bF(>QVsP5IneUH8SS0n4;2-Wg7>UdP7&H`6y0ipMkX zcpAdx3b|rkx>K@J_+???>d6)=m>3~2EVlciYL}3$0bPn82rn;a+dl4J>g>lj*@Rx$ z+r=RS=+6w$boFThxy4!jp5ocJK@9rlo_oO^^J?&p-aVgJL=Q$))&mGP;}%0g19RHK z9|vr}1AqZ2m>tZnL8TQ$4Fuc6v&SB-WPBz~Hn44v!y^ z2{A)6E{H!t3-x%L?j%Cv3_qq*7zyk(thu)?6WDN5{>j20N|v1FA78!A@2-kDCTc^b zD-hI$Mhv+rKN5M25vUAJa;R!k$UWjZqvN{%)v;_L{fg(j?scvp_}1ycKLyN;A))b8 z*Qk3oKMg3?%@-=h0QnM?2yb2YZRd}#R-kvU_}tq2&v#}#5dnUE+JMr%o`@c)Fw~_V zcXM6sKo0bGTG>N+*%BJr)}g2og60^b&=PDA%)BE=`^+@>Z}?xdv0+Vq5VYM zOVTknDZ!s7@^>FSSEOA4_?2lO!jN&n%3k;N+E$dmGKAl+Zjk%dJ2op4JH_bwEy@g( z^8PW;oW9eCR5WsBB6!Rw-*2|zU;NaHn3eSbVpS-8&Kv+WQZFD_V?EjzA63ZCA+S!T zvRg$Gu3^OvVY%~x;qu@0^`(=(8+j{%N`sR3_~A~I{YlsEZ&TyMXN3Vs0oD&WxP2Vk zf3f7%v^PG@*`{nUl{Guc~E?7(~m@j%#BK;4#I>HwXX~@YK4-jkc zbBS?Zypd!D=<2L8NV{LCqy|Zqx ziD2M^Ni*yn87xd&%t}UjfQh+l5 zOT@j36|uzEj4Hk|(KF|i01$-K?_Li_J3RmrS55`i3mi&Jr{}(u(8lsLEEG&1+fv7# znZ+U5_yZO8F_-mf8%v9|Vk?ufp%j6rA<`hp(vaECbCSwId&j(;xI^#ZONuVK+QR z{hsGK@(7%o*XzQOTY1}KhV|0kRL>g0E6{(ZFUFGvP6+N+0Gj9{Dnu_`xu+qAHlf6; zGeLD$kd>7I!_L3;VA%vMaSPk_`Xzf|HaT_uj-Fb%&PFUVe!rXSR;|8kVM5tfH?gbPNMW+kSmqPYkczrSG5 zjb%!8&!cuI^=(nERVM;%1!3g_A9y3nk2vu+U@h=A3;=7t`EACCalk|RTf^ZQ*VJTm z`m&?Hag-d4N2J2uTraT%X<_o+w)|JTvf~NcXnhX$qNHPaY2|kN@MhsuxQTvD^O0}h zW|K^q;hsaPbGV2vh#4xAeDZMti2(7DZYX(c&W2j`2j)kEQ7C!h%~c#nHoZrU?J1dY zDZNWDAt?R!Y$<_G&g459sA0UD4Vhggn?GDzyHO!zcXH0_;JxG=t{rNuhle!U?Q6lM z7s&<4LrxhAv#?SKpsa{a@8;sqL2T-}qzY_raVF$XD94IGaW&E&cN@1mqb3QLZ}7_F z79$IZZscvvF$DgbiY*j}1c33p^2OBUSLlyHBgC2x=xd7ajl?f^^pk}cuay*oea~?p zqzuhK?PV&i`4}o(K*Q`Aw;Z)DzgfcP%;(-5fCvtGu=wI|?%}&!e4yi!*61p9Uym4V z3c|4_oN{6qVbIuaElq6A3Ss zTsgx0K2}Uqe1x`1PWR90)x$=ozibWbWv%R9$CMP!3|kz7;HuxXZ&}#&7)w;Z1yA7= zjS8sA86IieI@2v1GYEFS}m=?Iy216jO-Kp$#fc;Md_8q}vX(;*( zoB&M^*P-?ak5uHMN4sdnA)&PLp>XhCjJFhIt95G6!e#D4O)M|DW41Eh&4%O2aqmH1 zhK`@d2AHsvqwefG;oC^tTZ50_@_yHEQF>>nKeRjQ({;G}QD(=~CH;1n5m-(Bi|(2&)q<85H%idr~pSR-tT(u}DIc*ML zTOOUB3N(sVo=o&tXEFJnazdQw+hEk$=d?W0QDke3U5%L~M@Nx~4Fk;BH9-|LAr>;l zSaIC5#3e`8z zQI4*GsZ)!|q7QTFaT<|!I{BZ11;tNqGl8O8ta}fzj+SvXy!pJBQEMF(=0NO%Qx;)| zh0%=F0OioWo|jzy0_>zG5!NX67A+5{f45Vwr)~2dUoi(aV4pNv;t0BM>(I`+#dBCU zPAtE3M@|s;)NCqF|B?<(@#z+|vM)z6C_skri%0gOZtl6KPSJIQ8cq*eV8Z5VZxB>iZNZm38JcTO}(S$bR^346EOQy;n+C{(b%1d)FY zL)x{+TxlN!VRUX@b_j0fHC`(gDn!q&{lKR-TU1teEy?2ic`ibB44@Z>Qn%V>BNNHp zr`M!^{(xJ+f8dt&0Y)s=`Q%kW2K{Q*pjZoyP>LSO9am+fK&JhrNB6flSa9{sS6v()A#STRt|X%TQh^Ckrnxz*Z0(Z6 zUVPs_%`WOCcqvIT-up5Y{*N3GR{qawd8)3}KBU&?O`1!c456~s<+fb!6h-b8FEZG~ z7QC#+q8TZY$}K(R)W=V!OQ)=a5+_er$hT&uDKiOOAoCQ0cUG_T2q6&`j7<)$e)xs! zafoMoCiS|Uh(BxeLP#$UXX!N!IEBt%^N#;%6XJRvM&z*|5Ta*h>h1jUY)qsGCCVu`_ zZ631NYJBve%Y}2x5$1PHxt?FQEl)yqZf(6{E3F3|=*b0caHv`HKFC&)eF^*_6z&7m z$oL*U8mj#iQvC-L8_y9Jz7KqD<@lZI zfoXxd5$G2SF_fz&7+`;4+HH7Qe zyD_V4dD2Jm$5tc0opWgUaZB1Q{ELl6qUoyUm47esQb%Y-zz2wERSRQ@^*~Zotx;l& zp`&HX&_%dFFK&>#5r6uLPITWGm@KLKdA$tUcVke`>JIjRuPzh1u=}s`{M=SADimjW z8)6o{XF=dFtdAVWTJe)4RR z{R5*ROTt#Sf%$uE>At$+B&DB{wQeBG zRUA8>kX(J1FDW@mt#^2U%XL@bx?(#|`?sKE!PQsaH4RFH9~L9-BZ^&Zi#!E`S)sBE zi`eQ07>b&x@M2MdvtFW7z1^^4f9zu1rl1HgUsjy%F!nc=zC2hJ4+&V@WUb8NomSDq z_LbaWOk)1pwxLQ12t`KYt4pLj4%poxT#VKG{p0(oom;H9Jhq0^0zb7oF%K#penDE` z*w4+XGykM+D?V`HqMVZeY)E~8$%fpq-1jjn$tpBSRWRWI-@VF7qd)qyfW{|zCi0A zTL_^CpbRLcjf`D>?x7f%(A@3liNBaQe368Q{#6|j^lP^=9(aJ8s#=00{rbA=G{_0D zEu8YTvQAB+mk5VwpvJ?CzyGCM%4G`G zceVTn#C>$~b@b+z1H`qHz^V4*IPIdK-KH$pj?6coswq*cQM1jS$TQ8|z8GRgvrkwd z4w1Rp?E}~OE2-bz>;i(;di5-)Elh&&nokRA{uQ}Gx5bX*!5}~(%9Y_t97jz+hy275 zw?|ME9=9P5k}XSHPQt8Ge6|;(YyE_zrR7AIDR(d_WAL+G;btS#^$G2lpI}bE6_|Ej zcpuoe-u$V&Bhhif{H_$U;4R39`;M3^j%w0QKGL+2%@c99a1HS2``y=I2>ALi4-Y)@ zd{D=@%jauO44+!pQGGW4LAQk{lIDwoiUs$x!Y3)j3SPNZCJhO=(Rs&Qi`6A7ReEB5 zZ40xr{dEb%6%SAiYo3)B1U;+UXkyC0hM?4AC;+tQ_Z`HT4$rTN3J=T>cXF`RDQrqA z{EmlK!h2fCf;-EXESi_E?S}{V8MLWSJ(*+K?T2z|7K?v`@kK}Kn3r?iBpPbX=tOqY zi|&;xE`33VbG0-TWbO5EtSfCF3JQGjv7KkphHz;8xKFvl+(-Q*a5)m-cc<6z@;Cw1ZYoqPzT$2pO8!uXOKpFGKvBc9!b@^>oz_QMPN7kQ50C zrAr#=T3A{E>4pXAZUyNO1OaKJW06L3L12+wI;BK*S(XkL=?2Mf&pGe={RQ_g_x(KA z%v>|Gmp|wI`h<>b_=|en8Wp+jNYx&ZcSA}Ly&7lzdrSypeB9I1c{>y?_haBrw17`L zeuSLlRFmI?cC94)NCrD|U3}?=Svg_+5wh7N!VMvTGF)n!KP$;XnvHd)fE;c znX>Dt$U?1Jo+MJ`+LAwtSB0&T&|T*`>oCa<0+ov@xqAG&uGQ$_yis&AP5tp(LoGkH z>2R@bcS&x^C!fn1O3^bs>8t#k-0_Tzxh&TpIu-QoN83F`7gxL)iGlpD@-2yGxAa^XBter+Zzy~{$dB#1c zX<(B~{$ulk3#bwa^JYPnCUWevg=yLJurRUQ)y?_B?xa5y+X=)JHf##eNFP+2+62sS zt4^_W!AYZNF73z60%*I;v+`$t21Iw!<6?N7u63!f_QqP)TFNyqOGc6ab<6z}^=2*a zcaS8oQppoxp}6f%_c6a$1nC*m+g9HdxtCj8hH$B_4hG(XWsM(@@8GY&gJ>;s5YiY0 zk40s+{uPui3z#_!>YvdLmt(p8!%O;ALd9HEaJT&aPWl(Dqj8VxT|4t2CEuYlk19dm z`$^q5z0~;?^>$CmF1n~ls@Oke402R!4wk3c@o^5hU&x?ppa{#c%QpNzm@aMMoZWVW>M?Pq{>f1@p`nla|l~dMh{(+ z3O?_yzNG2h!+!2w@Q5uiwII~SY(;kNy+2BUUsdyKm!Dy1xb)X0Zu~j5cJy{zFaWDL z;2USA(TGO?(jd@?>u~A08gpZBH^O*YL+1wTY!wz0Z-2di?;lmOm^8k%h7d6Lzol!)d53|Txmq_;#8HcPV1Vn zDGy$!BsWWln~@y2QDMw{OHM|8SwrXCD6vt|6)Wwb{$+aDf3+!;zYI!&EO9*_Kj|e; z$80>G?d#zx#mk;KH=wGsXOW%Zks?ArBj-$pw2%oRN z5D$`VMm&fW@-e6qp9fMShjN@;=m=_tXvdO|)M6{o-+0~+BODhd3->$cX5&$$p3 z@XsBD=d|4$uL~R8O1l<5;SV)`BUQs%-gl4RKA+dy)O&TAlrUWiJRqWI*f^u)JoWCL zP=srfO*OMuNO*+eU6M@2lOvL{^JmnLer^6wn}X=tE#h^oljJUSEBcjw)l&|eO?yJF z7?Y`IRfuqZ275u}b}5tGYpy=FWUv6^Cmw`^YXzI&oUs-;}k z4p~Tj&Z3ujJ0!q#trr2$-fsIc%k!RNHz@`M^5Ixm zDw^(ssneS>Pk$OII)%h9Qp-1krz#!fJx8pp4S)5feR-7(Ay}CfT&xN_QP8Nc+DyNVj`NQH8j9$ z0qt5SHf+OEY!H+1C}eX{^&KOjLh#bQyN_#G$N9p!ZY`@nXVcW?9^s6Fo1L=RqEI;Vc+fox!>iLQ$kumtk1K$=odSg!p zUD}mC4+T(SY>Mr}NvQOh-1Xjs#C5^ivAneFDnSqN+ll~Jdm9%haW}EnHeDcA!TQ|R zyK|M|@F9la&4lf6<5)pDD)G*0Cp+~5QE7PN%Y$@wX}L$;#M zZ*@VGB{?Sv(i7jyi+!@Kr3nT0P%DA3+e~-xk$AO;B{o@vw~KuTXD3n|)^-nmrXKyN zvXRfe{C6?+rW#wPK)Gx9$xw`y>-dr8X*TyJVvpVQ>Frr?ix=B;#$v}!| z>j+?n42~a?i4H#kNggL~R0s0)C}RM{58fXLVA))sTfDauw{B~$#R7hXpFe*}GF5tW zx|cA}R~zgy<2@Rcl>drOf^8PpA4Hj=f79mjAD)=mWF#T{d2XaNl!eP5FGGdFiZ5CE zg|Tc8c2XO~K)V^oWWzz>S4ti3zJndsOZt$Ceq0xsd2n!!uXtuQb@SFg&j^M(odwzb3D*i<*^41A)>TKL$5p-b(yARx zYzHl(`Wqjs{4CC(?b2nETvko|0U;a6VZ!o1BNhJQE#5`0>n9%J|6ySx;hAR>x>sN< zuAH=cq1pvY6Ur~ZS1oW8a-dl853<~RBz|bSRdvWCY`Nq;TEj1|=kwjFr-CH(yzehQ zJ?+}%u!q#g8gBpgl*i(16J35nVd=dsO*3bp)@=WA{7FR?o$*N0d+ZOtz%vEzP+@U0 zLZHcpv&&~7Uh3zo^nch#`XEASGiag{5f*5KO`nGtJ=X9Uez=UO-qe?Y(Bx{0@V}It zI~v0NcH<|`{^1$yTs%-J!oS6Q20=ba^LC~c*j9P<6svo(J^hytmrf;xdvR~GyL=~F zHy`@$OYvs%glm^B*=mJPD|0lZNirS|W33y&8qDLLSOSZ{;8<)lP_p|+unt%z% ztvsL1!t~YyW07(ZqhR)1XbctyoL=fJn158&`emj#k6~j-1D1s08_^cfV8K=VRG%ND zLWj;&QnXiK05aSWc6uCQ&Guf0%!W$W7F9Zt&LtztN9PUner9GCy1JOAb>BT=`x%$mQ0djzC1gd`k|K* zU=bWqqRHND>_tib{lqOKR{UK{kgDKA3X;ourhy9W4;=y6ixR-yO#Jt?EF(CiiOwc* zJ>L=*qNC*CYPC9djzn{@H|e+vwcf4>uhY$VGmVgssnU()4kN zdUeClNG{!K#KE+cV$7K@C~-@f=-IXQCfj3=*I>TknNj%b-&LVTYkJMknbX%Ta8JVo z-lQ>@jDYw^rcmat?aBYbl%hU86TcuS55Itlz{$giY$^2tVoxBm?XiAJZmI>E(=s)d zqWI|h31o|Pj{c*yKC@ZtWui2gDz4~ZJXI+B>ej+cqnQ*Ji=Rd%oZ*c76o?bx%JvJ+ zUyaluwm3bR1fIjDR-bSjNpju7Kfz!?oexCZa z%6m%LZoB=9?@b3J376nB{QM@UjL07`NFU1 z^*-`l5gnv8=0k84i{Ii`b$$f*6E^qSk^WAsD|e7cdw6eqG|PxOf|%T})Ryd3nJ3&p zD#+Yx*)r@#?zDM?Dn*E6Yk`k4oAw5RBiS?wx^Tbf6hjX;3{fz)i9KRaC zJa8GV+#T1kA3T$*PBZJtQqm?+JQhTPdm;#l+rLg>&iv3(6q2 zXw7rhqw7_{JM*JRU+>K?pxK=mGd70#2plxMfHSG7MjMz!e><9kZ!&{OS*`wqA1k0{xf7*DMS z1-{(Y^gp{fhYr}4LRy)6F&lL930&u{`o@j!ubNhUgq{itL2Dxm1x3h0g6#cONh=T9 zLfHb~#0)5pfwnQqYRNQ&D6}b) zgR8_1S_W-%Ol9t!{g-$=q!G!s#&g}En31b4&3AC)KvJr~KCKnyj(=rg5Q{z|7MbPs z8UZDHt=D2?@0R?#SuLE5l11oveq{SIhl=0b1b@Og;?=iFtFf~lg#FaF_e|U{EUOhw zK^^o44*CqZsd|tZ^smu}yA74y_Ra+EH-@FK#qm4o*NVp5#{Yg0NS@h&Thf1xCUKu- zc};w8n#&enM6@bd{7e~8OxR$%lqVAGVBvZC8c#u0nme$m7dtkKtktV zbZcdOKc-)v{*QX}+F@05>(}@0mW;3mc-NdV009zbH0y>gVOP1ABhE`EFQww7kD~~e z-cSnnV%b9|N`~2GKK&hh)Yb3cx9Vf2Tvt0r_4Z*;Kxu)p>}CSvWF|>=c3RGZh>pqD z2fI*dXSDCk=$E}Pc~2VEyqO`NC_0*_M-9^0$~}Tjb{4*6Bw~wOxla3zfZhy8JWq=#be|NsZi|r;s{aD66F)a##itoK zu{@wZr<^&rkbRKb=<a*0kq*Y&0IQ6#ZnVuq(h*QKWBnB*e^b%tvG)gXSF*4y##oXX zrskqyj6V~Y9=*Fs@-#2eNDZ^ti#^5~f6l_(b#jN!?&)7@;!`q--(Li{Red>XPdLn% z3|MSBc4}WHQ%;;FY@jnVOQOITVJK^v#z)of`eD^oxy`O3Z-p%Y3fdqIw{P6rt?_gk zEa9E!uLB8Xh7pPC)j55OYOfo1zIta(RW%&ClirI(ji?}({1iOmNKA_yN?ODBwYEp^ z7kus?iia85zBeE%>XD=h`52$n0B-Uh*Z%bAu>lRUdw1p#}&w*z;19o?ce9H)~UR$(b)@|55qgjpIts>+`CSJLRk0-}PkfR|F`kBfY>Qk}8%H&cy#ou!Wrk5aJs54d=grnm6=;vA^ zzulxlLNUEdI%scsZOLkoxb=OG1Ak;EAD)P(B!H0J=QukQS7jC-v53-6b;W(AAkA@) zxic(k%Mc*6Ohw+E=w$IL%p-8t$@;!z-p9-+b7|ktUX{kPMZr1$vi$c{yNEfmfPvs$ z&V!CL6-lj&b zxN^Db-VBj2<^yfA3Dy)SnM|j}d8^{bL7N^FJ*S}tnUlSKhdXWLf&W>)LF6C%2$^!s zPgE(}#uDWLt5|dmz6A2OCf?xy0LMiQU`()wPnu>I^`vF9)30k0{aKO+A}hhft9YjE zdl8g$cM2>c5Y0pFsj1Dh0qF~$9DDj91SfgdO3a1?Or@UHM(hO)w*D8SJjQ^ORr`Zu zvw#vy3%V3mq4%cV2cX^>w&fAeB^^klhBQK{R6Qr&?Dq<4OK2K{QJ!yN7e-TsC?Edx z{;qBO0AoBF-Fomm6|)stBpaYY>hU(I!TQ?C!$W%?8pM#=G2OK!{6|#=K6Xd5A-wYe zcGDCwC!0itZ>dxaANWXz?pRmR(+^FwMa1QMUW@eyNw>t)t>iI5zs8)Bl5!Hq7T ztDD_$iONHoYwT7Sno}~J%My*s`FAr6#)_91x_v5y&g(P|!%h;scC7C?f(VZ==U5DQ zXCsx$a{`*oPL7EKh>DN{quI}cNynQan`D0;Sm*dXrm?E)X0Lq` zalFHKe||Lv8HL=}!a6gpto|YpR&s5(S3cKg=rhE99qd-}{)!jYwGDxs@3`Hb&0=D_ xj$rkdup5{AGq3n%%P|P#W~UkxIQu^I%*tvVcAI>EaesM_6{Tz$A2v;b^?$V9#6$o9 literal 0 HcmV?d00001 diff --git a/.cache/pip/http-v2/a/1/9/5/3/a19537d3cf37c122db841d6fe4cd322bc10d1a558bb00d146b85cb9a b/.cache/pip/http-v2/a/1/9/5/3/a19537d3cf37c122db841d6fe4cd322bc10d1a558bb00d146b85cb9a new file mode 100644 index 0000000000000000000000000000000000000000..28187f5c0e5dba21f239d5cb32d402ec9d5d37e1 GIT binary patch literal 1777 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⪳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.8 +Description-Content-Type: text/markdown +License-File: LICENSE + +debugpy is an implementation of the Debug Adapter Protocol for Python. + +The source code and the issue tracker is [hosted on GitHub](https://github.com/microsoft/debugpy/). diff --git a/.local/lib/python3.12/site-packages/debugpy-1.8.8.dist-info/RECORD b/.local/lib/python3.12/site-packages/debugpy-1.8.8.dist-info/RECORD new file mode 100644 index 000000000..691b223f7 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy-1.8.8.dist-info/RECORD @@ -0,0 +1,537 @@ +../../../bin/debugpy,sha256=ESZmg57WYRH-xp4xozAvnj41FvyzDV0s83CcGE7Ijmk,226 +debugpy-1.8.8.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +debugpy-1.8.8.dist-info/LICENSE,sha256=g8PtOU5gAGfBe30cCb0-og8HA7jAcW5qn0FLmfy9-BA,1176 +debugpy-1.8.8.dist-info/METADATA,sha256=YoKu7VkuUuGHQV2SXoiYYa4mxIFm4UlntmDi8AWrX-Y,1093 +debugpy-1.8.8.dist-info/RECORD,, +debugpy-1.8.8.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +debugpy-1.8.8.dist-info/WHEEL,sha256=YbHnhvgpwfhkIgtYYWDJpc7c54KlIV9fl3xT0mh_Occ,224 +debugpy-1.8.8.dist-info/entry_points.txt,sha256=NczeIkyCjwYAaTVWNszVe-gdhF1rXbqCcWqwFtDyhhk,52 +debugpy-1.8.8.dist-info/top_level.txt,sha256=6Om6JTEaqkWnj-9-7kJOJr988sTO6iSuiK4N9X6RLpg,8 +debugpy/ThirdPartyNotices.txt,sha256=WzmT853BlHOtkEiV_xtk96iazYeVDKWB2tqKMtcm_jo,34345 +debugpy/__init__.py,sha256=B621TRbcw1Pr4LrqSZB8Qr0CW9QfpbpcEz2eaN16jns,1018 +debugpy/__main__.py,sha256=a_DXjwzIJwPVnXlh7z_VnXqhSpuEr1vd1DzCwVt6tVQ,3187 +debugpy/__pycache__/__init__.cpython-312.pyc,, +debugpy/__pycache__/__main__.cpython-312.pyc,, +debugpy/__pycache__/_version.cpython-312.pyc,, +debugpy/__pycache__/public_api.cpython-312.pyc,, +debugpy/_vendored/__init__.py,sha256=cQGcZObOjPcKFDQk06oWNgqBHh2rXDCv0JTNISv3_rg,3878 +debugpy/_vendored/__pycache__/__init__.cpython-312.pyc,, +debugpy/_vendored/__pycache__/_pydevd_packaging.cpython-312.pyc,, +debugpy/_vendored/__pycache__/_util.cpython-312.pyc,, +debugpy/_vendored/__pycache__/force_pydevd.cpython-312.pyc,, +debugpy/_vendored/_pydevd_packaging.py,sha256=cYo9maxM8jNPj-vdvCtweaYAPX210Pg8-NHS8ZU02Mg,1245 +debugpy/_vendored/_util.py,sha256=E5k-21l2RXQHxl0C5YF5ZmZr-Fzgd9eNl1c6UYYzjfg,1840 +debugpy/_vendored/force_pydevd.py,sha256=spQVMTUrxCRoNiSKKIkK96AhEi0JX6vHxcBIJNcNQE0,3172 +debugpy/_vendored/pydevd/__pycache__/pydev_app_engine_debug_startup.cpython-312.pyc,, +debugpy/_vendored/pydevd/__pycache__/pydev_coverage.cpython-312.pyc,, +debugpy/_vendored/pydevd/__pycache__/pydev_pysrc.cpython-312.pyc,, +debugpy/_vendored/pydevd/__pycache__/pydev_run_in_console.cpython-312.pyc,, +debugpy/_vendored/pydevd/__pycache__/pydevconsole.cpython-312.pyc,, +debugpy/_vendored/pydevd/__pycache__/pydevd.cpython-312.pyc,, +debugpy/_vendored/pydevd/__pycache__/pydevd_file_utils.cpython-312.pyc,, +debugpy/_vendored/pydevd/__pycache__/pydevd_tracing.cpython-312.pyc,, +debugpy/_vendored/pydevd/__pycache__/setup_pydevd_cython.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydev_bundle/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +debugpy/_vendored/pydevd/_pydev_bundle/__pycache__/__init__.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydev_bundle/__pycache__/_pydev_calltip_util.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydev_bundle/__pycache__/_pydev_completer.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydev_bundle/__pycache__/_pydev_execfile.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydev_bundle/__pycache__/_pydev_filesystem_encoding.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydev_bundle/__pycache__/_pydev_getopt.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydev_bundle/__pycache__/_pydev_imports_tipper.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydev_bundle/__pycache__/_pydev_jy_imports_tipper.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydev_bundle/__pycache__/_pydev_log.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydev_bundle/__pycache__/_pydev_saved_modules.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydev_bundle/__pycache__/_pydev_sys_patch.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydev_bundle/__pycache__/_pydev_tipper_common.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydev_bundle/__pycache__/pydev_console_utils.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydev_bundle/__pycache__/pydev_import_hook.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydev_bundle/__pycache__/pydev_imports.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydev_bundle/__pycache__/pydev_ipython_console.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydev_bundle/__pycache__/pydev_ipython_console_011.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydev_bundle/__pycache__/pydev_is_thread_alive.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydev_bundle/__pycache__/pydev_localhost.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydev_bundle/__pycache__/pydev_log.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydev_bundle/__pycache__/pydev_monkey.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydev_bundle/__pycache__/pydev_monkey_qt.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydev_bundle/__pycache__/pydev_override.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydev_bundle/__pycache__/pydev_umd.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydev_bundle/__pycache__/pydev_versioncheck.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydev_bundle/_pydev_calltip_util.py,sha256=ZMO1wM5-1IrV2d-896sMLYoC0RAGSE-8-PBbfNo6m9s,4684 +debugpy/_vendored/pydevd/_pydev_bundle/_pydev_completer.py,sha256=uTezSnBcGiiy1AhwehM1XzHOr7NbTHXQz_0C9uze674,8535 +debugpy/_vendored/pydevd/_pydev_bundle/_pydev_execfile.py,sha256=YeFIPF5nFVaA1seRIa_KAMM1ac5Qo43DS9iuyBe-tFo,485 +debugpy/_vendored/pydevd/_pydev_bundle/_pydev_filesystem_encoding.py,sha256=yp-aAAwAGrLlR7GyzAb0fbsNFLaEy1uMJPLg8ULFi64,1101 +debugpy/_vendored/pydevd/_pydev_bundle/_pydev_getopt.py,sha256=St7LkdI7n2bF4Xw_Kr-8t7_1YqfI0xAW8mkX_57ccv8,4429 +debugpy/_vendored/pydevd/_pydev_bundle/_pydev_imports_tipper.py,sha256=4Pgzh0yaDeQi1YKKopCgRu-eCcAL2zf9BaPMtJ4WSgQ,12312 +debugpy/_vendored/pydevd/_pydev_bundle/_pydev_jy_imports_tipper.py,sha256=nE9qiNXx3_ZIwFlpKFPB1KHhcvEphoSGhv8ALOYzPBE,16994 +debugpy/_vendored/pydevd/_pydev_bundle/_pydev_log.py,sha256=ENhSEv7ekEcaw-91a1EW6nqlDEO61qL6BvVSS29fshE,554 +debugpy/_vendored/pydevd/_pydev_bundle/_pydev_saved_modules.py,sha256=wegdTSDGivI0gctzCr8N2ueFxXfztNP3Ehznao3RWP4,4740 +debugpy/_vendored/pydevd/_pydev_bundle/_pydev_sys_patch.py,sha256=u0Nl0sV-18ldTJu0okEeR-21l3Gju0aa2JiRfK9QliQ,2237 +debugpy/_vendored/pydevd/_pydev_bundle/_pydev_tipper_common.py,sha256=jEVMSSg8ShzeGNaYIdPUxDNwo1tp1UfbUs_XrCh5ieY,1228 +debugpy/_vendored/pydevd/_pydev_bundle/fsnotify/__init__.py,sha256=Vdcr0nJLaQOYBWn5o4rvZfi5n2-A52oyiJbQEOV31RM,12706 +debugpy/_vendored/pydevd/_pydev_bundle/fsnotify/__pycache__/__init__.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydev_bundle/pydev_console_utils.py,sha256=t1lS1eqr5VYb7sy8SCfI9mUGrrCvKe8YdUFmlNe9eg0,23750 +debugpy/_vendored/pydevd/_pydev_bundle/pydev_import_hook.py,sha256=gou6qpNq2AtOlV105_KjbRFGuLinxVxVmm-oJediz-M,1320 +debugpy/_vendored/pydevd/_pydev_bundle/pydev_imports.py,sha256=BtBesnz6_ROgrRXhNsX3EOZ1wQdmYi8KzdYaUQPqvG4,403 +debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console.py,sha256=1nRJShSTk7u7LFh9FD3Mmgx38b5N2OKljHuUMlXi0Oo,3773 +debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console_011.py,sha256=rpH_5dgX-ftT69TakcnEyBatLzSOrzIr__rWAUht91Q,20763 +debugpy/_vendored/pydevd/_pydev_bundle/pydev_is_thread_alive.py,sha256=j_2C_x_vxQi1l6ccKaeTtyQfbWLZ5v-kpoyTnux2pEw,877 +debugpy/_vendored/pydevd/_pydev_bundle/pydev_localhost.py,sha256=hdpf8wjIcwxImg_n9eyC3fTLLIpqXBCbICFZ_8ymVRA,2071 +debugpy/_vendored/pydevd/_pydev_bundle/pydev_log.py,sha256=4DmESdPd4gu3HSjuwSZsO9A1mCMX-H3RlMjJSHbNuFY,9321 +debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey.py,sha256=d-Wle8TY3imtH72Qsty0s9Bq98CQEw_c12afGs1QdtA,44063 +debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey_qt.py,sha256=08fPxniJEp63MqA_llPXlq5gfliXtwslmHQu3njcLTE,7310 +debugpy/_vendored/pydevd/_pydev_bundle/pydev_override.py,sha256=RDNX5x3GQDkZvCYP_uzi_hQ17vLYPGFXM0OhEkfrbiY,871 +debugpy/_vendored/pydevd/_pydev_bundle/pydev_umd.py,sha256=3a4qX92uJSnAPBzUEc0Pwxgufq-4Mw0VNrxjK5v6zBw,6228 +debugpy/_vendored/pydevd/_pydev_bundle/pydev_versioncheck.py,sha256=vKCufGZ5intWqErkMxo1V_gwB1lIt1wtu5lzi0bfkaE,508 +debugpy/_vendored/pydevd/_pydev_runfiles/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +debugpy/_vendored/pydevd/_pydev_runfiles/__pycache__/__init__.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydev_runfiles/__pycache__/pydev_runfiles.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydev_runfiles/__pycache__/pydev_runfiles_coverage.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydev_runfiles/__pycache__/pydev_runfiles_nose.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydev_runfiles/__pycache__/pydev_runfiles_parallel.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydev_runfiles/__pycache__/pydev_runfiles_parallel_client.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydev_runfiles/__pycache__/pydev_runfiles_pytest2.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydev_runfiles/__pycache__/pydev_runfiles_unittest.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydev_runfiles/__pycache__/pydev_runfiles_xml_rpc.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles.py,sha256=j9CMZnmkYwtnBRakF7DWvLhTkiiuj82H9LyGUkS6SuM,32678 +debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_coverage.py,sha256=bHeJjZUZOt4Dc2a7S3jrRerth52qkWdOhUUTS5JZRl0,3408 +debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_nose.py,sha256=shYjBqxALylDKZjkSZRtf27dvBaooxhNshHizks0GxU,7556 +debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel.py,sha256=32dQKKeVuZsVPLWOGeHnrJFLLegs8r84RpLCvNpqXwU,9480 +debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel_client.py,sha256=eWV6nbYBpLwNOv1GIPr32VOkUscKHhZJaqFpNq9yDj8,7712 +debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_pytest2.py,sha256=L3H6rGDFd8ZCPwaR814uQtV6AAahO0WKK3FvSpO4j6k,9845 +debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_unittest.py,sha256=XOwg_BGkHh5DGQ4BhgHcCFWXPQHnW17llxpXuVElPV8,6566 +debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_xml_rpc.py,sha256=JfGq-wvfvFSJPGemDg_iWXv0u-h7Qxj0Ov4t-dYNDAA,10833 +debugpy/_vendored/pydevd/_pydevd_bundle/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/__init__.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevconsole_code.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_additional_thread_info.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_additional_thread_info_regular.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_api.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_breakpoints.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_bytecode_utils.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_bytecode_utils_py311.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_code_to_source.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_collect_bytecode_info.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_comm.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_comm_constants.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_command_line_handling.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_console.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_constants.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_custom_frames.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_cython_wrapper.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_daemon_thread.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_defaults.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_dont_trace.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_dont_trace_files.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_exec2.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_extension_api.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_extension_utils.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_filtering.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_frame.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_frame_utils.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_gevent_integration.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_import_class.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_io.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_json_debug_options.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_net_command.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_net_command_factory_json.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_net_command_factory_xml.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_plugin_utils.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_process_net_command.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_process_net_command_json.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_referrers.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_reload.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_resolver.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_runpy.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_safe_repr.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_save_locals.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_signature.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_source_mapping.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_stackless.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_suspended_frames.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_thread_lifecycle.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_timeout.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_trace_dispatch.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_trace_dispatch_regular.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_traceproperty.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_utils.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_vars.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_vm_type.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/__pycache__/pydevd_xml.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__main__pydevd_gen_debug_adapter_protocol.py,sha256=PX-aosnlfP8oJLug1Gmc2V-jbHaCeWs_MScBct3ISKA,23339 +debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__pycache__/__init__.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__pycache__/__main__pydevd_gen_debug_adapter_protocol.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__pycache__/pydevd_base_schema.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__pycache__/pydevd_schema.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__pycache__/pydevd_schema_log.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocol.json,sha256=ZK1DO5_0uSNgdx_I2sUNz5yslRwAV9CvDS-Ca0MIe_s,170390 +debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocolCustom.json,sha256=NmKM_bN5s6ozUPXIFc_Q3w6unk6Zf1hb1pgyjvxv4QM,10616 +debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_base_schema.py,sha256=BHq0SoUikbOeHAyM65ubD9jMBoB0vMCmvzuVzClBkPE,4000 +debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema.py,sha256=a6zohIFheZYlwweF7zbLPvSyNDwyy60rp70ltwIfUVQ,843038 +debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema_log.py,sha256=123W8MKmZHTj7dNj7QT91n6HdYt_jDaWhk_WOc-X5Vk,1254 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevconsole_code.py,sha256=jpc0pWVCqQi6NLpmkfUpEFLCDSUuSzPjW7k6c2rFPS8,18936 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info.py,sha256=yZWzEG_rc-bLwcO-QDkwLm1gfxDkfsxRShOmR2vvEGI,1644 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info_regular.py,sha256=cFx2V7EQ41GC0GEkp7sRrYl0ys485PYS8Rn-5XXAsWY,10811 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_api.py,sha256=iJ1kbtW0MLq2AgsP5Jkh7AaRmUnKYRUVfFcSnM9BYv8,51296 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_breakpoints.py,sha256=RpGULGmfu0bxngCoGQWCyweGINfgQ-MGv4VfwFm7pJs,6004 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils.py,sha256=pEUOkF9ZQYGOpFCn9xew3AuoJJda24mUD7uMGE3jmYE,29025 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils_py311.py,sha256=bGoEjyxw9Cwiyh370B3f6e7jg3E-dBmNLvGMFrdtfYU,3600 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_code_to_source.py,sha256=dd13-dE1F4DgW6olJjnHi80j1lJXnXtmjwlKRDXwxfM,17611 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_collect_bytecode_info.py,sha256=13NFj7JNupsXoABa9HEWg4IwB42N3WAC2PkxOsvpTiQ,38879 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm.py,sha256=Hj9FIY2oEu4Q9BePsFj-wr4m6MMCXYOnfRzWi7pMfT0,78709 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm_constants.py,sha256=KKGZxtVkEeEM5q0wx3T6FW1hffOCZShrzCU2z9f97dI,6076 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_command_line_handling.py,sha256=aOfHy9eRFV2qc3PjmSFd5AHyHU8UqXHObsetOmmBtas,6102 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/__pycache__/__init__.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/__pycache__/pydevd_concurrency_logger.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/__pycache__/pydevd_thread_wrappers.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_concurrency_logger.py,sha256=6tBkRL4jF1ImM7rSh9zovvgf6Q6F7JQYdXuuvOZewjQ,20708 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_thread_wrappers.py,sha256=cBQ_QMkzxrWDrREe5t-QzRcxhPM-K_iyScKhP4uOWUU,2038 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_console.py,sha256=FM_He7YK5qV65C_tZO2vxoaWpVy3ptN3hZY8SGYHhrc,10169 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_constants.py,sha256=ixmOzAXWjIObWRe5b1Y2uHdgfRzuea171iiae9DmHUY,28493 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_custom_frames.py,sha256=zfl--e0QFREouhGYO-_Gt1cQ8u6ueDiAoIJY7Hc2Ztg,4424 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.c,sha256=SbbcxQoCgvix_geTAKeBF5qP75z-0bFxcZb6egVRPy4,2619606 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.cpython-312-x86_64-linux-gnu.so,sha256=VljahyAUr3VotCvThJ15d72ua4rJsrovKJuMUOVA1cg,5009336 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.pxd,sha256=XKgDVO6Tp-gH3RVQVP05yzIViQuA5RR97hp5R05RDQM,1691 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.pyx,sha256=XtsVzTNYM-w_0i1msw1OPse6ou1SAnPiCC2JoibF1uo,98844 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython_wrapper.py,sha256=sGHXLxVW9kKVS81I22ewZsrgsGJL1hbSv2mlKWOIogs,1850 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_daemon_thread.py,sha256=DjzamGSpFKIZTeES1zGeQQVCT8W_SP_Z8g19WJYZtq8,8377 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_defaults.py,sha256=5nz2GRseE6ioxiJ_s1dCjBwvlI8j_d3szEQ9nArtfww,2294 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_dont_trace.py,sha256=gLJnuCKPrRYrdkPum_xnEaGoSlB4XXC4_qmyZkm929E,3562 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_dont_trace_files.py,sha256=rrwR9jMY2WDjgjAUJ25B6B3UklGpGqM3F7-6vwTm5ak,6363 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_exec2.py,sha256=t46OdHix6ySRWE7mawY8NMNXrwbSWmFum3rVV5sLpkE,160 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_extension_api.py,sha256=Y3TyC1OKxSiryduwI6_8jOhkQao0pKqHINa7mvAbQfQ,3906 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_extension_utils.py,sha256=iQtNDZKv-hGFSdUg9KnzJ-l_o0VarIFAMateVvj01ZY,2300 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_filtering.py,sha256=0ih5GKDXv2aM3xl_h91BB3WQRbmheRU7eIA-RKUwjr8,12993 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame.py,sha256=Ou_emkuyCeWhKWPWcXqUdrbol7rmkIPLFjM5n6Dj-HE,64458 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame_utils.py,sha256=lgqBlHv_JjI90Xna7KYTBPeFOuw79OsAPI04MVPNecM,14084 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_gevent_integration.py,sha256=AjOT4VSCd4iBxdTf7vCU4euSS6gWbhKZcQcFljyXkUw,3866 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_import_class.py,sha256=FxvE5zjfcmidba4rDih2relTmTHC7kQeHjoxsUijG8o,1779 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_io.py,sha256=Ap8jBhmOJd8NxYdsomRfFojXtEgxXH4CAU4t3K8LFcY,8115 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_json_debug_options.py,sha256=NGcRVk2hb2SuM6VKGp2QjDSEI3-47tSF-ZK2cGyluTM,6153 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command.py,sha256=_iMSMyC7ENFjg7YA4OV8-5QQf226v-WHlXou55H0cHA,4595 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_json.py,sha256=X6mLeyQvEMlIP3Q6Ap9cwAEAZlV5G0j7ptLUY0YqBEM,25196 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_xml.py,sha256=rpM8QOvlh0dqN6cO95cZLCzC5LqOs9sCiZmZEsvy5Vs,23784 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_plugin_utils.py,sha256=y6FV81GoR5mHvGVeNsnVuifunXjqc2YtBeI0N0nuI4Y,7200 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command.py,sha256=953VV4ntmcdRRKhhazI49uAn_j2Wm1cZrHbZtooPEZA,36009 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command_json.py,sha256=BOZ-UTZW_gdrkIywjzALte12VJFDkohXeiQqyRDgtXg,57539 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_referrers.py,sha256=dhGMvpD2F0tFX6v9w4rXjtyKc4QOzpySKMWHAQ4RANM,9678 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_reload.py,sha256=IusZgHtATN80C1kpe3iAD9WqKkW5zydzXGwum-uEdVY,15779 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_resolver.py,sha256=c_9bGh06MbEQw4hbwa7bU6KMQmaUzIu8w4viX3KdBJs,29621 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_runpy.py,sha256=dQEIMsoceb-KuCmhPFRnxKcxrqoEthhSW0j0rBrnmrU,13007 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_safe_repr.py,sha256=sPopHB3gqKdTZUbM8Dm2sEs9Tfp52ocnAxkA8kSQ98Y,14392 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_save_locals.py,sha256=phhb20xJjEfTb_VwTlGtQfFMp9xq9lUdRbGzYK5zhZk,4160 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_signature.py,sha256=UjmfnYIfcofVeA-CdwPlXXRwWFJnsXPrLGoogYA5cO0,6877 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_source_mapping.py,sha256=5LCHce85kLWRQK_yv7neJEtzkQs6l4wuS9Pw1xS8DEk,6491 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_stackless.py,sha256=IKEjb4CWvnqi3Mn9dkZzmphx7nJPUND0esVmhswXXcU,16921 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_suspended_frames.py,sha256=kVWcxu1eVcoBkcICetP1Soaa_RYcx0dhZ_SzvUsvkHs,21082 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_thread_lifecycle.py,sha256=ZouTzWGAYnkNceUz8huF0QPN6pm3U2q_3DFY39-sotc,3854 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_timeout.py,sha256=iTEiKxJJ15sY4rqnDMBnT0Cp0rPo2sTHSfy7RGZMB_k,8407 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch.py,sha256=grsHR472gmkJF6-qYOzHQPLhtnLkdkCY_I2Ie5uSiCk,3917 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch_regular.py,sha256=SFmapFIoLdCWZ3ET_Ct8398P5CYHrdKDXBHx4MziCOg,23398 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_traceproperty.py,sha256=2_4hpLfcctLGL5poRezbA-OdRyG-Cbr1Rid09iKhaEY,3256 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_utils.py,sha256=0hwVWSwFxeoyjskk0s8NELC1b_r57sIAiIypwUN8itU,17819 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vars.py,sha256=GRTcrybaTe8d5a8gV1GUPJG6JzM1ikmT-wa-aEop8n8,31129 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vm_type.py,sha256=BEG4bhTNYPlwmdJe0hCvIU01TizoxhqbIMZR0L6H2Qo,1557 +debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_xml.py,sha256=ekN1XZJ3v0xgPdarUAsZQ0nklq9Ks63FOMoZX2LIFAQ,15499 +debugpy/_vendored/pydevd/_pydevd_frame_eval/.gitignore,sha256=EKhbR-PpYtbvIYhIYeDDdUKDcU_kZf4kBzDgARh1Fgg,87 +debugpy/_vendored/pydevd/_pydevd_frame_eval/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +debugpy/_vendored/pydevd/_pydevd_frame_eval/__pycache__/__init__.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_frame_eval/__pycache__/pydevd_frame_eval_cython_wrapper.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_frame_eval/__pycache__/pydevd_frame_eval_main.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_frame_eval/__pycache__/pydevd_frame_tracing.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_frame_eval/__pycache__/pydevd_modify_bytecode.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_cython_wrapper.py,sha256=dNoR--B9du5TXeycVvNkQwkBf9_utKATcJAKshhRTXE,1341 +debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_main.py,sha256=RY--kYB1fBBhr_uAF5ohaiB77VcnVf7XCcsE8FMVzdo,2444 +debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.c,sha256=RTL4Mo8CXDFJKpkl-tQ83BSXiyUTDt-JMCARVPeAYq0,1181258 +debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.pxd,sha256=0pKrUK3YwQtlJk7vvhZzqnDCJvB6JOb4V23Zl8UrqYI,5324 +debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.template.pyx,sha256=YOHqtbizcUtC_jMeBlNQ6FLQZn-CZ3fcoqChyHF4h4g,24550 +debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_tracing.py,sha256=o-H1r3hMgoWEqiTyjfPMeJHWn87lQXTsqM44PYMEndw,4218 +debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_modify_bytecode.py,sha256=-uuK8n5l8tzsz-CPO8YaBNWbZu27x7LVQWVBpA01Xok,13568 +debugpy/_vendored/pydevd/_pydevd_frame_eval/release_mem.h,sha256=MbMCNJQXkcJZ8UU7xoH44MwqE3QRWZX5WCAz7zCju6Y,79 +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/README.txt,sha256=jgSPsMO3Gc8ncNUe5RwdxdVB-YHyAioWMPXHcD6KbQE,700 +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/__pycache__/__init__.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/__pycache__/pydevd_fix_code.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/COPYING,sha256=baWkm-Te2LLURwK7TL0zOkMSVjVCU_ezvObHBo298Tk,1074 +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/METADATA,sha256=9XadDK6YTQ-FPowYI5DS4ieA7hRGnRP_fM5Z9ioPkEQ,2929 +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/RECORD,sha256=2udHTtpgQXukzLaj7MVfrJhBa40hV7SjP8vyZ5vNqMU,2995 +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/WHEEL,sha256=OqRkF0eY5GHssMorFjlbTIq072vpHpF60fIQA6lS9xA,92 +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/direct_url.json,sha256=s58Rb4KXRlMKxk-mzpvr_tJRQ-Hx8-DHsU6NdohCnAg,93 +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/top_level.txt,sha256=9BhdB7HqYZ-PvHNoWX6ilwLYWQqcgEOLwdb3aXm5Gys,9 +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/__init__.py,sha256=lOOVD9sXmMmUhGrsHT-Hbfvxkkr_fksHhoK3MMRvO9w,4153 +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/__pycache__/__init__.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/__pycache__/bytecode.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/__pycache__/cfg.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/__pycache__/concrete.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/__pycache__/flags.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/__pycache__/instr.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/__pycache__/peephole_opt.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/bytecode.py,sha256=Ltz55rgfiI8u6AkgKEjPQcN6cmbsbI038V0Z2yI6Ohs,7089 +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/cfg.py,sha256=4kRdapTM7vm84NztarrXylB7OyVs58OX0QRFCnSbw7k,15106 +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/concrete.py,sha256=I6ClbDtpeDO7Vpy3fxz8w4Y4I7u3-iwXOZibxTSoI7g,22111 +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/flags.py,sha256=O0EOKqo3KG5fCNiC-PbKrRUxtY8qmLyFmOifalrA-Dg,5851 +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/instr.py,sha256=Xh7F5I5aRvET9ckEtwcWixjyorJTgHTxNRy3sUFOZTU,11319 +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/peephole_opt.py,sha256=hWqADZBfR2XFzgQhnMI3Ehvr_qmU3YD5EUhFHmVNQYw,15694 +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/__init__.py,sha256=Y9YYEfLXTsK-cawB_vGY5J-eS9zMlgQhrR8PgtAytzI,4944 +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/__pycache__/__init__.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/__pycache__/test_bytecode.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/__pycache__/test_cfg.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/__pycache__/test_code.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/__pycache__/test_concrete.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/__pycache__/test_flags.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/__pycache__/test_instr.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/__pycache__/test_misc.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/__pycache__/test_peephole_opt.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/__pycache__/util_annotation.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_bytecode.py,sha256=dCNH33zllq0I1cdJJMiJMVSEPak59HudvPTfLQJ_pjI,15879 +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_cfg.py,sha256=alz8zqwS7YKpxeZmm0DJLQESYdq6MMHM0aWJIku4W7g,28311 +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_code.py,sha256=Zme1AIunMA3-8bI80UUz7N6b4XBTzGp8fbKplgh1oy8,2425 +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_concrete.py,sha256=A2tz5Ok3Rc096nA4TicSLc4-p5_RegKZ2I0mWbxOMhM,49321 +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_flags.py,sha256=jJZeKuoydHU8MysWEbRVFziUBpqEa8XckLjBt4iRrJQ,6007 +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_instr.py,sha256=DXZCzcn-zTHdufz8jst0oA_szJyjD4I53kQYFk9iMc0,11537 +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_misc.py,sha256=U-00FGCnM6lzxwrKsR6ky4bmwT72ixumWTEbggdNyLE,7017 +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_peephole_opt.py,sha256=yFqYsN_9AJnWW6wifg-civ_1rdzXlJgEOosNWFqyJrs,32866 +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/util_annotation.py,sha256=VULvmILaYyzOfOii8hHR-j0pnW04h0hgdk1-kwIMJ18,463 +debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/pydevd_fix_code.py,sha256=01uudUsZpFPHvT234uV4oKSJBGgdl8jGolZ2oPjqy9M,1761 +debugpy/_vendored/pydevd/_pydevd_sys_monitoring/__pycache__/_pydevd_sys_monitoring.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_sys_monitoring/__pycache__/pydevd_sys_monitoring.cpython-312.pyc,, +debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring.py,sha256=XoOKgmQpCL9q7XHYhh2kYusP0FUKJqktmjMlerT8VEU,73417 +debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.c,sha256=ts5H1cv4ak6h1835_a1r_uLOgL8aFibr0uogdYt8Nig,2022426 +debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.cpython-312-x86_64-linux-gnu.so,sha256=z-PZfglFSJEuYOfPBcZ0G_OBAxOdZuoCRSJZjQ7dXT0,4036400 +debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.pxd,sha256=p9bIrp0Afnk7VI84PAyUkZ5-YmX0FHRDgUuD49jqNOg,2339 +debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.pyx,sha256=JwnA1XKIiOW9ZHy_gQ2ZNTnphzkYEzRFqUA9zjLLHFM,75775 +debugpy/_vendored/pydevd/_pydevd_sys_monitoring/pydevd_sys_monitoring.py,sha256=r3vtANxiCWK4eyGAkh90n8hAEdFMkyKvgWHpxNpFahA,549 +debugpy/_vendored/pydevd/pydev_app_engine_debug_startup.py,sha256=aUfyVkecqLGb2_lcEasx_0r_tfmBJ5ujI-oALs2OMWY,669 +debugpy/_vendored/pydevd/pydev_coverage.py,sha256=MAXc7dsM_iVzYeMWWgFGow3vshy4597VxNMhqoXw6rs,3112 +debugpy/_vendored/pydevd/pydev_ipython/README,sha256=rvIWDUoNsPxITSg6EUu3L9DihmZUCwx68vQsqo_FSQg,538 +debugpy/_vendored/pydevd/pydev_ipython/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +debugpy/_vendored/pydevd/pydev_ipython/__pycache__/__init__.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydev_ipython/__pycache__/inputhook.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydev_ipython/__pycache__/inputhookglut.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydev_ipython/__pycache__/inputhookgtk.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydev_ipython/__pycache__/inputhookgtk3.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydev_ipython/__pycache__/inputhookpyglet.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydev_ipython/__pycache__/inputhookqt4.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydev_ipython/__pycache__/inputhookqt5.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydev_ipython/__pycache__/inputhookqt6.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydev_ipython/__pycache__/inputhooktk.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydev_ipython/__pycache__/inputhookwx.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydev_ipython/__pycache__/matplotlibtools.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydev_ipython/__pycache__/qt.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydev_ipython/__pycache__/qt_for_kernel.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydev_ipython/__pycache__/qt_loaders.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydev_ipython/__pycache__/version.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydev_ipython/inputhook.py,sha256=AObjWOCN_FZqvlhxRRnAzPNvFyUd2CC9OPwh7SE8_Mw,19978 +debugpy/_vendored/pydevd/pydev_ipython/inputhookglut.py,sha256=EN3MwAQLeZPJ6YQGf9jPqf0Dt1yfzRy9vFI3KoTvxrY,5619 +debugpy/_vendored/pydevd/pydev_ipython/inputhookgtk.py,sha256=kwFRWRb4gU4wv39gkL-3JyR58W5wkwhFrQWh_a4WVZM,1114 +debugpy/_vendored/pydevd/pydev_ipython/inputhookgtk3.py,sha256=JXhh_JdEDCjFJVYaI-RIP5N4WS5bLUFhMObS_vf98cw,1112 +debugpy/_vendored/pydevd/pydev_ipython/inputhookpyglet.py,sha256=Z81MLqlQNqHOKgV9VVaplWLRx83-ESHx7NhyCK3ZnA4,3264 +debugpy/_vendored/pydevd/pydev_ipython/inputhookqt4.py,sha256=fmjiu01IGsgnGTNzsWNywwjRvKPAt2MnOTrhDP6KoTo,7251 +debugpy/_vendored/pydevd/pydev_ipython/inputhookqt5.py,sha256=w9SmF3s1AI6lQt6eOt0HubsuThlauHN3tardQdHcxZU,7297 +debugpy/_vendored/pydevd/pydev_ipython/inputhookqt6.py,sha256=lnZl_FKgPKpAtRVpssboxMdajYTAar6J7-eVsrSMcgY,7332 +debugpy/_vendored/pydevd/pydev_ipython/inputhooktk.py,sha256=UwU5VCPtL6BayUy4VauXnzocDotgAA59nnHCVCTujks,754 +debugpy/_vendored/pydevd/pydev_ipython/inputhookwx.py,sha256=HhX9S6aPZcyT21yvE_V2lmWiujKUY6PQfnbEpIXdlg0,6527 +debugpy/_vendored/pydevd/pydev_ipython/matplotlibtools.py,sha256=ALCaCLM3ikmARJtyfNgVbM76EKK2U8ZoVgD74vWyBfk,5355 +debugpy/_vendored/pydevd/pydev_ipython/qt.py,sha256=TeVCKo2j9m2UVUYHWKPnNxYviNwYksQXqU6dVMuoGSQ,872 +debugpy/_vendored/pydevd/pydev_ipython/qt_for_kernel.py,sha256=ascvuaRSEjDV_Qg1svDntW5dXizhDiZ7-JWa2C6in-U,3954 +debugpy/_vendored/pydevd/pydev_ipython/qt_loaders.py,sha256=0Zw9erdlR9c-kxNQvR68fKR8HGcJWFvptsqSHv7pWbY,10423 +debugpy/_vendored/pydevd/pydev_ipython/version.py,sha256=Dwjp3k3a_fdBFmSewViOYY1YT3h5duLNsbbNKKF7xWY,1496 +debugpy/_vendored/pydevd/pydev_pysrc.py,sha256=dOUTYxOuRSKfHdc6ow5BINVU-xfhfhX0xf8jNIIJ4B0,101 +debugpy/_vendored/pydevd/pydev_run_in_console.py,sha256=V3HQfKuyTVXz2piosoOqDCKVK1numOsuh5bdo3a9Z_w,4637 +debugpy/_vendored/pydevd/pydev_sitecustomize/__not_in_default_pythonpath.txt,sha256=hnkTAuxSFW_Tilgw0Bt1RVLrfGRE3hYjAmTPm1k-sc8,21 +debugpy/_vendored/pydevd/pydev_sitecustomize/__pycache__/sitecustomize.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydev_sitecustomize/sitecustomize.py,sha256=3jy-E93p1fIpuoH9YjBAc3Z_fctGTp9tU-05B7fNHY8,9672 +debugpy/_vendored/pydevd/pydevconsole.py,sha256=RA9k6VaVL5cmIQBE1qoAZAw5Kvk1TK0Va7xEEtxZ6ko,21119 +debugpy/_vendored/pydevd/pydevd.py,sha256=SP3DQSsY8XC-vRfDnmXx72PE3X9h0GaWOzKWrPEm5FQ,154956 +debugpy/_vendored/pydevd/pydevd_attach_to_process/README.txt,sha256=JibLodU4lzwvGyI8TNbfYhu626MPpYN3z4YAw82zTPU,960 +debugpy/_vendored/pydevd/pydevd_attach_to_process/__pycache__/_always_live_program.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/__pycache__/_check.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/__pycache__/_test_attach_to_process.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/__pycache__/_test_attach_to_process_linux.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/__pycache__/add_code_to_python_process.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/__pycache__/attach_pydevd.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/__pycache__/attach_script.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/_always_live_program.py,sha256=paautgjjZYWolomOWv4ti1K6_XumjSDDbrHPkXYC1Bs,687 +debugpy/_vendored/pydevd/pydevd_attach_to_process/_check.py,sha256=yL5p7qHGw-1aoESl1fbcwV6QXgHmtb3bTTFN0xV9108,136 +debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process.py,sha256=ETGZegNNorgxyYuJUviWu4hFm6946sv9ZGd7_N4doAw,299 +debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process_linux.py,sha256=NVKu3K_p9zzbHbULftrrxe-FvH4XIm7G7ipL8lXt0r8,2563 +debugpy/_vendored/pydevd/pydevd_attach_to_process/add_code_to_python_process.py,sha256=CvNaX4F9U-66fwEmE36gbvdq0OQw88DmPTuuneuCE60,22591 +debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_linux_amd64.so,sha256=VfHUwn20XKLQTma5FaRtdCChDTrtM8QZgvIvex7RjEI,31160 +debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_pydevd.py,sha256=Sqinii4iXCP4OPrn54queWZ7oyBmJDoyb8FY8n8FHMQ,2585 +debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_script.py,sha256=L7RA14Og8NhnR5bUFuPaNIXKoQb0d4ldEm_ppbI4KZo,8027 +debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace.hpp,sha256=GCjlTIQW1wRoEpp1yCbeJiUaa9JDTbeOypJiZBRtxPE,8399 +debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_310.hpp,sha256=mNr6LVLPDoCRyxLPTdYb0JWDXSfRn7xuAzPOzZWvoFs,4062 +debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_311.hpp,sha256=_tpO9I0U0f2RqCYM8DIOPQJTLv8sL2NCxwKE2BnR0NE,4269 +debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_common.hpp,sha256=r1ch6UgwF4rxW8ehiNnAvJE18VCoUl2TujP7nTCy0vQ,1870 +debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_settrace.hpp,sha256=OKa2mC0dEpE3nAij3mA3sYyVlEXuj5nDI-C-fdW-mdM,7681 +debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_utils.hpp,sha256=7GKYwDPPvu5JhPtni2zB44r0Kh0bO2NZH-LAiFkY55A,3865 +debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_version.hpp,sha256=gh4nf1am3is_-_ocE3Z8TQbEoZko-BP6EtrYMQTtPjs,2912 +debugpy/_vendored/pydevd/pydevd_attach_to_process/common/python.h,sha256=ueIyBiClInxfKMlgAVMuxTvmhESadiWeA4uSwZAROeo,21631 +debugpy/_vendored/pydevd/pydevd_attach_to_process/common/ref_utils.hpp,sha256=8wDFQk9XoAnK2EdM4J-RErKfBYZn93uG6Rw5OCbLsA0,1475 +debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/.gitignore,sha256=r3rDatBumb9cRDhx35hsdJp9URPUmjgkynAQViLIoR4,82 +debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/__pycache__/lldb_prepare.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/attach.cpp,sha256=xG8NmOwfuhXN93spuG_uEfe0tOn32hnljCqY5f1z354,3703 +debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_linux.sh,sha256=zLx_fpShueHqBioStvOE0hm1aBuvIkc5EygxXSSh8mQ,275 +debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_mac.sh,sha256=6szfH260KYg9ZuPusllOBx4vfPXU6ZrOrOrEdh-2bOM,232 +debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_manylinux.cmd,sha256=W93C4jG-fGn27rd1Yes3neP2upJTO9qAdKZPf8cvSQE,633 +debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/lldb_prepare.py,sha256=GqHCLbSBblmzU84bAmmyz5Qx_H8dvFupmTdINziqjxg,1679 +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/__init__.py,sha256=XA6hCWO9SoUtiuxV1v3HJkZa1BmIShgUprOgi4OlTUQ,6882 +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/__pycache__/__init__.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/__pycache__/breakpoint.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/__pycache__/compat.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/__pycache__/crash.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/__pycache__/debug.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/__pycache__/disasm.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/__pycache__/event.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/__pycache__/interactive.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/__pycache__/module.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/__pycache__/process.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/__pycache__/registry.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/__pycache__/search.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/__pycache__/sql.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/__pycache__/system.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/__pycache__/textio.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/__pycache__/thread.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/__pycache__/util.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/__pycache__/window.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/breakpoint.py,sha256=jcOEzFhaddlbO3Zugzl0Mh-lstl85asKhlPmrgcfA14,165140 +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/compat.py,sha256=ihE-Lzas1wWBRbIEBQA9LPvG3Jh7y4iPJuMlk-Kos_c,5269 +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/crash.py,sha256=SI0ruZbchgv9LAUJJmf1v0R2wsjwcTp04WUeyjh_AEI,64753 +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/debug.py,sha256=r7FgApjADs2mU5ZmqtSpIFEEgDbjA4IGKRjbacGrXUY,57665 +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/disasm.py,sha256=5BydhX5AvIJfxRkIZIo6YsDxiks52LmgH7769WmV2uU,24389 +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/event.py,sha256=fOHu-P2XEd0KPuErInrjY6BBs-nxBsFEz5P9O_kmzIw,65139 +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/interactive.py,sha256=0EeHQfjF65jKLYvkyJcJQcOJSMPp0iSzyXZRTUUTubA,83677 +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/module.py,sha256=KJHWzxNqkD3aRCR_Cwl-nDjPhlxOFIEn6xtrero3-Tk,69754 +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/process.py,sha256=pDXB9nk_-ExnUc6ntUg5IE5pUgRnjeMlUbzS94-4h0c,179713 +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/registry.py,sha256=h7xU3ikr-ejiRUtCFaSdQcTIW2P6bskCE4aKQZJEqMQ,21439 +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/search.py,sha256=n5rySAFHiTgOfBQN1OoE5dPdinSglAQOfz2jLD-yiuc,23241 +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/sql.py,sha256=qMaGYYTqXd5COhAiPIKalHk0ycfrFAKFxjc9fUUSAf0,33696 +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/system.py,sha256=PGw1QhMNzdckVKExOV6wtmmnz17e3DUdx9Stni7dvBo,44397 +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/textio.py,sha256=xL7IV2tYCILF7vzyx__DZbj_32P5Eyym2mZBjc9RhPQ,59539 +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/thread.py,sha256=ca1FgBLQgWFaK7YpdGH-_oTVCz1fLqH8SMHkwnYmbaY,74682 +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/util.py,sha256=F94MaOk56bD9hw5IRRVU4HvVrgAFMjmUd428C_g_0No,35919 +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/__init__.py,sha256=ZtWZmRPUrihwFxg_CjXvQQAc7jhhgCjPoJmzrg8_coo,2813 +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/__pycache__/__init__.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/__pycache__/advapi32.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/__pycache__/context_amd64.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/__pycache__/context_i386.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/__pycache__/dbghelp.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/__pycache__/defines.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/__pycache__/gdi32.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/__pycache__/kernel32.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/__pycache__/ntdll.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/__pycache__/peb_teb.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/__pycache__/psapi.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/__pycache__/shell32.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/__pycache__/shlwapi.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/__pycache__/user32.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/__pycache__/version.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/__pycache__/wtsapi32.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/advapi32.py,sha256=ocN7LpTDO2iIVpciWimF6sqI90DVJwD7FMYR7M1JiSA,118442 +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/context_amd64.py,sha256=S2-vrADxktXe25VdRuOy6Q4Dj8mxr1Dd4MIq9Vy-5V0,23649 +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/context_i386.py,sha256=PamJv8oAvxylJJe4m5p-58VLUGY3ULTrIqhZdjedsGg,15408 +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/dbghelp.py,sha256=TESaeh8YTpsEKj9ZhWcpkuZ6RAHLjDdJAarB7qzNlMQ,44984 +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/defines.py,sha256=bWZzQ-fHDgZWBbhe8-nTrq436brWZ39AFot351UvHLI,20900 +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/gdi32.py,sha256=eerwd8qqKxNzlulR47vVf5p_WixeCFmaQLAkLiWRzA0,14155 +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/kernel32.py,sha256=Cs_R4qfbCqvPZ4qY-IfrvNx4bu5rUhqccJwjFu3yftY,158759 +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/ntdll.py,sha256=KkyFYI9eK8jOVws0j7-G_mDmHKTYP0fLFQkQfilrv2Q,20556 +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/peb_teb.py,sha256=PuHmAyFLTrkx2lpPTK9JNYT8YB7zHPcOAgapIlbmIm4,136048 +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/psapi.py,sha256=gKLiFGbpmzJ36zj-CW0GWCrbrTwtomVysnLIDXmi80Y,13705 +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/shell32.py,sha256=NmlMKVF92SnCh4dIq7gX4LCV4qfdZJEWiK2XbL1u71c,12773 +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/shlwapi.py,sha256=iN18pyt4X9RCsQj_fxkCAyqCqIfmIYP4UV1Ftg0eylQ,25371 +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/user32.py,sha256=gIX0gA0qSK_eenRqDUyPnnf6hMnvMnMHCWG3XutnWOs,51438 +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/version.py,sha256=UAEkxj40ZltRTW4oaNGMZTfQW5-gRmGlVbz3C1e2E5A,33834 +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/wtsapi32.py,sha256=-sDrGpAQv0y9VxFwbdDFH-ozfvE75R_uygva0L58Reo,10781 +debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/window.py,sha256=oBsxsI37NbQkLcDu_JVBRnyRBitXN4AI0Z1b4HSO2R8,24017 +debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/attach.cpp,sha256=hJY1byqijqru-q6167Akh20aOTLp19cGeANoFpWCTxw,27984 +debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/attach.h,sha256=rWBA3kdzfyHaE9X9Diub3cojoJlXjC3TKnLQv-nGCeA,1846 +debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/compile_windows.bat,sha256=YbDPk6EGQPYRNtKjex7GajIrFnnuZ1kigsDYRgEB71o,2160 +debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/inject_dll.cpp,sha256=GQmZbpNBRMMW1WFcDFOlJaGLy1-oZ4qCCIyo5exPLBM,4792 +debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/py_win_helpers.hpp,sha256=45pO-c1ofub4nn0XY9kMsTm3s48_EPE-VWAhld3704I,2479 +debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/run_code_in_memory.hpp,sha256=zvDC9cVGZ6BXEsz_Im-QMIubdw6vX3BCIg2T11cVfvg,3355 +debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/run_code_on_dllmain.cpp,sha256=ApQza8ZJrfe2U4jTJPa8ItzvnHc7w2G6Yrfq4BT_56g,2516 +debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/stdafx.cpp,sha256=NO8qlc7sKU6oHA_AnXJSodHupZLizp3npBTc-EGpBj8,999 +debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/stdafx.h,sha256=l0tEIxxiv0XrIeiJ2zedTd4fYrdlxVTK8ECpBk881WM,1162 +debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/targetver.h,sha256=fqw-iPopG_V-pFRxf33lVFL0uvWfDUB2ky0bibFblK0,1013 +debugpy/_vendored/pydevd/pydevd_file_utils.py,sha256=C_tIt1ElBnF5ju8Lq8pCNKmuYcHz6Z3EdqSQZxX56e8,36394 +debugpy/_vendored/pydevd/pydevd_plugins/__init__.py,sha256=_2bZAHuDVAx7MM7KA7pt3DYp641NY4RzSoRAwesWKfU,67 +debugpy/_vendored/pydevd/pydevd_plugins/__pycache__/__init__.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_plugins/__pycache__/django_debug.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_plugins/__pycache__/jinja2_debug.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_plugins/__pycache__/pydevd_line_validation.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_plugins/django_debug.py,sha256=8StvDnfs-3MFuuknOFsoyK_AK5UuEzzthk8DTNFNIn8,22246 +debugpy/_vendored/pydevd/pydevd_plugins/extensions/README.md,sha256=cxu8F295snUVNgqE5xXKnZTpbqbR3LTmm60pgK0IOTs,1183 +debugpy/_vendored/pydevd/pydevd_plugins/extensions/__init__.py,sha256=_2bZAHuDVAx7MM7KA7pt3DYp641NY4RzSoRAwesWKfU,67 +debugpy/_vendored/pydevd/pydevd_plugins/extensions/__pycache__/__init__.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/__init__.py,sha256=_2bZAHuDVAx7MM7KA7pt3DYp641NY4RzSoRAwesWKfU,67 +debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/__pycache__/__init__.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/__pycache__/pydevd_helpers.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/__pycache__/pydevd_plugin_numpy_types.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/__pycache__/pydevd_plugin_pandas_types.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/__pycache__/pydevd_plugins_django_form_str.cpython-312.pyc,, +debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_helpers.py,sha256=F4ODS-1OYkAbKeIikE1y6hh4x2nMJueFtA-uRnQVrYY,642 +debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugin_numpy_types.py,sha256=uDczvkuJgBLb_ULhJ2CA6v5_3JJ9EvNy3ZF6z5i2f-8,3250 +debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugin_pandas_types.py,sha256=DNs8j07AA-OtDwQNIZVGqwWKqEHYFPSIgTa7HtGZVdI,6575 +debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugins_django_form_str.py,sha256=-aj9h1rqP46DMilxMGwi1p3fDa47VxZkiLC3SlRs7nw,539 +debugpy/_vendored/pydevd/pydevd_plugins/jinja2_debug.py,sha256=lVb2Xix86off_pI7FPfukDo5QE_dkHnpPeTiWd1mDJc,19018 +debugpy/_vendored/pydevd/pydevd_plugins/pydevd_line_validation.py,sha256=YGJZ4SY2O6pY70mxSb36fFy0_9uxSDkrA1Z-MqUrYSU,6654 +debugpy/_vendored/pydevd/pydevd_tracing.py,sha256=EgBJwIt0Hn3t6C6Jfd6UoDCIrsxnuES1fxaAWizEasg,15779 +debugpy/_vendored/pydevd/setup_pydevd_cython.py,sha256=bg0KwBVRwAdDKp3u8mlU4arkPvKGlI0A-kQb899V1RI,11446 +debugpy/_version.py,sha256=o-Dr12nlL78dGg-FraFaBTq39jLJaI2_eBZ-JUHFtqw,497 +debugpy/adapter/__init__.py,sha256=ewTjlS3VAb6lypFWfGZjY7j2wiW6ApS3KSPJrm0xsEk,346 +debugpy/adapter/__main__.py,sha256=MBXkVyKOTc0QwB-vrUAI_al7EMaGIC3k7mXtfBv7U78,8257 +debugpy/adapter/__pycache__/__init__.cpython-312.pyc,, +debugpy/adapter/__pycache__/__main__.cpython-312.pyc,, +debugpy/adapter/__pycache__/clients.cpython-312.pyc,, +debugpy/adapter/__pycache__/components.cpython-312.pyc,, +debugpy/adapter/__pycache__/launchers.cpython-312.pyc,, +debugpy/adapter/__pycache__/servers.cpython-312.pyc,, +debugpy/adapter/__pycache__/sessions.cpython-312.pyc,, +debugpy/adapter/clients.py,sha256=qzv-eHGZvSW2LpiglWyHQr-Oym5-cSuocWlHt74uSDs,31341 +debugpy/adapter/components.py,sha256=M-xe4YIK3oKEwj_G-42kfqYuYODRB-S_m7sI962pAX0,6081 +debugpy/adapter/launchers.py,sha256=VWMB5i8GJX6CW1FP3OtT1a-iGqMcTabJ3UowNiWq02A,7000 +debugpy/adapter/servers.py,sha256=todtOnPao_cU1tl39ynNxMwgHHP8HKNjMPLSDvPZIF0,23418 +debugpy/adapter/sessions.py,sha256=KzkGF3hWP59siooY3UbnATQY2wqIbCHFpqJHO7aR8jo,11229 +debugpy/common/__init__.py,sha256=A9wk72d0JyUbZBXHLvMi7v65_5hy2chhoNTupk5mYYk,609 +debugpy/common/__pycache__/__init__.cpython-312.pyc,, +debugpy/common/__pycache__/json.cpython-312.pyc,, +debugpy/common/__pycache__/log.cpython-312.pyc,, +debugpy/common/__pycache__/messaging.cpython-312.pyc,, +debugpy/common/__pycache__/singleton.cpython-312.pyc,, +debugpy/common/__pycache__/sockets.cpython-312.pyc,, +debugpy/common/__pycache__/stacks.cpython-312.pyc,, +debugpy/common/__pycache__/timestamp.cpython-312.pyc,, +debugpy/common/__pycache__/util.cpython-312.pyc,, +debugpy/common/json.py,sha256=NoinXsMZHybYGNiSbq3_OWPJxtmYbDew6RkqF3zMyZ8,9674 +debugpy/common/log.py,sha256=NqGC5AIo9zdls1FKn5Gv0n1EvLmaB0d5s12CRY7ZpLs,11706 +debugpy/common/messaging.py,sha256=ptfq2f__NWYhqSU_vcP1CtDZ9H5hmCTOUn_e4s3QbFs,56620 +debugpy/common/singleton.py,sha256=bSTqWB9bLp1SpP1W9-LH_OlU9Arbd7pqu4OcjYKDQ_0,7666 +debugpy/common/sockets.py,sha256=RsRPizhPy6SRsK5DSEiUWIBX2fw-D90ch-KnSfQwmZk,4224 +debugpy/common/stacks.py,sha256=czZjqyY_5ntvOSpelZlJkpH4Gqq9JyZY7tcUqz4sWXA,1526 +debugpy/common/timestamp.py,sha256=ZocK6sWz2JUD1hBAKj672ta8D3ze0Z3zJD_CWjeDq7A,410 +debugpy/common/util.py,sha256=CPWCyS757aIcGISxf_SbaGlewSCFOgou0raEKfCZ56I,4646 +debugpy/launcher/__init__.py,sha256=L7aoLf-CaGikoiEJokF5JmSL0Y7FWIn2EOJFV89KbbY,890 +debugpy/launcher/__main__.py,sha256=yLvc7PNl8YulPLINLZVBGY-38hClmkgec0LmkEQna_Q,3812 +debugpy/launcher/__pycache__/__init__.cpython-312.pyc,, +debugpy/launcher/__pycache__/__main__.cpython-312.pyc,, +debugpy/launcher/__pycache__/debuggee.cpython-312.pyc,, +debugpy/launcher/__pycache__/handlers.cpython-312.pyc,, +debugpy/launcher/__pycache__/output.cpython-312.pyc,, +debugpy/launcher/__pycache__/winapi.cpython-312.pyc,, +debugpy/launcher/debuggee.py,sha256=I8pCEge8cSsVZL7J0sZTOh9IuwIzZf7ENGV3-HxSey8,8689 +debugpy/launcher/handlers.py,sha256=vsMHp4SKqbR1ar27RW7t-SbApXdWPfhS7qLlgr_cw8g,5728 +debugpy/launcher/output.py,sha256=R8YWa7ccb9Sy_ighQqN9R5W1OdMNcnmizmTLYc6yTsg,3748 +debugpy/launcher/winapi.py,sha256=7ACn2Hxf8Kx5bBmxmuC-0A_hG60kEfrDtrZW_BnnjV4,3129 +debugpy/public_api.py,sha256=cIm_msfe3DCnISmyd1t71JDfVIbcO69TlnywLtFtBP0,6376 +debugpy/server/__init__.py,sha256=mmPRoui4PkSeZxG3r5Gep6YB0MLMq_lIJru1pfGmKUY,323 +debugpy/server/__pycache__/__init__.cpython-312.pyc,, +debugpy/server/__pycache__/api.cpython-312.pyc,, +debugpy/server/__pycache__/attach_pid_injected.cpython-312.pyc,, +debugpy/server/__pycache__/cli.cpython-312.pyc,, +debugpy/server/api.py,sha256=fQoGQIzIYZPl1TUs7Tb0lA6q2sI3jIuZksArUeD7xkA,11789 +debugpy/server/attach_pid_injected.py,sha256=mx8G8CDw5HGOPBM5XGkjkLka_LHVQJEuMJ4tUJHQqX8,2734 +debugpy/server/cli.py,sha256=NoysHvEe6CKV5YLcJ_18PBe2KL5Ygbx-5SCbkaGCuRQ,16357 diff --git a/.local/lib/python3.12/site-packages/debugpy-1.8.8.dist-info/REQUESTED b/.local/lib/python3.12/site-packages/debugpy-1.8.8.dist-info/REQUESTED new file mode 100644 index 000000000..e69de29bb diff --git a/.local/lib/python3.12/site-packages/debugpy-1.8.8.dist-info/WHEEL b/.local/lib/python3.12/site-packages/debugpy-1.8.8.dist-info/WHEEL new file mode 100644 index 000000000..027805c53 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy-1.8.8.dist-info/WHEEL @@ -0,0 +1,8 @@ +Wheel-Version: 1.0 +Generator: setuptools (75.3.0) +Root-Is-Purelib: false +Tag: cp312-cp312-manylinux_2_5_x86_64 +Tag: cp312-cp312-manylinux1_x86_64 +Tag: cp312-cp312-manylinux_2_17_x86_64 +Tag: cp312-cp312-manylinux2014_x86_64 + diff --git a/.local/lib/python3.12/site-packages/debugpy-1.8.8.dist-info/entry_points.txt b/.local/lib/python3.12/site-packages/debugpy-1.8.8.dist-info/entry_points.txt new file mode 100644 index 000000000..5aedaf5fa --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy-1.8.8.dist-info/entry_points.txt @@ -0,0 +1,2 @@ +[console_scripts] +debugpy = debugpy.server.cli:main diff --git a/.local/lib/python3.12/site-packages/debugpy-1.8.8.dist-info/top_level.txt b/.local/lib/python3.12/site-packages/debugpy-1.8.8.dist-info/top_level.txt new file mode 100644 index 000000000..2802a6b1b --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy-1.8.8.dist-info/top_level.txt @@ -0,0 +1 @@ +debugpy diff --git a/.local/lib/python3.12/site-packages/debugpy/ThirdPartyNotices.txt b/.local/lib/python3.12/site-packages/debugpy/ThirdPartyNotices.txt new file mode 100644 index 000000000..2b309900e --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/ThirdPartyNotices.txt @@ -0,0 +1,499 @@ + +THIRD-PARTY SOFTWARE NOTICES AND INFORMATION +Do Not Translate or Localize + +debugpy incorporates third party material from the projects listed below. + + +1. PyDev.Debugger (https://github.com/fabioz/PyDev.Debugger) + Includes:File copyright Brainwy Software Ltda. + Includes:File(s) related to Python, Cpython + Includes:File authored by Yuli Fitterman + Includes:File copyright Brainwy software Ltda + Includes:File with methods from Spyder + Includes:File(s) related to IPython + Includes:Files copyright Microsoft Corporation + Includes:six + Includes:WinAppDbg + Includes:XML-RPC client interface for Python + + +%% PyDev.Debugger NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The source code for the PyDev.Debugger files are provided with debugpy, or you may send a check or money order for US $5.00, including the product name (debugpy), the open source component name (PyDev.Debugger) and version number, to: Source Code Compliance Team, Microsoft Corporation, One Microsoft Way, Redmond, WA 98052, USA. + +Eclipse Public License, Version 1.0 (EPL-1.0) +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. +1. DEFINITIONS +"Contribution" means: +a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and +b) in the case of each subsequent Contributor: +i) changes to the Program, and +ii) additions to the Program; +where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program. +"Contributor" means any person or entity that distributes the Program. +"Licensed Patents" mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program. +"Program" means the Contributions distributed in accordance with this Agreement. +"Recipient" means anyone who receives the Program under this Agreement, including all Contributors. +2. GRANT OF RIGHTS +a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form. +b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder. +c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program. +d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement. +3. REQUIREMENTS +A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that: +a) it complies with the terms and conditions of this Agreement; and +b) its license agreement: +i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose; +ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits; +iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and +iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange. +When the Program is made available in source code form: +a) it must be made available under this Agreement; and +b) a copy of this Agreement must be included with each copy of the Program. +Contributors may not remove or alter any copyright notices contained within the Program. +Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution. +4. COMMERCIAL DISTRIBUTION +Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense. +For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages. +5. NO WARRANTY +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations. +6. DISCLAIMER OF LIABILITY +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. +7. GENERAL +If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. +If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed. +All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive. +Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved. +This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation. +========================================= +Includes File copyright Brainwy Software Ltda. + +File includes the following notice: + +Copyright: Brainwy Software Ltda. + +License: EPL. + +========================================= +Includes file(s) from Python, Python xreload, Cpython and an ActiveState.com Recipe on "NULL OBJECT DESIGN PATTERN (PYTHON RECIPE)" + +PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2 +-------------------------------------------- + +1. This LICENSE AGREEMENT is between the Python Software Foundation +("PSF"), and the Individual or Organization ("Licensee") accessing and +otherwise using this software ("Python") in source or binary form and +its associated documentation. + +2. Subject to the terms and conditions of this License Agreement, PSF hereby +grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, +analyze, test, perform and/or display publicly, prepare derivative works, +distribute, and otherwise use Python alone or in any derivative version, +provided, however, that PSF's License Agreement and PSF's notice of copyright, +i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +2011, 2012, 2013, 2014, 2015, 2016, 2017 Python Software Foundation; All Rights +Reserved" are retained in Python alone or in any derivative version prepared by +Licensee. + +3. In the event Licensee prepares a derivative work that is based on +or incorporates Python or any part thereof, and wants to make +the derivative work available to others as provided herein, then +Licensee hereby agrees to include in any such work a brief summary of +the changes made to Python. + +4. PSF is making Python available to Licensee on an "AS IS" +basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT +INFRINGE ANY THIRD PARTY RIGHTS. + +5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON +FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS +A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, +OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + +6. This License Agreement will automatically terminate upon a material +breach of its terms and conditions. + +7. Nothing in this License Agreement shall be deemed to create any +relationship of agency, partnership, or joint venture between PSF and +Licensee. This License Agreement does not grant permission to use PSF +trademarks or trade name in a trademark sense to endorse or promote +products or services of Licensee, or any third party. + +8. By copying, installing or otherwise using Python, Licensee +agrees to be bound by the terms and conditions of this License +Agreement. + + +BEOPEN.COM LICENSE AGREEMENT FOR PYTHON 2.0 +------------------------------------------- + +BEOPEN PYTHON OPEN SOURCE LICENSE AGREEMENT VERSION 1 + +1. This LICENSE AGREEMENT is between BeOpen.com ("BeOpen"), having an +office at 160 Saratoga Avenue, Santa Clara, CA 95051, and the +Individual or Organization ("Licensee") accessing and otherwise using +this software in source or binary form and its associated +documentation ("the Software"). + +2. Subject to the terms and conditions of this BeOpen Python License +Agreement, BeOpen hereby grants Licensee a non-exclusive, +royalty-free, world-wide license to reproduce, analyze, test, perform +and/or display publicly, prepare derivative works, distribute, and +otherwise use the Software alone or in any derivative version, +provided, however, that the BeOpen Python License is retained in the +Software, alone or in any derivative version prepared by Licensee. + +3. BeOpen is making the Software available to Licensee on an "AS IS" +basis. BEOPEN MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, BEOPEN MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE WILL NOT +INFRINGE ANY THIRD PARTY RIGHTS. + +4. BEOPEN SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE +SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS +AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY +DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + +5. This License Agreement will automatically terminate upon a material +breach of its terms and conditions. + +6. This License Agreement shall be governed by and interpreted in all +respects by the law of the State of California, excluding conflict of +law provisions. Nothing in this License Agreement shall be deemed to +create any relationship of agency, partnership, or joint venture +between BeOpen and Licensee. This License Agreement does not grant +permission to use BeOpen trademarks or trade names in a trademark +sense to endorse or promote products or services of Licensee, or any +third party. As an exception, the "BeOpen Python" logos available at +http://www.pythonlabs.com/logos.html may be used according to the +permissions granted on that web page. + +7. By copying, installing or otherwise using the software, Licensee +agrees to be bound by the terms and conditions of this License +Agreement. + + +CNRI LICENSE AGREEMENT FOR PYTHON 1.6.1 +--------------------------------------- + +1. This LICENSE AGREEMENT is between the Corporation for National +Research Initiatives, having an office at 1895 Preston White Drive, +Reston, VA 20191 ("CNRI"), and the Individual or Organization +("Licensee") accessing and otherwise using Python 1.6.1 software in +source or binary form and its associated documentation. + +2. Subject to the terms and conditions of this License Agreement, CNRI +hereby grants Licensee a nonexclusive, royalty-free, world-wide +license to reproduce, analyze, test, perform and/or display publicly, +prepare derivative works, distribute, and otherwise use Python 1.6.1 +alone or in any derivative version, provided, however, that CNRI's +License Agreement and CNRI's notice of copyright, i.e., "Copyright (c) +1995-2001 Corporation for National Research Initiatives; All Rights +Reserved" are retained in Python 1.6.1 alone or in any derivative +version prepared by Licensee. Alternately, in lieu of CNRI's License +Agreement, Licensee may substitute the following text (omitting the +quotes): "Python 1.6.1 is made available subject to the terms and +conditions in CNRI's License Agreement. This Agreement together with +Python 1.6.1 may be located on the Internet using the following +unique, persistent identifier (known as a handle): 1895.22/1013. This +Agreement may also be obtained from a proxy server on the Internet +using the following URL: http://hdl.handle.net/1895.22/1013". + +3. In the event Licensee prepares a derivative work that is based on +or incorporates Python 1.6.1 or any part thereof, and wants to make +the derivative work available to others as provided herein, then +Licensee hereby agrees to include in any such work a brief summary of +the changes made to Python 1.6.1. + +4. CNRI is making Python 1.6.1 available to Licensee on an "AS IS" +basis. CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 1.6.1 WILL NOT +INFRINGE ANY THIRD PARTY RIGHTS. + +5. CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON +1.6.1 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS +A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 1.6.1, +OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + +6. This License Agreement will automatically terminate upon a material +breach of its terms and conditions. + +7. This License Agreement shall be governed by the federal +intellectual property law of the United States, including without +limitation the federal copyright law, and, to the extent such +U.S. federal law does not apply, by the law of the Commonwealth of +Virginia, excluding Virginia's conflict of law provisions. +Notwithstanding the foregoing, with regard to derivative works based +on Python 1.6.1 that incorporate non-separable material that was +previously distributed under the GNU General Public License (GPL), the +law of the Commonwealth of Virginia shall govern this License +Agreement only as to issues arising under or with respect to +Paragraphs 4, 5, and 7 of this License Agreement. Nothing in this +License Agreement shall be deemed to create any relationship of +agency, partnership, or joint venture between CNRI and Licensee. This +License Agreement does not grant permission to use CNRI trademarks or +trade name in a trademark sense to endorse or promote products or +services of Licensee, or any third party. + +8. By clicking on the "ACCEPT" button where indicated, or by copying, +installing or otherwise using Python 1.6.1, Licensee agrees to be +bound by the terms and conditions of this License Agreement. + + ACCEPT + + +CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2 +-------------------------------------------------- + +Copyright (C) 2006-2010 Python Software Foundation + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Stichting Mathematisch +Centrum or CWI not be used in advertising or publicity pertaining to +distribution of the software without specific, written prior +permission. + +STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO +THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE +FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT +OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +Includes File authored by Yuli Fitterman + +Copyright (c) Yuli Fitterman + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +========================================= +Includes file(s): * Copyright (c) Brainwy software Ltda. + * + * This source code is subject to terms and conditions of the Apache License, Version 2.0. A + * copy of the license can be found in the License.html file at the root of this distribution. If + * you cannot locate the Apache License, Version 2.0, please send an email to + * vspython@microsoft.com. By using this source code in any fashion, you are agreeing to be bound + * by the terms of the Apache License, Version 2.0. + * + * You must not remove this notice, or any other, from this software. +========================================= +Includes file(s): Copyright (c) 2009-2012 Pierre Raybaut + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. +========================================= +Includes file(s) from Ipython + +Copyright (c) 2008-2010, IPython Development Team +Copyright (c) 2001-2007, Fernando Perez. +Copyright (c) 2001, Janko Hauser +Copyright (c) 2001, Nathaniel Gray + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +Redistributions in binary form must reproduce the above copyright notice, this +list of conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. + +Neither the name of the IPython Development Team nor the names of its +contributors may be used to endorse or promote products derived from this +software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +========================================= +Includes file(s): * Copyright (c) Microsoft Corporation. +* +* This source code is subject to terms and conditions of the Apache License, Version 2.0. A +* copy of the license can be found in the License.html file at the root of this distribution. If +* you cannot locate the Apache License, Version 2.0, please send an email to +* vspython@microsoft.com. By using this source code in any fashion, you are agreeing to be bound +* by the terms of the Apache License, Version 2.0. +* +* You must not remove this notice, or any other, from this software. +========================================= +Includes file(s) from https://pythonhosted.org/six/ + +Copyright (c) 2010-2018 Benjamin Peterson + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +Includes WinAppDbg + +# Copyright (c) 2009-2014, Mario Vilas +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice,this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of the copyright holder nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +========================================= +Includes XML-RPC client interface for Python +# Copyright (c) 1999-2002 by Secret Labs AB +# Copyright (c) 1999-2002 by Fredrik Lundh +# +# By obtaining, using, and/or copying this software and/or its +# associated documentation, you agree that you have read, understood, +# and will comply with the following terms and conditions: +# +# Permission to use, copy, modify, and distribute this software and +# its associated documentation for any purpose and without fee is +# hereby granted, provided that the above copyright notice appears in +# all copies, and that both that copyright notice and this permission +# notice appear in supporting documentation, and that the name of +# Secret Labs AB or the author not be used in advertising or publicity +# pertaining to distribution of the software without specific, written +# prior permission. +# +# SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD +# TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT- +# ABILITY AND FITNESS. IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR +# BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY +# DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS +# ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE +# OF THIS SOFTWARE. +========================================= +Includes https://github.com/vstinner/bytecode e3e77fb690ed05ac171e15694e1c5d0e0dc34e86 - MIT + +Copyright (c) 2016 Red Hat. + +The MIT License (MIT) +Copyright (c) 2016 Red Hat. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +Includes https://github.com/benhoyt/scandir 6ed381881bc2fb9de05804e892eeeeb3601a3af2 - BSD 3-Clause "New" or "Revised" License + +Copyright (c) 2012, Ben Hoyt +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. + +* Neither the name of Ben Hoyt nor the names of its contributors may be used +to endorse or promote products derived from this software without specific +prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +========================================= +END OF PyDev.Debugger NOTICES, INFORMATION, AND LICENSE diff --git a/.local/lib/python3.12/site-packages/debugpy/__init__.py b/.local/lib/python3.12/site-packages/debugpy/__init__.py new file mode 100644 index 000000000..975bec79b --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/__init__.py @@ -0,0 +1,38 @@ +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See LICENSE in the project root +# for license information. + +"""An implementation of the Debug Adapter Protocol (DAP) for Python. + +https://microsoft.github.io/debug-adapter-protocol/ +""" + +# debugpy stable public API consists solely of members of this module that are +# enumerated below. +__all__ = [ # noqa + "__version__", + "breakpoint", + "configure", + "connect", + "debug_this_thread", + "is_client_connected", + "listen", + "log_to", + "trace_this_thread", + "wait_for_client", +] + +import sys + +assert sys.version_info >= (3, 7), ( + "Python 3.6 and below is not supported by this version of debugpy; " + "use debugpy 1.5.1 or earlier." +) + + +# Actual definitions are in a separate file to work around parsing issues causing +# SyntaxError on Python 2 and preventing the above version check from executing. +from debugpy.public_api import * # noqa +from debugpy.public_api import __version__ + +del sys diff --git a/.local/lib/python3.12/site-packages/debugpy/__main__.py b/.local/lib/python3.12/site-packages/debugpy/__main__.py new file mode 100644 index 000000000..4aaf92c4d --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/__main__.py @@ -0,0 +1,70 @@ +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See LICENSE in the project root +# for license information. + +import sys + +if __name__ == "__main__": + # There are three ways to run debugpy: + # + # 1. Installed as a module in the current environment (python -m debugpy ...) + # 2. Run as a script from source code (python /src/debugpy ...) + # 3. Installed as a module in a random directory + # + # ----- + # + # In the first case, no extra work is needed. Importing debugpy will work as expected. + # Also, running 'debugpy' instead of 'python -m debugpy' will work because of the entry point + # defined in setup.py. + # + # ----- + # + # In the second case, sys.path[0] is the one added automatically by Python for the directory + # containing this file. 'import debugpy' will not work since we need the parent directory + # of debugpy/ to be in sys.path, rather than debugpy/ itself. So we need to modify sys.path[0]. + # Running 'debugpy' will not work because the entry point is not defined in this case. + # + # ----- + # + # In the third case, running 'python -m debugpy' will not work because the module is not installed + # in any environment. Running 'python /debugpy' will work, just like the second case. + # But running the entry point will not work because python doesn't know where to find the debugpy module. + # + # In this case, no changes to sys.path are required. You just have to do the following before calling + # the entry point: + # 1. Add to PYTHONPATH. + # On Windows, this is set PYTHONPATH=%PYTHONPATH%; + # 2. Add /bin to PATH. (OPTIONAL) + # On Windows, this is set PATH=%PATH%;\bin + # 3. Run the entry point from a command prompt + # On Windows, this is \bin\debugpy.exe, or just 'debugpy' if you did the previous step. + # + # ----- + # + # If we modify sys.path, 'import debugpy' will work, but it will break other imports + # because they will be resolved relative to debugpy/ - e.g. `import debugger` will try + # to import debugpy/debugger.py. + # + # To fix both problems, we need to do the following steps: + # 1. Modify sys.path[0] to point at the parent directory of debugpy/ instead of debugpy/ itself. + # 2. Import debugpy. + # 3. Remove sys.path[0] so that it doesn't affect future imports. + # + # For example, suppose the user did: + # + # python /foo/bar/debugpy ... + # + # At the beginning of this script, sys.path[0] will contain "/foo/bar/debugpy". + # We want to replace it with "/foo/bar', then 'import debugpy', then remove the replaced entry. + # The imported debugpy module will remain in sys.modules, and thus all future imports of it + # or its submodules will resolve accordingly. + if "debugpy" not in sys.modules: + # Do not use dirname() to walk up - this can be a relative path, e.g. ".". + sys.path[0] = sys.path[0] + "/../" + import debugpy # noqa + + del sys.path[0] + + from debugpy.server import cli + + cli.main() diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/__init__.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/__init__.py new file mode 100644 index 000000000..e7bc3293b --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/__init__.py @@ -0,0 +1,125 @@ +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See LICENSE in the project root +# for license information. + +import contextlib +import os +import sys +from importlib import import_module + +from . import _util + +VENDORED_ROOT = os.path.dirname(os.path.abspath(__file__)) +# TODO: Move the "pydevd" git submodule to the debugpy/_vendored directory +# and then drop the following fallback. +if "pydevd" not in os.listdir(VENDORED_ROOT): + VENDORED_ROOT = os.path.dirname(VENDORED_ROOT) + + +def list_all(resolve=False): + """Return the list of vendored projects.""" + # TODO: Derive from os.listdir(VENDORED_ROOT)? + projects = ["pydevd"] + if not resolve: + return projects + return [project_root(name) for name in projects] + + +def project_root(project): + """Return the path the root dir of the vendored project. + + If "project" is an empty string then the path prefix for vendored + projects (e.g. "debugpy/_vendored/") will be returned. + """ + if not project: + project = "" + return os.path.join(VENDORED_ROOT, project) + + +def iter_project_files(project, relative=False, **kwargs): + """Yield (dirname, basename, filename) for all files in the project.""" + if relative: + with _util.cwd(VENDORED_ROOT): + for result in _util.iter_all_files(project, **kwargs): + yield result + else: + root = project_root(project) + for result in _util.iter_all_files(root, **kwargs): + yield result + + +def iter_packaging_files(project): + """Yield the filenames for all files in the project. + + The filenames are relative to "debugpy/_vendored". This is most + useful for the "package data" in a setup.py. + """ + # TODO: Use default filters? __pycache__ and .pyc? + prune_dir = None + exclude_file = None + try: + mod = import_module(f"._{project}_packaging", __name__) + except ImportError: + pass + else: + prune_dir = getattr(mod, "prune_dir", prune_dir) + exclude_file = getattr(mod, "exclude_file", exclude_file) + results = iter_project_files( + project, relative=True, prune_dir=prune_dir, exclude_file=exclude_file + ) + for _, _, filename in results: + yield filename + + +def prefix_matcher(*prefixes): + """Return a module match func that matches any of the given prefixes.""" + assert prefixes + + def match(name, module): + for prefix in prefixes: + if name.startswith(prefix): + return True + else: + return False + + return match + + +def check_modules(project, match, root=None): + """Verify that only vendored modules have been imported.""" + if root is None: + root = project_root(project) + extensions = [] + unvendored = {} + for modname, mod in list(sys.modules.items()): + if not match(modname, mod): + continue + try: + filename = getattr(mod, "__file__", None) + except: # In theory it's possible that any error is raised when accessing __file__ + filename = None + if not filename: # extension module + extensions.append(modname) + elif not filename.startswith(root): + unvendored[modname] = filename + return unvendored, extensions + + +@contextlib.contextmanager +def vendored(project, root=None): + """A context manager under which the vendored project will be imported.""" + if root is None: + root = project_root(project) + # Add the vendored project directory, so that it gets tried first. + sys.path.insert(0, root) + try: + yield root + finally: + sys.path.remove(root) + + +def preimport(project, modules, **kwargs): + """Import each of the named modules out of the vendored project.""" + with vendored(project, **kwargs): + for name in modules: + import_module(name) diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/_pydevd_packaging.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/_pydevd_packaging.py new file mode 100644 index 000000000..19c79b942 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/_pydevd_packaging.py @@ -0,0 +1,47 @@ +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See LICENSE in the project root +# for license information. + +from . import VENDORED_ROOT +from ._util import cwd, iter_all_files + +INCLUDES = [ + "setup_pydevd_cython.py", +] + + +def iter_files(): + # From the root of pydevd repo, we want only scripts and + # subdirectories that constitute the package itself (not helper + # scripts, tests etc). But when walking down into those + # subdirectories, we want everything below. + + with cwd(VENDORED_ROOT): + return iter_all_files("pydevd", prune_dir, exclude_file) + + +def prune_dir(dirname, basename): + if basename == "__pycache__": + return True + elif dirname != "pydevd": + return False + elif basename.startswith("pydev"): + return False + elif basename.startswith("_pydev"): + return False + return True + + +def exclude_file(dirname, basename): + if dirname == "pydevd": + if basename in INCLUDES: + return False + elif not basename.endswith(".py"): + return True + elif "pydev" not in basename: + return True + return False + + if basename.endswith(".pyc"): + return True + return False diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/_util.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/_util.py new file mode 100644 index 000000000..d2982af5a --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/_util.py @@ -0,0 +1,60 @@ +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See LICENSE in the project root +# for license information. + +import contextlib +import os + + +@contextlib.contextmanager +def cwd(dirname): + """A context manager for operating in a different directory.""" + orig = os.getcwd() + os.chdir(dirname) + try: + yield orig + finally: + os.chdir(orig) + + +def iter_all_files(root, prune_dir=None, exclude_file=None): + """Yield (dirname, basename, filename) for each file in the tree. + + This is an alternative to os.walk() that flattens out the tree and + with filtering. + """ + pending = [root] + while pending: + dirname = pending.pop(0) + for result in _iter_files(dirname, pending, prune_dir, exclude_file): + yield result + + +def iter_tree(root, prune_dir=None, exclude_file=None): + """Yield (dirname, files) for each directory in the tree. + + The list of files is actually a list of (basename, filename). + + This is an alternative to os.walk() with filtering. + """ + pending = [root] + while pending: + dirname = pending.pop(0) + files = [] + for _, b, f in _iter_files(dirname, pending, prune_dir, exclude_file): + files.append((b, f)) + yield dirname, files + + +def _iter_files(dirname, subdirs, prune_dir, exclude_file): + for basename in os.listdir(dirname): + filename = os.path.join(dirname, basename) + if os.path.isdir(filename): + if prune_dir is not None and prune_dir(dirname, basename): + continue + subdirs.append(filename) + else: + # TODO: Use os.path.isfile() to narrow it down? + if exclude_file is not None and exclude_file(dirname, basename): + continue + yield dirname, basename, filename diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/force_pydevd.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/force_pydevd.py new file mode 100644 index 000000000..1421bb9f3 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/force_pydevd.py @@ -0,0 +1,87 @@ +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See LICENSE in the project root +# for license information. + +import os +import warnings +from importlib import import_module + +from . import check_modules, prefix_matcher, preimport, vendored + +# Ensure that pydevd is our vendored copy. +_unvendored, _ = check_modules("pydevd", prefix_matcher("pydev", "_pydev")) +if _unvendored: + _unvendored = sorted(_unvendored.values()) + msg = "incompatible copy of pydevd already imported" + # raise ImportError(msg) + warnings.warn(msg + ":\n {}".format("\n ".join(_unvendored))) + +# If debugpy logging is enabled, enable it for pydevd as well +if "DEBUGPY_LOG_DIR" in os.environ: + os.environ["PYDEVD_DEBUG"] = "True" + os.environ["PYDEVD_DEBUG_FILE"] = ( + os.environ["DEBUGPY_LOG_DIR"] + "/debugpy.pydevd.log" + ) + +# Disable pydevd frame-eval optimizations only if unset, to allow opt-in. +if "PYDEVD_USE_FRAME_EVAL" not in os.environ: + os.environ["PYDEVD_USE_FRAME_EVAL"] = "NO" + +# Constants must be set before importing any other pydevd module +# # due to heavy use of "from" in them. +with warnings.catch_warnings(): + warnings.simplefilter("ignore", category=DeprecationWarning) + with vendored("pydevd"): + pydevd_constants = import_module("_pydevd_bundle.pydevd_constants") +# We limit representation size in our representation provider when needed. +pydevd_constants.MAXIMUM_VARIABLE_REPRESENTATION_SIZE = 2**32 + +# Now make sure all the top-level modules and packages in pydevd are +# loaded. Any pydevd modules that aren't loaded at this point, will +# be loaded using their parent package's __path__ (i.e. one of the +# following). +with warnings.catch_warnings(): + warnings.simplefilter("ignore", category=DeprecationWarning) + preimport( + "pydevd", + [ + "_pydev_bundle", + "_pydev_runfiles", + "_pydevd_bundle", + "_pydevd_frame_eval", + "pydev_ipython", + "pydevd_plugins", + "pydevd", + ], + ) + +# When pydevd is imported it sets the breakpoint behavior, but it needs to be +# overridden because by default pydevd will connect to the remote debugger using +# its own custom protocol rather than DAP. +import pydevd # noqa +import debugpy # noqa + + +def debugpy_breakpointhook(): + debugpy.breakpoint() + + +pydevd.install_breakpointhook(debugpy_breakpointhook) + +# Ensure that pydevd uses JSON protocol +from _pydevd_bundle import pydevd_constants, pydevd_defaults + +pydevd_defaults.PydevdCustomization.DEFAULT_PROTOCOL = ( + pydevd_constants.HTTP_JSON_PROTOCOL +) + +# Enable some defaults related to debugpy such as sending a single notification when +# threads pause and stopping on any exception. +pydevd_defaults.PydevdCustomization.DEBUG_MODE = "debugpy-dap" + +# This is important when pydevd attaches automatically to a subprocess. In this case, we have to +# make sure that debugpy is properly put back in the game for users to be able to use it. +pydevd_defaults.PydevdCustomization.PREIMPORT = "%s;%s" % ( + os.path.dirname(os.path.dirname(debugpy.__file__)), + "debugpy._vendored.force_pydevd", +) diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/__init__.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_calltip_util.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_calltip_util.py new file mode 100644 index 000000000..c44fbf64a --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_calltip_util.py @@ -0,0 +1,162 @@ +""" +License: Apache 2.0 +Author: Yuli Fitterman +""" +import types + +from _pydevd_bundle.pydevd_constants import IS_JYTHON + +try: + import inspect +except: + import traceback + + traceback.print_exc() # Ok, no inspect available (search will not work) + +from _pydev_bundle._pydev_imports_tipper import signature_from_docstring + + +def is_bound_method(obj): + if isinstance(obj, types.MethodType): + return getattr(obj, "__self__", getattr(obj, "im_self", None)) is not None + else: + return False + + +def get_class_name(instance): + return getattr(getattr(instance, "__class__", None), "__name__", None) + + +def get_bound_class_name(obj): + my_self = getattr(obj, "__self__", getattr(obj, "im_self", None)) + if my_self is None: + return None + return get_class_name(my_self) + + +def get_description(obj): + try: + ob_call = obj.__call__ + except: + ob_call = None + + if isinstance(obj, type) or type(obj).__name__ == "classobj": + fob = getattr(obj, "__init__", lambda: None) + if not isinstance(fob, (types.FunctionType, types.MethodType)): + fob = obj + elif is_bound_method(ob_call): + fob = ob_call + else: + fob = obj + + argspec = "" + fn_name = None + fn_class = None + if isinstance(fob, (types.FunctionType, types.MethodType)): + spec_info = inspect.getfullargspec(fob) + argspec = inspect.formatargspec(*spec_info) + fn_name = getattr(fob, "__name__", None) + if isinstance(obj, type) or type(obj).__name__ == "classobj": + fn_name = "__init__" + fn_class = getattr(obj, "__name__", "UnknownClass") + elif is_bound_method(obj) or is_bound_method(ob_call): + fn_class = get_bound_class_name(obj) or "UnknownClass" + + else: + fn_name = getattr(fob, "__name__", None) + fn_self = getattr(fob, "__self__", None) + if fn_self is not None and not isinstance(fn_self, types.ModuleType): + fn_class = get_class_name(fn_self) + + doc_string = ( + get_docstring(ob_call) if is_bound_method(ob_call) else get_docstring(obj) + ) + return create_method_stub(fn_name, fn_class, argspec, doc_string) + + +def create_method_stub(fn_name, fn_class, argspec, doc_string): + if fn_name and argspec: + doc_string = "" if doc_string is None else doc_string + fn_stub = create_function_stub( + fn_name, argspec, doc_string, indent=1 if fn_class else 0 + ) + if fn_class: + expr = fn_class if fn_name == "__init__" else fn_class + "()." + fn_name + return create_class_stub(fn_class, fn_stub) + "\n" + expr + else: + expr = fn_name + return fn_stub + "\n" + expr + elif doc_string: + if fn_name: + restored_signature, _ = signature_from_docstring(doc_string, fn_name) + if restored_signature: + return create_method_stub( + fn_name, fn_class, restored_signature, doc_string + ) + return ( + create_function_stub("unknown", "(*args, **kwargs)", doc_string) + + "\nunknown" + ) + + else: + return "" + + +def get_docstring(obj): + if obj is not None: + try: + if IS_JYTHON: + # Jython + doc = obj.__doc__ + if doc is not None: + return doc + + from _pydev_bundle import _pydev_jy_imports_tipper + + is_method, infos = _pydev_jy_imports_tipper.ismethod(obj) + ret = "" + if is_method: + for info in infos: + ret += info.get_as_doc() + return ret + + else: + doc = inspect.getdoc(obj) + if doc is not None: + return doc + except: + pass + else: + return "" + try: + # if no attempt succeeded, try to return repr()... + return repr(obj) + except: + try: + # otherwise the class + return str(obj.__class__) + except: + # if all fails, go to an empty string + return "" + + +def create_class_stub(class_name, contents): + return "class %s(object):\n%s" % (class_name, contents) + + +def create_function_stub(fn_name, fn_argspec, fn_docstring, indent=0): + def shift_right(string, prefix): + return "".join(prefix + line for line in string.splitlines(True)) + + fn_docstring = shift_right(inspect.cleandoc(fn_docstring), " " * (indent + 1)) + ret = ''' +def %s%s: + """%s""" + pass +''' % (fn_name, fn_argspec, fn_docstring) + ret = ret[1:] # remove first /n + ret = ret.replace("\t", " ") + if indent: + prefix = " " * indent + ret = shift_right(ret, prefix) + return ret diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_completer.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_completer.py new file mode 100644 index 000000000..66b5fcad5 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_completer.py @@ -0,0 +1,274 @@ +import builtins as __builtin__ # Py3 +from collections import namedtuple +from string import ascii_letters, digits + +import pydevconsole +from _pydevd_bundle import pydevd_xml + +try: + import java.lang # @UnusedImport + + from _pydev_bundle import _pydev_jy_imports_tipper + + _pydev_imports_tipper = _pydev_jy_imports_tipper +except ImportError: + IS_JYTHON = False + from _pydev_bundle import _pydev_imports_tipper + +dir2 = _pydev_imports_tipper.generate_imports_tip_for_module + + +# ======================================================================================================================= +# _StartsWithFilter +# ======================================================================================================================= +class _StartsWithFilter: + """ + Used because we can't create a lambda that'll use an outer scope in jython 2.1 + """ + + def __init__(self, start_with): + self.start_with = start_with.lower() + + def __call__(self, name): + return name.lower().startswith(self.start_with) + + +# ======================================================================================================================= +# Completer +# +# This class was gotten from IPython.completer (dir2 was replaced with the completer already in pydev) +# ======================================================================================================================= +class Completer: + def __init__(self, namespace=None, global_namespace=None): + """Create a new completer for the command line. + + Completer([namespace,global_namespace]) -> completer instance. + + If unspecified, the default namespace where completions are performed + is __main__ (technically, __main__.__dict__). Namespaces should be + given as dictionaries. + + An optional second namespace can be given. This allows the completer + to handle cases where both the local and global scopes need to be + distinguished. + + Completer instances should be used as the completion mechanism of + readline via the set_completer() call: + + readline.set_completer(Completer(my_namespace).complete) + """ + # Don't bind to namespace quite yet, but flag whether the user wants a + # specific namespace or to use __main__.__dict__. This will allow us + # to bind to __main__.__dict__ at completion time, not now. + if namespace is None: + self.use_main_ns = 1 + else: + self.use_main_ns = 0 + self.namespace = namespace + + # The global namespace, if given, can be bound directly + if global_namespace is None: + self.global_namespace = {} + else: + self.global_namespace = global_namespace + + def complete(self, text): + """Return the next possible completion for 'text'. + + This is called successively with state == 0, 1, 2, ... until it + returns None. The completion should begin with 'text'. + + """ + if self.use_main_ns: + # In pydev this option should never be used + raise RuntimeError("Namespace must be provided!") + self.namespace = __main__.__dict__ # @UndefinedVariable + + if "." in text: + return self.attr_matches(text) + else: + return self.global_matches(text) + + def global_matches(self, text): + """Compute matches when text is a simple name. + + Return a list of all keywords, built-in functions and names currently + defined in self.namespace or self.global_namespace that match. + + """ + + def get_item(obj, attr): + return obj[attr] + + a = {} + + for dict_with_comps in [ + __builtin__.__dict__, + self.namespace, + self.global_namespace, + ]: # @UndefinedVariable + a.update(dict_with_comps) + + filter = _StartsWithFilter(text) + + return dir2(a, a.keys(), get_item, filter) + + def attr_matches(self, text): + """Compute matches when text contains a dot. + + Assuming the text is of the form NAME.NAME....[NAME], and is + evaluatable in self.namespace or self.global_namespace, it will be + evaluated and its attributes (as revealed by dir()) are used as + possible completions. (For class instances, class members are are + also considered.) + + WARNING: this can still invoke arbitrary C code, if an object + with a __getattr__ hook is evaluated. + + """ + import re + + # Another option, seems to work great. Catches things like ''. + m = re.match(r"(\S+(\.\w+)*)\.(\w*)$", text) # @UndefinedVariable + + if not m: + return [] + + expr, attr = m.group(1, 3) + try: + obj = eval(expr, self.namespace) + except: + try: + obj = eval(expr, self.global_namespace) + except: + return [] + + filter = _StartsWithFilter(attr) + + words = dir2(obj, filter=filter) + + return words + + +def generate_completions(frame, act_tok): + """ + :return list(tuple(method_name, docstring, parameters, completion_type)) + + method_name: str + docstring: str + parameters: str -- i.e.: "(a, b)" + completion_type is an int + See: _pydev_bundle._pydev_imports_tipper for TYPE_ constants + """ + if frame is None: + return [] + + # Not using frame.f_globals because of https://sourceforge.net/tracker2/?func=detail&aid=2541355&group_id=85796&atid=577329 + # (Names not resolved in generator expression in method) + # See message: http://mail.python.org/pipermail/python-list/2009-January/526522.html + updated_globals = {} + updated_globals.update(frame.f_globals) + updated_globals.update( + frame.f_locals + ) # locals later because it has precedence over the actual globals + + if pydevconsole.IPYTHON: + completions = pydevconsole.get_completions( + act_tok, act_tok, updated_globals, frame.f_locals + ) + else: + completer = Completer(updated_globals, None) + # list(tuple(name, descr, parameters, type)) + completions = completer.complete(act_tok) + + return completions + + +def generate_completions_as_xml(frame, act_tok): + completions = generate_completions(frame, act_tok) + return completions_to_xml(completions) + + +def completions_to_xml(completions): + valid_xml = pydevd_xml.make_valid_xml_value + quote = pydevd_xml.quote + msg = [""] + + for comp in completions: + msg.append('_= \t"))) + msg.append('" p1="') + msg.append(valid_xml(quote(comp[1], "/>_= \t"))) + msg.append('" p2="') + msg.append(valid_xml(quote(comp[2], "/>_= \t"))) + msg.append('" p3="') + msg.append(valid_xml(quote(comp[3], "/>_= \t"))) + msg.append('"/>') + msg.append("") + + return "".join(msg) + + +identifier_start = ascii_letters + "_" +identifier_part = ascii_letters + "_" + digits + +identifier_start = set(identifier_start) +identifier_part = set(identifier_part) + + +def isidentifier(s): + return s.isidentifier() + + +TokenAndQualifier = namedtuple("TokenAndQualifier", "token, qualifier") + + +def extract_token_and_qualifier(text, line=0, column=0): + """ + Extracts the token a qualifier from the text given the line/colum + (see test_extract_token_and_qualifier for examples). + + :param unicode text: + :param int line: 0-based + :param int column: 0-based + """ + # Note: not using the tokenize module because text should be unicode and + # line/column refer to the unicode text (otherwise we'd have to know + # those ranges after converted to bytes). + if line < 0: + line = 0 + if column < 0: + column = 0 + + if isinstance(text, bytes): + text = text.decode("utf-8") + + lines = text.splitlines() + try: + text = lines[line] + except IndexError: + return TokenAndQualifier("", "") + + if column >= len(text): + column = len(text) + + text = text[:column] + token = "" + qualifier = "" + + temp_token = [] + for i in range(column - 1, -1, -1): + c = text[i] + if c in identifier_part or isidentifier(c) or c == ".": + temp_token.append(c) + else: + break + temp_token = "".join(reversed(temp_token)) + if "." in temp_token: + temp_token = temp_token.split(".") + token = ".".join(temp_token[:-1]) + qualifier = temp_token[-1] + else: + qualifier = temp_token + + return TokenAndQualifier(token, qualifier) diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_execfile.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_execfile.py new file mode 100644 index 000000000..4abdd4b63 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_execfile.py @@ -0,0 +1,16 @@ +# We must redefine it in Py3k if it's not already there +def execfile(file, glob=None, loc=None): + if glob is None: + import sys + + glob = sys._getframe().f_back.f_globals + if loc is None: + loc = glob + + import tokenize + + with tokenize.open(file) as stream: + contents = stream.read() + + # execute the script (note: it's important to compile first to have the filename set in debug mode) + exec(compile(contents + "\n", file, "exec"), glob, loc) diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_filesystem_encoding.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_filesystem_encoding.py new file mode 100644 index 000000000..b0a21bfde --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_filesystem_encoding.py @@ -0,0 +1,43 @@ +import sys + + +def __getfilesystemencoding(): + """ + Note: there's a copy of this method in interpreterInfo.py + """ + try: + ret = sys.getfilesystemencoding() + if not ret: + raise RuntimeError("Unable to get encoding.") + return ret + except: + try: + # Handle Jython + from java.lang import System # @UnresolvedImport + + env = System.getProperty("os.name").lower() + if env.find("win") != -1: + return "ISO-8859-1" # mbcs does not work on Jython, so, use a (hopefully) suitable replacement + return "utf-8" + except: + pass + + # Only available from 2.3 onwards. + if sys.platform == "win32": + return "mbcs" + return "utf-8" + + +def getfilesystemencoding(): + try: + ret = __getfilesystemencoding() + + # Check if the encoding is actually there to be used! + if hasattr("", "encode"): + "".encode(ret) + if hasattr("", "decode"): + "".decode(ret) + + return ret + except: + return "utf-8" diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_getopt.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_getopt.py new file mode 100644 index 000000000..fb093f1f6 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_getopt.py @@ -0,0 +1,132 @@ +# ======================================================================================================================= +# getopt code copied since gnu_getopt is not available on jython 2.1 +# ======================================================================================================================= +class GetoptError(Exception): + opt = "" + msg = "" + + def __init__(self, msg, opt=""): + self.msg = msg + self.opt = opt + Exception.__init__(self, msg, opt) + + def __str__(self): + return self.msg + + +def gnu_getopt(args, shortopts, longopts=[]): + """getopt(args, options[, long_options]) -> opts, args + + This function works like getopt(), except that GNU style scanning + mode is used by default. This means that option and non-option + arguments may be intermixed. The getopt() function stops + processing options as soon as a non-option argument is + encountered. + + If the first character of the option string is `+', or if the + environment variable POSIXLY_CORRECT is set, then option + processing stops as soon as a non-option argument is encountered. + """ + opts = [] + prog_args = [] + if str == type(longopts): + longopts = [longopts] + else: + longopts = list(longopts) + + # Allow options after non-option arguments? + all_options_first = False + if shortopts.startswith("+"): + shortopts = shortopts[1:] + all_options_first = True + + while args: + if args[0] == "--": + prog_args += args[1:] + break + + if args[0][:2] == "--": + opts, args = do_longs(opts, args[0][2:], longopts, args[1:]) + elif args[0][:1] == "-": + opts, args = do_shorts(opts, args[0][1:], shortopts, args[1:]) + else: + if all_options_first: + prog_args += args + break + else: + prog_args.append(args[0]) + args = args[1:] + + return opts, prog_args + + +def do_longs(opts, opt, longopts, args): + try: + i = opt.index("=") + except ValueError: + optarg = None + else: + opt, optarg = opt[:i], opt[i + 1 :] + + has_arg, opt = long_has_args(opt, longopts) + if has_arg: + if optarg is None: + if not args: + raise GetoptError("option --%s requires argument" % opt, opt) + optarg, args = args[0], args[1:] + elif optarg: + raise GetoptError("option --%s must not have an argument" % opt, opt) + opts.append(("--" + opt, optarg or "")) + return opts, args + + +# Return: +# has_arg? +# full option name +def long_has_args(opt, longopts): + possibilities = [o for o in longopts if o.startswith(opt)] + if not possibilities: + raise GetoptError("option --%s not recognized" % opt, opt) + # Is there an exact match? + if opt in possibilities: + return False, opt + elif opt + "=" in possibilities: + return True, opt + # No exact match, so better be unique. + if len(possibilities) > 1: + # XXX since possibilities contains all valid continuations, might be + # nice to work them into the error msg + raise GetoptError("option --%s not a unique prefix" % opt, opt) + assert len(possibilities) == 1 + unique_match = possibilities[0] + has_arg = unique_match.endswith("=") + if has_arg: + unique_match = unique_match[:-1] + return has_arg, unique_match + + +def do_shorts(opts, optstring, shortopts, args): + while optstring != "": + opt, optstring = optstring[0], optstring[1:] + if short_has_arg(opt, shortopts): + if optstring == "": + if not args: + raise GetoptError("option -%s requires argument" % opt, opt) + optstring, args = args[0], args[1:] + optarg, optstring = optstring, "" + else: + optarg = "" + opts.append(("-" + opt, optarg)) + return opts, args + + +def short_has_arg(opt, shortopts): + for i in range(len(shortopts)): + if opt == shortopts[i] != ":": + return shortopts.startswith(":", i + 1) + raise GetoptError("option -%s not recognized" % opt, opt) + + +# ======================================================================================================================= +# End getopt code +# ======================================================================================================================= diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_imports_tipper.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_imports_tipper.py new file mode 100644 index 000000000..9fa128ef7 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_imports_tipper.py @@ -0,0 +1,399 @@ +import inspect +import os.path +import sys +from inspect import getfullargspec + +from _pydevd_bundle.pydevd_utils import dir_checked, hasattr_checked + +from _pydev_bundle._pydev_tipper_common import do_find + + +def getargspec(*args, **kwargs): + arg_spec = getfullargspec(*args, **kwargs) + return ( + arg_spec.args, + arg_spec.varargs, + arg_spec.varkw, + arg_spec.defaults, + arg_spec.kwonlyargs or [], + arg_spec.kwonlydefaults or {}, + ) + + +# completion types. +TYPE_IMPORT = "0" +TYPE_CLASS = "1" +TYPE_FUNCTION = "2" +TYPE_ATTR = "3" +TYPE_BUILTIN = "4" +TYPE_PARAM = "5" + + +def _imp(name, log=None): + try: + return __import__(name) + except: + if "." in name: + sub = name[0 : name.rfind(".")] + + if log is not None: + log.add_content("Unable to import", name, "trying with", sub) + log.add_exception() + + return _imp(sub, log) + else: + s = "Unable to import module: %s - sys.path: %s" % (str(name), sys.path) + if log is not None: + log.add_content(s) + log.add_exception() + + raise ImportError(s) + + +IS_IPY = False +if sys.platform == "cli": + IS_IPY = True + _old_imp = _imp + + def _imp(name, log=None): + # We must add a reference in clr for .Net + import clr # @UnresolvedImport + + initial_name = name + while "." in name: + try: + clr.AddReference(name) + break # If it worked, that's OK. + except: + name = name[0 : name.rfind(".")] + else: + try: + clr.AddReference(name) + except: + pass # That's OK (not dot net module). + + return _old_imp(initial_name, log) + + +def get_file(mod): + f = None + try: + f = inspect.getsourcefile(mod) or inspect.getfile(mod) + except: + try: + f = getattr(mod, "__file__", None) + except: + f = None + if f and f.lower(f[-4:]) in [".pyc", ".pyo"]: + filename = f[:-4] + ".py" + if os.path.exists(filename): + f = filename + + return f + + +def Find(name, log=None): + f = None + + mod = _imp(name, log) + parent = mod + foundAs = "" + + if inspect.ismodule(mod): + f = get_file(mod) + + components = name.split(".") + + old_comp = None + for comp in components[1:]: + try: + # this happens in the following case: + # we have mx.DateTime.mxDateTime.mxDateTime.pyd + # but after importing it, mx.DateTime.mxDateTime shadows access to mxDateTime.pyd + mod = getattr(mod, comp) + except AttributeError: + if old_comp != comp: + raise + + if inspect.ismodule(mod): + f = get_file(mod) + else: + if len(foundAs) > 0: + foundAs = foundAs + "." + foundAs = foundAs + comp + + old_comp = comp + + return f, mod, parent, foundAs + + +def search_definition(data): + """@return file, line, col""" + data = data.replace("\n", "") + if data.endswith("."): + data = data.rstrip(".") + f, mod, parent, foundAs = Find(data) + try: + return do_find(f, mod), foundAs + except: + return do_find(f, parent), foundAs + + +def generate_tip(data, log=None): + data = data.replace("\n", "") + if data.endswith("."): + data = data.rstrip(".") + + f, mod, parent, foundAs = Find(data, log) + # print_ >> open('temp.txt', 'w'), f + tips = generate_imports_tip_for_module(mod) + return f, tips + + +def check_char(c): + if c == "-" or c == ".": + return "_" + return c + + +_SENTINEL = object() + + +def generate_imports_tip_for_module( + obj_to_complete, dir_comps=None, getattr=getattr, filter=lambda name: True +): + """ + @param obj_to_complete: the object from where we should get the completions + @param dir_comps: if passed, we should not 'dir' the object and should just iterate those passed as kwonly_arg parameter + @param getattr: the way to get kwonly_arg given object from the obj_to_complete (used for the completer) + @param filter: kwonly_arg callable that receives the name and decides if it should be appended or not to the results + @return: list of tuples, so that each tuple represents kwonly_arg completion with: + name, doc, args, type (from the TYPE_* constants) + """ + ret = [] + + if dir_comps is None: + dir_comps = dir_checked(obj_to_complete) + if hasattr_checked(obj_to_complete, "__dict__"): + dir_comps.append("__dict__") + if hasattr_checked(obj_to_complete, "__class__"): + dir_comps.append("__class__") + + get_complete_info = True + + if len(dir_comps) > 1000: + # ok, we don't want to let our users wait forever... + # no complete info for you... + + get_complete_info = False + + dontGetDocsOn = (float, int, str, tuple, list, dict) + dontGetattrOn = (dict, list, set, tuple) + for d in dir_comps: + if d is None: + continue + + if not filter(d): + continue + + args = "" + + try: + try: + if isinstance(obj_to_complete, dontGetattrOn): + raise Exception( + 'Since python 3.9, e.g. "dict[str]" will return' + " a dict that's only supposed to take strings. " + 'Interestingly, e.g. dict["val"] is also valid ' + "and presumably represents a dict that only takes " + 'keys that are "val". This breaks our check for ' + "class attributes." + ) + obj = getattr(obj_to_complete.__class__, d) + except: + obj = getattr(obj_to_complete, d) + except: # just ignore and get it without additional info + ret.append((d, "", args, TYPE_BUILTIN)) + else: + if get_complete_info: + try: + retType = TYPE_BUILTIN + + # check if we have to get docs + getDoc = True + for class_ in dontGetDocsOn: + if isinstance(obj, class_): + getDoc = False + break + + doc = "" + if getDoc: + # no need to get this info... too many constants are defined and + # makes things much slower (passing all that through sockets takes quite some time) + try: + doc = inspect.getdoc(obj) + if doc is None: + doc = "" + except: # may happen on jython when checking java classes (so, just ignore it) + doc = "" + + if ( + inspect.ismethod(obj) + or inspect.isbuiltin(obj) + or inspect.isfunction(obj) + or inspect.isroutine(obj) + ): + try: + ( + args, + vargs, + kwargs, + defaults, + kwonly_args, + kwonly_defaults, + ) = getargspec(obj) + + args = args[:] + + for kwonly_arg in kwonly_args: + default = kwonly_defaults.get(kwonly_arg, _SENTINEL) + if default is not _SENTINEL: + args.append("%s=%s" % (kwonly_arg, default)) + else: + args.append(str(kwonly_arg)) + + args = "(%s)" % (", ".join(args)) + except TypeError: + # ok, let's see if we can get the arguments from the doc + args, doc = signature_from_docstring( + doc, getattr(obj, "__name__", None) + ) + + retType = TYPE_FUNCTION + + elif inspect.isclass(obj): + retType = TYPE_CLASS + + elif inspect.ismodule(obj): + retType = TYPE_IMPORT + + else: + retType = TYPE_ATTR + + # add token and doc to return - assure only strings. + ret.append((d, doc, args, retType)) + + except: # just ignore and get it without aditional info + ret.append((d, "", args, TYPE_BUILTIN)) + + else: # get_complete_info == False + if ( + inspect.ismethod(obj) + or inspect.isbuiltin(obj) + or inspect.isfunction(obj) + or inspect.isroutine(obj) + ): + retType = TYPE_FUNCTION + + elif inspect.isclass(obj): + retType = TYPE_CLASS + + elif inspect.ismodule(obj): + retType = TYPE_IMPORT + + else: + retType = TYPE_ATTR + # ok, no complete info, let's try to do this as fast and clean as possible + # so, no docs for this kind of information, only the signatures + ret.append((d, "", str(args), retType)) + + return ret + + +def signature_from_docstring(doc, obj_name): + args = "()" + try: + found = False + if len(doc) > 0: + if IS_IPY: + # Handle case where we have the situation below + # sort(self, object cmp, object key) + # sort(self, object cmp, object key, bool reverse) + # sort(self) + # sort(self, object cmp) + + # Or: sort(self: list, cmp: object, key: object) + # sort(self: list, cmp: object, key: object, reverse: bool) + # sort(self: list) + # sort(self: list, cmp: object) + if obj_name: + name = obj_name + "(" + + # Fix issue where it was appearing sort(aa)sort(bb)sort(cc) in the same line. + lines = doc.splitlines() + if len(lines) == 1: + c = doc.count(name) + if c > 1: + doc = ("\n" + name).join(doc.split(name)) + + major = "" + for line in doc.splitlines(): + if line.startswith(name) and line.endswith(")"): + if len(line) > len(major): + major = line + if major: + args = major[major.index("(") :] + found = True + + if not found: + i = doc.find("->") + if i < 0: + i = doc.find("--") + if i < 0: + i = doc.find("\n") + if i < 0: + i = doc.find("\r") + + if i > 0: + s = doc[0:i] + s = s.strip() + + # let's see if we have a docstring in the first line + if s[-1] == ")": + start = s.find("(") + if start >= 0: + end = s.find("[") + if end <= 0: + end = s.find(")") + if end <= 0: + end = len(s) + + args = s[start:end] + if not args[-1] == ")": + args = args + ")" + + # now, get rid of unwanted chars + l = len(args) - 1 + r = [] + for i in range(len(args)): + if i == 0 or i == l: + r.append(args[i]) + else: + r.append(check_char(args[i])) + + args = "".join(r) + + if IS_IPY: + if args.startswith("(self:"): + i = args.find(",") + if i >= 0: + args = "(self" + args[i:] + else: + args = "(self)" + i = args.find(")") + if i > 0: + args = args[: i + 1] + + except: + pass + return args, doc diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_jy_imports_tipper.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_jy_imports_tipper.py new file mode 100644 index 000000000..649e88fd4 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_jy_imports_tipper.py @@ -0,0 +1,509 @@ +import sys +import traceback +from io import StringIO + +import java.lang # @UnresolvedImport +from org.python import core # @UnresolvedImport +from org.python.core import ( + PyReflectedFunction, # @UnresolvedImport +) + +from _pydev_bundle._pydev_tipper_common import do_find + +# completion types. +TYPE_IMPORT = "0" +TYPE_CLASS = "1" +TYPE_FUNCTION = "2" +TYPE_ATTR = "3" +TYPE_BUILTIN = "4" +TYPE_PARAM = "5" + + +def _imp(name): + try: + return __import__(name) + except: + if "." in name: + sub = name[0 : name.rfind(".")] + return _imp(sub) + else: + s = "Unable to import module: %s - sys.path: %s" % (str(name), sys.path) + raise RuntimeError(s) + + +import java.util + +_java_rt_file = getattr(java.util, "__file__", None) + + +def Find(name): + f = None + if name.startswith("__builtin__"): + if name == "__builtin__.str": + name = "org.python.core.PyString" + elif name == "__builtin__.dict": + name = "org.python.core.PyDictionary" + + mod = _imp(name) + parent = mod + foundAs = "" + + try: + f = getattr(mod, "__file__", None) + except: + f = None + + components = name.split(".") + old_comp = None + for comp in components[1:]: + try: + # this happens in the following case: + # we have mx.DateTime.mxDateTime.mxDateTime.pyd + # but after importing it, mx.DateTime.mxDateTime does shadows access to mxDateTime.pyd + mod = getattr(mod, comp) + except AttributeError: + if old_comp != comp: + raise + + if hasattr(mod, "__file__"): + f = mod.__file__ + else: + if len(foundAs) > 0: + foundAs = foundAs + "." + foundAs = foundAs + comp + + old_comp = comp + + if f is None and name.startswith("java.lang"): + # Hack: java.lang.__file__ is None on Jython 2.7 (whereas it pointed to rt.jar on Jython 2.5). + f = _java_rt_file + + if f is not None: + if f.endswith(".pyc"): + f = f[:-1] + elif f.endswith("$py.class"): + f = f[: -len("$py.class")] + ".py" + return f, mod, parent, foundAs + + +def format_param_class_name(paramClassName): + if paramClassName.startswith(""): + paramClassName = paramClassName[len(" + paramClassName = paramClassName.split("'")[1] + except: + paramClassName = repr( + paramTypesClass + ) # just in case something else happens... it will at least be visible + # if the parameter equals [C, it means it it a char array, so, let's change it + + a = format_param_class_name(paramClassName) + # a = a.replace('[]','Array') + # a = a.replace('Object', 'obj') + # a = a.replace('String', 's') + # a = a.replace('Integer', 'i') + # a = a.replace('Char', 'c') + # a = a.replace('Double', 'd') + args.append(a) # so we don't leave invalid code + + info = Info(name, args=args, ret=ret) + # print_ info.basic_as_str() + infos.append(info) + + return 1, infos + except Exception: + s = StringIO() + traceback.print_exc(file=s) + return 1, [Info("ERROR", doc=s.getvalue())] + + return 0, None + + +def ismodule(mod): + # java modules... do we have other way to know that? + if ( + not hasattr(mod, "getClass") + and not hasattr(mod, "__class__") + and hasattr(mod, "__name__") + ): + return 1 + + return isinstance(mod, core.PyModule) + + +def dir_obj(obj): + ret = [] + found = java.util.HashMap() + original = obj + if hasattr(obj, "__class__"): + if obj.__class__ == java.lang.Class: + # get info about superclasses + classes = [] + classes.append(obj) + try: + c = obj.getSuperclass() + except TypeError: + # may happen on jython when getting the java.lang.Class class + c = obj.getSuperclass(obj) + + while c != None: + classes.append(c) + c = c.getSuperclass() + + # get info about interfaces + interfs = [] + for obj in classes: + try: + interfs.extend(obj.getInterfaces()) + except TypeError: + interfs.extend(obj.getInterfaces(obj)) + classes.extend(interfs) + + # now is the time when we actually get info on the declared methods and fields + for obj in classes: + try: + declaredMethods = obj.getDeclaredMethods() + except TypeError: + declaredMethods = obj.getDeclaredMethods(obj) + + try: + declaredFields = obj.getDeclaredFields() + except TypeError: + declaredFields = obj.getDeclaredFields(obj) + + for i in range(len(declaredMethods)): + name = declaredMethods[i].getName() + ret.append(name) + found.put(name, 1) + + for i in range(len(declaredFields)): + name = declaredFields[i].getName() + ret.append(name) + found.put(name, 1) + + elif isclass(obj.__class__): + d = dir(obj.__class__) + for name in d: + ret.append(name) + found.put(name, 1) + + # this simple dir does not always get all the info, that's why we have the part before + # (e.g.: if we do a dir on String, some methods that are from other interfaces such as + # charAt don't appear) + d = dir(original) + for name in d: + if found.get(name) != 1: + ret.append(name) + + return ret + + +def format_arg(arg): + """Formats an argument to be shown""" + s = str(arg) + dot = s.rfind(".") + if dot >= 0: + s = s[dot + 1 :] + + s = s.replace(";", "") + s = s.replace("[]", "Array") + if len(s) > 0: + c = s[0].lower() + s = c + s[1:] + + return s + + +def search_definition(data): + """@return file, line, col""" + data = data.replace("\n", "") + if data.endswith("."): + data = data.rstrip(".") + f, mod, parent, foundAs = Find(data) + try: + return do_find(f, mod), foundAs + except: + return do_find(f, parent), foundAs + + +def generate_imports_tip_for_module( + obj_to_complete, dir_comps=None, getattr=getattr, filter=lambda name: True +): + """ + @param obj_to_complete: the object from where we should get the completions + @param dir_comps: if passed, we should not 'dir' the object and should just iterate those passed as a parameter + @param getattr: the way to get a given object from the obj_to_complete (used for the completer) + @param filter: a callable that receives the name and decides if it should be appended or not to the results + @return: list of tuples, so that each tuple represents a completion with: + name, doc, args, type (from the TYPE_* constants) + """ + ret = [] + + if dir_comps is None: + dir_comps = dir_obj(obj_to_complete) + + for d in dir_comps: + if d is None: + continue + + if not filter(d): + continue + + args = "" + doc = "" + retType = TYPE_BUILTIN + + try: + obj = getattr(obj_to_complete, d) + except (AttributeError, java.lang.NoClassDefFoundError): + # jython has a bug in its custom classloader that prevents some things from working correctly, so, let's see if + # we can fix that... (maybe fixing it in jython itself would be a better idea, as this is clearly a bug) + # for that we need a custom classloader... we have references from it in the below places: + # + # http://mindprod.com/jgloss/classloader.html + # http://www.javaworld.com/javaworld/jw-03-2000/jw-03-classload-p2.html + # http://freshmeat.net/articles/view/1643/ + # + # note: this only happens when we add things to the sys.path at runtime, if they are added to the classpath + # before the run, everything goes fine. + # + # The code below ilustrates what I mean... + # + # import sys + # sys.path.insert(1, r"C:\bin\eclipse310\plugins\org.junit_3.8.1\junit.jar" ) + # + # import junit.framework + # print_ dir(junit.framework) #shows the TestCase class here + # + # import junit.framework.TestCase + # + # raises the error: + # Traceback (innermost last): + # File "", line 1, in ? + # ImportError: No module named TestCase + # + # whereas if we had added the jar to the classpath before, everything would be fine by now... + + ret.append((d, "", "", retType)) + # that's ok, private things cannot be gotten... + continue + else: + isMet = ismethod(obj) + if isMet[0] and isMet[1]: + info = isMet[1][0] + try: + args, vargs, kwargs = info.args, info.varargs, info.kwargs + doc = info.get_as_doc() + r = "" + for a in args: + if len(r) > 0: + r += ", " + r += format_arg(a) + args = "(%s)" % (r) + except TypeError: + traceback.print_exc() + args = "()" + + retType = TYPE_FUNCTION + + elif isclass(obj): + retType = TYPE_CLASS + + elif ismodule(obj): + retType = TYPE_IMPORT + + # add token and doc to return - assure only strings. + ret.append((d, doc, args, retType)) + + return ret + + +if __name__ == "__main__": + sys.path.append( + r"D:\dev_programs\eclipse_3\310\eclipse\plugins\org.junit_3.8.1\junit.jar" + ) + sys.stdout.write("%s\n" % Find("junit.framework.TestCase")) diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_log.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_log.py new file mode 100644 index 000000000..64680cdd5 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_log.py @@ -0,0 +1,25 @@ +import sys +import traceback +from io import StringIO + + +class Log: + def __init__(self): + self._contents = [] + + def add_content(self, *content): + self._contents.append(" ".join(content)) + + def add_exception(self): + s = StringIO() + exc_info = sys.exc_info() + traceback.print_exception( + exc_info[0], exc_info[1], exc_info[2], limit=None, file=s + ) + self._contents.append(s.getvalue()) + + def get_contents(self): + return "\n".join(self._contents) + + def clear_log(self): + del self._contents[:] diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_saved_modules.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_saved_modules.py new file mode 100644 index 000000000..90559898d --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_saved_modules.py @@ -0,0 +1,139 @@ +import os +import sys + + +def find_in_pythonpath(module_name): + # Check all the occurrences where we could match the given module/package in the PYTHONPATH. + # + # This is a simplistic approach, but probably covers most of the cases we're interested in + # (i.e.: this may fail in more elaborate cases of import customization or .zip imports, but + # this should be rare in general). + found_at = [] + + parts = module_name.split( + "." + ) # split because we need to convert mod.name to mod/name + for path in sys.path: + target = os.path.join(path, *parts) + target_py = target + ".py" + if os.path.isdir(target): + found_at.append(target) + if os.path.exists(target_py): + found_at.append(target_py) + return found_at + + +class DebuggerInitializationError(Exception): + pass + + +class VerifyShadowedImport: + def __init__(self, import_name): + self.import_name = import_name + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_val, exc_tb): + if exc_type is not None: + if exc_type == DebuggerInitializationError: + return False # It's already an error we generated. + + # We couldn't even import it... + found_at = find_in_pythonpath(self.import_name) + + if len(found_at) <= 1: + # It wasn't found anywhere or there was just 1 occurrence. + # Let's just return to show the original error. + return False + + # We found more than 1 occurrence of the same module in the PYTHONPATH + # (the user module and the standard library module). + # Let's notify the user as it seems that the module was shadowed. + msg = self._generate_shadowed_import_message(found_at) + raise DebuggerInitializationError(msg) + + def _generate_shadowed_import_message(self, found_at): + msg = """It was not possible to initialize the debugger due to a module name conflict. + +i.e.: the module "%(import_name)s" could not be imported because it is shadowed by: +%(found_at)s +Please rename this file/folder so that the original module from the standard library can be imported.""" % { + "import_name": self.import_name, + "found_at": found_at[0], + } + + return msg + + def check(self, module, expected_attributes): + msg = "" + for expected_attribute in expected_attributes: + try: + getattr(module, expected_attribute) + except: + msg = self._generate_shadowed_import_message([module.__file__]) + break + + if msg: + raise DebuggerInitializationError(msg) + + +with VerifyShadowedImport("threading") as verify_shadowed: + import threading + + verify_shadowed.check( + threading, + ["Thread", "settrace", "setprofile", "Lock", "RLock", "current_thread"], + ) + ThreadingEvent = threading.Event + ThreadingLock = threading.Lock + threading_current_thread = threading.current_thread + +with VerifyShadowedImport("time") as verify_shadowed: + import time + + verify_shadowed.check(time, ["sleep", "time", "mktime"]) + +with VerifyShadowedImport("socket") as verify_shadowed: + import socket + + verify_shadowed.check(socket, ["socket", "gethostname", "getaddrinfo"]) + +with VerifyShadowedImport("select") as verify_shadowed: + import select + + verify_shadowed.check(select, ["select"]) + +with VerifyShadowedImport("code") as verify_shadowed: + import code as _code + + verify_shadowed.check(_code, ["compile_command", "InteractiveInterpreter"]) + +with VerifyShadowedImport("_thread") as verify_shadowed: + import _thread as thread + + verify_shadowed.check(thread, ["start_new_thread", "start_new", "allocate_lock"]) + +with VerifyShadowedImport("queue") as verify_shadowed: + import queue as _queue + + verify_shadowed.check(_queue, ["Queue", "LifoQueue", "Empty", "Full", "deque"]) + +with VerifyShadowedImport("xmlrpclib") as verify_shadowed: + import xmlrpc.client as xmlrpclib + + verify_shadowed.check(xmlrpclib, ["ServerProxy", "Marshaller", "Server"]) + +with VerifyShadowedImport("xmlrpc.server") as verify_shadowed: + import xmlrpc.server as xmlrpcserver + + verify_shadowed.check(xmlrpcserver, ["SimpleXMLRPCServer"]) + +with VerifyShadowedImport("http.server") as verify_shadowed: + import http.server as BaseHTTPServer + + verify_shadowed.check(BaseHTTPServer, ["BaseHTTPRequestHandler"]) + +# If set, this is a version of the threading.enumerate that doesn't have the patching to remove the pydevd threads. +# Note: as it can't be set during execution, don't import the name (import the module and access it through its name). +pydevd_saved_threading_enumerate = None diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_sys_patch.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_sys_patch.py new file mode 100644 index 000000000..2c2e1841c --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_sys_patch.py @@ -0,0 +1,79 @@ +import sys + + +def patch_sys_module(): + def patched_exc_info(fun): + def pydev_debugger_exc_info(): + type, value, traceback = fun() + if type == ImportError: + # we should not show frame added by plugin_import call + if traceback and hasattr(traceback, "tb_next"): + return type, value, traceback.tb_next + return type, value, traceback + + return pydev_debugger_exc_info + + system_exc_info = sys.exc_info + sys.exc_info = patched_exc_info(system_exc_info) + if not hasattr(sys, "system_exc_info"): + sys.system_exc_info = system_exc_info + + +def patched_reload(orig_reload): + def pydev_debugger_reload(module): + orig_reload(module) + if module.__name__ == "sys": + # if sys module was reloaded we should patch it again + patch_sys_module() + + return pydev_debugger_reload + + +def patch_reload(): + import builtins # Py3 + + if hasattr(builtins, "reload"): + sys.builtin_orig_reload = builtins.reload + builtins.reload = patched_reload(sys.builtin_orig_reload) # @UndefinedVariable + try: + import imp + + sys.imp_orig_reload = imp.reload + imp.reload = patched_reload(sys.imp_orig_reload) # @UndefinedVariable + except ImportError: + pass # Ok, imp not available on Python 3.12. + else: + try: + import importlib + + sys.importlib_orig_reload = importlib.reload # @UndefinedVariable + importlib.reload = patched_reload( + sys.importlib_orig_reload + ) # @UndefinedVariable + except: + pass + + del builtins + + +def cancel_patches_in_sys_module(): + sys.exc_info = sys.system_exc_info # @UndefinedVariable + import builtins # Py3 + + if hasattr(sys, "builtin_orig_reload"): + builtins.reload = sys.builtin_orig_reload + + if hasattr(sys, "imp_orig_reload"): + try: + import imp + + imp.reload = sys.imp_orig_reload + except ImportError: + pass # Ok, imp not available in Python 3.12. + + if hasattr(sys, "importlib_orig_reload"): + import importlib + + importlib.reload = sys.importlib_orig_reload + + del builtins diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_tipper_common.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_tipper_common.py new file mode 100644 index 000000000..25c0f6fdb --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_tipper_common.py @@ -0,0 +1,53 @@ +import inspect +import re + + +def do_find(f, mod): + import linecache + + if inspect.ismodule(mod): + return f, 0, 0 + + lines = linecache.getlines(f) + + if inspect.isclass(mod): + name = mod.__name__ + pat = re.compile(r"^\s*class\s*" + name + r"\b") + for i in range(len(lines)): + if pat.match(lines[i]): + return f, i, 0 + + return f, 0, 0 + + if inspect.ismethod(mod): + mod = mod.im_func + + if inspect.isfunction(mod): + try: + mod = mod.func_code + except AttributeError: + mod = mod.__code__ # python 3k + + if inspect.istraceback(mod): + mod = mod.tb_frame + + if inspect.isframe(mod): + mod = mod.f_code + + if inspect.iscode(mod): + if not hasattr(mod, "co_filename"): + return None, 0, 0 + + if not hasattr(mod, "co_firstlineno"): + return mod.co_filename, 0, 0 + + lnum = mod.co_firstlineno + pat = re.compile(r"^(\s*def\s)|(.*(? 0: + if pat.match(lines[lnum]): + break + lnum -= 1 + + return f, lnum, 0 + + raise RuntimeError("Do not know about: " + f + " " + str(mod)) diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/fsnotify/__init__.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/fsnotify/__init__.py new file mode 100644 index 000000000..a31e1fc01 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/fsnotify/__init__.py @@ -0,0 +1,378 @@ +""" +Sample usage to track changes in a thread. + + import threading + import time + watcher = fsnotify.Watcher() + watcher.accepted_file_extensions = {'.py', '.pyw'} + + # Configure target values to compute throttling. + # Note: internal sleep times will be updated based on + # profiling the actual application runtime to match + # those values. + + watcher.target_time_for_single_scan = 2. + watcher.target_time_for_notification = 4. + + watcher.set_tracked_paths([target_dir]) + + def start_watching(): # Called from thread + for change_enum, change_path in watcher.iter_changes(): + if change_enum == fsnotify.Change.added: + print('Added: ', change_path) + elif change_enum == fsnotify.Change.modified: + print('Modified: ', change_path) + elif change_enum == fsnotify.Change.deleted: + print('Deleted: ', change_path) + + t = threading.Thread(target=start_watching) + t.daemon = True + t.start() + + try: + ... + finally: + watcher.dispose() + + +Note: changes are only reported for files (added/modified/deleted), not directories. +""" +import sys +from os import scandir +from os.path import basename + +from _pydev_bundle import _pydev_saved_modules, pydev_log + +try: + from enum import IntEnum +except: + + class IntEnum: + pass + + +import time + +__author__ = "Fabio Zadrozny" +__email__ = "fabiofz@gmail.com" +__version__ = "0.1.5" # Version here and in setup.py + + +class Change(IntEnum): + added = 1 + modified = 2 + deleted = 3 + + +class _SingleVisitInfo: + def __init__(self): + self.count = 0 + self.visited_dirs = set() + self.file_to_mtime = {} + self.last_sleep_time = time.time() + + +class _PathWatcher: + """ + Helper to watch a single path. + """ + + def __init__( + self, + root_path, + accept_directory, + accept_file, + single_visit_info, + max_recursion_level, + sleep_time=0.0, + ): + """ + :type root_path: str + :type accept_directory: Callback[str, bool] + :type accept_file: Callback[str, bool] + :type max_recursion_level: int + :type sleep_time: float + """ + self.accept_directory = accept_directory + self.accept_file = accept_file + self._max_recursion_level = max_recursion_level + + self._root_path = root_path + + # Initial sleep value for throttling, it'll be auto-updated based on the + # Watcher.target_time_for_single_scan. + self.sleep_time = sleep_time + + self.sleep_at_elapsed = 1.0 / 30.0 + + # When created, do the initial snapshot right away! + old_file_to_mtime = {} + self._check(single_visit_info, lambda _change: None, old_file_to_mtime) + + def __eq__(self, o): + if isinstance(o, _PathWatcher): + return self._root_path == o._root_path + + return False + + def __ne__(self, o): + return not self == o + + def __hash__(self): + return hash(self._root_path) + + def _check_dir( + self, dir_path, single_visit_info, append_change, old_file_to_mtime, level + ): + # This is the actual poll loop + if ( + dir_path in single_visit_info.visited_dirs + or level > self._max_recursion_level + ): + return + single_visit_info.visited_dirs.add(dir_path) + try: + if isinstance(dir_path, bytes): + try: + dir_path = dir_path.decode(sys.getfilesystemencoding()) + except UnicodeDecodeError: + try: + dir_path = dir_path.decode("utf-8") + except UnicodeDecodeError: + return # Ignore if we can't deal with the path. + + new_files = single_visit_info.file_to_mtime + + for entry in scandir(dir_path): + single_visit_info.count += 1 + + # Throttle if needed inside the loop + # to avoid consuming too much CPU. + if single_visit_info.count % 300 == 0: + if self.sleep_time > 0: + t = time.time() + diff = t - single_visit_info.last_sleep_time + if diff > self.sleep_at_elapsed: + time.sleep(self.sleep_time) + single_visit_info.last_sleep_time = time.time() + + if entry.is_dir(): + if self.accept_directory(entry.path): + self._check_dir( + entry.path, + single_visit_info, + append_change, + old_file_to_mtime, + level + 1, + ) + + elif self.accept_file(entry.path): + stat = entry.stat() + mtime = (stat.st_mtime_ns, stat.st_size) + path = entry.path + new_files[path] = mtime + + old_mtime = old_file_to_mtime.pop(path, None) + if not old_mtime: + append_change((Change.added, path)) + elif old_mtime != mtime: + append_change((Change.modified, path)) + + except OSError: + pass # Directory was removed in the meanwhile. + + def _check(self, single_visit_info, append_change, old_file_to_mtime): + self._check_dir( + self._root_path, single_visit_info, append_change, old_file_to_mtime, 0 + ) + + +class Watcher: + # By default (if accept_directory is not specified), these will be the + # ignored directories. + ignored_dirs = {".git", "__pycache__", ".idea", "node_modules", ".metadata"} + + # By default (if accept_file is not specified), these will be the + # accepted files. + accepted_file_extensions = () + + # Set to the target value for doing full scan of all files (adds a sleep inside the poll loop + # which processes files to reach the target time). + # Lower values will consume more CPU + # Set to 0.0 to have no sleeps (which will result in a higher cpu load). + target_time_for_single_scan = 2.0 + + # Set the target value from the start of one scan to the start of another scan (adds a + # sleep after a full poll is done to reach the target time). + # Lower values will consume more CPU. + # Set to 0.0 to have a new scan start right away without any sleeps. + target_time_for_notification = 4.0 + + # Set to True to print the time for a single poll through all the paths. + print_poll_time = False + + # This is the maximum recursion level. + max_recursion_level = 10 + + def __init__(self, accept_directory=None, accept_file=None): + """ + :param Callable[str, bool] accept_directory: + Callable that returns whether a directory should be watched. + Note: if passed it'll override the `ignored_dirs` + + :param Callable[str, bool] accept_file: + Callable that returns whether a file should be watched. + Note: if passed it'll override the `accepted_file_extensions`. + """ + self._path_watchers = set() + self._disposed = _pydev_saved_modules.ThreadingEvent() + + if accept_directory is None: + accept_directory = ( + lambda dir_path: basename(dir_path) not in self.ignored_dirs + ) + if accept_file is None: + accept_file = ( + lambda path_name: not self.accepted_file_extensions + or path_name.endswith(self.accepted_file_extensions) + ) + self.accept_file = accept_file + self.accept_directory = accept_directory + self._single_visit_info = _SingleVisitInfo() + + @property + def accept_directory(self): + return self._accept_directory + + @accept_directory.setter + def accept_directory(self, accept_directory): + self._accept_directory = accept_directory + for path_watcher in self._path_watchers: + path_watcher.accept_directory = accept_directory + + @property + def accept_file(self): + return self._accept_file + + @accept_file.setter + def accept_file(self, accept_file): + self._accept_file = accept_file + for path_watcher in self._path_watchers: + path_watcher.accept_file = accept_file + + def dispose(self): + self._disposed.set() + + @property + def path_watchers(self): + return tuple(self._path_watchers) + + def set_tracked_paths(self, paths): + """ + Note: always resets all path trackers to track the passed paths. + """ + if not isinstance(paths, (list, tuple, set)): + paths = (paths,) + + # Sort by the path len so that the bigger paths come first (so, + # if there's any nesting we want the nested paths to be visited + # before the parent paths so that the max_recursion_level is correct). + paths = sorted(set(paths), key=lambda path: -len(path)) + path_watchers = set() + + self._single_visit_info = _SingleVisitInfo() + + initial_time = time.time() + for path in paths: + sleep_time = 0.0 # When collecting the first time, sleep_time should be 0! + path_watcher = _PathWatcher( + path, + self.accept_directory, + self.accept_file, + self._single_visit_info, + max_recursion_level=self.max_recursion_level, + sleep_time=sleep_time, + ) + + path_watchers.add(path_watcher) + + actual_time = time.time() - initial_time + + pydev_log.debug("Tracking the following paths for changes: %s", paths) + pydev_log.debug("Time to track: %.2fs", actual_time) + pydev_log.debug("Folders found: %s", len(self._single_visit_info.visited_dirs)) + pydev_log.debug("Files found: %s", len(self._single_visit_info.file_to_mtime)) + self._path_watchers = path_watchers + + def iter_changes(self): + """ + Continuously provides changes (until dispose() is called). + + Changes provided are tuples with the Change enum and filesystem path. + + :rtype: Iterable[Tuple[Change, str]] + """ + while not self._disposed.is_set(): + initial_time = time.time() + + old_visit_info = self._single_visit_info + old_file_to_mtime = old_visit_info.file_to_mtime + changes = [] + append_change = changes.append + + self._single_visit_info = single_visit_info = _SingleVisitInfo() + for path_watcher in self._path_watchers: + path_watcher._check(single_visit_info, append_change, old_file_to_mtime) + + # Note that we pop entries while visiting, so, what remained is what's deleted. + for entry in old_file_to_mtime: + append_change((Change.deleted, entry)) + + for change in changes: + yield change + + actual_time = time.time() - initial_time + if self.print_poll_time: + print("--- Total poll time: %.3fs" % actual_time) + + if actual_time > 0: + if self.target_time_for_single_scan <= 0.0: + for path_watcher in self._path_watchers: + path_watcher.sleep_time = 0.0 + else: + perc = self.target_time_for_single_scan / actual_time + + # Prevent from changing the values too much (go slowly into the right + # direction). + # (to prevent from cases where the user puts the machine on sleep and + # values become too skewed). + if perc > 2.0: + perc = 2.0 + elif perc < 0.5: + perc = 0.5 + + for path_watcher in self._path_watchers: + if path_watcher.sleep_time <= 0.0: + path_watcher.sleep_time = 0.001 + new_sleep_time = path_watcher.sleep_time * perc + + # Prevent from changing the values too much (go slowly into the right + # direction). + # (to prevent from cases where the user puts the machine on sleep and + # values become too skewed). + diff_sleep_time = new_sleep_time - path_watcher.sleep_time + path_watcher.sleep_time += diff_sleep_time / ( + 3.0 * len(self._path_watchers) + ) + + if actual_time > 0: + self._disposed.wait(actual_time) + + if path_watcher.sleep_time < 0.001: + path_watcher.sleep_time = 0.001 + + # print('new sleep time: %s' % path_watcher.sleep_time) + + diff = self.target_time_for_notification - actual_time + if diff > 0.0: + self._disposed.wait(diff) diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_console_utils.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_console_utils.py new file mode 100644 index 000000000..6fb5c9373 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_console_utils.py @@ -0,0 +1,691 @@ +import os +import sys +import traceback +from contextlib import contextmanager +from io import StringIO + +from _pydevd_bundle import pydevd_vars, pydevd_xml +from _pydevd_bundle.pydevd_constants import ( + IS_JYTHON, + NEXT_VALUE_SEPARATOR, + get_global_debugger, + silence_warnings_decorator, +) +from _pydevd_bundle.pydevd_utils import interrupt_main_thread + +from _pydev_bundle import pydev_log +from _pydev_bundle._pydev_calltip_util import get_description +from _pydev_bundle.pydev_imports import Exec, _queue, xmlrpclib + + +# ======================================================================================================================= +# BaseStdIn +# ======================================================================================================================= +class BaseStdIn: + def __init__(self, original_stdin=sys.stdin, *args, **kwargs): + try: + self.encoding = sys.stdin.encoding + except: + # Not sure if it's available in all Python versions... + pass + self.original_stdin = original_stdin + + try: + self.errors = ( + sys.stdin.errors + ) # Who knew? sys streams have an errors attribute! + except: + # Not sure if it's available in all Python versions... + pass + + def readline(self, *args, **kwargs): + # sys.stderr.write('Cannot readline out of the console evaluation\n') -- don't show anything + # This could happen if the user had done input('enter number).<-- upon entering this, that message would appear, + # which is not something we want. + return "\n" + + def write(self, *args, **kwargs): + pass # not available StdIn (but it can be expected to be in the stream interface) + + def flush(self, *args, **kwargs): + pass # not available StdIn (but it can be expected to be in the stream interface) + + def read(self, *args, **kwargs): + # in the interactive interpreter, a read and a readline are the same. + return self.readline() + + def close(self, *args, **kwargs): + pass # expected in StdIn + + def __iter__(self): + # BaseStdIn would not be considered as Iterable in Python 3 without explicit `__iter__` implementation + return self.original_stdin.__iter__() + + def __getattr__(self, item): + # it's called if the attribute wasn't found + if hasattr(self.original_stdin, item): + return getattr(self.original_stdin, item) + raise AttributeError("%s has no attribute %s" % (self.original_stdin, item)) + + +# ======================================================================================================================= +# StdIn +# ======================================================================================================================= +class StdIn(BaseStdIn): + """ + Object to be added to stdin (to emulate it as non-blocking while the next line arrives) + """ + + def __init__(self, interpreter, host, client_port, original_stdin=sys.stdin): + BaseStdIn.__init__(self, original_stdin) + self.interpreter = interpreter + self.client_port = client_port + self.host = host + + def readline(self, *args, **kwargs): + # Ok, callback into the client to get the new input + try: + server = xmlrpclib.Server("http://%s:%s" % (self.host, self.client_port)) + requested_input = server.RequestInput() + if not requested_input: + return "\n" # Yes, a readline must return something (otherwise we can get an EOFError on the input() call). + else: + # readline should end with '\n' (not doing so makes IPython 5 remove the last *valid* character). + requested_input += "\n" + return requested_input + except KeyboardInterrupt: + raise # Let KeyboardInterrupt go through -- #PyDev-816: Interrupting infinite loop in the Interactive Console + except: + return "\n" + + def close(self, *args, **kwargs): + pass # expected in StdIn + + +# ======================================================================================================================= +# DebugConsoleStdIn +# ======================================================================================================================= +class DebugConsoleStdIn(BaseStdIn): + """ + Object to be added to stdin (to emulate it as non-blocking while the next line arrives) + """ + + def __init__(self, py_db, original_stdin): + """ + :param py_db: + If None, get_global_debugger() is used. + """ + BaseStdIn.__init__(self, original_stdin) + self._py_db = py_db + self._in_notification = 0 + + def __send_input_requested_message(self, is_started): + try: + py_db = self._py_db + if py_db is None: + py_db = get_global_debugger() + + if py_db is None: + return + + cmd = py_db.cmd_factory.make_input_requested_message(is_started) + py_db.writer.add_command(cmd) + except Exception: + pydev_log.exception() + + @contextmanager + def notify_input_requested(self): + self._in_notification += 1 + if self._in_notification == 1: + self.__send_input_requested_message(True) + try: + yield + finally: + self._in_notification -= 1 + if self._in_notification == 0: + self.__send_input_requested_message(False) + + def readline(self, *args, **kwargs): + with self.notify_input_requested(): + return self.original_stdin.readline(*args, **kwargs) + + def read(self, *args, **kwargs): + with self.notify_input_requested(): + return self.original_stdin.read(*args, **kwargs) + + +class CodeFragment: + def __init__(self, text, is_single_line=True): + self.text = text + self.is_single_line = is_single_line + + def append(self, code_fragment): + self.text = self.text + "\n" + code_fragment.text + if not code_fragment.is_single_line: + self.is_single_line = False + + +# ======================================================================================================================= +# BaseInterpreterInterface +# ======================================================================================================================= +class BaseInterpreterInterface: + def __init__(self, mainThread, connect_status_queue=None): + self.mainThread = mainThread + self.interruptable = False + self.exec_queue = _queue.Queue(0) + self.buffer = None + self.banner_shown = False + self.connect_status_queue = connect_status_queue + self.mpl_modules_for_patching = {} + self.init_mpl_modules_for_patching() + + def build_banner(self): + return f"print({repr(self.get_greeting_msg())})\n" + + def get_greeting_msg(self): + return "PyDev console: starting.\n" + + def init_mpl_modules_for_patching(self): + from pydev_ipython.matplotlibtools import ( + activate_matplotlib, + activate_pylab, + activate_pyplot, + ) + + self.mpl_modules_for_patching = { + "matplotlib": lambda: activate_matplotlib(self.enableGui), + "matplotlib.pyplot": activate_pyplot, + "pylab": activate_pylab, + } + + def need_more_for_code(self, source): + # PyDev-502: PyDev 3.9 F2 doesn't support backslash continuations + + # Strangely even the IPython console is_complete said it was complete + # even with a continuation char at the end. + if source.endswith("\\"): + return True + + if hasattr(self.interpreter, "is_complete"): + return not self.interpreter.is_complete(source) + try: + # At this point, it should always be single. + # If we don't do this, things as: + # + # for i in range(10): print(i) + # + # (in a single line) don't work. + # Note that it won't give an error and code will be None (so, it'll + # use execMultipleLines in the next call in this case). + symbol = "single" + code = self.interpreter.compile(source, "", symbol) + except (OverflowError, SyntaxError, ValueError): + # Case 1 + return False + if code is None: + # Case 2 + return True + + # Case 3 + return False + + def need_more(self, code_fragment): + if self.buffer is None: + self.buffer = code_fragment + else: + self.buffer.append(code_fragment) + + return self.need_more_for_code(self.buffer.text) + + def create_std_in(self, debugger=None, original_std_in=None): + if debugger is None: + return StdIn( + self, self.host, self.client_port, original_stdin=original_std_in + ) + else: + return DebugConsoleStdIn(py_db=debugger, original_stdin=original_std_in) + + def add_exec(self, code_fragment, debugger=None): + # In case sys.excepthook called, use original excepthook #PyDev-877: Debug console freezes with Python 3.5+ + # (showtraceback does it on python 3.5 onwards) + sys.excepthook = sys.__excepthook__ + try: + original_in = sys.stdin + try: + help = None + if "pydoc" in sys.modules: + pydoc = sys.modules[ + "pydoc" + ] # Don't import it if it still is not there. + + if hasattr(pydoc, "help"): + # You never know how will the API be changed, so, let's code defensively here + help = pydoc.help + if not hasattr(help, "input"): + help = None + except: + # Just ignore any error here + pass + + more = False + try: + sys.stdin = self.create_std_in(debugger, original_in) + try: + if help is not None: + # This will enable the help() function to work. + try: + try: + help.input = sys.stdin + except AttributeError: + help._input = sys.stdin + except: + help = None + if not self._input_error_printed: + self._input_error_printed = True + sys.stderr.write( + "\nError when trying to update pydoc.help.input\n" + ) + sys.stderr.write( + "(help() may not work -- please report this as a bug in the pydev bugtracker).\n\n" + ) + traceback.print_exc() + + try: + self.start_exec() + if hasattr(self, "debugger"): + self.debugger.enable_tracing() + + more = self.do_add_exec(code_fragment) + + if hasattr(self, "debugger"): + self.debugger.disable_tracing() + + self.finish_exec(more) + finally: + if help is not None: + try: + try: + help.input = original_in + except AttributeError: + help._input = original_in + except: + pass + + finally: + sys.stdin = original_in + except SystemExit: + raise + except: + traceback.print_exc() + finally: + sys.__excepthook__ = sys.excepthook + + return more + + def do_add_exec(self, codeFragment): + """ + Subclasses should override. + + @return: more (True if more input is needed to complete the statement and False if the statement is complete). + """ + raise NotImplementedError() + + def get_namespace(self): + """ + Subclasses should override. + + @return: dict with namespace. + """ + raise NotImplementedError() + + def __resolve_reference__(self, text): + """ + + :type text: str + """ + obj = None + if "." not in text: + try: + obj = self.get_namespace()[text] + except KeyError: + pass + + if obj is None: + try: + obj = self.get_namespace()["__builtins__"][text] + except: + pass + + if obj is None: + try: + obj = getattr(self.get_namespace()["__builtins__"], text, None) + except: + pass + + else: + try: + last_dot = text.rindex(".") + parent_context = text[0:last_dot] + res = pydevd_vars.eval_in_context( + parent_context, self.get_namespace(), self.get_namespace() + ) + obj = getattr(res, text[last_dot + 1 :]) + except: + pass + return obj + + def getDescription(self, text): + try: + obj = self.__resolve_reference__(text) + if obj is None: + return "" + return get_description(obj) + except: + return "" + + def do_exec_code(self, code, is_single_line): + try: + code_fragment = CodeFragment(code, is_single_line) + more = self.need_more(code_fragment) + if not more: + code_fragment = self.buffer + self.buffer = None + self.exec_queue.put(code_fragment) + + return more + except: + traceback.print_exc() + return False + + def execLine(self, line): + return self.do_exec_code(line, True) + + def execMultipleLines(self, lines): + if IS_JYTHON: + more = False + for line in lines.split("\n"): + more = self.do_exec_code(line, True) + return more + else: + return self.do_exec_code(lines, False) + + def interrupt(self): + self.buffer = None # Also clear the buffer when it's interrupted. + try: + if self.interruptable: + # Fix for #PyDev-500: Console interrupt can't interrupt on sleep + interrupt_main_thread(self.mainThread) + + self.finish_exec(False) + return True + except: + traceback.print_exc() + return False + + def close(self): + sys.exit(0) + + def start_exec(self): + self.interruptable = True + + def get_server(self): + if getattr(self, "host", None) is not None: + return xmlrpclib.Server("http://%s:%s" % (self.host, self.client_port)) + else: + return None + + server = property(get_server) + + def ShowConsole(self): + server = self.get_server() + if server is not None: + server.ShowConsole() + + def finish_exec(self, more): + self.interruptable = False + + server = self.get_server() + + if server is not None: + return server.NotifyFinished(more) + else: + return True + + def getFrame(self): + xml = StringIO() + hidden_ns = self.get_ipython_hidden_vars_dict() + xml.write("") + xml.write(pydevd_xml.frame_vars_to_xml(self.get_namespace(), hidden_ns)) + xml.write("") + + return xml.getvalue() + + @silence_warnings_decorator + def getVariable(self, attributes): + xml = StringIO() + xml.write("") + val_dict = pydevd_vars.resolve_compound_var_object_fields( + self.get_namespace(), attributes + ) + if val_dict is None: + val_dict = {} + + for k, val in val_dict.items(): + val = val_dict[k] + evaluate_full_value = pydevd_xml.should_evaluate_full_value(val) + xml.write( + pydevd_vars.var_to_xml(val, k, evaluate_full_value=evaluate_full_value) + ) + + xml.write("") + + return xml.getvalue() + + def getArray(self, attr, roffset, coffset, rows, cols, format): + name = attr.split("\t")[-1] + array = pydevd_vars.eval_in_context( + name, self.get_namespace(), self.get_namespace() + ) + return pydevd_vars.table_like_struct_to_xml( + array, name, roffset, coffset, rows, cols, format + ) + + def evaluate(self, expression): + xml = StringIO() + xml.write("") + result = pydevd_vars.eval_in_context( + expression, self.get_namespace(), self.get_namespace() + ) + xml.write(pydevd_vars.var_to_xml(result, expression)) + xml.write("") + return xml.getvalue() + + @silence_warnings_decorator + def loadFullValue(self, seq, scope_attrs): + """ + Evaluate full value for async Console variables in a separate thread and send results to IDE side + :param seq: id of command + :param scope_attrs: a sequence of variables with their attributes separated by NEXT_VALUE_SEPARATOR + (i.e.: obj\tattr1\tattr2NEXT_VALUE_SEPARATORobj2\attr1\tattr2) + :return: + """ + frame_variables = self.get_namespace() + var_objects = [] + vars = scope_attrs.split(NEXT_VALUE_SEPARATOR) + for var_attrs in vars: + if "\t" in var_attrs: + name, attrs = var_attrs.split("\t", 1) + + else: + name = var_attrs + attrs = None + if name in frame_variables: + var_object = pydevd_vars.resolve_var_object( + frame_variables[name], attrs + ) + var_objects.append((var_object, name)) + else: + var_object = pydevd_vars.eval_in_context( + name, frame_variables, frame_variables + ) + var_objects.append((var_object, name)) + + from _pydevd_bundle.pydevd_comm import GetValueAsyncThreadConsole + + py_db = getattr(self, "debugger", None) + + if py_db is None: + py_db = get_global_debugger() + + if py_db is None: + from pydevd import PyDB + + py_db = PyDB() + + t = GetValueAsyncThreadConsole(py_db, self.get_server(), seq, var_objects) + t.start() + + def changeVariable(self, attr, value): + def do_change_variable(): + Exec("%s=%s" % (attr, value), self.get_namespace(), self.get_namespace()) + + # Important: it has to be really enabled in the main thread, so, schedule + # it to run in the main thread. + self.exec_queue.put(do_change_variable) + + def connectToDebugger(self, debuggerPort, debugger_options=None): + """ + Used to show console with variables connection. + Mainly, monkey-patches things in the debugger structure so that the debugger protocol works. + """ + if debugger_options is None: + debugger_options = {} + env_key = "PYDEVD_EXTRA_ENVS" + if env_key in debugger_options: + for env_name, value in debugger_options[env_key].items(): + existing_value = os.environ.get(env_name, None) + if existing_value: + os.environ[env_name] = "%s%c%s" % ( + existing_value, + os.path.pathsep, + value, + ) + else: + os.environ[env_name] = value + if env_name == "PYTHONPATH": + sys.path.append(value) + + del debugger_options[env_key] + + def do_connect_to_debugger(): + try: + # Try to import the packages needed to attach the debugger + import pydevd + + from _pydev_bundle._pydev_saved_modules import threading + except: + # This happens on Jython embedded in host eclipse + traceback.print_exc() + sys.stderr.write("pydevd is not available, cannot connect\n") + + from _pydevd_bundle.pydevd_constants import set_thread_id + + from _pydev_bundle import pydev_localhost + + set_thread_id(threading.current_thread(), "console_main") + + VIRTUAL_FRAME_ID = "1" # matches PyStackFrameConsole.java + VIRTUAL_CONSOLE_ID = "console_main" # matches PyThreadConsole.java + f = FakeFrame() + f.f_back = None + f.f_globals = {} # As globals=locals here, let's simply let it empty (and save a bit of network traffic). + f.f_locals = self.get_namespace() + + self.debugger = pydevd.PyDB() + self.debugger.add_fake_frame( + thread_id=VIRTUAL_CONSOLE_ID, frame_id=VIRTUAL_FRAME_ID, frame=f + ) + try: + pydevd.apply_debugger_options(debugger_options) + self.debugger.connect(pydev_localhost.get_localhost(), debuggerPort) + self.debugger.prepare_to_run() + self.debugger.disable_tracing() + except: + traceback.print_exc() + sys.stderr.write("Failed to connect to target debugger.\n") + + # Register to process commands when idle + self.debugrunning = False + try: + import pydevconsole + + pydevconsole.set_debug_hook(self.debugger.process_internal_commands) + except: + traceback.print_exc() + sys.stderr.write( + "Version of Python does not support debuggable Interactive Console.\n" + ) + + # Important: it has to be really enabled in the main thread, so, schedule + # it to run in the main thread. + self.exec_queue.put(do_connect_to_debugger) + + return ("connect complete",) + + def handshake(self): + if self.connect_status_queue is not None: + self.connect_status_queue.put(True) + return "PyCharm" + + def get_connect_status_queue(self): + return self.connect_status_queue + + def hello(self, input_str): + # Don't care what the input string is + return ("Hello eclipse",) + + def enableGui(self, guiname): + """Enable the GUI specified in guiname (see inputhook for list). + As with IPython, enabling multiple GUIs isn't an error, but + only the last one's main loop runs and it may not work + """ + + def do_enable_gui(): + from _pydev_bundle.pydev_versioncheck import versionok_for_gui + + if versionok_for_gui(): + try: + from pydev_ipython.inputhook import enable_gui + + enable_gui(guiname) + except: + sys.stderr.write( + "Failed to enable GUI event loop integration for '%s'\n" + % guiname + ) + traceback.print_exc() + elif guiname not in ["none", "", None]: + # Only print a warning if the guiname was going to do something + sys.stderr.write( + "PyDev console: Python version does not support GUI event loop integration for '%s'\n" + % guiname + ) + # Return value does not matter, so return back what was sent + return guiname + + # Important: it has to be really enabled in the main thread, so, schedule + # it to run in the main thread. + self.exec_queue.put(do_enable_gui) + + def get_ipython_hidden_vars_dict(self): + return None + + +# ======================================================================================================================= +# FakeFrame +# ======================================================================================================================= +class FakeFrame: + """ + Used to show console with variables connection. + A class to be used as a mock of a frame. + """ diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_import_hook.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_import_hook.py new file mode 100644 index 000000000..3bc54ad90 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_import_hook.py @@ -0,0 +1,38 @@ +import builtins +import sys +import traceback +from types import ModuleType + +from _pydevd_bundle.pydevd_constants import DebugInfoHolder + + +class ImportHookManager(ModuleType): + def __init__(self, name, system_import): + ModuleType.__init__(self, name) + self._system_import = system_import + self._modules_to_patch = {} + + def add_module_name(self, module_name, activate_function): + self._modules_to_patch[module_name] = activate_function + + def do_import(self, name, *args, **kwargs): + module = self._system_import(name, *args, **kwargs) + try: + activate_func = self._modules_to_patch.pop(name, None) + if activate_func: + activate_func() # call activate function + except: + if DebugInfoHolder.DEBUG_TRACE_LEVEL >= 2: + traceback.print_exc() + + # Restore normal system importer to reduce performance impact + # of calling this method every time an import statement is invoked + if not self._modules_to_patch: + builtins.__import__ = self._system_import + + return module + + +import_hook_manager = ImportHookManager(__name__ + ".import_hook", builtins.__import__) +builtins.__import__ = import_hook_manager.do_import +sys.modules[import_hook_manager.__name__] = import_hook_manager diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_imports.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_imports.py new file mode 100644 index 000000000..a35894674 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_imports.py @@ -0,0 +1,3 @@ +from _pydev_bundle._pydev_saved_modules import xmlrpcserver + +SimpleXMLRPCServer = xmlrpcserver.SimpleXMLRPCServer diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console.py new file mode 100644 index 000000000..82d270162 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console.py @@ -0,0 +1,111 @@ +import sys +import traceback + +from _pydev_bundle.pydev_console_utils import BaseInterpreterInterface + +# Uncomment to force PyDev standard shell. +# raise ImportError() +from _pydev_bundle.pydev_ipython_console_011 import get_pydev_frontend + + +# ======================================================================================================================= +# InterpreterInterface +# ======================================================================================================================= +class InterpreterInterface(BaseInterpreterInterface): + """ + The methods in this class should be registered in the xml-rpc server. + """ + + def __init__( + self, + host, + client_port, + main_thread, + show_banner=True, + connect_status_queue=None, + ): + BaseInterpreterInterface.__init__(self, main_thread, connect_status_queue) + self.client_port = client_port + self.host = host + self.interpreter = get_pydev_frontend(host, client_port) + self._input_error_printed = False + self.notification_succeeded = False + self.notification_tries = 0 + self.notification_max_tries = 3 + self.show_banner = show_banner + + self.notify_about_magic() + + def get_greeting_msg(self): + if self.show_banner: + self.interpreter.show_banner() + return self.interpreter.get_greeting_msg() + + def do_add_exec(self, code_fragment): + self.notify_about_magic() + if code_fragment.text.rstrip().endswith("??"): + print("IPython-->") + try: + res = bool(self.interpreter.add_exec(code_fragment.text)) + finally: + if code_fragment.text.rstrip().endswith("??"): + print("<--IPython") + + return res + + def get_namespace(self): + return self.interpreter.get_namespace() + + def getCompletions(self, text, act_tok): + return self.interpreter.getCompletions(text, act_tok) + + def close(self): + sys.exit(0) + + def notify_about_magic(self): + if not self.notification_succeeded: + self.notification_tries += 1 + if self.notification_tries > self.notification_max_tries: + return + completions = self.getCompletions("%", "%") + magic_commands = [x[0] for x in completions] + + server = self.get_server() + + if server is not None: + try: + server.NotifyAboutMagic( + magic_commands, self.interpreter.is_automagic() + ) + self.notification_succeeded = True + except: + self.notification_succeeded = False + + def get_ipython_hidden_vars_dict(self): + try: + if hasattr(self.interpreter, "ipython") and hasattr( + self.interpreter.ipython, "user_ns_hidden" + ): + user_ns_hidden = self.interpreter.ipython.user_ns_hidden + if isinstance(user_ns_hidden, dict): + # Since IPython 2 dict `user_ns_hidden` contains hidden variables and values + user_hidden_dict = user_ns_hidden.copy() + else: + # In IPython 1.x `user_ns_hidden` used to be a set with names of hidden variables + user_hidden_dict = dict( + [ + (key, val) + for key, val in self.interpreter.ipython.user_ns.items() + if key in user_ns_hidden + ] + ) + + # while `_`, `__` and `___` were not initialized, they are not presented in `user_ns_hidden` + user_hidden_dict.setdefault("_", "") + user_hidden_dict.setdefault("__", "") + user_hidden_dict.setdefault("___", "") + + return user_hidden_dict + except: + # Getting IPython variables shouldn't break loading frame variables + traceback.print_exc() diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console_011.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console_011.py new file mode 100644 index 000000000..dd2b76a0e --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console_011.py @@ -0,0 +1,532 @@ +# TODO that would make IPython integration better +# - show output other times then when enter was pressed +# - support proper exit to allow IPython to cleanup (e.g. temp files created with %edit) +# - support Ctrl-D (Ctrl-Z on Windows) +# - use IPython (numbered) prompts in PyDev +# - better integration of IPython and PyDev completions +# - some of the semantics on handling the code completion are not correct: +# eg: Start a line with % and then type c should give %cd as a completion by it doesn't +# however type %c and request completions and %cd is given as an option +# eg: Completing a magic when user typed it without the leading % causes the % to be inserted +# to the left of what should be the first colon. +"""Interface to TerminalInteractiveShell for PyDev Interactive Console frontend +for IPython 0.11 to 1.0+. +""" + + +import codeop +import os +import sys +import traceback + +import IPython.core.release as IPythonRelease +from IPython.core.completer import IPCompleter +from IPython.core.error import UsageError +from IPython.core.interactiveshell import InteractiveShell, InteractiveShellABC +from IPython.core.usage import default_banner_parts +from IPython.terminal.interactiveshell import TerminalInteractiveShell +from IPython.utils.strdispatch import StrDispatch + +try: + from traitlets import CBool, Unicode +except ImportError: + from IPython.utils.traitlets import CBool, Unicode +from IPython.core import release + +from _pydev_bundle.pydev_imports import xmlrpclib + +default_pydev_banner_parts = default_banner_parts + +default_pydev_banner = "".join(default_pydev_banner_parts) + + +def show_in_pager(self, strng, *args, **kwargs): + """Run a string through pager""" + # On PyDev we just output the string, there are scroll bars in the console + # to handle "paging". This is the same behaviour as when TERM==dump (see + # page.py) + # for compatibility with mime-bundle form: + if isinstance(strng, dict): + strng = strng.get("text/plain", strng) + print(strng) + + +def create_editor_hook(pydev_host, pydev_client_port): + def call_editor(filename, line=0, wait=True): + """Open an editor in PyDev""" + if line is None: + line = 0 + + # Make sure to send an absolution path because unlike most editor hooks + # we don't launch a process. This is more like what happens in the zmqshell + filename = os.path.abspath(filename) + + # import sys + # sys.__stderr__.write('Calling editor at: %s:%s\n' % (pydev_host, pydev_client_port)) + + # Tell PyDev to open the editor + server = xmlrpclib.Server("http://%s:%s" % (pydev_host, pydev_client_port)) + server.IPythonEditor(filename, str(line)) + + if wait: + input("Press Enter when done editing:") + + return call_editor + + +class PyDevIPCompleter(IPCompleter): + def __init__(self, *args, **kwargs): + """Create a Completer that reuses the advanced completion support of PyDev + in addition to the completion support provided by IPython + """ + IPCompleter.__init__(self, *args, **kwargs) + # Use PyDev for python matches, see getCompletions below + if self.python_matches in self.matchers: + # `self.python_matches` matches attributes or global python names + self.matchers.remove(self.python_matches) + + +class PyDevIPCompleter6(IPCompleter): + def __init__(self, *args, **kwargs): + """Create a Completer that reuses the advanced completion support of PyDev + in addition to the completion support provided by IPython + """ + IPCompleter.__init__(self, *args, **kwargs) + + @property + def matchers(self): + """All active matcher routines for completion""" + # To remove python_matches we now have to override it as it's now a property in the superclass. + return [ + self.file_matches, + self.magic_matches, + self.python_func_kw_matches, + self.dict_key_matches, + ] + + @matchers.setter + def matchers(self, value): + # To stop the init in IPCompleter raising an AttributeError we now have to specify a setter as it's now a property in the superclass. + return + + +class PyDevTerminalInteractiveShell(TerminalInteractiveShell): + banner1 = Unicode( + default_pydev_banner, + config=True, + help="""The part of the banner to be printed before the profile""", + ) + + # TODO term_title: (can PyDev's title be changed???, see terminal.py for where to inject code, in particular set_term_title as used by %cd) + # for now, just disable term_title + term_title = CBool(False) + + # Note in version 0.11 there is no guard in the IPython code about displaying a + # warning, so with 0.11 you get: + # WARNING: Readline services not available or not loaded. + # WARNING: The auto-indent feature requires the readline library + # Disable readline, readline type code is all handled by PyDev (on Java side) + readline_use = CBool(False) + # autoindent has no meaning in PyDev (PyDev always handles that on the Java side), + # and attempting to enable it will print a warning in the absence of readline. + autoindent = CBool(False) + # Force console to not give warning about color scheme choice and default to NoColor. + # TODO It would be nice to enable colors in PyDev but: + # - The PyDev Console (Eclipse Console) does not support the full range of colors, so the + # effect isn't as nice anyway at the command line + # - If done, the color scheme should default to LightBG, but actually be dependent on + # any settings the user has (such as if a dark theme is in use, then Linux is probably + # a better theme). + colors_force = CBool(True) + colors = Unicode("NoColor") + # Since IPython 5 the terminal interface is not compatible with Emacs `inferior-shell` and + # the `simple_prompt` flag is needed + simple_prompt = CBool(True) + + # In the PyDev Console, GUI control is done via hookable XML-RPC server + @staticmethod + def enable_gui(gui=None, app=None): + """Switch amongst GUI input hooks by name.""" + # Deferred import + from pydev_ipython.inputhook import enable_gui as real_enable_gui + + try: + return real_enable_gui(gui, app) + except ValueError as e: + raise UsageError("%s" % e) + + # ------------------------------------------------------------------------- + # Things related to hooks + # ------------------------------------------------------------------------- + + def init_history(self): + # Disable history so that we don't have an additional thread for that + # (and we don't use the history anyways). + self.config.HistoryManager.enabled = False + super(PyDevTerminalInteractiveShell, self).init_history() + + def init_hooks(self): + super(PyDevTerminalInteractiveShell, self).init_hooks() + self.set_hook("show_in_pager", show_in_pager) + + # ------------------------------------------------------------------------- + # Things related to exceptions + # ------------------------------------------------------------------------- + + def showtraceback(self, exc_tuple=None, *args, **kwargs): + # IPython does a lot of clever stuff with Exceptions. However mostly + # it is related to IPython running in a terminal instead of an IDE. + # (e.g. it prints out snippets of code around the stack trace) + # PyDev does a lot of clever stuff too, so leave exception handling + # with default print_exc that PyDev can parse and do its clever stuff + # with (e.g. it puts links back to the original source code) + try: + if exc_tuple is None: + etype, value, tb = sys.exc_info() + else: + etype, value, tb = exc_tuple + except ValueError: + return + + if tb is not None: + traceback.print_exception(etype, value, tb) + + # ------------------------------------------------------------------------- + # Things related to text completion + # ------------------------------------------------------------------------- + + # The way to construct an IPCompleter changed in most versions, + # so we have a custom, per version implementation of the construction + + def _new_completer_100(self): + completer = PyDevIPCompleter( + shell=self, + namespace=self.user_ns, + global_namespace=self.user_global_ns, + alias_table=self.alias_manager.alias_table, + use_readline=self.has_readline, + parent=self, + ) + return completer + + def _new_completer_234(self): + # correct for IPython versions 2.x, 3.x, 4.x + completer = PyDevIPCompleter( + shell=self, + namespace=self.user_ns, + global_namespace=self.user_global_ns, + use_readline=self.has_readline, + parent=self, + ) + return completer + + def _new_completer_500(self): + completer = PyDevIPCompleter( + shell=self, + namespace=self.user_ns, + global_namespace=self.user_global_ns, + use_readline=False, + parent=self, + ) + return completer + + def _new_completer_600(self): + completer = PyDevIPCompleter6( + shell=self, + namespace=self.user_ns, + global_namespace=self.user_global_ns, + use_readline=False, + parent=self, + ) + return completer + + def add_completer_hooks(self): + from IPython.core.completerlib import ( + cd_completer, + magic_run_completer, + module_completer, + ) + + try: + from IPython.core.completerlib import reset_completer + except ImportError: + # reset_completer was added for rel-0.13 + reset_completer = None + self.configurables.append(self.Completer) + + # Add custom completers to the basic ones built into IPCompleter + sdisp = self.strdispatchers.get("complete_command", StrDispatch()) + self.strdispatchers["complete_command"] = sdisp + self.Completer.custom_completers = sdisp + + self.set_hook("complete_command", module_completer, str_key="import") + self.set_hook("complete_command", module_completer, str_key="from") + self.set_hook("complete_command", magic_run_completer, str_key="%run") + self.set_hook("complete_command", cd_completer, str_key="%cd") + if reset_completer: + self.set_hook("complete_command", reset_completer, str_key="%reset") + + def init_completer(self): + """Initialize the completion machinery. + + This creates a completer that provides the completions that are + IPython specific. We use this to supplement PyDev's core code + completions. + """ + # PyDev uses its own completer and custom hooks so that it uses + # most completions from PyDev's core completer which provides + # extra information. + # See getCompletions for where the two sets of results are merged + + if IPythonRelease._version_major >= 6: + self.Completer = self._new_completer_600() + elif IPythonRelease._version_major >= 5: + self.Completer = self._new_completer_500() + elif IPythonRelease._version_major >= 2: + self.Completer = self._new_completer_234() + elif IPythonRelease._version_major >= 1: + self.Completer = self._new_completer_100() + + if hasattr(self.Completer, "use_jedi"): + self.Completer.use_jedi = False + + self.add_completer_hooks() + + if IPythonRelease._version_major <= 3: + # Only configure readline if we truly are using readline. IPython can + # do tab-completion over the network, in GUIs, etc, where readline + # itself may be absent + if self.has_readline: + self.set_readline_completer() + + # ------------------------------------------------------------------------- + # Things related to aliases + # ------------------------------------------------------------------------- + + def init_alias(self): + # InteractiveShell defines alias's we want, but TerminalInteractiveShell defines + # ones we don't. So don't use super and instead go right to InteractiveShell + InteractiveShell.init_alias(self) + + # ------------------------------------------------------------------------- + # Things related to exiting + # ------------------------------------------------------------------------- + def ask_exit(self): + """Ask the shell to exit. Can be overiden and used as a callback.""" + # TODO PyDev's console does not have support from the Python side to exit + # the console. If user forces the exit (with sys.exit()) then the console + # simply reports errors. e.g.: + # >>> import sys + # >>> sys.exit() + # Failed to create input stream: Connection refused + # >>> + # Console already exited with value: 0 while waiting for an answer. + # Error stream: + # Output stream: + # >>> + # + # Alternatively if you use the non-IPython shell this is what happens + # >>> exit() + # :None + # >>> + # :None + # >>> + # + super(PyDevTerminalInteractiveShell, self).ask_exit() + print("To exit the PyDev Console, terminate the console within IDE.") + + # ------------------------------------------------------------------------- + # Things related to magics + # ------------------------------------------------------------------------- + + def init_magics(self): + super(PyDevTerminalInteractiveShell, self).init_magics() + # TODO Any additional magics for PyDev? + + +InteractiveShellABC.register(PyDevTerminalInteractiveShell) # @UndefinedVariable + + +# ======================================================================================================================= +# _PyDevFrontEnd +# ======================================================================================================================= +class _PyDevFrontEnd: + version = release.__version__ + + def __init__(self): + # Create and initialize our IPython instance. + if ( + hasattr(PyDevTerminalInteractiveShell, "_instance") + and PyDevTerminalInteractiveShell._instance is not None + ): + self.ipython = PyDevTerminalInteractiveShell._instance + else: + self.ipython = PyDevTerminalInteractiveShell.instance() + + self._curr_exec_line = 0 + self._curr_exec_lines = [] + + def show_banner(self): + self.ipython.show_banner() + + def update(self, globals, locals): + ns = self.ipython.user_ns + + for key, value in list(ns.items()): + if key not in locals: + locals[key] = value + + self.ipython.user_global_ns.clear() + self.ipython.user_global_ns.update(globals) + self.ipython.user_ns = locals + + if hasattr(self.ipython, "history_manager") and hasattr( + self.ipython.history_manager, "save_thread" + ): + self.ipython.history_manager.save_thread.pydev_do_not_trace = ( + True # don't trace ipython history saving thread + ) + + def complete(self, string): + try: + if string: + return self.ipython.complete( + None, line=string, cursor_pos=string.__len__() + ) + else: + return self.ipython.complete(string, string, 0) + except: + # Silence completer exceptions + pass + + def is_complete(self, string): + # Based on IPython 0.10.1 + + if string in ("", "\n"): + # Prefiltering, eg through ipython0, may return an empty + # string although some operations have been accomplished. We + # thus want to consider an empty string as a complete + # statement. + return True + else: + try: + # Add line returns here, to make sure that the statement is + # complete (except if '\' was used). + # This should probably be done in a different place (like + # maybe 'prefilter_input' method? For now, this works. + clean_string = string.rstrip("\n") + if not clean_string.endswith("\\"): + clean_string += "\n\n" + + is_complete = codeop.compile_command(clean_string, "", "exec") + except Exception: + # XXX: Hack: return True so that the + # code gets executed and the error captured. + is_complete = True + return is_complete + + def getCompletions(self, text, act_tok): + # Get completions from IPython and from PyDev and merge the results + # IPython only gives context free list of completions, while PyDev + # gives detailed information about completions. + try: + TYPE_IPYTHON = "11" + TYPE_IPYTHON_MAGIC = "12" + _line, ipython_completions = self.complete(text) + + from _pydev_bundle._pydev_completer import Completer + + completer = Completer(self.get_namespace(), None) + ret = completer.complete(act_tok) + append = ret.append + ip = self.ipython + pydev_completions = set([f[0] for f in ret]) + for ipython_completion in ipython_completions: + # PyCharm was not expecting completions with '%'... + # Could be fixed in the backend, but it's probably better + # fixing it at PyCharm. + # if ipython_completion.startswith('%'): + # ipython_completion = ipython_completion[1:] + + if ipython_completion not in pydev_completions: + pydev_completions.add(ipython_completion) + inf = ip.object_inspect(ipython_completion) + if inf["type_name"] == "Magic function": + pydev_type = TYPE_IPYTHON_MAGIC + else: + pydev_type = TYPE_IPYTHON + pydev_doc = inf["docstring"] + if pydev_doc is None: + pydev_doc = "" + append((ipython_completion, pydev_doc, "", pydev_type)) + return ret + except: + import traceback + + traceback.print_exc() + return [] + + def get_namespace(self): + return self.ipython.user_ns + + def clear_buffer(self): + del self._curr_exec_lines[:] + + def add_exec(self, line): + if self._curr_exec_lines: + self._curr_exec_lines.append(line) + + buf = "\n".join(self._curr_exec_lines) + + if self.is_complete(buf): + self._curr_exec_line += 1 + self.ipython.run_cell(buf) + del self._curr_exec_lines[:] + return False # execute complete (no more) + + return True # needs more + else: + if not self.is_complete(line): + # Did not execute + self._curr_exec_lines.append(line) + return True # needs more + else: + self._curr_exec_line += 1 + self.ipython.run_cell(line, store_history=True) + # hist = self.ipython.history_manager.output_hist_reprs + # rep = hist.get(self._curr_exec_line, None) + # if rep is not None: + # print(rep) + return False # execute complete (no more) + + def is_automagic(self): + return self.ipython.automagic + + def get_greeting_msg(self): + return "PyDev console: using IPython %s\n" % self.version + + +class _PyDevFrontEndContainer: + _instance = None + _last_host_port = None + + +def get_pydev_frontend(pydev_host, pydev_client_port): + if _PyDevFrontEndContainer._instance is None: + _PyDevFrontEndContainer._instance = _PyDevFrontEnd() + + if _PyDevFrontEndContainer._last_host_port != (pydev_host, pydev_client_port): + _PyDevFrontEndContainer._last_host_port = pydev_host, pydev_client_port + + # Back channel to PyDev to open editors (in the future other + # info may go back this way. This is the same channel that is + # used to get stdin, see StdIn in pydev_console_utils) + _PyDevFrontEndContainer._instance.ipython.hooks["editor"] = create_editor_hook( + pydev_host, pydev_client_port + ) + + # Note: setting the callback directly because setting it with set_hook would actually create a chain instead + # of ovewriting at each new call). + # _PyDevFrontEndContainer._instance.ipython.set_hook('editor', create_editor_hook(pydev_host, pydev_client_port)) + + return _PyDevFrontEndContainer._instance diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_is_thread_alive.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_is_thread_alive.py new file mode 100644 index 000000000..e932c5233 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_is_thread_alive.py @@ -0,0 +1,32 @@ +from _pydev_bundle._pydev_saved_modules import threading + +# Hack for https://www.brainwy.com/tracker/PyDev/363 (i.e.: calling is_alive() can throw AssertionError under some +# circumstances). +# It is required to debug threads started by start_new_thread in Python 3.4 +_temp = threading.Thread() + +if hasattr(_temp, "_handle") and hasattr( + _temp, "_started" +): # Python 3.13 and later has this + + def is_thread_alive(t): + return not t._handle.is_done() + + +elif hasattr(_temp, "_is_stopped"): # Python 3.12 and earlier has this + + def is_thread_alive(t): + return not t._is_stopped + +elif hasattr(_temp, "_Thread__stopped"): # Python 2.x has this + + def is_thread_alive(t): + return not t._Thread__stopped + +else: + # Jython wraps a native java thread and thus only obeys the public API. + def is_thread_alive(t): + return t.is_alive() + + +del _temp diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_localhost.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_localhost.py new file mode 100644 index 000000000..d104448e8 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_localhost.py @@ -0,0 +1,69 @@ +import sys + +from _pydev_bundle._pydev_saved_modules import socket + +IS_JYTHON = sys.platform.find("java") != -1 + +_cache = None + + +def get_localhost(): + """ + Should return 127.0.0.1 in ipv4 and ::1 in ipv6 + + localhost is not used because on windows vista/windows 7, there can be issues where the resolving doesn't work + properly and takes a lot of time (had this issue on the pyunit server). + + Using the IP directly solves the problem. + """ + # TODO: Needs better investigation! + + global _cache + if _cache is None: + try: + for addr_info in socket.getaddrinfo("localhost", 80, 0, 0, socket.SOL_TCP): + config = addr_info[4] + if config[0] == "127.0.0.1": + _cache = "127.0.0.1" + return _cache + except: + # Ok, some versions of Python don't have getaddrinfo or SOL_TCP... Just consider it 127.0.0.1 in this case. + _cache = "127.0.0.1" + else: + _cache = "localhost" + + return _cache + + +def get_socket_names(n_sockets, close=False): + socket_names = [] + sockets = [] + for _ in range(n_sockets): + if IS_JYTHON: + # Although the option which would be pure java *should* work for Jython, the socket being returned is still 0 + # (i.e.: it doesn't give the local port bound, only the original port, which was 0). + from java.net import ServerSocket + + sock = ServerSocket(0) + socket_name = get_localhost(), sock.getLocalPort() + else: + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + sock.bind((get_localhost(), 0)) + socket_name = sock.getsockname() + + sockets.append(sock) + socket_names.append(socket_name) + + if close: + for s in sockets: + s.close() + return socket_names + + +def get_socket_name(close=False): + return get_socket_names(1, close)[0] + + +if __name__ == "__main__": + print(get_socket_name()) diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_log.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_log.py new file mode 100644 index 000000000..12a3a87ea --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_log.py @@ -0,0 +1,291 @@ +import os +import sys +import traceback +from contextlib import contextmanager + +from _pydevd_bundle.pydevd_constants import ( + LOG_TIME, + NULL, + SHOW_COMPILE_CYTHON_COMMAND_LINE, + DebugInfoHolder, + ForkSafeLock, +) + + +class _LoggingGlobals: + _warn_once_map = {} + _debug_stream_filename = None + _debug_stream = NULL + _debug_stream_initialized = False + _initialize_lock = ForkSafeLock() + + +def initialize_debug_stream(reinitialize=False): + """ + :param bool reinitialize: + Reinitialize is used to update the debug stream after a fork (thus, if it wasn't + initialized, we don't need to do anything, just wait for the first regular log call + to initialize). + """ + if reinitialize: + if not _LoggingGlobals._debug_stream_initialized: + return + else: + if _LoggingGlobals._debug_stream_initialized: + return + + with _LoggingGlobals._initialize_lock: + # Initialization is done lazilly, so, it's possible that multiple threads try to initialize + # logging. + + # Check initial conditions again after obtaining the lock. + if reinitialize: + if not _LoggingGlobals._debug_stream_initialized: + return + else: + if _LoggingGlobals._debug_stream_initialized: + return + + _LoggingGlobals._debug_stream_initialized = True + + # Note: we cannot initialize with sys.stderr because when forking we may end up logging things in 'os' calls. + _LoggingGlobals._debug_stream = NULL + _LoggingGlobals._debug_stream_filename = None + + if not DebugInfoHolder.PYDEVD_DEBUG_FILE: + _LoggingGlobals._debug_stream = sys.stderr + else: + # Add pid to the filename. + try: + target_file = DebugInfoHolder.PYDEVD_DEBUG_FILE + debug_file = _compute_filename_with_pid(target_file) + _LoggingGlobals._debug_stream = open(debug_file, "w") + _LoggingGlobals._debug_stream_filename = debug_file + except Exception: + _LoggingGlobals._debug_stream = sys.stderr + # Don't fail when trying to setup logging, just show the exception. + traceback.print_exc() + + +def _compute_filename_with_pid(target_file, pid=None): + # Note: used in tests. + dirname = os.path.dirname(target_file) + basename = os.path.basename(target_file) + try: + os.makedirs(dirname) + except Exception: + pass # Ignore error if it already exists. + + name, ext = os.path.splitext(basename) + if pid is None: + pid = os.getpid() + return os.path.join(dirname, "%s.%s%s" % (name, pid, ext)) + + +def log_to(log_file: str, log_level: int = 3) -> None: + with _LoggingGlobals._initialize_lock: + # Can be set directly. + DebugInfoHolder.DEBUG_TRACE_LEVEL = log_level + + if DebugInfoHolder.PYDEVD_DEBUG_FILE != log_file: + # Note that we don't need to reset it unless it actually changed + # (would be the case where it's set as an env var in a new process + # and a subprocess initializes logging to the same value). + _LoggingGlobals._debug_stream = NULL + _LoggingGlobals._debug_stream_filename = None + + DebugInfoHolder.PYDEVD_DEBUG_FILE = log_file + + _LoggingGlobals._debug_stream_initialized = False + + +def list_log_files(pydevd_debug_file): + log_files = [] + dirname = os.path.dirname(pydevd_debug_file) + basename = os.path.basename(pydevd_debug_file) + if os.path.isdir(dirname): + name, ext = os.path.splitext(basename) + for f in os.listdir(dirname): + if f.startswith(name) and f.endswith(ext): + log_files.append(os.path.join(dirname, f)) + return log_files + + +@contextmanager +def log_context(trace_level, stream): + """ + To be used to temporarily change the logging settings. + """ + with _LoggingGlobals._initialize_lock: + original_trace_level = DebugInfoHolder.DEBUG_TRACE_LEVEL + original_debug_stream = _LoggingGlobals._debug_stream + original_pydevd_debug_file = DebugInfoHolder.PYDEVD_DEBUG_FILE + original_debug_stream_filename = _LoggingGlobals._debug_stream_filename + original_initialized = _LoggingGlobals._debug_stream_initialized + + DebugInfoHolder.DEBUG_TRACE_LEVEL = trace_level + _LoggingGlobals._debug_stream = stream + _LoggingGlobals._debug_stream_initialized = True + try: + yield + finally: + with _LoggingGlobals._initialize_lock: + DebugInfoHolder.DEBUG_TRACE_LEVEL = original_trace_level + _LoggingGlobals._debug_stream = original_debug_stream + DebugInfoHolder.PYDEVD_DEBUG_FILE = original_pydevd_debug_file + _LoggingGlobals._debug_stream_filename = original_debug_stream_filename + _LoggingGlobals._debug_stream_initialized = original_initialized + + +import time + +_last_log_time = time.time() + +# Set to True to show pid in each logged message (usually the file has it, but sometimes it's handy). +_LOG_PID = False + + +def _pydevd_log(level, msg, *args): + """ + Levels are: + + 0 most serious warnings/errors (always printed) + 1 warnings/significant events + 2 informational trace + 3 verbose mode + """ + if level <= DebugInfoHolder.DEBUG_TRACE_LEVEL: + # yes, we can have errors printing if the console of the program has been finished (and we're still trying to print something) + try: + try: + if args: + msg = msg % args + except: + msg = "%s - %s" % (msg, args) + + if LOG_TIME: + global _last_log_time + new_log_time = time.time() + time_diff = new_log_time - _last_log_time + _last_log_time = new_log_time + msg = "%.2fs - %s\n" % ( + time_diff, + msg, + ) + else: + msg = "%s\n" % (msg,) + + if _LOG_PID: + msg = "<%s> - %s\n" % ( + os.getpid(), + msg, + ) + + try: + try: + initialize_debug_stream() # Do it as late as possible + _LoggingGlobals._debug_stream.write(msg) + except TypeError: + if isinstance(msg, bytes): + # Depending on the StringIO flavor, it may only accept unicode. + msg = msg.decode("utf-8", "replace") + _LoggingGlobals._debug_stream.write(msg) + except UnicodeEncodeError: + # When writing to the stream it's possible that the string can't be represented + # in the encoding expected (in this case, convert it to the stream encoding + # or ascii if we can't find one suitable using a suitable replace). + encoding = getattr(_LoggingGlobals._debug_stream, "encoding", "ascii") + msg = msg.encode(encoding, "backslashreplace") + msg = msg.decode(encoding) + _LoggingGlobals._debug_stream.write(msg) + + _LoggingGlobals._debug_stream.flush() + except: + pass + return True + + +def _pydevd_log_exception(msg="", *args): + if msg or args: + _pydevd_log(0, msg, *args) + try: + initialize_debug_stream() # Do it as late as possible + traceback.print_exc(file=_LoggingGlobals._debug_stream) + _LoggingGlobals._debug_stream.flush() + except: + raise + + +def verbose(msg, *args): + if DebugInfoHolder.DEBUG_TRACE_LEVEL >= 3: + _pydevd_log(3, msg, *args) + + +def debug(msg, *args): + if DebugInfoHolder.DEBUG_TRACE_LEVEL >= 2: + _pydevd_log(2, msg, *args) + + +def info(msg, *args): + if DebugInfoHolder.DEBUG_TRACE_LEVEL >= 1: + _pydevd_log(1, msg, *args) + + +warn = info + + +def critical(msg, *args): + _pydevd_log(0, msg, *args) + + +def exception(msg="", *args): + try: + _pydevd_log_exception(msg, *args) + except: + pass # Should never fail (even at interpreter shutdown). + + +error = exception + + +def error_once(msg, *args): + try: + if args: + message = msg % args + else: + message = str(msg) + except: + message = "%s - %s" % (msg, args) + + if message not in _LoggingGlobals._warn_once_map: + _LoggingGlobals._warn_once_map[message] = True + critical(message) + + +def exception_once(msg, *args): + try: + if args: + message = msg % args + else: + message = str(msg) + except: + message = "%s - %s" % (msg, args) + + if message not in _LoggingGlobals._warn_once_map: + _LoggingGlobals._warn_once_map[message] = True + exception(message) + + +def debug_once(msg, *args): + if DebugInfoHolder.DEBUG_TRACE_LEVEL >= 3: + error_once(msg, *args) + + +def show_compile_cython_command_line(): + if SHOW_COMPILE_CYTHON_COMMAND_LINE: + dirname = os.path.dirname(os.path.dirname(__file__)) + error_once( + 'warning: Debugger speedups using cython not found. Run \'"%s" "%s" build_ext --inplace\' to build.', + sys.executable, + os.path.join(dirname, "setup_pydevd_cython.py"), + ) diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey.py new file mode 100644 index 000000000..503392dbf --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey.py @@ -0,0 +1,1361 @@ +# License: EPL +import ast +import os +import re +import sys +from contextlib import contextmanager +from pathlib import Path + +from _pydevd_bundle import pydevd_constants, pydevd_defaults +from _pydevd_bundle.pydevd_constants import ( + IS_JYTHON, + IS_WINDOWS, + PYDEVD_USE_SYS_MONITORING, + DebugInfoHolder, + get_current_thread_id, + get_global_debugger, + set_global_debugger, + sorted_dict_repr, +) +from _pydevd_bundle.pydevd_defaults import PydevdCustomization + +from _pydev_bundle import pydev_log +from _pydev_bundle._pydev_saved_modules import threading + +# =============================================================================== +# Things that are dependent on having the pydevd debugger +# =============================================================================== + +pydev_src_dir = os.path.dirname(os.path.dirname(__file__)) + +_arg_patch = threading.local() + + +@contextmanager +def skip_subprocess_arg_patch(): + _arg_patch.apply_arg_patching = False + try: + yield + finally: + _arg_patch.apply_arg_patching = True + + +def _get_apply_arg_patching(): + return getattr(_arg_patch, "apply_arg_patching", True) + + +def _get_setup_updated_with_protocol_and_ppid(setup, is_exec=False): + if setup is None: + setup = {} + setup = setup.copy() + # Discard anything related to the protocol (we'll set the the protocol based on the one + # currently set). + setup.pop(pydevd_constants.ARGUMENT_HTTP_JSON_PROTOCOL, None) + setup.pop(pydevd_constants.ARGUMENT_JSON_PROTOCOL, None) + setup.pop(pydevd_constants.ARGUMENT_QUOTED_LINE_PROTOCOL, None) + + if not is_exec: + # i.e.: The ppid for the subprocess is the current pid. + # If it's an exec, keep it what it was. + setup[pydevd_constants.ARGUMENT_PPID] = os.getpid() + + protocol = pydevd_constants.get_protocol() + if protocol == pydevd_constants.HTTP_JSON_PROTOCOL: + setup[pydevd_constants.ARGUMENT_HTTP_JSON_PROTOCOL] = True + + elif protocol == pydevd_constants.JSON_PROTOCOL: + setup[pydevd_constants.ARGUMENT_JSON_PROTOCOL] = True + + elif protocol == pydevd_constants.QUOTED_LINE_PROTOCOL: + setup[pydevd_constants.ARGUMENT_QUOTED_LINE_PROTOCOL] = True + + elif protocol == pydevd_constants.HTTP_PROTOCOL: + setup[pydevd_constants.ARGUMENT_HTTP_PROTOCOL] = True + + else: + pydev_log.debug("Unexpected protocol: %s", protocol) + + mode = pydevd_defaults.PydevdCustomization.DEBUG_MODE + if mode: + setup["debug-mode"] = mode + + preimport = pydevd_defaults.PydevdCustomization.PREIMPORT + if preimport: + setup["preimport"] = preimport + + if DebugInfoHolder.PYDEVD_DEBUG_FILE: + setup["log-file"] = DebugInfoHolder.PYDEVD_DEBUG_FILE + + if DebugInfoHolder.DEBUG_TRACE_LEVEL: + setup["log-level"] = DebugInfoHolder.DEBUG_TRACE_LEVEL + + return setup + + +class _LastFutureImportFinder(ast.NodeVisitor): + def __init__(self): + self.last_future_import_found = None + + def visit_ImportFrom(self, node): + if node.module == "__future__": + self.last_future_import_found = node + + +def _get_offset_from_line_col(code, line, col): + offset = 0 + for i, line_contents in enumerate(code.splitlines(True)): + if i == line: + offset += col + return offset + else: + offset += len(line_contents) + + return -1 + + +def _separate_future_imports(code): + """ + :param code: + The code from where we want to get the __future__ imports (note that it's possible that + there's no such entry). + + :return tuple(str, str): + The return is a tuple(future_import, code). + + If the future import is not available a return such as ('', code) is given, otherwise, the + future import will end with a ';' (so that it can be put right before the pydevd attach + code). + """ + try: + node = ast.parse(code, "", "exec") + visitor = _LastFutureImportFinder() + visitor.visit(node) + + if visitor.last_future_import_found is None: + return "", code + + node = visitor.last_future_import_found + offset = -1 + if hasattr(node, "end_lineno") and hasattr(node, "end_col_offset"): + # Python 3.8 onwards has these (so, use when possible). + line, col = node.end_lineno, node.end_col_offset + offset = _get_offset_from_line_col( + code, line - 1, col + ) # ast lines are 1-based, make it 0-based. + + else: + # end line/col not available, let's just find the offset and then search + # for the alias from there. + line, col = node.lineno, node.col_offset + offset = _get_offset_from_line_col( + code, line - 1, col + ) # ast lines are 1-based, make it 0-based. + if offset >= 0 and node.names: + from_future_import_name = node.names[-1].name + i = code.find(from_future_import_name, offset) + if i < 0: + offset = -1 + else: + offset = i + len(from_future_import_name) + + if offset >= 0: + for i in range(offset, len(code)): + if code[i] in (" ", "\t", ";", ")", "\n"): + offset += 1 + else: + break + + future_import = code[:offset] + code_remainder = code[offset:] + + # Now, put '\n' lines back into the code remainder (we had to search for + # `\n)`, but in case we just got the `\n`, it should be at the remainder, + # not at the future import. + while future_import.endswith("\n"): + future_import = future_import[:-1] + code_remainder = "\n" + code_remainder + + if not future_import.endswith(";"): + future_import += ";" + return future_import, code_remainder + + # This shouldn't happen... + pydev_log.info("Unable to find line %s in code:\n%r", line, code) + return "", code + + except: + pydev_log.exception("Error getting from __future__ imports from: %r", code) + return "", code + + +def _get_python_c_args(host, port, code, args, setup): + setup = _get_setup_updated_with_protocol_and_ppid(setup) + + # i.e.: We want to make the repr sorted so that it works in tests. + setup_repr = setup if setup is None else (sorted_dict_repr(setup)) + + future_imports = "" + if "__future__" in code: + # If the code has a __future__ import, we need to be able to strip the __future__ + # imports from the code and add them to the start of our code snippet. + future_imports, code = _separate_future_imports(code) + + return ( + "%simport sys; sys.path.insert(0, r'%s'); import pydevd; pydevd.config(%r, %r); " + "pydevd.settrace(host=%r, port=%s, suspend=False, trace_only_current_thread=False, patch_multiprocessing=True, access_token=%r, client_access_token=%r, __setup_holder__=%s); " + "%s" + ) % ( + future_imports, + pydev_src_dir, + pydevd_constants.get_protocol(), + PydevdCustomization.DEBUG_MODE, + host, + port, + setup.get("access-token"), + setup.get("client-access-token"), + setup_repr, + code, + ) + + +def _get_host_port(): + import pydevd + + host, port = pydevd.dispatch() + return host, port + + +def _is_managed_arg(arg): + pydevd_py = _get_str_type_compatible(arg, "pydevd.py") + if arg.endswith(pydevd_py): + return True + return False + + +def _on_forked_process(setup_tracing=True): + pydevd_constants.after_fork() + pydev_log.initialize_debug_stream(reinitialize=True) + + if setup_tracing: + pydev_log.debug("pydevd on forked process: %s", os.getpid()) + + import pydevd + + pydevd.threadingCurrentThread().__pydevd_main_thread = True + pydevd.settrace_forked(setup_tracing=setup_tracing) + + +def _on_set_trace_for_new_thread(global_debugger): + if global_debugger is not None: + if not PYDEVD_USE_SYS_MONITORING: + global_debugger.enable_tracing() + + +def _get_str_type_compatible(s, args): + """ + This method converts `args` to byte/unicode based on the `s' type. + """ + if isinstance(args, (list, tuple)): + ret = [] + for arg in args: + if type(s) == type(arg): + ret.append(arg) + else: + if isinstance(s, bytes): + ret.append(arg.encode("utf-8")) + else: + ret.append(arg.decode("utf-8")) + return ret + else: + if type(s) == type(args): + return args + else: + if isinstance(s, bytes): + return args.encode("utf-8") + else: + return args.decode("utf-8") + + +# =============================================================================== +# Things related to monkey-patching +# =============================================================================== +def is_python(path): + single_quote, double_quote = _get_str_type_compatible(path, ["'", '"']) + + if path.endswith(single_quote) or path.endswith(double_quote): + path = path[1 : len(path) - 1] + filename = os.path.basename(path).lower() + for name in _get_str_type_compatible(filename, ["python", "jython", "pypy"]): + if filename.find(name) != -1: + return True + + return False + + +class InvalidTypeInArgsException(Exception): + pass + + +def remove_quotes_from_args(args): + if sys.platform == "win32": + new_args = [] + + for x in args: + if isinstance(x, Path): + x = str(x) + else: + if not isinstance(x, (bytes, str)): + raise InvalidTypeInArgsException(str(type(x))) + + double_quote, two_double_quotes = _get_str_type_compatible(x, ['"', '""']) + + if x != two_double_quotes: + if ( + len(x) > 1 + and x.startswith(double_quote) + and x.endswith(double_quote) + ): + x = x[1:-1] + + new_args.append(x) + return new_args + else: + new_args = [] + for x in args: + if isinstance(x, Path): + x = x.as_posix() + else: + if not isinstance(x, (bytes, str)): + raise InvalidTypeInArgsException(str(type(x))) + new_args.append(x) + + return new_args + + +def quote_arg_win32(arg): + fix_type = lambda x: _get_str_type_compatible(arg, x) + + # See if we need to quote at all - empty strings need quoting, as do strings + # with whitespace or quotes in them. Backslashes do not need quoting. + if arg and not set(arg).intersection(fix_type(' "\t\n\v')): + return arg + + # Per https://docs.microsoft.com/en-us/windows/desktop/api/shellapi/nf-shellapi-commandlinetoargvw, + # the standard way to interpret arguments in double quotes is as follows: + # + # 2N backslashes followed by a quotation mark produce N backslashes followed by + # begin/end quote. This does not become part of the parsed argument, but toggles + # the "in quotes" mode. + # + # 2N+1 backslashes followed by a quotation mark again produce N backslashes followed + # by a quotation mark literal ("). This does not toggle the "in quotes" mode. + # + # N backslashes not followed by a quotation mark simply produce N backslashes. + # + # This code needs to do the reverse transformation, thus: + # + # N backslashes followed by " produce 2N+1 backslashes followed by " + # + # N backslashes at the end (i.e. where the closing " goes) produce 2N backslashes. + # + # N backslashes in any other position remain as is. + + arg = re.sub(fix_type(r"(\\*)\""), fix_type(r'\1\1\\"'), arg) + arg = re.sub(fix_type(r"(\\*)$"), fix_type(r"\1\1"), arg) + return fix_type('"') + arg + fix_type('"') + + +def quote_args(args): + if sys.platform == "win32": + return list(map(quote_arg_win32, args)) + else: + return args + + +def patch_args(args, is_exec=False): + """ + :param list args: + Arguments to patch. + + :param bool is_exec: + If it's an exec, the current process will be replaced (this means we have + to keep the same ppid). + """ + try: + pydev_log.debug("Patching args: %s", args) + original_args = args + try: + unquoted_args = remove_quotes_from_args(args) + except InvalidTypeInArgsException as e: + pydev_log.info( + "Unable to monkey-patch subprocess arguments because a type found in the args is invalid: %s", + e, + ) + return original_args + + # Internally we should reference original_args (if we want to return them) or unquoted_args + # to add to the list which will be then quoted in the end. + del args + + from pydevd import SetupHolder + + if not unquoted_args: + return original_args + + if not is_python(unquoted_args[0]): + pydev_log.debug("Process is not python, returning.") + return original_args + + # Note: we create a copy as string to help with analyzing the arguments, but + # the final list should have items from the unquoted_args as they were initially. + args_as_str = _get_str_type_compatible("", unquoted_args) + + params_with_value_in_separate_arg = ( + "--check-hash-based-pycs", + "--jit", # pypy option + ) + + # All short switches may be combined together. The ones below require a value and the + # value itself may be embedded in the arg. + # + # i.e.: Python accepts things as: + # + # python -OQold -qmtest + # + # Which is the same as: + # + # python -O -Q old -q -m test + # + # or even: + # + # python -OQold "-vcimport sys;print(sys)" + # + # Which is the same as: + # + # python -O -Q old -v -c "import sys;print(sys)" + + params_with_combinable_arg = set(("W", "X", "Q", "c", "m")) + + module_name = None + before_module_flag = "" + module_name_i_start = -1 + module_name_i_end = -1 + + code = None + code_i = -1 + code_i_end = -1 + code_flag = "" + + filename = None + filename_i = -1 + + ignore_next = ( + True # start ignoring the first (the first entry is the python executable) + ) + for i, arg_as_str in enumerate(args_as_str): + if ignore_next: + ignore_next = False + continue + + if arg_as_str.startswith("-"): + if arg_as_str == "-": + # Contents will be read from the stdin. This is not currently handled. + pydev_log.debug( + 'Unable to fix arguments to attach debugger on subprocess when reading from stdin ("python ... -").' + ) + return original_args + + if arg_as_str.startswith(params_with_value_in_separate_arg): + if arg_as_str in params_with_value_in_separate_arg: + ignore_next = True + continue + + break_out = False + for j, c in enumerate(arg_as_str): + # i.e.: Python supports -X faulthandler as well as -Xfaulthandler + # (in one case we have to ignore the next and in the other we don't + # have to ignore it). + if c in params_with_combinable_arg: + remainder = arg_as_str[j + 1 :] + if not remainder: + ignore_next = True + + if c == "m": + # i.e.: Something as + # python -qm test + # python -m test + # python -qmtest + before_module_flag = arg_as_str[ + :j + ] # before_module_flag would then be "-q" + if before_module_flag == "-": + before_module_flag = "" + module_name_i_start = i + if not remainder: + module_name = unquoted_args[i + 1] + module_name_i_end = i + 1 + else: + # i.e.: python -qmtest should provide 'test' as the module_name + module_name = unquoted_args[i][j + 1 :] + module_name_i_end = module_name_i_start + break_out = True + break + + elif c == "c": + # i.e.: Something as + # python -qc "import sys" + # python -c "import sys" + # python "-qcimport sys" + code_flag = arg_as_str[ + : j + 1 + ] # code_flag would then be "-qc" + + if not remainder: + # arg_as_str is something as "-qc", "import sys" + code = unquoted_args[i + 1] + code_i_end = i + 2 + else: + # if arg_as_str is something as "-qcimport sys" + code = remainder # code would be "import sys" + code_i_end = i + 1 + code_i = i + break_out = True + break + + else: + break + + if break_out: + break + + else: + # It doesn't start with '-' and we didn't ignore this entry: + # this means that this is the file to be executed. + filename = unquoted_args[i] + + # Note that the filename is not validated here. + # There are cases where even a .exe is valid (xonsh.exe): + # https://github.com/microsoft/debugpy/issues/945 + # So, we should support whatever runpy.run_path + # supports in this case. + + filename_i = i + + if _is_managed_arg(filename): # no need to add pydevd twice + pydev_log.debug( + "Skipped monkey-patching as pydevd.py is in args already." + ) + return original_args + + break + else: + # We didn't find the filename (something is unexpected). + pydev_log.debug( + "Unable to fix arguments to attach debugger on subprocess (filename not found)." + ) + return original_args + + if code_i != -1: + host, port = _get_host_port() + + if port is not None: + new_args = [] + new_args.extend(unquoted_args[:code_i]) + new_args.append(code_flag) + new_args.append( + _get_python_c_args( + host, port, code, unquoted_args, SetupHolder.setup + ) + ) + new_args.extend(unquoted_args[code_i_end:]) + + return quote_args(new_args) + + first_non_vm_index = max(filename_i, module_name_i_start) + if first_non_vm_index == -1: + pydev_log.debug( + "Unable to fix arguments to attach debugger on subprocess (could not resolve filename nor module name)." + ) + return original_args + + # Original args should be something as: + # ['X:\\pysrc\\pydevd.py', '--multiprocess', '--print-in-debugger-startup', + # '--vm_type', 'python', '--client', '127.0.0.1', '--port', '56352', '--file', 'x:\\snippet1.py'] + from _pydevd_bundle.pydevd_command_line_handling import setup_to_argv + + new_args = [] + new_args.extend(unquoted_args[:first_non_vm_index]) + if before_module_flag: + new_args.append(before_module_flag) + + add_module_at = len(new_args) + 1 + + new_args.extend( + setup_to_argv( + _get_setup_updated_with_protocol_and_ppid( + SetupHolder.setup, is_exec=is_exec + ), + skip_names=set(("module", "cmd-line")), + ) + ) + new_args.append("--file") + + if module_name is not None: + assert module_name_i_start != -1 + assert module_name_i_end != -1 + # Always after 'pydevd' (i.e.: pydevd "--module" --multiprocess ...) + new_args.insert(add_module_at, "--module") + new_args.append(module_name) + new_args.extend(unquoted_args[module_name_i_end + 1 :]) + + elif filename is not None: + assert filename_i != -1 + new_args.append(filename) + new_args.extend(unquoted_args[filename_i + 1 :]) + + else: + raise AssertionError("Internal error (unexpected condition)") + + return quote_args(new_args) + except: + pydev_log.exception( + "Error patching args (debugger not attached to subprocess)." + ) + return original_args + + +def str_to_args_windows(args): + # See https://docs.microsoft.com/en-us/cpp/c-language/parsing-c-command-line-arguments. + # + # Implemetation ported from DebugPlugin.parseArgumentsWindows: + # https://github.com/eclipse/eclipse.platform.debug/blob/master/org.eclipse.debug.core/core/org/eclipse/debug/core/DebugPlugin.java + + result = [] + + DEFAULT = 0 + ARG = 1 + IN_DOUBLE_QUOTE = 2 + + state = DEFAULT + backslashes = 0 + buf = "" + + args_len = len(args) + for i in range(args_len): + ch = args[i] + if ch == "\\": + backslashes += 1 + continue + elif backslashes != 0: + if ch == '"': + while backslashes >= 2: + backslashes -= 2 + buf += "\\" + if backslashes == 1: + if state == DEFAULT: + state = ARG + + buf += '"' + backslashes = 0 + continue + # else fall through to switch + else: + # false alarm, treat passed backslashes literally... + if state == DEFAULT: + state = ARG + + while backslashes > 0: + backslashes -= 1 + buf += "\\" + # fall through to switch + if ch in (" ", "\t"): + if state == DEFAULT: + # skip + continue + elif state == ARG: + state = DEFAULT + result.append(buf) + buf = "" + continue + + if state in (DEFAULT, ARG): + if ch == '"': + state = IN_DOUBLE_QUOTE + else: + state = ARG + buf += ch + + elif state == IN_DOUBLE_QUOTE: + if ch == '"': + if i + 1 < args_len and args[i + 1] == '"': + # Undocumented feature in Windows: + # Two consecutive double quotes inside a double-quoted argument are interpreted as + # a single double quote. + buf += '"' + i += 1 + else: + state = ARG + else: + buf += ch + + else: + raise RuntimeError("Illegal condition") + + if len(buf) > 0 or state != DEFAULT: + result.append(buf) + + return result + + +def patch_arg_str_win(arg_str): + args = str_to_args_windows(arg_str) + # Fix https://youtrack.jetbrains.com/issue/PY-9767 (args may be empty) + if not args or not is_python(args[0]): + return arg_str + arg_str = " ".join(patch_args(args)) + pydev_log.debug("New args: %s", arg_str) + return arg_str + + +def monkey_patch_module(module, funcname, create_func): + if hasattr(module, funcname): + original_name = "original_" + funcname + if not hasattr(module, original_name): + setattr(module, original_name, getattr(module, funcname)) + setattr(module, funcname, create_func(original_name)) + + +def monkey_patch_os(funcname, create_func): + monkey_patch_module(os, funcname, create_func) + + +def warn_multiproc(): + pass # TODO: Provide logging as messages to the IDE. + # pydev_log.error_once( + # "pydev debugger: New process is launching (breakpoints won't work in the new process).\n" + # "pydev debugger: To debug that process please enable 'Attach to subprocess automatically while debugging?' option in the debugger settings.\n") + # + + +def create_warn_multiproc(original_name): + def new_warn_multiproc(*args, **kwargs): + import os + + warn_multiproc() + + return getattr(os, original_name)(*args, **kwargs) + + return new_warn_multiproc + + +def create_execl(original_name): + def new_execl(path, *args): + """ + os.execl(path, arg0, arg1, ...) + os.execle(path, arg0, arg1, ..., env) + os.execlp(file, arg0, arg1, ...) + os.execlpe(file, arg0, arg1, ..., env) + """ + if _get_apply_arg_patching(): + args = patch_args(args, is_exec=True) + send_process_created_message() + send_process_about_to_be_replaced() + + return getattr(os, original_name)(path, *args) + + return new_execl + + +def create_execv(original_name): + def new_execv(path, args): + """ + os.execv(path, args) + os.execvp(file, args) + """ + if _get_apply_arg_patching(): + args = patch_args(args, is_exec=True) + send_process_created_message() + send_process_about_to_be_replaced() + + return getattr(os, original_name)(path, args) + + return new_execv + + +def create_execve(original_name): + """ + os.execve(path, args, env) + os.execvpe(file, args, env) + """ + + def new_execve(path, args, env): + if _get_apply_arg_patching(): + args = patch_args(args, is_exec=True) + send_process_created_message() + send_process_about_to_be_replaced() + + return getattr(os, original_name)(path, args, env) + + return new_execve + + +def create_spawnl(original_name): + def new_spawnl(mode, path, *args): + """ + os.spawnl(mode, path, arg0, arg1, ...) + os.spawnlp(mode, file, arg0, arg1, ...) + """ + if _get_apply_arg_patching(): + args = patch_args(args) + send_process_created_message() + + return getattr(os, original_name)(mode, path, *args) + + return new_spawnl + + +def create_spawnv(original_name): + def new_spawnv(mode, path, args): + """ + os.spawnv(mode, path, args) + os.spawnvp(mode, file, args) + """ + if _get_apply_arg_patching(): + args = patch_args(args) + send_process_created_message() + + return getattr(os, original_name)(mode, path, args) + + return new_spawnv + + +def create_spawnve(original_name): + """ + os.spawnve(mode, path, args, env) + os.spawnvpe(mode, file, args, env) + """ + + def new_spawnve(mode, path, args, env): + if _get_apply_arg_patching(): + args = patch_args(args) + send_process_created_message() + + return getattr(os, original_name)(mode, path, args, env) + + return new_spawnve + + +def create_posix_spawn(original_name): + """ + os.posix_spawn(executable, args, env, **kwargs) + """ + + def new_posix_spawn(executable, args, env, **kwargs): + if _get_apply_arg_patching(): + args = patch_args(args) + send_process_created_message() + + return getattr(os, original_name)(executable, args, env, **kwargs) + + return new_posix_spawn + + +def create_fork_exec(original_name): + """ + _posixsubprocess.fork_exec(args, executable_list, close_fds, ... (13 more)) + """ + + def new_fork_exec(args, *other_args): + import _posixsubprocess # @UnresolvedImport + + if _get_apply_arg_patching(): + args = patch_args(args) + send_process_created_message() + + return getattr(_posixsubprocess, original_name)(args, *other_args) + + return new_fork_exec + + +def create_warn_fork_exec(original_name): + """ + _posixsubprocess.fork_exec(args, executable_list, close_fds, ... (13 more)) + """ + + def new_warn_fork_exec(*args): + try: + import _posixsubprocess + + warn_multiproc() + return getattr(_posixsubprocess, original_name)(*args) + except: + pass + + return new_warn_fork_exec + + +def create_subprocess_fork_exec(original_name): + """ + subprocess._fork_exec(args, executable_list, close_fds, ... (13 more)) + """ + + def new_fork_exec(args, *other_args): + import subprocess + + if _get_apply_arg_patching(): + args = patch_args(args) + send_process_created_message() + + return getattr(subprocess, original_name)(args, *other_args) + + return new_fork_exec + + +def create_subprocess_warn_fork_exec(original_name): + """ + subprocess._fork_exec(args, executable_list, close_fds, ... (13 more)) + """ + + def new_warn_fork_exec(*args): + try: + import subprocess + + warn_multiproc() + return getattr(subprocess, original_name)(*args) + except: + pass + + return new_warn_fork_exec + + +def create_CreateProcess(original_name): + """ + CreateProcess(*args, **kwargs) + """ + + def new_CreateProcess(app_name, cmd_line, *args): + try: + import _subprocess + except ImportError: + import _winapi as _subprocess + + if _get_apply_arg_patching(): + cmd_line = patch_arg_str_win(cmd_line) + send_process_created_message() + + return getattr(_subprocess, original_name)(app_name, cmd_line, *args) + + return new_CreateProcess + + +def create_CreateProcessWarnMultiproc(original_name): + """ + CreateProcess(*args, **kwargs) + """ + + def new_CreateProcess(*args): + try: + import _subprocess + except ImportError: + import _winapi as _subprocess + warn_multiproc() + return getattr(_subprocess, original_name)(*args) + + return new_CreateProcess + + +def create_fork(original_name): + def new_fork(): + # A simple fork will result in a new python process + is_new_python_process = True + frame = sys._getframe() + + apply_arg_patch = _get_apply_arg_patching() + + is_subprocess_fork = False + while frame is not None: + if ( + frame.f_code.co_name == "_execute_child" + and "subprocess" in frame.f_code.co_filename + ): + is_subprocess_fork = True + # If we're actually in subprocess.Popen creating a child, it may + # result in something which is not a Python process, (so, we + # don't want to connect with it in the forked version). + executable = frame.f_locals.get("executable") + if executable is not None: + is_new_python_process = False + if is_python(executable): + is_new_python_process = True + break + + frame = frame.f_back + frame = None # Just make sure we don't hold on to it. + + protocol = pydevd_constants.get_protocol() + debug_mode = PydevdCustomization.DEBUG_MODE + + child_process = getattr(os, original_name)() # fork + if not child_process: + if is_new_python_process: + PydevdCustomization.DEFAULT_PROTOCOL = protocol + PydevdCustomization.DEBUG_MODE = debug_mode + _on_forked_process( + setup_tracing=apply_arg_patch and not is_subprocess_fork + ) + else: + set_global_debugger(None) + else: + if is_new_python_process: + send_process_created_message() + return child_process + + return new_fork + + +def send_process_created_message(): + py_db = get_global_debugger() + if py_db is not None: + py_db.send_process_created_message() + + +def send_process_about_to_be_replaced(): + py_db = get_global_debugger() + if py_db is not None: + py_db.send_process_about_to_be_replaced() + + +def patch_new_process_functions(): + # os.execl(path, arg0, arg1, ...) + # os.execle(path, arg0, arg1, ..., env) + # os.execlp(file, arg0, arg1, ...) + # os.execlpe(file, arg0, arg1, ..., env) + # os.execv(path, args) + # os.execve(path, args, env) + # os.execvp(file, args) + # os.execvpe(file, args, env) + monkey_patch_os("execl", create_execl) + monkey_patch_os("execle", create_execl) + monkey_patch_os("execlp", create_execl) + monkey_patch_os("execlpe", create_execl) + monkey_patch_os("execv", create_execv) + monkey_patch_os("execve", create_execve) + monkey_patch_os("execvp", create_execv) + monkey_patch_os("execvpe", create_execve) + + # os.spawnl(mode, path, ...) + # os.spawnle(mode, path, ..., env) + # os.spawnlp(mode, file, ...) + # os.spawnlpe(mode, file, ..., env) + # os.spawnv(mode, path, args) + # os.spawnve(mode, path, args, env) + # os.spawnvp(mode, file, args) + # os.spawnvpe(mode, file, args, env) + + monkey_patch_os("spawnl", create_spawnl) + monkey_patch_os("spawnle", create_spawnl) + monkey_patch_os("spawnlp", create_spawnl) + monkey_patch_os("spawnlpe", create_spawnl) + monkey_patch_os("spawnv", create_spawnv) + monkey_patch_os("spawnve", create_spawnve) + monkey_patch_os("spawnvp", create_spawnv) + monkey_patch_os("spawnvpe", create_spawnve) + monkey_patch_os("posix_spawn", create_posix_spawn) + + if not IS_JYTHON: + if not IS_WINDOWS: + monkey_patch_os("fork", create_fork) + try: + import _posixsubprocess + + monkey_patch_module(_posixsubprocess, "fork_exec", create_fork_exec) + except ImportError: + pass + + try: + import subprocess + + monkey_patch_module( + subprocess, "_fork_exec", create_subprocess_fork_exec + ) + except AttributeError: + pass + else: + # Windows + try: + import _subprocess + except ImportError: + import _winapi as _subprocess + monkey_patch_module(_subprocess, "CreateProcess", create_CreateProcess) + + +def patch_new_process_functions_with_warning(): + monkey_patch_os("execl", create_warn_multiproc) + monkey_patch_os("execle", create_warn_multiproc) + monkey_patch_os("execlp", create_warn_multiproc) + monkey_patch_os("execlpe", create_warn_multiproc) + monkey_patch_os("execv", create_warn_multiproc) + monkey_patch_os("execve", create_warn_multiproc) + monkey_patch_os("execvp", create_warn_multiproc) + monkey_patch_os("execvpe", create_warn_multiproc) + monkey_patch_os("spawnl", create_warn_multiproc) + monkey_patch_os("spawnle", create_warn_multiproc) + monkey_patch_os("spawnlp", create_warn_multiproc) + monkey_patch_os("spawnlpe", create_warn_multiproc) + monkey_patch_os("spawnv", create_warn_multiproc) + monkey_patch_os("spawnve", create_warn_multiproc) + monkey_patch_os("spawnvp", create_warn_multiproc) + monkey_patch_os("spawnvpe", create_warn_multiproc) + monkey_patch_os("posix_spawn", create_warn_multiproc) + + if not IS_JYTHON: + if not IS_WINDOWS: + monkey_patch_os("fork", create_warn_multiproc) + try: + import _posixsubprocess + + monkey_patch_module( + _posixsubprocess, "fork_exec", create_warn_fork_exec + ) + except ImportError: + pass + + try: + import subprocess + + monkey_patch_module( + subprocess, "_fork_exec", create_subprocess_warn_fork_exec + ) + except AttributeError: + pass + + else: + # Windows + try: + import _subprocess + except ImportError: + import _winapi as _subprocess + monkey_patch_module( + _subprocess, "CreateProcess", create_CreateProcessWarnMultiproc + ) + + +class _NewThreadStartupWithTrace: + def __init__(self, original_func, args, kwargs): + self.original_func = original_func + self.args = args + self.kwargs = kwargs + + def __call__(self): + # We monkey-patch the thread creation so that this function is called in the new thread. At this point + # we notify of its creation and start tracing it. + py_db = get_global_debugger() + + thread_id = None + if py_db is not None: + # Note: if this is a thread from threading.py, we're too early in the boostrap process (because we mocked + # the start_new_thread internal machinery and thread._bootstrap has not finished), so, the code below needs + # to make sure that we use the current thread bound to the original function and not use + # threading.current_thread() unless we're sure it's a dummy thread. + t = getattr( + self.original_func, + "__self__", + getattr(self.original_func, "im_self", None), + ) + if not isinstance(t, threading.Thread): + # This is not a threading.Thread but a Dummy thread (so, get it as a dummy thread using + # currentThread). + t = threading.current_thread() + + if not getattr(t, "is_pydev_daemon_thread", False): + thread_id = get_current_thread_id(t) + py_db.notify_thread_created(thread_id, t) + _on_set_trace_for_new_thread(py_db) + + if getattr(py_db, "thread_analyser", None) is not None: + try: + from _pydevd_bundle.pydevd_concurrency_analyser.pydevd_concurrency_logger import ( + log_new_thread, + ) + + log_new_thread(py_db, t) + except: + sys.stderr.write("Failed to detect new thread for visualization") + try: + ret = self.original_func(*self.args, **self.kwargs) + finally: + if thread_id is not None: + if py_db is not None: + # At thread shutdown we only have pydevd-related code running (which shouldn't + # be tracked). + py_db.disable_tracing() + py_db.notify_thread_not_alive(thread_id) + + return ret + + +class _NewThreadStartupWithoutTrace: + def __init__(self, original_func, args, kwargs): + self.original_func = original_func + self.args = args + self.kwargs = kwargs + + def __call__(self): + return self.original_func(*self.args, **self.kwargs) + + +_UseNewThreadStartup = _NewThreadStartupWithTrace + + +def _get_threading_modules_to_patch(): + threading_modules_to_patch = [] + + try: + import thread as _thread + except: + import _thread + threading_modules_to_patch.append(_thread) + threading_modules_to_patch.append(threading) + + return threading_modules_to_patch + + +threading_modules_to_patch = _get_threading_modules_to_patch() + + +def patch_thread_module(thread_module): + # Note: this is needed not just for the tracing, but to have an early way to + # notify that a thread was created (i.e.: tests_python.test_debugger_json.test_case_started_exited_threads_protocol) + start_thread_attrs = ["_start_new_thread", "start_new_thread", "start_new"] + start_joinable_attrs = ["start_joinable_thread", "_start_joinable_thread"] + check = start_thread_attrs + start_joinable_attrs + + replace_attrs = [] + for attr in check: + if hasattr(thread_module, attr): + replace_attrs.append(attr) + + if not replace_attrs: + return + + for attr in replace_attrs: + if attr in start_joinable_attrs: + if getattr(thread_module, "_original_start_joinable_thread", None) is None: + _original_start_joinable_thread = ( + thread_module._original_start_joinable_thread + ) = getattr(thread_module, attr) + else: + _original_start_joinable_thread = ( + thread_module._original_start_joinable_thread + ) + else: + if getattr(thread_module, "_original_start_new_thread", None) is None: + _original_start_new_thread = ( + thread_module._original_start_new_thread + ) = getattr(thread_module, attr) + else: + _original_start_new_thread = thread_module._original_start_new_thread + + class ClassWithPydevStartNewThread: + def pydev_start_new_thread(self, function, args=(), kwargs={}): + """ + We need to replace the original thread_module.start_new_thread with this function so that threads started + through it and not through the threading module are properly traced. + """ + return _original_start_new_thread( + _UseNewThreadStartup(function, args, kwargs), () + ) + + class ClassWithPydevStartJoinableThread: + def pydev_start_joinable_thread(self, function, *args, **kwargs): + """ + We need to replace the original thread_module._start_joinable_thread with this function so that threads started + through it and not through the threading module are properly traced. + """ + # Note: only handling the case from threading.py where the handle + # and daemon flags are passed explicitly. This will fail if some user library + # actually passes those without being a keyword argument! + handle = kwargs.pop("handle", None) + daemon = kwargs.pop("daemon", True) + return _original_start_joinable_thread( + _UseNewThreadStartup(function, args, kwargs), + handle=handle, + daemon=daemon, + ) + + # This is a hack for the situation where the thread_module.start_new_thread is declared inside a class, such as the one below + # class F(object): + # start_new_thread = thread_module.start_new_thread + # + # def start_it(self): + # self.start_new_thread(self.function, args, kwargs) + # So, if it's an already bound method, calling self.start_new_thread won't really receive a different 'self' -- it + # does work in the default case because in builtins self isn't passed either. + pydev_start_new_thread = ClassWithPydevStartNewThread().pydev_start_new_thread + pydev_start_joinable_thread = ( + ClassWithPydevStartJoinableThread().pydev_start_joinable_thread + ) + + # We need to replace the original thread_module.start_new_thread with this function so that threads started through + # it and not through the threading module are properly traced. + for attr in replace_attrs: + if attr in start_joinable_attrs: + setattr(thread_module, attr, pydev_start_joinable_thread) + else: + setattr(thread_module, attr, pydev_start_new_thread) + + +def patch_thread_modules(): + for t in threading_modules_to_patch: + patch_thread_module(t) + + +def undo_patch_thread_modules(): + for t in threading_modules_to_patch: + try: + t.start_new_thread = t._original_start_new_thread + except: + pass + + try: + t.start_new = t._original_start_new_thread + except: + pass + + try: + t._start_new_thread = t._original_start_new_thread + except: + pass + + try: + t._start_joinable_thread = t._original_start_joinable_thread + except: + pass + + try: + t.start_joinable_thread = t._original_start_joinable_thread + except: + pass + + +def disable_trace_thread_modules(): + """ + Can be used to temporarily stop tracing threads created with thread.start_new_thread. + """ + global _UseNewThreadStartup + _UseNewThreadStartup = _NewThreadStartupWithoutTrace + + +def enable_trace_thread_modules(): + """ + Can be used to start tracing threads created with thread.start_new_thread again. + """ + global _UseNewThreadStartup + _UseNewThreadStartup = _NewThreadStartupWithTrace + + +def get_original_start_new_thread(threading_module): + try: + return threading_module._original_start_new_thread + except: + return threading_module.start_new_thread diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey_qt.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey_qt.py new file mode 100644 index 000000000..9e3616eba --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey_qt.py @@ -0,0 +1,223 @@ +import os + +from _pydev_bundle import pydev_log +from _pydev_bundle._pydev_saved_modules import threading + + +def set_trace_in_qt(): + from _pydevd_bundle.pydevd_comm import get_global_debugger + + py_db = get_global_debugger() + if py_db is not None: + threading.current_thread() # Create the dummy thread for qt. + py_db.enable_tracing() + + +_patched_qt = False + + +def patch_qt(qt_support_mode): + """ + This method patches qt (PySide2, PySide, PyQt4, PyQt5) so that we have hooks to set the tracing for QThread. + """ + if not qt_support_mode: + return + + if qt_support_mode is True or qt_support_mode == "True": + # do not break backward compatibility + qt_support_mode = "auto" + + if qt_support_mode == "auto": + qt_support_mode = os.getenv("PYDEVD_PYQT_MODE", "auto") + + # Avoid patching more than once + global _patched_qt + if _patched_qt: + return + + pydev_log.debug("Qt support mode: %s", qt_support_mode) + + _patched_qt = True + + if qt_support_mode == "auto": + patch_qt_on_import = None + try: + import PySide2 # @UnresolvedImport @UnusedImport + + qt_support_mode = "pyside2" + except: + try: + qt_support_mode = "pyside" + except: + try: + import PyQt5 # @UnresolvedImport @UnusedImport + + qt_support_mode = "pyqt5" + except: + try: + qt_support_mode = "pyqt4" + except: + return + + if qt_support_mode == "pyside2": + try: + import PySide2.QtCore # @UnresolvedImport + + _internal_patch_qt(PySide2.QtCore, qt_support_mode) + except: + return + + elif qt_support_mode == "pyside": + try: + import PySide.QtCore # @UnresolvedImport + + _internal_patch_qt(PySide.QtCore, qt_support_mode) + except: + return + + elif qt_support_mode == "pyqt5": + try: + import PyQt5.QtCore # @UnresolvedImport + + _internal_patch_qt(PyQt5.QtCore) + except: + return + + elif qt_support_mode == "pyqt4": + # Ok, we have an issue here: + # PyDev-452: Selecting PyQT API version using sip.setapi fails in debug mode + # http://pyqt.sourceforge.net/Docs/PyQt4/incompatible_apis.html + # Mostly, if the user uses a different API version (i.e.: v2 instead of v1), + # that has to be done before importing PyQt4 modules (PySide/PyQt5 don't have this issue + # as they only implements v2). + patch_qt_on_import = "PyQt4" + + def get_qt_core_module(): + import PyQt4.QtCore # @UnresolvedImport + + return PyQt4.QtCore + + _patch_import_to_patch_pyqt_on_import(patch_qt_on_import, get_qt_core_module) + + else: + raise ValueError("Unexpected qt support mode: %s" % (qt_support_mode,)) + + +def _patch_import_to_patch_pyqt_on_import(patch_qt_on_import, get_qt_core_module): + # I don't like this approach very much as we have to patch __import__, but I like even less + # asking the user to configure something in the client side... + # So, our approach is to patch PyQt4 right before the user tries to import it (at which + # point he should've set the sip api version properly already anyways). + + pydev_log.debug("Setting up Qt post-import monkeypatch.") + + dotted = patch_qt_on_import + "." + original_import = __import__ + + from _pydev_bundle._pydev_sys_patch import ( + cancel_patches_in_sys_module, + patch_reload, + patch_sys_module, + ) + + patch_sys_module() + patch_reload() + + def patched_import(name, *args, **kwargs): + if patch_qt_on_import == name or name.startswith(dotted): + builtins.__import__ = original_import + cancel_patches_in_sys_module() + _internal_patch_qt( + get_qt_core_module() + ) # Patch it only when the user would import the qt module + return original_import(name, *args, **kwargs) + + import builtins # Py3 + + builtins.__import__ = patched_import + + +def _internal_patch_qt(QtCore, qt_support_mode="auto"): + pydev_log.debug("Patching Qt: %s", QtCore) + + _original_thread_init = QtCore.QThread.__init__ + _original_runnable_init = QtCore.QRunnable.__init__ + _original_QThread = QtCore.QThread + + class FuncWrapper: + def __init__(self, original): + self._original = original + + def __call__(self, *args, **kwargs): + set_trace_in_qt() + return self._original(*args, **kwargs) + + class StartedSignalWrapper( + QtCore.QObject + ): # Wrapper for the QThread.started signal + try: + _signal = QtCore.Signal() # @UndefinedVariable + except: + _signal = QtCore.pyqtSignal() # @UndefinedVariable + + def __init__(self, thread, original_started): + QtCore.QObject.__init__(self) + self.thread = thread + self.original_started = original_started + if qt_support_mode in ("pyside", "pyside2"): + self._signal = original_started + else: + self._signal.connect(self._on_call) + self.original_started.connect(self._signal) + + def connect(self, func, *args, **kwargs): + if qt_support_mode in ("pyside", "pyside2"): + return self._signal.connect(FuncWrapper(func), *args, **kwargs) + else: + return self._signal.connect(func, *args, **kwargs) + + def disconnect(self, *args, **kwargs): + return self._signal.disconnect(*args, **kwargs) + + def emit(self, *args, **kwargs): + return self._signal.emit(*args, **kwargs) + + def _on_call(self, *args, **kwargs): + set_trace_in_qt() + + class ThreadWrapper(QtCore.QThread): # Wrapper for QThread + def __init__(self, *args, **kwargs): + _original_thread_init(self, *args, **kwargs) + + # In PyQt5 the program hangs when we try to call original run method of QThread class. + # So we need to distinguish instances of QThread class and instances of QThread inheritors. + if self.__class__.run == _original_QThread.run: + self.run = self._exec_run + else: + self._original_run = self.run + self.run = self._new_run + self._original_started = self.started + self.started = StartedSignalWrapper(self, self.started) + + def _exec_run(self): + set_trace_in_qt() + self.exec_() + return None + + def _new_run(self): + set_trace_in_qt() + return self._original_run() + + class RunnableWrapper(QtCore.QRunnable): # Wrapper for QRunnable + def __init__(self, *args, **kwargs): + _original_runnable_init(self, *args, **kwargs) + + self._original_run = self.run + self.run = self._new_run + + def _new_run(self): + set_trace_in_qt() + return self._original_run() + + QtCore.QThread = ThreadWrapper + QtCore.QRunnable = RunnableWrapper diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_override.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_override.py new file mode 100644 index 000000000..ecf377e5e --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_override.py @@ -0,0 +1,37 @@ +def overrides(method): + """ + Meant to be used as + + class B: + @overrides(A.m1) + def m1(self): + pass + """ + + def wrapper(func): + if func.__name__ != method.__name__: + msg = "Wrong @override: %r expected, but overwriting %r." + msg = msg % (func.__name__, method.__name__) + raise AssertionError(msg) + + if func.__doc__ is None: + func.__doc__ = method.__doc__ + + return func + + return wrapper + + +def implements(method): + def wrapper(func): + if func.__name__ != method.__name__: + msg = "Wrong @implements: %r expected, but implementing %r." + msg = msg % (func.__name__, method.__name__) + raise AssertionError(msg) + + if func.__doc__ is None: + func.__doc__ = method.__doc__ + + return func + + return wrapper diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_umd.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_umd.py new file mode 100644 index 000000000..71650b814 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_umd.py @@ -0,0 +1,186 @@ +""" +The UserModuleDeleter and runfile methods are copied from +Spyder and carry their own license agreement. +http://code.google.com/p/spyderlib/source/browse/spyderlib/widgets/externalshell/sitecustomize.py + +Spyder License Agreement (MIT License) +-------------------------------------- + +Copyright (c) 2009-2012 Pierre Raybaut + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. +""" + +import os +import sys + +from _pydev_bundle._pydev_execfile import execfile + + +# The following classes and functions are mainly intended to be used from +# an interactive Python session +class UserModuleDeleter: + """ + User Module Deleter (UMD) aims at deleting user modules + to force Python to deeply reload them during import + + pathlist [list]: ignore list in terms of module path + namelist [list]: ignore list in terms of module name + """ + + def __init__(self, namelist=None, pathlist=None): + if namelist is None: + namelist = [] + self.namelist = namelist + if pathlist is None: + pathlist = [] + self.pathlist = pathlist + try: + # ignore all files in org.python.pydev/pysrc + + import pydev_pysrc + + self.pathlist.append(os.path.dirname(pydev_pysrc.__file__)) + except: + pass + self.previous_modules = list(sys.modules.keys()) + + def is_module_ignored(self, modname, modpath): + for path in [sys.prefix] + self.pathlist: + if modpath.startswith(path): + return True + else: + return set(modname.split(".")) & set(self.namelist) + + def run(self, verbose=False): + """ + Del user modules to force Python to deeply reload them + + Do not del modules which are considered as system modules, i.e. + modules installed in subdirectories of Python interpreter's binary + Do not del C modules + """ + log = [] + modules_copy = dict(sys.modules) + for modname, module in modules_copy.items(): + if modname == "aaaaa": + print(modname, module) + print(self.previous_modules) + if modname not in self.previous_modules: + modpath = getattr(module, "__file__", None) + if modpath is None: + # *module* is a C module that is statically linked into the + # interpreter. There is no way to know its path, so we + # choose to ignore it. + continue + if not self.is_module_ignored(modname, modpath): + log.append(modname) + del sys.modules[modname] + if verbose and log: + print( + "\x1b[4;33m%s\x1b[24m%s\x1b[0m" + % ("UMD has deleted", ": " + ", ".join(log)) + ) + + +__umd__ = None + +_get_globals_callback = None + + +def _set_globals_function(get_globals): + global _get_globals_callback + _get_globals_callback = get_globals + + +def _get_globals(): + """Return current Python interpreter globals namespace""" + if _get_globals_callback is not None: + return _get_globals_callback() + else: + try: + from __main__ import __dict__ as namespace + except ImportError: + try: + # The import fails on IronPython + import __main__ + + namespace = __main__.__dict__ + except: + namespace + shell = namespace.get("__ipythonshell__") + if shell is not None and hasattr(shell, "user_ns"): + # IPython 0.12+ kernel + return shell.user_ns + else: + # Python interpreter + return namespace + return namespace + + +def runfile(filename, args=None, wdir=None, namespace=None): + """ + Run filename + args: command line arguments (string) + wdir: working directory + """ + try: + if hasattr(filename, "decode"): + filename = filename.decode("utf-8") + except (UnicodeError, TypeError): + pass + global __umd__ + if os.environ.get("PYDEV_UMD_ENABLED", "").lower() == "true": + if __umd__ is None: + namelist = os.environ.get("PYDEV_UMD_NAMELIST", None) + if namelist is not None: + namelist = namelist.split(",") + __umd__ = UserModuleDeleter(namelist=namelist) + else: + verbose = os.environ.get("PYDEV_UMD_VERBOSE", "").lower() == "true" + __umd__.run(verbose=verbose) + if args is not None and not isinstance(args, (bytes, str)): + raise TypeError("expected a character buffer object") + if namespace is None: + namespace = _get_globals() + if "__file__" in namespace: + old_file = namespace["__file__"] + else: + old_file = None + namespace["__file__"] = filename + sys.argv = [filename] + if args is not None: + for arg in args.split(): + sys.argv.append(arg) + if wdir is not None: + try: + if hasattr(wdir, "decode"): + wdir = wdir.decode("utf-8") + except (UnicodeError, TypeError): + pass + os.chdir(wdir) + execfile(filename, namespace) + sys.argv = [""] + if old_file is None: + del namespace["__file__"] + else: + namespace["__file__"] = old_file diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_versioncheck.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_versioncheck.py new file mode 100644 index 000000000..fb7372d6f --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_versioncheck.py @@ -0,0 +1,16 @@ +import sys + + +def versionok_for_gui(): + """Return True if running Python is suitable for GUI Event Integration and deeper IPython integration""" + # We require Python 2.6+ ... + if sys.hexversion < 0x02060000: + return False + # Or Python 3.2+ + if sys.hexversion >= 0x03000000 and sys.hexversion < 0x03020000: + return False + # Not supported under Jython nor IronPython + if sys.platform.startswith("java") or sys.platform.startswith("cli"): + return False + + return True diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_runfiles/__init__.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_runfiles/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles.py new file mode 100644 index 000000000..f68566b9c --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles.py @@ -0,0 +1,959 @@ +import fnmatch +import json +import os.path +import re +import time + +from _pydevd_bundle.pydevd_constants import * # @UnusedWildImport + +from _pydev_runfiles.pydev_runfiles_coverage import start_coverage_support + + +# ======================================================================================================================= +# Configuration +# ======================================================================================================================= +class Configuration: + def __init__( + self, + files_or_dirs="", + verbosity=2, + include_tests=None, + tests=None, + port=None, + files_to_tests=None, + jobs=1, + split_jobs="tests", + coverage_output_dir=None, + coverage_include=None, + coverage_output_file=None, + exclude_files=None, + exclude_tests=None, + include_files=None, + django=False, + ): + self.files_or_dirs = files_or_dirs + self.verbosity = verbosity + self.include_tests = include_tests + self.tests = tests + self.port = port + self.files_to_tests = files_to_tests + self.jobs = jobs + self.split_jobs = split_jobs + self.django = django + + if include_tests: + assert isinstance(include_tests, (list, tuple)) + + if exclude_files: + assert isinstance(exclude_files, (list, tuple)) + + if exclude_tests: + assert isinstance(exclude_tests, (list, tuple)) + + self.exclude_files = exclude_files + self.include_files = include_files + self.exclude_tests = exclude_tests + + self.coverage_output_dir = coverage_output_dir + self.coverage_include = coverage_include + self.coverage_output_file = coverage_output_file + + def __str__(self): + return """Configuration + - files_or_dirs: %s + - verbosity: %s + - tests: %s + - port: %s + - files_to_tests: %s + - jobs: %s + - split_jobs: %s + + - include_files: %s + - include_tests: %s + + - exclude_files: %s + - exclude_tests: %s + + - coverage_output_dir: %s + - coverage_include_dir: %s + - coverage_output_file: %s + + - django: %s +""" % ( + self.files_or_dirs, + self.verbosity, + self.tests, + self.port, + self.files_to_tests, + self.jobs, + self.split_jobs, + self.include_files, + self.include_tests, + self.exclude_files, + self.exclude_tests, + self.coverage_output_dir, + self.coverage_include, + self.coverage_output_file, + self.django, + ) + + +# ======================================================================================================================= +# parse_cmdline +# ======================================================================================================================= +def parse_cmdline(argv=None): + """ + Parses command line and returns test directories, verbosity, test filter and test suites + + usage: + runfiles.py -v|--verbosity -t|--tests dirs|files + + Multiprocessing options: + jobs=number (with the number of jobs to be used to run the tests) + split_jobs='module'|'tests' + if == module, a given job will always receive all the tests from a module + if == tests, the tests will be split independently of their originating module (default) + + --exclude_files = comma-separated list of patterns with files to exclude (fnmatch style) + --include_files = comma-separated list of patterns with files to include (fnmatch style) + --exclude_tests = comma-separated list of patterns with test names to exclude (fnmatch style) + + Note: if --tests is given, --exclude_files, --include_files and --exclude_tests are ignored! + """ + if argv is None: + argv = sys.argv + + verbosity = 2 + include_tests = None + tests = None + port = None + jobs = 1 + split_jobs = "tests" + files_to_tests = {} + coverage_output_dir = None + coverage_include = None + exclude_files = None + exclude_tests = None + include_files = None + django = False + + from _pydev_bundle._pydev_getopt import gnu_getopt + + optlist, dirs = gnu_getopt( + argv[1:], + "", + [ + "verbosity=", + "tests=", + "port=", + "config_file=", + "jobs=", + "split_jobs=", + "include_tests=", + "include_files=", + "exclude_files=", + "exclude_tests=", + "coverage_output_dir=", + "coverage_include=", + "django=", + ], + ) + + for opt, value in optlist: + if opt in ("-v", "--verbosity"): + verbosity = value + + elif opt in ("-p", "--port"): + port = int(value) + + elif opt in ("-j", "--jobs"): + jobs = int(value) + + elif opt in ("-s", "--split_jobs"): + split_jobs = value + if split_jobs not in ("module", "tests"): + raise AssertionError( + 'Expected split to be either "module" or "tests". Was :%s' + % (split_jobs,) + ) + + elif opt in ( + "-d", + "--coverage_output_dir", + ): + coverage_output_dir = value.strip() + + elif opt in ( + "-i", + "--coverage_include", + ): + coverage_include = value.strip() + + elif opt in ("-I", "--include_tests"): + include_tests = value.split(",") + + elif opt in ("-E", "--exclude_files"): + exclude_files = value.split(",") + + elif opt in ("-F", "--include_files"): + include_files = value.split(",") + + elif opt in ("-e", "--exclude_tests"): + exclude_tests = value.split(",") + + elif opt in ("-t", "--tests"): + tests = value.split(",") + + elif opt in ("--django",): + django = value.strip() in ["true", "True", "1"] + + elif opt in ("-c", "--config_file"): + config_file = value.strip() + if os.path.exists(config_file): + f = open(config_file) + try: + config_file_contents = f.read() + finally: + f.close() + + if config_file_contents: + config_file_contents = config_file_contents.strip() + + if config_file_contents: + for line in config_file_contents.splitlines(): + file_and_test = line.split("|") + if len(file_and_test) == 2: + file, test = file_and_test + if file in files_to_tests: + files_to_tests[file].append(test) + else: + files_to_tests[file] = [test] + + else: + sys.stderr.write("Could not find config file: %s\n" % (config_file,)) + + filter_tests_env_var = os.environ.get("PYDEV_RUNFILES_FILTER_TESTS", None) + if filter_tests_env_var: + loaded = json.loads(filter_tests_env_var) + include = loaded["include"] + for path, name in include: + existing = files_to_tests.get(path) + if not existing: + existing = files_to_tests[path] = [] + existing.append(name) + # Note: at this point exclude or `*` is not handled. + # Clients need to do all the filtering on their side (could + # change to have `exclude` and support `*` entries). + + if type([]) != type(dirs): + dirs = [dirs] + + ret_dirs = [] + for d in dirs: + if "|" in d: + # paths may come from the ide separated by | + ret_dirs.extend(d.split("|")) + else: + ret_dirs.append(d) + + verbosity = int(verbosity) + + if tests: + if verbosity > 4: + sys.stdout.write( + "--tests provided. Ignoring --exclude_files, --exclude_tests and --include_files\n" + ) + exclude_files = exclude_tests = include_files = None + + config = Configuration( + ret_dirs, + verbosity, + include_tests, + tests, + port, + files_to_tests, + jobs, + split_jobs, + coverage_output_dir, + coverage_include, + exclude_files=exclude_files, + exclude_tests=exclude_tests, + include_files=include_files, + django=django, + ) + + if verbosity > 5: + sys.stdout.write(str(config) + "\n") + return config + + +# ======================================================================================================================= +# PydevTestRunner +# ======================================================================================================================= +class PydevTestRunner: + """finds and runs a file or directory of files as a unit test""" + + __py_extensions = ["*.py", "*.pyw"] + __exclude_files = ["__init__.*"] + + # Just to check that only this attributes will be written to this file + __slots__ = [ + "verbosity", # Always used + "files_to_tests", # If this one is given, the ones below are not used + "files_or_dirs", # Files or directories received in the command line + "include_tests", # The filter used to collect the tests + "tests", # Strings with the tests to be run + "jobs", # Integer with the number of jobs that should be used to run the test cases + "split_jobs", # String with 'tests' or 'module' (how should the jobs be split) + "configuration", + "coverage", + ] + + def __init__(self, configuration): + self.verbosity = configuration.verbosity + + self.jobs = configuration.jobs + self.split_jobs = configuration.split_jobs + + files_to_tests = configuration.files_to_tests + if files_to_tests: + self.files_to_tests = files_to_tests + self.files_or_dirs = list(files_to_tests.keys()) + self.tests = None + else: + self.files_to_tests = {} + self.files_or_dirs = configuration.files_or_dirs + self.tests = configuration.tests + + self.configuration = configuration + self.__adjust_path() + + def __adjust_path(self): + """Add the current file or directory to the python path""" + path_to_append = None + for n in range(len(self.files_or_dirs)): + dir_name = self.__unixify(self.files_or_dirs[n]) + if os.path.isdir(dir_name): + if not dir_name.endswith("/"): + self.files_or_dirs[n] = dir_name + "/" + path_to_append = os.path.normpath(dir_name) + elif os.path.isfile(dir_name): + path_to_append = os.path.dirname(dir_name) + else: + if not os.path.exists(dir_name): + block_line = "*" * 120 + sys.stderr.write( + "\n%s\n* PyDev test runner error: %s does not exist.\n%s\n" + % (block_line, dir_name, block_line) + ) + return + msg = "unknown type. \n%s\nshould be file or a directory.\n" % ( + dir_name + ) + raise RuntimeError(msg) + if path_to_append is not None: + # Add it as the last one (so, first things are resolved against the default dirs and + # if none resolves, then we try a relative import). + sys.path.append(path_to_append) + + def __is_valid_py_file(self, fname): + """Tests that a particular file contains the proper file extension + and is not in the list of files to exclude + """ + is_valid_fname = 0 + for invalid_fname in self.__class__.__exclude_files: + is_valid_fname += int(not fnmatch.fnmatch(fname, invalid_fname)) + if_valid_ext = 0 + for ext in self.__class__.__py_extensions: + if_valid_ext += int(fnmatch.fnmatch(fname, ext)) + return is_valid_fname > 0 and if_valid_ext > 0 + + def __unixify(self, s): + """Stupid windows. converts the backslash to forwardslash for consistency""" + return os.path.normpath(s).replace(os.sep, "/") + + def __importify(self, s, dir=False): + """Turns directory separators into dots and removes the ".py*" extension + so the string can be used as import statement + """ + if not dir: + dirname, fname = os.path.split(s) + + if fname.count(".") > 1: + # if there's a file named xxx.xx.py, it is not a valid module, so, let's not load it... + return + + imp_stmt_pieces = [ + dirname.replace("\\", "/").replace("/", "."), + os.path.splitext(fname)[0], + ] + + if len(imp_stmt_pieces[0]) == 0: + imp_stmt_pieces = imp_stmt_pieces[1:] + + return ".".join(imp_stmt_pieces) + + else: # handle dir + return s.replace("\\", "/").replace("/", ".") + + def __add_files(self, pyfiles, root, files): + """If files match, appends them to pyfiles. used by os.path.walk fcn""" + for fname in files: + if self.__is_valid_py_file(fname): + name_without_base_dir = self.__unixify(os.path.join(root, fname)) + pyfiles.append(name_without_base_dir) + + def find_import_files(self): + """Return a list of files to import""" + if self.files_to_tests: + pyfiles = self.files_to_tests.keys() + else: + pyfiles = [] + + for base_dir in self.files_or_dirs: + if os.path.isdir(base_dir): + for root, dirs, files in os.walk(base_dir): + # Note: handling directories that should be excluded from the search because + # they don't have __init__.py + exclude = {} + for d in dirs: + for init in [ + "__init__.py", + "__init__.pyo", + "__init__.pyc", + "__init__.pyw", + "__init__$py.class", + ]: + if os.path.exists( + os.path.join(root, d, init).replace("\\", "/") + ): + break + else: + exclude[d] = 1 + + if exclude: + new = [] + for d in dirs: + if d not in exclude: + new.append(d) + + dirs[:] = new + + self.__add_files(pyfiles, root, files) + + elif os.path.isfile(base_dir): + pyfiles.append(base_dir) + + if self.configuration.exclude_files or self.configuration.include_files: + ret = [] + for f in pyfiles: + add = True + basename = os.path.basename(f) + if self.configuration.include_files: + add = False + + for pat in self.configuration.include_files: + if fnmatch.fnmatchcase(basename, pat): + add = True + break + + if not add: + if self.verbosity > 3: + sys.stdout.write( + "Skipped file: %s (did not match any include_files pattern: %s)\n" + % (f, self.configuration.include_files) + ) + + elif self.configuration.exclude_files: + for pat in self.configuration.exclude_files: + if fnmatch.fnmatchcase(basename, pat): + if self.verbosity > 3: + sys.stdout.write( + "Skipped file: %s (matched exclude_files pattern: %s)\n" + % (f, pat) + ) + + elif self.verbosity > 2: + sys.stdout.write("Skipped file: %s\n" % (f,)) + + add = False + break + + if add: + if self.verbosity > 3: + sys.stdout.write("Adding file: %s for test discovery.\n" % (f,)) + ret.append(f) + + pyfiles = ret + + return pyfiles + + def __get_module_from_str(self, modname, print_exception, pyfile): + """Import the module in the given import path. + * Returns the "final" module, so importing "coilib40.subject.visu" + returns the "visu" module, not the "coilib40" as returned by __import__ + """ + try: + mod = __import__(modname) + for part in modname.split(".")[1:]: + mod = getattr(mod, part) + return mod + except: + if print_exception: + from _pydevd_bundle import pydevd_io + + from _pydev_runfiles import pydev_runfiles_xml_rpc + + buf_err = pydevd_io.start_redirect( + keep_original_redirection=True, std="stderr" + ) + buf_out = pydevd_io.start_redirect( + keep_original_redirection=True, std="stdout" + ) + try: + import traceback + + traceback.print_exc() + sys.stderr.write( + "ERROR: Module: %s could not be imported (file: %s).\n" + % (modname, pyfile) + ) + finally: + pydevd_io.end_redirect("stderr") + pydevd_io.end_redirect("stdout") + + pydev_runfiles_xml_rpc.notifyTest( + "error", buf_out.getvalue(), buf_err.getvalue(), pyfile, modname, 0 + ) + + return None + + def remove_duplicates_keeping_order(self, seq): + seen = set() + seen_add = seen.add + return [x for x in seq if not (x in seen or seen_add(x))] + + def find_modules_from_files(self, pyfiles): + """Returns a list of modules given a list of files""" + # let's make sure that the paths we want are in the pythonpath... + imports = [(s, self.__importify(s)) for s in pyfiles] + + sys_path = [os.path.normpath(path) for path in sys.path] + sys_path = self.remove_duplicates_keeping_order(sys_path) + + system_paths = [] + for s in sys_path: + system_paths.append(self.__importify(s, True)) + + ret = [] + for pyfile, imp in imports: + if imp is None: + continue # can happen if a file is not a valid module + choices = [] + for s in system_paths: + if imp.startswith(s): + add = imp[len(s) + 1 :] + if add: + choices.append(add) + # sys.stdout.write(' ' + add + ' ') + + if not choices: + sys.stdout.write("PYTHONPATH not found for file: %s\n" % imp) + else: + for i, import_str in enumerate(choices): + print_exception = i == len(choices) - 1 + mod = self.__get_module_from_str( + import_str, print_exception, pyfile + ) + if mod is not None: + ret.append((pyfile, mod, import_str)) + break + + return ret + + # =================================================================================================================== + # GetTestCaseNames + # =================================================================================================================== + class GetTestCaseNames: + """Yes, we need a class for that (cannot use outer context on jython 2.1)""" + + def __init__(self, accepted_classes, accepted_methods): + self.accepted_classes = accepted_classes + self.accepted_methods = accepted_methods + + def __call__(self, testCaseClass): + """Return a sorted sequence of method names found within testCaseClass""" + testFnNames = [] + className = testCaseClass.__name__ + + if className in self.accepted_classes: + for attrname in dir(testCaseClass): + # If a class is chosen, we select all the 'test' methods' + if attrname.startswith("test") and hasattr( + getattr(testCaseClass, attrname), "__call__" + ): + testFnNames.append(attrname) + + else: + for attrname in dir(testCaseClass): + # If we have the class+method name, we must do a full check and have an exact match. + if className + "." + attrname in self.accepted_methods: + if hasattr(getattr(testCaseClass, attrname), "__call__"): + testFnNames.append(attrname) + + # sorted() is not available in jython 2.1 + testFnNames.sort() + return testFnNames + + def _decorate_test_suite(self, suite, pyfile, module_name): + import unittest + + if isinstance(suite, unittest.TestSuite): + add = False + suite.__pydev_pyfile__ = pyfile + suite.__pydev_module_name__ = module_name + + for t in suite._tests: + t.__pydev_pyfile__ = pyfile + t.__pydev_module_name__ = module_name + if self._decorate_test_suite(t, pyfile, module_name): + add = True + + return add + + elif isinstance(suite, unittest.TestCase): + return True + + else: + return False + + def find_tests_from_modules(self, file_and_modules_and_module_name): + """Returns the unittests given a list of modules""" + # Use our own suite! + import unittest + + from _pydev_runfiles import pydev_runfiles_unittest + + unittest.TestLoader.suiteClass = pydev_runfiles_unittest.PydevTestSuite + loader = unittest.TestLoader() + + ret = [] + if self.files_to_tests: + for pyfile, m, module_name in file_and_modules_and_module_name: + accepted_classes = {} + accepted_methods = {} + tests = self.files_to_tests[pyfile] + for t in tests: + accepted_methods[t] = t + + loader.getTestCaseNames = self.GetTestCaseNames( + accepted_classes, accepted_methods + ) + + suite = loader.loadTestsFromModule(m) + if self._decorate_test_suite(suite, pyfile, module_name): + ret.append(suite) + return ret + + if self.tests: + accepted_classes = {} + accepted_methods = {} + + for t in self.tests: + splitted = t.split(".") + if len(splitted) == 1: + accepted_classes[t] = t + + elif len(splitted) == 2: + accepted_methods[t] = t + + loader.getTestCaseNames = self.GetTestCaseNames( + accepted_classes, accepted_methods + ) + + for pyfile, m, module_name in file_and_modules_and_module_name: + suite = loader.loadTestsFromModule(m) + if self._decorate_test_suite(suite, pyfile, module_name): + ret.append(suite) + + return ret + + def filter_tests(self, test_objs, internal_call=False): + """Based on a filter name, only return those tests that have + the test case names that match + """ + import unittest + + if not internal_call: + if ( + not self.configuration.include_tests + and not self.tests + and not self.configuration.exclude_tests + ): + # No need to filter if we have nothing to filter! + return test_objs + + if self.verbosity > 1: + if self.configuration.include_tests: + sys.stdout.write( + "Tests to include: %s\n" % (self.configuration.include_tests,) + ) + + if self.tests: + sys.stdout.write("Tests to run: %s\n" % (self.tests,)) + + if self.configuration.exclude_tests: + sys.stdout.write( + "Tests to exclude: %s\n" % (self.configuration.exclude_tests,) + ) + + test_suite = [] + for test_obj in test_objs: + if isinstance(test_obj, unittest.TestSuite): + # Note: keep the suites as they are and just 'fix' the tests (so, don't use the iter_tests). + if test_obj._tests: + test_obj._tests = self.filter_tests(test_obj._tests, True) + if ( + test_obj._tests + ): # Only add the suite if we still have tests there. + test_suite.append(test_obj) + + elif isinstance(test_obj, unittest.TestCase): + try: + testMethodName = test_obj._TestCase__testMethodName + except AttributeError: + # changed in python 2.5 + testMethodName = test_obj._testMethodName + + add = True + if self.configuration.exclude_tests: + for pat in self.configuration.exclude_tests: + if fnmatch.fnmatchcase(testMethodName, pat): + if self.verbosity > 3: + sys.stdout.write( + "Skipped test: %s (matched exclude_tests pattern: %s)\n" + % (testMethodName, pat) + ) + + elif self.verbosity > 2: + sys.stdout.write( + "Skipped test: %s\n" % (testMethodName,) + ) + + add = False + break + + if add: + if self.__match_tests(self.tests, test_obj, testMethodName): + include = True + if self.configuration.include_tests: + include = False + for pat in self.configuration.include_tests: + if fnmatch.fnmatchcase(testMethodName, pat): + include = True + break + if include: + test_suite.append(test_obj) + else: + if self.verbosity > 3: + sys.stdout.write( + "Skipped test: %s (did not match any include_tests pattern %s)\n" + % ( + testMethodName, + self.configuration.include_tests, + ) + ) + return test_suite + + def iter_tests(self, test_objs): + # Note: not using yield because of Jython 2.1. + import unittest + + tests = [] + for test_obj in test_objs: + if isinstance(test_obj, unittest.TestSuite): + tests.extend(self.iter_tests(test_obj._tests)) + + elif isinstance(test_obj, unittest.TestCase): + tests.append(test_obj) + return tests + + def list_test_names(self, test_objs): + names = [] + for tc in self.iter_tests(test_objs): + try: + testMethodName = tc._TestCase__testMethodName + except AttributeError: + # changed in python 2.5 + testMethodName = tc._testMethodName + names.append(testMethodName) + return names + + def __match_tests(self, tests, test_case, test_method_name): + if not tests: + return 1 + + for t in tests: + class_and_method = t.split(".") + if len(class_and_method) == 1: + # only class name + if class_and_method[0] == test_case.__class__.__name__: + return 1 + + elif len(class_and_method) == 2: + if ( + class_and_method[0] == test_case.__class__.__name__ + and class_and_method[1] == test_method_name + ): + return 1 + + return 0 + + def __match(self, filter_list, name): + """Returns whether a test name matches the test filter""" + if filter_list is None: + return 1 + for f in filter_list: + if re.match(f, name): + return 1 + return 0 + + def run_tests(self, handle_coverage=True): + """Runs all tests""" + sys.stdout.write("Finding files... ") + files = self.find_import_files() + if self.verbosity > 3: + sys.stdout.write("%s ... done.\n" % (self.files_or_dirs)) + else: + sys.stdout.write("done.\n") + sys.stdout.write("Importing test modules ... ") + + if self.configuration.django: + import django + + if hasattr(django, "setup"): + django.setup() + + if handle_coverage: + coverage_files, coverage = start_coverage_support(self.configuration) + + file_and_modules_and_module_name = self.find_modules_from_files(files) + sys.stdout.write("done.\n") + + all_tests = self.find_tests_from_modules(file_and_modules_and_module_name) + all_tests = self.filter_tests(all_tests) + + from _pydev_runfiles import pydev_runfiles_unittest + + test_suite = pydev_runfiles_unittest.PydevTestSuite(all_tests) + from _pydev_runfiles import pydev_runfiles_xml_rpc + + pydev_runfiles_xml_rpc.notifyTestsCollected(test_suite.countTestCases()) + + start_time = time.time() + + def run_tests(): + executed_in_parallel = False + if self.jobs > 1: + from _pydev_runfiles import pydev_runfiles_parallel + + # What may happen is that the number of jobs needed is lower than the number of jobs requested + # (e.g.: 2 jobs were requested for running 1 test) -- in which case execute_tests_in_parallel will + # return False and won't run any tests. + executed_in_parallel = ( + pydev_runfiles_parallel.execute_tests_in_parallel( + all_tests, + self.jobs, + self.split_jobs, + self.verbosity, + coverage_files, + self.configuration.coverage_include, + ) + ) + + if not executed_in_parallel: + # If in coverage, we don't need to pass anything here (coverage is already enabled for this execution). + runner = pydev_runfiles_unittest.PydevTextTestRunner( + stream=sys.stdout, descriptions=1, verbosity=self.verbosity + ) + sys.stdout.write("\n") + runner.run(test_suite) + + if self.configuration.django: + get_django_test_suite_runner()(run_tests).run_tests([]) + else: + run_tests() + + if handle_coverage: + coverage.stop() + coverage.save() + + total_time = "Finished in: %.2f secs." % (time.time() - start_time,) + pydev_runfiles_xml_rpc.notifyTestRunFinished(total_time) + + +DJANGO_TEST_SUITE_RUNNER = None + + +def get_django_test_suite_runner(): + global DJANGO_TEST_SUITE_RUNNER + if DJANGO_TEST_SUITE_RUNNER: + return DJANGO_TEST_SUITE_RUNNER + try: + # django >= 1.8 + import django + from django.test.runner import DiscoverRunner + + class MyDjangoTestSuiteRunner(DiscoverRunner): + def __init__(self, on_run_suite): + django.setup() + DiscoverRunner.__init__(self) + self.on_run_suite = on_run_suite + + def build_suite(self, *args, **kwargs): + pass + + def suite_result(self, *args, **kwargs): + pass + + def run_suite(self, *args, **kwargs): + self.on_run_suite() + + except: + # django < 1.8 + try: + from django.test.simple import DjangoTestSuiteRunner + except: + + class DjangoTestSuiteRunner: + def __init__(self): + pass + + def run_tests(self, *args, **kwargs): + raise AssertionError( + "Unable to run suite with django.test.runner.DiscoverRunner nor django.test.simple.DjangoTestSuiteRunner because it couldn't be imported." + ) + + class MyDjangoTestSuiteRunner(DjangoTestSuiteRunner): + def __init__(self, on_run_suite): + DjangoTestSuiteRunner.__init__(self) + self.on_run_suite = on_run_suite + + def build_suite(self, *args, **kwargs): + pass + + def suite_result(self, *args, **kwargs): + pass + + def run_suite(self, *args, **kwargs): + self.on_run_suite() + + DJANGO_TEST_SUITE_RUNNER = MyDjangoTestSuiteRunner + return DJANGO_TEST_SUITE_RUNNER + + +# ======================================================================================================================= +# main +# ======================================================================================================================= +def main(configuration): + PydevTestRunner(configuration).run_tests() diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_coverage.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_coverage.py new file mode 100644 index 000000000..672358e2d --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_coverage.py @@ -0,0 +1,90 @@ +import os.path +import sys + +from _pydevd_bundle.pydevd_constants import Null + + +# ======================================================================================================================= +# get_coverage_files +# ======================================================================================================================= +def get_coverage_files(coverage_output_dir, number_of_files): + base_dir = coverage_output_dir + ret = [] + i = 0 + while len(ret) < number_of_files: + while True: + f = os.path.join(base_dir, ".coverage.%s" % i) + i += 1 + if not os.path.exists(f): + ret.append(f) + break # Break only inner for. + return ret + + +# ======================================================================================================================= +# start_coverage_support +# ======================================================================================================================= +def start_coverage_support(configuration): + return start_coverage_support_from_params( + configuration.coverage_output_dir, + configuration.coverage_output_file, + configuration.jobs, + configuration.coverage_include, + ) + + +# ======================================================================================================================= +# start_coverage_support_from_params +# ======================================================================================================================= +def start_coverage_support_from_params( + coverage_output_dir, coverage_output_file, jobs, coverage_include +): + coverage_files = [] + coverage_instance = Null() + if coverage_output_dir or coverage_output_file: + try: + import coverage # @UnresolvedImport + except: + sys.stderr.write("Error: coverage module could not be imported\n") + sys.stderr.write( + "Please make sure that the coverage module (http://nedbatchelder.com/code/coverage/)\n" + ) + sys.stderr.write( + "is properly installed in your interpreter: %s\n" % (sys.executable,) + ) + + import traceback + + traceback.print_exc() + else: + if coverage_output_dir: + if not os.path.exists(coverage_output_dir): + sys.stderr.write( + "Error: directory for coverage output (%s) does not exist.\n" + % (coverage_output_dir,) + ) + + elif not os.path.isdir(coverage_output_dir): + sys.stderr.write( + "Error: expected (%s) to be a directory.\n" + % (coverage_output_dir,) + ) + + else: + n = jobs + if n <= 0: + n += 1 + n += 1 # Add 1 more for the current process (which will do the initial import). + coverage_files = get_coverage_files(coverage_output_dir, n) + os.environ["COVERAGE_FILE"] = coverage_files.pop(0) + + coverage_instance = coverage.coverage(source=[coverage_include]) + coverage_instance.start() + + elif coverage_output_file: + # Client of parallel run. + os.environ["COVERAGE_FILE"] = coverage_output_file + coverage_instance = coverage.coverage(source=[coverage_include]) + coverage_instance.start() + + return coverage_files, coverage_instance diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_nose.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_nose.py new file mode 100644 index 000000000..058fc4f3a --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_nose.py @@ -0,0 +1,213 @@ +import sys +import time +import traceback +from contextlib import contextmanager +from io import StringIO + +from nose.plugins.base import Plugin # @UnresolvedImport +from nose.plugins.multiprocess import MultiProcessTestRunner # @UnresolvedImport + +from _pydev_runfiles import pydev_runfiles_xml_rpc +from _pydev_runfiles.pydev_runfiles_coverage import start_coverage_support + + +# ======================================================================================================================= +# PydevPlugin +# ======================================================================================================================= +class PydevPlugin(Plugin): + def __init__(self, configuration): + self.configuration = configuration + Plugin.__init__(self) + + def begin(self): + # Called before any test is run (it's always called, with multiprocess or not) + self.start_time = time.time() + self.coverage_files, self.coverage = start_coverage_support(self.configuration) + + def finalize(self, result): + # Called after all tests are run (it's always called, with multiprocess or not) + self.coverage.stop() + self.coverage.save() + + pydev_runfiles_xml_rpc.notifyTestRunFinished( + "Finished in: %.2f secs." % (time.time() - self.start_time,) + ) + + # =================================================================================================================== + # Methods below are not called with multiprocess (so, we monkey-patch MultiProcessTestRunner.consolidate + # so that they're called, but unfortunately we loose some info -- i.e.: the time for each test in this + # process). + # =================================================================================================================== + + class Sentinel: + pass + + @contextmanager + def _without_user_address(self, test): + # #PyDev-1095: Conflict between address in test and test.address() in PydevPlugin().report_cond() + user_test_instance = test.test + user_address = self.Sentinel + user_class_address = self.Sentinel + try: + if "address" in user_test_instance.__dict__: + user_address = user_test_instance.__dict__.pop("address") + except: + # Just ignore anything here. + pass + try: + user_class_address = user_test_instance.__class__.address + del user_test_instance.__class__.address + except: + # Just ignore anything here. + pass + + try: + yield + finally: + if user_address is not self.Sentinel: + user_test_instance.__dict__["address"] = user_address + + if user_class_address is not self.Sentinel: + user_test_instance.__class__.address = user_class_address + + def _get_test_address(self, test): + try: + if hasattr(test, "address"): + with self._without_user_address(test): + address = test.address() + + # test.address() is something as: + # ('D:\\workspaces\\temp\\test_workspace\\pytesting1\\src\\mod1\\hello.py', 'mod1.hello', 'TestCase.testMet1') + # + # and we must pass: location, test + # E.g.: ['D:\\src\\mod1\\hello.py', 'TestCase.testMet1'] + address = address[0], address[2] + else: + # multiprocess + try: + address = test[0], test[1] + except TypeError: + # It may be an error at setup, in which case it's not really a test, but a Context object. + f = test.context.__file__ + if f.endswith(".pyc"): + f = f[:-1] + elif f.endswith("$py.class"): + f = f[: -len("$py.class")] + ".py" + address = f, "?" + except: + sys.stderr.write( + "PyDev: Internal pydev error getting test address. Please report at the pydev bug tracker\n" + ) + traceback.print_exc() + sys.stderr.write("\n\n\n") + address = "?", "?" + return address + + def report_cond(self, cond, test, captured_output, error=""): + """ + @param cond: fail, error, ok + """ + address = self._get_test_address(test) + + error_contents = self.get_io_from_error(error) + try: + time_str = "%.2f" % (time.time() - test._pydev_start_time) + except: + time_str = "?" + + pydev_runfiles_xml_rpc.notifyTest( + cond, captured_output, error_contents, address[0], address[1], time_str + ) + + def startTest(self, test): + test._pydev_start_time = time.time() + file, test = self._get_test_address(test) + pydev_runfiles_xml_rpc.notifyStartTest(file, test) + + def get_io_from_error(self, err): + if type(err) == type(()): + if len(err) != 3: + if len(err) == 2: + return err[1] # multiprocess + s = StringIO() + etype, value, tb = err + if isinstance(value, str): + return value + traceback.print_exception(etype, value, tb, file=s) + return s.getvalue() + return err + + def get_captured_output(self, test): + if hasattr(test, "capturedOutput") and test.capturedOutput: + return test.capturedOutput + return "" + + def addError(self, test, err): + self.report_cond( + "error", + test, + self.get_captured_output(test), + err, + ) + + def addFailure(self, test, err): + self.report_cond( + "fail", + test, + self.get_captured_output(test), + err, + ) + + def addSuccess(self, test): + self.report_cond( + "ok", + test, + self.get_captured_output(test), + "", + ) + + +PYDEV_NOSE_PLUGIN_SINGLETON = None + + +def start_pydev_nose_plugin_singleton(configuration): + global PYDEV_NOSE_PLUGIN_SINGLETON + PYDEV_NOSE_PLUGIN_SINGLETON = PydevPlugin(configuration) + return PYDEV_NOSE_PLUGIN_SINGLETON + + +original = MultiProcessTestRunner.consolidate + + +# ======================================================================================================================= +# new_consolidate +# ======================================================================================================================= +def new_consolidate(self, result, batch_result): + """ + Used so that it can work with the multiprocess plugin. + Monkeypatched because nose seems a bit unsupported at this time (ideally + the plugin would have this support by default). + """ + ret = original(self, result, batch_result) + + parent_frame = sys._getframe().f_back + # addr is something as D:\pytesting1\src\mod1\hello.py:TestCase.testMet4 + # so, convert it to what report_cond expects + addr = parent_frame.f_locals["addr"] + i = addr.rindex(":") + addr = [addr[:i], addr[i + 1 :]] + + output, testsRun, failures, errors, errorClasses = batch_result + if failures or errors: + for failure in failures: + PYDEV_NOSE_PLUGIN_SINGLETON.report_cond("fail", addr, output, failure) + + for error in errors: + PYDEV_NOSE_PLUGIN_SINGLETON.report_cond("error", addr, output, error) + else: + PYDEV_NOSE_PLUGIN_SINGLETON.report_cond("ok", addr, output) + + return ret + + +MultiProcessTestRunner.consolidate = new_consolidate diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel.py new file mode 100644 index 000000000..6d74b59cf --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel.py @@ -0,0 +1,292 @@ +import os +import queue as Queue +import sys +import threading +import time +import unittest + +from _pydev_bundle._pydev_saved_modules import thread + +from _pydev_runfiles import pydev_runfiles_xml_rpc + + +# ======================================================================================================================= +# flatten_test_suite +# ======================================================================================================================= +def flatten_test_suite(test_suite, ret): + if isinstance(test_suite, unittest.TestSuite): + for t in test_suite._tests: + flatten_test_suite(t, ret) + + elif isinstance(test_suite, unittest.TestCase): + ret.append(test_suite) + + +# ======================================================================================================================= +# execute_tests_in_parallel +# ======================================================================================================================= +def execute_tests_in_parallel( + tests, jobs, split, verbosity, coverage_files, coverage_include +): + """ + @param tests: list(PydevTestSuite) + A list with the suites to be run + + @param split: str + Either 'module' or the number of tests that should be run in each batch + + @param coverage_files: list(file) + A list with the files that should be used for giving coverage information (if empty, coverage information + should not be gathered). + + @param coverage_include: str + The pattern that should be included in the coverage. + + @return: bool + Returns True if the tests were actually executed in parallel. If the tests were not executed because only 1 + should be used (e.g.: 2 jobs were requested for running 1 test), False will be returned and no tests will be + run. + + It may also return False if in debug mode (in which case, multi-processes are not accepted) + """ + try: + from _pydevd_bundle.pydevd_comm import get_global_debugger + + if get_global_debugger() is not None: + return False + except: + pass # Ignore any error here. + + # This queue will receive the tests to be run. Each entry in a queue is a list with the tests to be run together When + # split == 'tests', each list will have a single element, when split == 'module', each list will have all the tests + # from a given module. + tests_queue = [] + + queue_elements = [] + if split == "module": + module_to_tests = {} + for test in tests: + lst = [] + flatten_test_suite(test, lst) + for test in lst: + key = (test.__pydev_pyfile__, test.__pydev_module_name__) + module_to_tests.setdefault(key, []).append(test) + + for key, tests in module_to_tests.items(): + queue_elements.append(tests) + + if len(queue_elements) < jobs: + # Don't create jobs we will never use. + jobs = len(queue_elements) + + elif split == "tests": + for test in tests: + lst = [] + flatten_test_suite(test, lst) + for test in lst: + queue_elements.append([test]) + + if len(queue_elements) < jobs: + # Don't create jobs we will never use. + jobs = len(queue_elements) + + else: + raise AssertionError("Do not know how to handle: %s" % (split,)) + + for test_cases in queue_elements: + test_queue_elements = [] + for test_case in test_cases: + try: + test_name = ( + test_case.__class__.__name__ + "." + test_case._testMethodName + ) + except AttributeError: + # Support for jython 2.1 (__testMethodName is pseudo-private in the test case) + test_name = ( + test_case.__class__.__name__ + + "." + + test_case._TestCase__testMethodName + ) + + test_queue_elements.append(test_case.__pydev_pyfile__ + "|" + test_name) + + tests_queue.append(test_queue_elements) + + if jobs < 2: + return False + + sys.stdout.write("Running tests in parallel with: %s jobs.\n" % (jobs,)) + + queue = Queue.Queue() + for item in tests_queue: + queue.put(item, block=False) + + providers = [] + clients = [] + for i in range(jobs): + test_cases_provider = CommunicationThread(queue) + providers.append(test_cases_provider) + + test_cases_provider.start() + port = test_cases_provider.port + + if coverage_files: + clients.append( + ClientThread( + i, port, verbosity, coverage_files.pop(0), coverage_include + ) + ) + else: + clients.append(ClientThread(i, port, verbosity)) + + for client in clients: + client.start() + + client_alive = True + while client_alive: + client_alive = False + for client in clients: + # Wait for all the clients to exit. + if not client.finished: + client_alive = True + time.sleep(0.2) + break + + for provider in providers: + provider.shutdown() + + return True + + +# ======================================================================================================================= +# CommunicationThread +# ======================================================================================================================= +class CommunicationThread(threading.Thread): + def __init__(self, tests_queue): + threading.Thread.__init__(self) + self.daemon = True + self.queue = tests_queue + self.finished = False + from _pydev_bundle import pydev_localhost + from _pydev_bundle.pydev_imports import SimpleXMLRPCServer + + # Create server + server = SimpleXMLRPCServer( + (pydev_localhost.get_localhost(), 0), logRequests=False + ) + server.register_function(self.GetTestsToRun) + server.register_function(self.notifyStartTest) + server.register_function(self.notifyTest) + server.register_function(self.notifyCommands) + self.port = server.socket.getsockname()[1] + self.server = server + + def GetTestsToRun(self, job_id): + """ + @param job_id: + + @return: list(str) + Each entry is a string in the format: filename|Test.testName + """ + try: + ret = self.queue.get(block=False) + return ret + except: # Any exception getting from the queue (empty or not) means we finished our work on providing the tests. + self.finished = True + return [] + + def notifyCommands(self, job_id, commands): + # Batch notification. + for command in commands: + getattr(self, command[0])(job_id, *command[1], **command[2]) + + return True + + def notifyStartTest(self, job_id, *args, **kwargs): + pydev_runfiles_xml_rpc.notifyStartTest(*args, **kwargs) + return True + + def notifyTest(self, job_id, *args, **kwargs): + pydev_runfiles_xml_rpc.notifyTest(*args, **kwargs) + return True + + def shutdown(self): + if hasattr(self.server, "shutdown"): + self.server.shutdown() + else: + self._shutdown = True + + def run(self): + if hasattr(self.server, "shutdown"): + self.server.serve_forever() + else: + self._shutdown = False + while not self._shutdown: + self.server.handle_request() + + +# ======================================================================================================================= +# Client +# ======================================================================================================================= +class ClientThread(threading.Thread): + def __init__( + self, job_id, port, verbosity, coverage_output_file=None, coverage_include=None + ): + threading.Thread.__init__(self) + self.daemon = True + self.port = port + self.job_id = job_id + self.verbosity = verbosity + self.finished = False + self.coverage_output_file = coverage_output_file + self.coverage_include = coverage_include + + def _reader_thread(self, pipe, target): + while True: + target.write(pipe.read(1)) + + def run(self): + try: + from _pydev_runfiles import pydev_runfiles_parallel_client + # TODO: Support Jython: + # + # For jython, instead of using sys.executable, we should use: + # r'D:\bin\jdk_1_5_09\bin\java.exe', + # '-classpath', + # 'D:/bin/jython-2.2.1/jython.jar', + # 'org.python.util.jython', + + args = [ + sys.executable, + pydev_runfiles_parallel_client.__file__, + str(self.job_id), + str(self.port), + str(self.verbosity), + ] + + if self.coverage_output_file and self.coverage_include: + args.append(self.coverage_output_file) + args.append(self.coverage_include) + + import subprocess + + if False: + proc = subprocess.Popen( + args, + env=os.environ, + shell=False, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + ) + + thread.start_new_thread(self._reader_thread, (proc.stdout, sys.stdout)) + + thread.start_new_thread( + target=self._reader_thread, args=(proc.stderr, sys.stderr) + ) + else: + proc = subprocess.Popen(args, env=os.environ, shell=False) + proc.wait() + + finally: + self.finished = True diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel_client.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel_client.py new file mode 100644 index 000000000..8fdbb902e --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel_client.py @@ -0,0 +1,208 @@ +from _pydev_bundle.pydev_imports import _queue, xmlrpclib + +Queue = _queue.Queue +import sys +import threading +import traceback + +from _pydev_runfiles.pydev_runfiles_coverage import start_coverage_support_from_params + + +# ======================================================================================================================= +# ParallelNotification +# ======================================================================================================================= +class ParallelNotification: + def __init__(self, method, args, kwargs): + self.method = method + self.args = args + self.kwargs = kwargs + + def to_tuple(self): + return self.method, self.args, self.kwargs + + +# ======================================================================================================================= +# KillServer +# ======================================================================================================================= +class KillServer: + pass + + +# ======================================================================================================================= +# ServerComm +# ======================================================================================================================= +class ServerComm(threading.Thread): + def __init__(self, job_id, server): + self.notifications_queue = Queue() + threading.Thread.__init__(self) + self.setDaemon( + False + ) # Wait for all the notifications to be passed before exiting! + assert job_id is not None + assert port is not None + self.job_id = job_id + + self.finished = False + self.server = server + + def run(self): + while True: + kill_found = False + commands = [] + command = self.notifications_queue.get(block=True) + if isinstance(command, KillServer): + kill_found = True + else: + assert isinstance(command, ParallelNotification) + commands.append(command.to_tuple()) + + try: + while True: + command = self.notifications_queue.get( + block=False + ) # No block to create a batch. + if isinstance(command, KillServer): + kill_found = True + else: + assert isinstance(command, ParallelNotification) + commands.append(command.to_tuple()) + except: + pass # That's OK, we're getting it until it becomes empty so that we notify multiple at once. + + if commands: + try: + # Batch notification. + self.server.lock.acquire() + try: + self.server.notifyCommands(self.job_id, commands) + finally: + self.server.lock.release() + except: + traceback.print_exc() + + if kill_found: + self.finished = True + return + + +# ======================================================================================================================= +# ServerFacade +# ======================================================================================================================= +class ServerFacade: + def __init__(self, notifications_queue): + self.notifications_queue = notifications_queue + + def notifyTestsCollected(self, *args, **kwargs): + pass # This notification won't be passed + + def notifyTestRunFinished(self, *args, **kwargs): + pass # This notification won't be passed + + def notifyStartTest(self, *args, **kwargs): + self.notifications_queue.put_nowait( + ParallelNotification("notifyStartTest", args, kwargs) + ) + + def notifyTest(self, *args, **kwargs): + self.notifications_queue.put_nowait( + ParallelNotification("notifyTest", args, kwargs) + ) + + +# ======================================================================================================================= +# run_client +# ======================================================================================================================= +def run_client(job_id, port, verbosity, coverage_output_file, coverage_include): + job_id = int(job_id) + + from _pydev_bundle import pydev_localhost + + server = xmlrpclib.Server("http://%s:%s" % (pydev_localhost.get_localhost(), port)) + server.lock = threading.Lock() + + server_comm = ServerComm(job_id, server) + server_comm.start() + + try: + server_facade = ServerFacade(server_comm.notifications_queue) + from _pydev_runfiles import pydev_runfiles, pydev_runfiles_xml_rpc + + pydev_runfiles_xml_rpc.set_server(server_facade) + + # Starts None and when the 1st test is gotten, it's started (because a server may be initiated and terminated + # before receiving any test -- which would mean a different process got all the tests to run). + coverage = None + + try: + tests_to_run = [1] + while tests_to_run: + # Investigate: is it dangerous to use the same xmlrpclib server from different threads? + # It seems it should be, as it creates a new connection for each request... + server.lock.acquire() + try: + tests_to_run = server.GetTestsToRun(job_id) + finally: + server.lock.release() + + if not tests_to_run: + break + + if coverage is None: + _coverage_files, coverage = start_coverage_support_from_params( + None, coverage_output_file, 1, coverage_include + ) + + files_to_tests = {} + for test in tests_to_run: + filename_and_test = test.split("|") + if len(filename_and_test) == 2: + files_to_tests.setdefault(filename_and_test[0], []).append( + filename_and_test[1] + ) + + configuration = pydev_runfiles.Configuration( + "", + verbosity, + None, + None, + None, + files_to_tests, + 1, # Always single job here + None, + # The coverage is handled in this loop. + coverage_output_file=None, + coverage_include=None, + ) + test_runner = pydev_runfiles.PydevTestRunner(configuration) + sys.stdout.flush() + test_runner.run_tests(handle_coverage=False) + finally: + if coverage is not None: + coverage.stop() + coverage.save() + + except: + traceback.print_exc() + server_comm.notifications_queue.put_nowait(KillServer()) + + +# ======================================================================================================================= +# main +# ======================================================================================================================= +if __name__ == "__main__": + if len(sys.argv) - 1 == 3: + job_id, port, verbosity = sys.argv[1:] + coverage_output_file, coverage_include = None, None + + elif len(sys.argv) - 1 == 5: + job_id, port, verbosity, coverage_output_file, coverage_include = sys.argv[1:] + + else: + raise AssertionError( + "Could not find out how to handle the parameters: " + sys.argv[1:] + ) + + job_id = int(job_id) + port = int(port) + verbosity = int(verbosity) + run_client(job_id, port, verbosity, coverage_output_file, coverage_include) diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_pytest2.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_pytest2.py new file mode 100644 index 000000000..6fcc82528 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_pytest2.py @@ -0,0 +1,344 @@ +import base64 +import os +import pickle +import sys +import time +import zlib +from pathlib import Path + +import pytest +from pydevd_file_utils import canonical_normalized_path + +from _pydev_runfiles import pydev_runfiles_xml_rpc + +# ========================================================================= +# Load filters with tests we should skip +# ========================================================================= +py_test_accept_filter = None + + +def _load_filters(): + global py_test_accept_filter + if py_test_accept_filter is None: + py_test_accept_filter = os.environ.get("PYDEV_PYTEST_SKIP") + if py_test_accept_filter: + py_test_accept_filter = pickle.loads( + zlib.decompress(base64.b64decode(py_test_accept_filter)) + ) + + # Newer versions of pytest resolve symlinks, so, we + # may need to filter with a resolved path too. + new_dct = {} + for filename, value in py_test_accept_filter.items(): + new_dct[ + canonical_normalized_path(str(Path(filename).resolve())) + ] = value + + py_test_accept_filter.update(new_dct) + + else: + py_test_accept_filter = {} + + +def is_in_xdist_node(): + main_pid = os.environ.get("PYDEV_MAIN_PID") + if main_pid and main_pid != str(os.getpid()): + return True + return False + + +connected = False + + +def connect_to_server_for_communication_to_xml_rpc_on_xdist(): + global connected + if connected: + return + connected = True + if is_in_xdist_node(): + port = os.environ.get("PYDEV_PYTEST_SERVER") + if port == "None": + pass + elif not port: + sys.stderr.write( + "Error: no PYDEV_PYTEST_SERVER environment variable defined.\n" + ) + else: + pydev_runfiles_xml_rpc.initialize_server(int(port), daemon=True) + + +PY2 = sys.version_info[0] <= 2 +PY3 = not PY2 + + +class State: + start_time = time.time() + buf_err = None + buf_out = None + + +def start_redirect(): + if State.buf_out is not None: + return + from _pydevd_bundle import pydevd_io + + State.buf_err = pydevd_io.start_redirect( + keep_original_redirection=True, std="stderr" + ) + State.buf_out = pydevd_io.start_redirect( + keep_original_redirection=True, std="stdout" + ) + + +def get_curr_output(): + buf_out = State.buf_out + buf_err = State.buf_err + return ( + buf_out.getvalue() if buf_out is not None else "", + buf_err.getvalue() if buf_err is not None else "", + ) + + +def pytest_unconfigure(): + if is_in_xdist_node(): + return + # Only report that it finished when on the main node (we don't want to report + # the finish on each separate node). + pydev_runfiles_xml_rpc.notifyTestRunFinished( + "Finished in: %.2f secs." % (time.time() - State.start_time,) + ) + + +def pytest_collection_modifyitems(session, config, items): + # A note: in xdist, this is not called on the main process, only in the + # secondary nodes, so, we'll actually make the filter and report it multiple + # times. + connect_to_server_for_communication_to_xml_rpc_on_xdist() + + _load_filters() + if not py_test_accept_filter: + pydev_runfiles_xml_rpc.notifyTestsCollected(len(items)) + return # Keep on going (nothing to filter) + + new_items = [] + for item in items: + f = canonical_normalized_path(str(item.parent.fspath)) + name = item.name + + if f not in py_test_accept_filter: + # print('Skip file: %s' % (f,)) + continue # Skip the file + + i = name.find("[") + name_without_parametrize = None + if i > 0: + name_without_parametrize = name[:i] + + accept_tests = py_test_accept_filter[f] + + if item.cls is not None: + class_name = item.cls.__name__ + else: + class_name = None + for test in accept_tests: + if test == name: + # Direct match of the test (just go on with the default + # loading) + new_items.append(item) + break + + if ( + name_without_parametrize is not None + and test == name_without_parametrize + ): + # This happens when parameterizing pytest tests on older versions + # of pytest where the test name doesn't include the fixture name + # in it. + new_items.append(item) + break + + if class_name is not None: + if test == class_name + "." + name: + new_items.append(item) + break + + if ( + name_without_parametrize is not None + and test == class_name + "." + name_without_parametrize + ): + new_items.append(item) + break + + if class_name == test: + new_items.append(item) + break + else: + pass + # print('Skip test: %s.%s. Accept: %s' % (class_name, name, accept_tests)) + + # Modify the original list + items[:] = new_items + pydev_runfiles_xml_rpc.notifyTestsCollected(len(items)) + + +try: + """ + pytest > 5.4 uses own version of TerminalWriter based on py.io.TerminalWriter + and assumes there is a specific method TerminalWriter._write_source + so try load pytest version first or fallback to default one + """ + from _pytest._io import TerminalWriter +except ImportError: + from py.io import TerminalWriter + + +def _get_error_contents_from_report(report): + if report.longrepr is not None: + try: + tw = TerminalWriter(stringio=True) + stringio = tw.stringio + except TypeError: + import io + + stringio = io.StringIO() + tw = TerminalWriter(file=stringio) + tw.hasmarkup = False + report.toterminal(tw) + exc = stringio.getvalue() + s = exc.strip() + if s: + return s + + return "" + + +def pytest_collectreport(report): + error_contents = _get_error_contents_from_report(report) + if error_contents: + report_test( + "fail", "", "", "", error_contents, 0.0 + ) + + +def append_strings(s1, s2): + if s1.__class__ == s2.__class__: + return s1 + s2 + + # Prefer str + if isinstance(s1, bytes): + s1 = s1.decode("utf-8", "replace") + + if isinstance(s2, bytes): + s2 = s2.decode("utf-8", "replace") + + return s1 + s2 + + +def pytest_runtest_logreport(report): + if is_in_xdist_node(): + # When running with xdist, we don't want the report to be called from the node, only + # from the main process. + return + report_duration = report.duration + report_when = report.when + report_outcome = report.outcome + + if hasattr(report, "wasxfail"): + if report_outcome != "skipped": + report_outcome = "passed" + + if report_outcome == "passed": + # passed on setup/teardown: no need to report if in setup or teardown + # (only on the actual test if it passed). + if report_when in ("setup", "teardown"): + return + + status = "ok" + + elif report_outcome == "skipped": + status = "skip" + + else: + # It has only passed, skipped and failed (no error), so, let's consider + # error if not on call. + if report_when in ("setup", "teardown"): + status = "error" + + else: + # any error in the call (not in setup or teardown) is considered a + # regular failure. + status = "fail" + + # This will work if pytest is not capturing it, if it is, nothing will + # come from here... + captured_output, error_contents = ( + getattr(report, "pydev_captured_output", ""), + getattr(report, "pydev_error_contents", ""), + ) + for type_section, value in report.sections: + if value: + if type_section in ("err", "stderr", "Captured stderr call"): + error_contents = append_strings(error_contents, value) + else: + captured_output = append_strings(error_contents, value) + + filename = getattr(report, "pydev_fspath_strpath", "") + test = report.location[2] + + if report_outcome != "skipped": + # On skipped, we'll have a traceback for the skip, which is not what we + # want. + exc = _get_error_contents_from_report(report) + if exc: + if error_contents: + error_contents = append_strings( + error_contents, + "----------------------------- Exceptions -----------------------------\n", + ) + error_contents = append_strings(error_contents, exc) + + report_test( + status, filename, test, captured_output, error_contents, report_duration + ) + + +def report_test(status, filename, test, captured_output, error_contents, duration): + """ + @param filename: 'D:\\src\\mod1\\hello.py' + @param test: 'TestCase.testMet1' + @param status: fail, error, ok + """ + time_str = "%.2f" % (duration,) + pydev_runfiles_xml_rpc.notifyTest( + status, captured_output, error_contents, filename, test, time_str + ) + + +if not hasattr(pytest, "hookimpl"): + raise AssertionError( + "Please upgrade pytest (the current version of pytest: %s is unsupported)" + % (pytest.__version__,) + ) + + +@pytest.hookimpl(hookwrapper=True) +def pytest_runtest_makereport(item, call): + outcome = yield + report = outcome.get_result() + report.pydev_fspath_strpath = item.fspath.strpath + report.pydev_captured_output, report.pydev_error_contents = get_curr_output() + + +@pytest.mark.tryfirst +def pytest_runtest_setup(item): + """ + Note: with xdist will be on a secondary process. + """ + # We have our own redirection: if xdist does its redirection, we'll have + # nothing in our contents (which is OK), but if it does, we'll get nothing + # from pytest but will get our own here. + start_redirect() + filename = item.fspath.strpath + test = item.location[2] + + pydev_runfiles_xml_rpc.notifyStartTest(filename, test) diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_unittest.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_unittest.py new file mode 100644 index 000000000..414042f57 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_unittest.py @@ -0,0 +1,197 @@ +import time +import traceback +import unittest as python_unittest +from io import StringIO + +from _pydevd_bundle import pydevd_io +from _pydevd_bundle.pydevd_constants import * # @UnusedWildImport + +from _pydev_runfiles import pydev_runfiles_xml_rpc + + +# ======================================================================================================================= +# PydevTextTestRunner +# ======================================================================================================================= +class PydevTextTestRunner(python_unittest.TextTestRunner): + def _makeResult(self): + return PydevTestResult(self.stream, self.descriptions, self.verbosity) + + +_PythonTextTestResult = python_unittest.TextTestRunner()._makeResult().__class__ + + +# ======================================================================================================================= +# PydevTestResult +# ======================================================================================================================= +class PydevTestResult(_PythonTextTestResult): + def addSubTest(self, test, subtest, err): + """Called at the end of a subtest. + 'err' is None if the subtest ended successfully, otherwise it's a + tuple of values as returned by sys.exc_info(). + """ + _PythonTextTestResult.addSubTest(self, test, subtest, err) + if err is not None: + subdesc = subtest._subDescription() + error = (test, self._exc_info_to_string(err, test)) + self._reportErrors( + [error], [], "", "%s %s" % (self.get_test_name(test), subdesc) + ) + + def startTest(self, test): + _PythonTextTestResult.startTest(self, test) + self.buf = pydevd_io.start_redirect(keep_original_redirection=True, std="both") + self.start_time = time.time() + self._current_errors_stack = [] + self._current_failures_stack = [] + + try: + test_name = test.__class__.__name__ + "." + test._testMethodName + except AttributeError: + # Support for jython 2.1 (__testMethodName is pseudo-private in the test case) + test_name = test.__class__.__name__ + "." + test._TestCase__testMethodName + + pydev_runfiles_xml_rpc.notifyStartTest(test.__pydev_pyfile__, test_name) + + def get_test_name(self, test): + try: + try: + test_name = test.__class__.__name__ + "." + test._testMethodName + except AttributeError: + # Support for jython 2.1 (__testMethodName is pseudo-private in the test case) + try: + test_name = ( + test.__class__.__name__ + "." + test._TestCase__testMethodName + ) + # Support for class/module exceptions (test is instance of _ErrorHolder) + except: + test_name = ( + test.description.split()[1][1:-1] + + " <" + + test.description.split()[0] + + ">" + ) + except: + traceback.print_exc() + return "" + return test_name + + def stopTest(self, test): + end_time = time.time() + pydevd_io.end_redirect(std="both") + + _PythonTextTestResult.stopTest(self, test) + + captured_output = self.buf.getvalue() + del self.buf + error_contents = "" + test_name = self.get_test_name(test) + + diff_time = "%.2f" % (end_time - self.start_time) + + skipped = False + outcome = getattr(test, "_outcome", None) + if outcome is not None: + skipped = bool(getattr(outcome, "skipped", None)) + + if skipped: + pydev_runfiles_xml_rpc.notifyTest( + "skip", + captured_output, + error_contents, + test.__pydev_pyfile__, + test_name, + diff_time, + ) + elif not self._current_errors_stack and not self._current_failures_stack: + pydev_runfiles_xml_rpc.notifyTest( + "ok", + captured_output, + error_contents, + test.__pydev_pyfile__, + test_name, + diff_time, + ) + else: + self._reportErrors( + self._current_errors_stack, + self._current_failures_stack, + captured_output, + test_name, + ) + + def _reportErrors(self, errors, failures, captured_output, test_name, diff_time=""): + error_contents = [] + for test, s in errors + failures: + if type(s) == type((1,)): # If it's a tuple (for jython 2.1) + sio = StringIO() + traceback.print_exception(s[0], s[1], s[2], file=sio) + s = sio.getvalue() + error_contents.append(s) + + sep = "\n" + self.separator1 + error_contents = sep.join(error_contents) + + if errors and not failures: + try: + pydev_runfiles_xml_rpc.notifyTest( + "error", + captured_output, + error_contents, + test.__pydev_pyfile__, + test_name, + diff_time, + ) + except: + file_start = error_contents.find('File "') + file_end = error_contents.find('", ', file_start) + if file_start != -1 and file_end != -1: + file = error_contents[file_start + 6 : file_end] + else: + file = "" + pydev_runfiles_xml_rpc.notifyTest( + "error", captured_output, error_contents, file, test_name, diff_time + ) + + elif failures and not errors: + pydev_runfiles_xml_rpc.notifyTest( + "fail", + captured_output, + error_contents, + test.__pydev_pyfile__, + test_name, + diff_time, + ) + + else: # Ok, we got both, errors and failures. Let's mark it as an error in the end. + pydev_runfiles_xml_rpc.notifyTest( + "error", + captured_output, + error_contents, + test.__pydev_pyfile__, + test_name, + diff_time, + ) + + def addError(self, test, err): + _PythonTextTestResult.addError(self, test, err) + # Support for class/module exceptions (test is instance of _ErrorHolder) + if ( + not hasattr(self, "_current_errors_stack") + or test.__class__.__name__ == "_ErrorHolder" + ): + # Not in start...end, so, report error now (i.e.: django pre/post-setup) + self._reportErrors([self.errors[-1]], [], "", self.get_test_name(test)) + else: + self._current_errors_stack.append(self.errors[-1]) + + def addFailure(self, test, err): + _PythonTextTestResult.addFailure(self, test, err) + if not hasattr(self, "_current_failures_stack"): + # Not in start...end, so, report error now (i.e.: django pre/post-setup) + self._reportErrors([], [self.failures[-1]], "", self.get_test_name(test)) + else: + self._current_failures_stack.append(self.failures[-1]) + + +class PydevTestSuite(python_unittest.TestSuite): + pass diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_xml_rpc.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_xml_rpc.py new file mode 100644 index 000000000..f31eb47b5 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_xml_rpc.py @@ -0,0 +1,278 @@ +import sys +import threading +import traceback +import warnings + +from _pydev_bundle._pydev_filesystem_encoding import getfilesystemencoding +from _pydev_bundle.pydev_imports import _queue, xmlrpclib +from _pydevd_bundle.pydevd_constants import Null + +Queue = _queue.Queue + +# This may happen in IronPython (in Python it shouldn't happen as there are +# 'fast' replacements that are used in xmlrpclib.py) +warnings.filterwarnings("ignore", "The xmllib module is obsolete.*", DeprecationWarning) + +file_system_encoding = getfilesystemencoding() + + +# ======================================================================================================================= +# _ServerHolder +# ======================================================================================================================= +class _ServerHolder: + """ + Helper so that we don't have to use a global here. + """ + + SERVER = None + + +# ======================================================================================================================= +# set_server +# ======================================================================================================================= +def set_server(server): + _ServerHolder.SERVER = server + + +# ======================================================================================================================= +# ParallelNotification +# ======================================================================================================================= +class ParallelNotification: + def __init__(self, method, args): + self.method = method + self.args = args + + def to_tuple(self): + return self.method, self.args + + +# ======================================================================================================================= +# KillServer +# ======================================================================================================================= +class KillServer: + pass + + +# ======================================================================================================================= +# ServerFacade +# ======================================================================================================================= +class ServerFacade: + def __init__(self, notifications_queue): + self.notifications_queue = notifications_queue + + def notifyTestsCollected(self, *args): + self.notifications_queue.put_nowait( + ParallelNotification("notifyTestsCollected", args) + ) + + def notifyConnected(self, *args): + self.notifications_queue.put_nowait( + ParallelNotification("notifyConnected", args) + ) + + def notifyTestRunFinished(self, *args): + self.notifications_queue.put_nowait( + ParallelNotification("notifyTestRunFinished", args) + ) + + def notifyStartTest(self, *args): + self.notifications_queue.put_nowait( + ParallelNotification("notifyStartTest", args) + ) + + def notifyTest(self, *args): + new_args = [] + for arg in args: + new_args.append(_encode_if_needed(arg)) + args = tuple(new_args) + self.notifications_queue.put_nowait(ParallelNotification("notifyTest", args)) + + +# ======================================================================================================================= +# ServerComm +# ======================================================================================================================= +class ServerComm(threading.Thread): + def __init__(self, notifications_queue, port, daemon=False): + # If daemon is False, wait for all the notifications to be passed before exiting! + threading.Thread.__init__(self, daemon=daemon) + self.finished = False + self.notifications_queue = notifications_queue + + from _pydev_bundle import pydev_localhost + + # It is necessary to specify an encoding, that matches + # the encoding of all bytes-strings passed into an + # XMLRPC call: "All 8-bit strings in the data structure are assumed to use the + # packet encoding. Unicode strings are automatically converted, + # where necessary." + # Byte strings most likely come from file names. + encoding = file_system_encoding + if encoding == "mbcs": + # Windos symbolic name for the system encoding CP_ACP. + # We need to convert it into a encoding that is recognized by Java. + # Unfortunately this is not always possible. You could use + # GetCPInfoEx and get a name similar to "windows-1251". Then + # you need a table to translate on a best effort basis. Much to complicated. + # ISO-8859-1 is good enough. + encoding = "ISO-8859-1" + + self.server = xmlrpclib.Server( + "http://%s:%s" % (pydev_localhost.get_localhost(), port), encoding=encoding + ) + + def run(self): + while True: + kill_found = False + commands = [] + command = self.notifications_queue.get(block=True) + if isinstance(command, KillServer): + kill_found = True + else: + assert isinstance(command, ParallelNotification) + commands.append(command.to_tuple()) + + try: + while True: + command = self.notifications_queue.get( + block=False + ) # No block to create a batch. + if isinstance(command, KillServer): + kill_found = True + else: + assert isinstance(command, ParallelNotification) + commands.append(command.to_tuple()) + except: + pass # That's OK, we're getting it until it becomes empty so that we notify multiple at once. + + if commands: + try: + self.server.notifyCommands(commands) + except: + traceback.print_exc() + + if kill_found: + self.finished = True + return + + +# ======================================================================================================================= +# initialize_server +# ======================================================================================================================= +def initialize_server(port, daemon=False): + if _ServerHolder.SERVER is None: + if port is not None: + notifications_queue = Queue() + _ServerHolder.SERVER = ServerFacade(notifications_queue) + _ServerHolder.SERVER_COMM = ServerComm(notifications_queue, port, daemon) + _ServerHolder.SERVER_COMM.start() + else: + # Create a null server, so that we keep the interface even without any connection. + _ServerHolder.SERVER = Null() + _ServerHolder.SERVER_COMM = Null() + + try: + if _ServerHolder.SERVER is not None: + _ServerHolder.SERVER.notifyConnected() + except: + traceback.print_exc() + + +# ======================================================================================================================= +# notifyTest +# ======================================================================================================================= +def notifyTestsCollected(tests_count): + assert tests_count is not None + try: + if _ServerHolder.SERVER is not None: + _ServerHolder.SERVER.notifyTestsCollected(tests_count) + except: + traceback.print_exc() + + +# ======================================================================================================================= +# notifyStartTest +# ======================================================================================================================= +def notifyStartTest(file, test): + """ + @param file: the tests file (c:/temp/test.py) + @param test: the test ran (i.e.: TestCase.test1) + """ + assert file is not None + if test is None: + test = "" # Could happen if we have an import error importing module. + + try: + if _ServerHolder.SERVER is not None: + _ServerHolder.SERVER.notifyStartTest(file, test) + except: + traceback.print_exc() + + +def _encode_if_needed(obj): + # In the java side we expect strings to be ISO-8859-1 (org.python.pydev.debug.pyunit.PyUnitServer.initializeDispatches().new Dispatch() {...}.getAsStr(Object)) + if isinstance(obj, str): # Unicode in py3 + return xmlrpclib.Binary(obj.encode("ISO-8859-1", "xmlcharrefreplace")) + + elif isinstance(obj, bytes): + try: + return xmlrpclib.Binary( + obj.decode(sys.stdin.encoding, "replace").encode( + "ISO-8859-1", "xmlcharrefreplace" + ) + ) + except: + return xmlrpclib.Binary(obj) # bytes already + + return obj + + +# ======================================================================================================================= +# notifyTest +# ======================================================================================================================= +def notifyTest(cond, captured_output, error_contents, file, test, time): + """ + @param cond: ok, fail, error + @param captured_output: output captured from stdout + @param captured_output: output captured from stderr + @param file: the tests file (c:/temp/test.py) + @param test: the test ran (i.e.: TestCase.test1) + @param time: float with the number of seconds elapsed + """ + if _ServerHolder.SERVER is None: + return + + assert cond is not None + assert captured_output is not None + assert error_contents is not None + assert file is not None + if test is None: + test = "" # Could happen if we have an import error importing module. + assert time is not None + try: + captured_output = _encode_if_needed(captured_output) + error_contents = _encode_if_needed(error_contents) + + _ServerHolder.SERVER.notifyTest( + cond, captured_output, error_contents, file, test, time + ) + except: + traceback.print_exc() + + +# ======================================================================================================================= +# notifyTestRunFinished +# ======================================================================================================================= +def notifyTestRunFinished(total_time): + assert total_time is not None + try: + if _ServerHolder.SERVER is not None: + _ServerHolder.SERVER.notifyTestRunFinished(total_time) + except: + traceback.print_exc() + + +# ======================================================================================================================= +# force_server_kill +# ======================================================================================================================= +def force_server_kill(): + _ServerHolder.SERVER_COMM.notifications_queue.put_nowait(KillServer()) diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/__init__.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__init__.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__main__pydevd_gen_debug_adapter_protocol.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__main__pydevd_gen_debug_adapter_protocol.py new file mode 100644 index 000000000..e9ef35c71 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__main__pydevd_gen_debug_adapter_protocol.py @@ -0,0 +1,723 @@ +""" +Run this module to regenerate the `pydevd_schema.py` file. + +Note that it'll generate it based on the current debugProtocol.json. Erase it and rerun +to download the latest version. +""" + + +def is_variable_to_translate(cls_name, var_name): + if var_name in ("variablesReference", "frameId", "threadId"): + return True + + if cls_name == "StackFrame" and var_name == "id": + # It's frameId everywhere except on StackFrame. + return True + + if cls_name == "Thread" and var_name == "id": + # It's threadId everywhere except on Thread. + return True + + return False + + +def _get_noqa_for_var(prop_name): + return ( + " # noqa (assign to builtin)" + if prop_name in ("type", "format", "id", "hex", "breakpoint", "filter") + else "" + ) + + +class _OrderedSet: + # Not a good ordered set (just something to be small without adding any deps) + + def __init__(self, initial_contents=None): + self._contents = [] + self._contents_as_set = set() + if initial_contents is not None: + for x in initial_contents: + self.add(x) + + def add(self, x): + if x not in self._contents_as_set: + self._contents_as_set.add(x) + self._contents.append(x) + + def discard(self, x): + if x in self._contents_as_set: + self._contents_as_set.remove(x) + self._contents.remove(x) + + def copy(self): + return _OrderedSet(self._contents) + + def update(self, contents): + for x in contents: + self.add(x) + + def __iter__(self): + return iter(self._contents) + + def __contains__(self, item): + return item in self._contents_as_set + + def __len__(self): + return len(self._contents) + + def set_repr(self): + if len(self) == 0: + return "set()" + + lst = [repr(x) for x in self] + return "set([" + ", ".join(lst) + "])" + + +class Ref: + def __init__(self, ref, ref_data): + self.ref = ref + self.ref_data = ref_data + + def __str__(self): + return self.ref + + +def load_schema_data(): + import json + import os.path + + json_file = os.path.join(os.path.dirname(__file__), "debugProtocol.json") + if not os.path.exists(json_file): + import requests + + req = requests.get( + "https://raw.githubusercontent.com/microsoft/debug-adapter-protocol/gh-pages/debugAdapterProtocol.json" + ) + assert req.status_code == 200 + with open(json_file, "wb") as stream: + stream.write(req.content) + + with open(json_file, "rb") as json_contents: + json_schema_data = json.loads(json_contents.read()) + return json_schema_data + + +def load_custom_schema_data(): + import json + import os.path + + json_file = os.path.join(os.path.dirname(__file__), "debugProtocolCustom.json") + + with open(json_file, "rb") as json_contents: + json_schema_data = json.loads(json_contents.read()) + return json_schema_data + + +def create_classes_to_generate_structure(json_schema_data): + definitions = json_schema_data["definitions"] + + class_to_generatees = {} + + for name, definition in definitions.items(): + all_of = definition.get("allOf") + description = definition.get("description") + is_enum = definition.get("type") == "string" and "enum" in definition + enum_values = None + if is_enum: + enum_values = definition["enum"] + properties = {} + properties.update(definition.get("properties", {})) + required = _OrderedSet(definition.get("required", _OrderedSet())) + base_definitions = [] + + if all_of is not None: + for definition in all_of: + ref = definition.get("$ref") + if ref is not None: + assert ref.startswith("#/definitions/") + ref = ref[len("#/definitions/") :] + base_definitions.append(ref) + else: + if not description: + description = definition.get("description") + properties.update(definition.get("properties", {})) + required.update( + _OrderedSet(definition.get("required", _OrderedSet())) + ) + + if isinstance(description, (list, tuple)): + description = "\n".join(description) + + if ( + name == "ModulesRequest" + ): # Hack to accept modules request without arguments (ptvsd: 2050). + required.discard("arguments") + class_to_generatees[name] = dict( + name=name, + properties=properties, + base_definitions=base_definitions, + description=description, + required=required, + is_enum=is_enum, + enum_values=enum_values, + ) + return class_to_generatees + + +def collect_bases(curr_class, classes_to_generate, memo=None): + ret = [] + if memo is None: + memo = {} + + base_definitions = curr_class["base_definitions"] + for base_definition in base_definitions: + if base_definition not in memo: + ret.append(base_definition) + ret.extend( + collect_bases( + classes_to_generate[base_definition], classes_to_generate, memo + ) + ) + + return ret + + +def fill_properties_and_required_from_base(classes_to_generate): + # Now, resolve properties based on refs + for class_to_generate in classes_to_generate.values(): + dct = {} + s = _OrderedSet() + + for base_definition in reversed( + collect_bases(class_to_generate, classes_to_generate) + ): + # Note: go from base to current so that the initial order of the properties has that + # same order. + dct.update(classes_to_generate[base_definition].get("properties", {})) + s.update( + classes_to_generate[base_definition].get("required", _OrderedSet()) + ) + + dct.update(class_to_generate["properties"]) + class_to_generate["properties"] = dct + + s.update(class_to_generate["required"]) + class_to_generate["required"] = s + + return class_to_generate + + +def update_class_to_generate_description(class_to_generate): + import textwrap + + description = class_to_generate["description"] + lines = [] + for line in description.splitlines(): + wrapped = textwrap.wrap(line.strip(), 100) + lines.extend(wrapped) + lines.append("") + + while lines and lines[-1] == "": + lines = lines[:-1] + + class_to_generate["description"] = " " + ("\n ".join(lines)) + + +def update_class_to_generate_type(classes_to_generate, class_to_generate): + properties = class_to_generate.get("properties") + for _prop_name, prop_val in properties.items(): + prop_type = prop_val.get("type", "") + if not prop_type: + prop_type = prop_val.pop("$ref", "") + if prop_type: + assert prop_type.startswith("#/definitions/") + prop_type = prop_type[len("#/definitions/") :] + prop_val["type"] = Ref(prop_type, classes_to_generate[prop_type]) + + +def update_class_to_generate_register_dec(classes_to_generate, class_to_generate): + # Default + class_to_generate["register_request"] = "" + class_to_generate["register_dec"] = "@register" + + properties = class_to_generate.get("properties") + enum_type = properties.get("type", {}).get("enum") + command = None + event = None + if ( + enum_type + and len(enum_type) == 1 + and next(iter(enum_type)) in ("request", "response", "event") + ): + msg_type = next(iter(enum_type)) + if msg_type == "response": + # The actual command is typed in the request + response_name = class_to_generate["name"] + request_name = response_name[: -len("Response")] + "Request" + if request_name in classes_to_generate: + command = classes_to_generate[request_name]["properties"].get("command") + else: + if response_name == "ErrorResponse": + command = {"enum": ["error"]} + else: + raise AssertionError("Unhandled: %s" % (response_name,)) + + elif msg_type == "request": + command = properties.get("command") + + elif msg_type == "event": + command = properties.get("event") + + else: + raise AssertionError("Unexpected condition.") + + if command: + enum = command.get("enum") + if enum and len(enum) == 1: + class_to_generate["register_request"] = "@register_%s(%r)\n" % ( + msg_type, + enum[0], + ) + + +def extract_prop_name_and_prop(class_to_generate): + properties = class_to_generate.get("properties") + required = _OrderedSet(class_to_generate.get("required", _OrderedSet())) + + # Sort so that required come first + prop_name_and_prop = list(properties.items()) + + def compute_sort_key(x): + key = x[0] + if key in required: + if key == "seq": + return 0.5 # seq when required is after the other required keys (to have a default of -1). + return 0 + return 1 + + prop_name_and_prop.sort(key=compute_sort_key) + + return prop_name_and_prop + + +def update_class_to_generate_to_json(class_to_generate): + required = _OrderedSet(class_to_generate.get("required", _OrderedSet())) + prop_name_and_prop = extract_prop_name_and_prop(class_to_generate) + + to_dict_body = [ + "def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused)" + ] + + translate_prop_names = [] + for prop_name, prop in prop_name_and_prop: + if is_variable_to_translate(class_to_generate["name"], prop_name): + translate_prop_names.append(prop_name) + + for prop_name, prop in prop_name_and_prop: + namespace = dict(prop_name=prop_name, noqa=_get_noqa_for_var(prop_name)) + to_dict_body.append( + " %(prop_name)s = self.%(prop_name)s%(noqa)s" % namespace + ) + + if prop.get("type") == "array": + to_dict_body.append( + ' if %(prop_name)s and hasattr(%(prop_name)s[0], "to_dict"):' + % namespace + ) + to_dict_body.append( + " %(prop_name)s = [x.to_dict() for x in %(prop_name)s]" + % namespace + ) + + if translate_prop_names: + to_dict_body.append(" if update_ids_to_dap:") + for prop_name in translate_prop_names: + namespace = dict(prop_name=prop_name, noqa=_get_noqa_for_var(prop_name)) + to_dict_body.append(" if %(prop_name)s is not None:" % namespace) + to_dict_body.append( + " %(prop_name)s = self._translate_id_to_dap(%(prop_name)s)%(noqa)s" + % namespace + ) + + if not translate_prop_names: + update_dict_ids_from_dap_body = [] + else: + update_dict_ids_from_dap_body = [ + "", + "", + "@classmethod", + "def update_dict_ids_from_dap(cls, dct):", + ] + for prop_name in translate_prop_names: + namespace = dict(prop_name=prop_name) + update_dict_ids_from_dap_body.append( + " if %(prop_name)r in dct:" % namespace + ) + update_dict_ids_from_dap_body.append( + " dct[%(prop_name)r] = cls._translate_id_from_dap(dct[%(prop_name)r])" + % namespace + ) + update_dict_ids_from_dap_body.append(" return dct") + + class_to_generate["update_dict_ids_from_dap"] = _indent_lines( + "\n".join(update_dict_ids_from_dap_body) + ) + + to_dict_body.append(" dct = {") + first_not_required = False + + for prop_name, prop in prop_name_and_prop: + use_to_dict = prop["type"].__class__ == Ref and not prop["type"].ref_data.get( + "is_enum", False + ) + is_array = prop["type"] == "array" + ref_array_cls_name = "" + if is_array: + ref = prop["items"].get("$ref") + if ref is not None: + ref_array_cls_name = ref.split("/")[-1] + + namespace = dict(prop_name=prop_name, ref_array_cls_name=ref_array_cls_name) + if prop_name in required: + if use_to_dict: + to_dict_body.append( + " %(prop_name)r: %(prop_name)s.to_dict(update_ids_to_dap=update_ids_to_dap)," + % namespace + ) + else: + if ref_array_cls_name: + to_dict_body.append( + " %(prop_name)r: [%(ref_array_cls_name)s.update_dict_ids_to_dap(o) for o in %(prop_name)s] if (update_ids_to_dap and %(prop_name)s) else %(prop_name)s," + % namespace + ) + else: + to_dict_body.append( + " %(prop_name)r: %(prop_name)s," % namespace + ) + else: + if not first_not_required: + first_not_required = True + to_dict_body.append(" }") + + to_dict_body.append(" if %(prop_name)s is not None:" % namespace) + if use_to_dict: + to_dict_body.append( + " dct[%(prop_name)r] = %(prop_name)s.to_dict(update_ids_to_dap=update_ids_to_dap)" + % namespace + ) + else: + if ref_array_cls_name: + to_dict_body.append( + " dct[%(prop_name)r] = [%(ref_array_cls_name)s.update_dict_ids_to_dap(o) for o in %(prop_name)s] if (update_ids_to_dap and %(prop_name)s) else %(prop_name)s" + % namespace + ) + else: + to_dict_body.append( + " dct[%(prop_name)r] = %(prop_name)s" % namespace + ) + + if not first_not_required: + first_not_required = True + to_dict_body.append(" }") + + to_dict_body.append(" dct.update(self.kwargs)") + to_dict_body.append(" return dct") + + class_to_generate["to_dict"] = _indent_lines("\n".join(to_dict_body)) + + if not translate_prop_names: + update_dict_ids_to_dap_body = [] + else: + update_dict_ids_to_dap_body = [ + "", + "", + "@classmethod", + "def update_dict_ids_to_dap(cls, dct):", + ] + for prop_name in translate_prop_names: + namespace = dict(prop_name=prop_name) + update_dict_ids_to_dap_body.append( + " if %(prop_name)r in dct:" % namespace + ) + update_dict_ids_to_dap_body.append( + " dct[%(prop_name)r] = cls._translate_id_to_dap(dct[%(prop_name)r])" + % namespace + ) + update_dict_ids_to_dap_body.append(" return dct") + + class_to_generate["update_dict_ids_to_dap"] = _indent_lines( + "\n".join(update_dict_ids_to_dap_body) + ) + + +def update_class_to_generate_init(class_to_generate): + args = [] + init_body = [] + docstring = [] + + required = _OrderedSet(class_to_generate.get("required", _OrderedSet())) + prop_name_and_prop = extract_prop_name_and_prop(class_to_generate) + + translate_prop_names = [] + for prop_name, prop in prop_name_and_prop: + if is_variable_to_translate(class_to_generate["name"], prop_name): + translate_prop_names.append(prop_name) + + enum = prop.get("enum") + if enum and len(enum) == 1: + init_body.append( + " self.%(prop_name)s = %(enum)r" + % dict(prop_name=prop_name, enum=next(iter(enum))) + ) + else: + if prop_name in required: + if prop_name == "seq": + args.append(prop_name + "=-1") + else: + args.append(prop_name) + else: + args.append(prop_name + "=None") + + if prop["type"].__class__ == Ref: + ref = prop["type"] + ref_data = ref.ref_data + if ref_data.get("is_enum", False): + init_body.append(" if %s is not None:" % (prop_name,)) + init_body.append( + " assert %s in %s.VALID_VALUES" % (prop_name, str(ref)) + ) + init_body.append( + " self.%(prop_name)s = %(prop_name)s" + % dict(prop_name=prop_name) + ) + else: + namespace = dict(prop_name=prop_name, ref_name=str(ref)) + init_body.append(" if %(prop_name)s is None:" % namespace) + init_body.append( + " self.%(prop_name)s = %(ref_name)s()" % namespace + ) + init_body.append(" else:") + init_body.append( + " self.%(prop_name)s = %(ref_name)s(update_ids_from_dap=update_ids_from_dap, **%(prop_name)s) if %(prop_name)s.__class__ != %(ref_name)s else %(prop_name)s" + % namespace + ) + + else: + init_body.append( + " self.%(prop_name)s = %(prop_name)s" % dict(prop_name=prop_name) + ) + + if prop["type"] == "array": + ref = prop["items"].get("$ref") + if ref is not None: + ref_array_cls_name = ref.split("/")[-1] + init_body.append( + " if update_ids_from_dap and self.%(prop_name)s:" + % dict(prop_name=prop_name) + ) + init_body.append( + " for o in self.%(prop_name)s:" + % dict(prop_name=prop_name) + ) + init_body.append( + " %(ref_array_cls_name)s.update_dict_ids_from_dap(o)" + % dict(ref_array_cls_name=ref_array_cls_name) + ) + + prop_type = prop["type"] + prop_description = prop.get("description", "") + + if isinstance(prop_description, (list, tuple)): + prop_description = "\n ".join(prop_description) + + docstring.append( + ":param %(prop_type)s %(prop_name)s: %(prop_description)s" + % dict( + prop_type=prop_type, + prop_name=prop_name, + prop_description=prop_description, + ) + ) + + if translate_prop_names: + init_body.append(" if update_ids_from_dap:") + for prop_name in translate_prop_names: + init_body.append( + " self.%(prop_name)s = self._translate_id_from_dap(self.%(prop_name)s)" + % dict(prop_name=prop_name) + ) + + docstring = _indent_lines("\n".join(docstring)) + init_body = "\n".join(init_body) + + # Actually bundle the whole __init__ from the parts. + args = ", ".join(args) + if args: + args = ", " + args + + # Note: added kwargs because some messages are expected to be extended by the user (so, we'll actually + # make all extendable so that we don't have to worry about which ones -- we loose a little on typing, + # but may be better than doing a allow list based on something only pointed out in the documentation). + class_to_generate[ + "init" + ] = '''def __init__(self%(args)s, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ +%(docstring)s + """ +%(init_body)s + self.kwargs = kwargs +''' % dict(args=args, init_body=init_body, docstring=docstring) + + class_to_generate["init"] = _indent_lines(class_to_generate["init"]) + + +def update_class_to_generate_props(class_to_generate): + import json + + def default(o): + if isinstance(o, Ref): + return o.ref + raise AssertionError("Unhandled: %s" % (o,)) + + properties = class_to_generate["properties"] + class_to_generate["props"] = ( + " __props__ = %s" + % _indent_lines( + json.dumps(properties, indent=4, default=default).replace("true", "True") + ).strip() + ) + + +def update_class_to_generate_refs(class_to_generate): + properties = class_to_generate["properties"] + class_to_generate["refs"] = ( + " __refs__ = %s" + % _OrderedSet( + key for (key, val) in properties.items() if val["type"].__class__ == Ref + ).set_repr() + ) + + +def update_class_to_generate_enums(class_to_generate): + class_to_generate["enums"] = "" + if class_to_generate.get("is_enum", False): + enums = "" + for enum in class_to_generate["enum_values"]: + enums += " %s = %r\n" % (enum.upper(), enum) + enums += "\n" + enums += ( + " VALID_VALUES = %s\n\n" + % _OrderedSet(class_to_generate["enum_values"]).set_repr() + ) + class_to_generate["enums"] = enums + + +def update_class_to_generate_objects(classes_to_generate, class_to_generate): + properties = class_to_generate["properties"] + for key, val in properties.items(): + if "type" not in val: + val["type"] = "TypeNA" + continue + + if val["type"] == "object": + create_new = val.copy() + create_new.update( + { + "name": "%s%s" % (class_to_generate["name"], key.title()), + "description": ' "%s" of %s' % (key, class_to_generate["name"]), + } + ) + if "properties" not in create_new: + create_new["properties"] = {} + + assert create_new["name"] not in classes_to_generate + classes_to_generate[create_new["name"]] = create_new + + update_class_to_generate_type(classes_to_generate, create_new) + update_class_to_generate_props(create_new) + + # Update nested object types + update_class_to_generate_objects(classes_to_generate, create_new) + + val["type"] = Ref( + create_new["name"], classes_to_generate[create_new["name"]] + ) + val.pop("properties", None) + + +def gen_debugger_protocol(): + import os.path + import sys + + if sys.version_info[:2] < (3, 6): + raise AssertionError( + "Must be run with Python 3.6 onwards (to keep dict order)." + ) + + classes_to_generate = create_classes_to_generate_structure(load_schema_data()) + classes_to_generate.update( + create_classes_to_generate_structure(load_custom_schema_data()) + ) + + class_to_generate = fill_properties_and_required_from_base(classes_to_generate) + + for class_to_generate in list(classes_to_generate.values()): + update_class_to_generate_description(class_to_generate) + update_class_to_generate_type(classes_to_generate, class_to_generate) + update_class_to_generate_props(class_to_generate) + update_class_to_generate_objects(classes_to_generate, class_to_generate) + + for class_to_generate in classes_to_generate.values(): + update_class_to_generate_refs(class_to_generate) + update_class_to_generate_init(class_to_generate) + update_class_to_generate_enums(class_to_generate) + update_class_to_generate_to_json(class_to_generate) + update_class_to_generate_register_dec(classes_to_generate, class_to_generate) + + class_template = ''' +%(register_request)s%(register_dec)s +class %(name)s(BaseSchema): + """ +%(description)s + + Note: automatically generated code. Do not edit manually. + """ + +%(enums)s%(props)s +%(refs)s + + __slots__ = list(__props__.keys()) + ['kwargs'] + +%(init)s%(update_dict_ids_from_dap)s + +%(to_dict)s%(update_dict_ids_to_dap)s +''' + + contents = [] + contents.append("# coding: utf-8") + contents.append("# Automatically generated code.") + contents.append("# Do not edit manually.") + contents.append("# Generated by running: %s" % os.path.basename(__file__)) + contents.append( + "from .pydevd_base_schema import BaseSchema, register, register_request, register_response, register_event" + ) + contents.append("") + for class_to_generate in classes_to_generate.values(): + contents.append(class_template % class_to_generate) + + parent_dir = os.path.dirname(__file__) + schema = os.path.join(parent_dir, "pydevd_schema.py") + with open(schema, "w", encoding="utf-8") as stream: + stream.write("\n".join(contents)) + + +def _indent_lines(lines, indent=" "): + out_lines = [] + for line in lines.splitlines(keepends=True): + out_lines.append(indent + line) + + return "".join(out_lines) + + +if __name__ == "__main__": + gen_debugger_protocol() diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocol.json b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocol.json new file mode 100644 index 000000000..406edfcba --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocol.json @@ -0,0 +1,4190 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Debug Adapter Protocol", + "description": "The Debug Adapter Protocol defines the protocol used between an editor or IDE and a debugger or runtime.", + "type": "object", + + + "definitions": { + + "ProtocolMessage": { + "type": "object", + "title": "Base Protocol", + "description": "Base class of requests, responses, and events.", + "properties": { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request." + }, + "type": { + "type": "string", + "description": "Message type.", + "_enum": [ "request", "response", "event" ] + } + }, + "required": [ "seq", "type" ] + }, + + "Request": { + "allOf": [ { "$ref": "#/definitions/ProtocolMessage" }, { + "type": "object", + "description": "A client or debug adapter initiated request.", + "properties": { + "type": { + "type": "string", + "enum": [ "request" ] + }, + "command": { + "type": "string", + "description": "The command to execute." + }, + "arguments": { + "type": [ "array", "boolean", "integer", "null", "number" , "object", "string" ], + "description": "Object containing arguments for the command." + } + }, + "required": [ "type", "command" ] + }] + }, + + "Event": { + "allOf": [ { "$ref": "#/definitions/ProtocolMessage" }, { + "type": "object", + "description": "A debug adapter initiated event.", + "properties": { + "type": { + "type": "string", + "enum": [ "event" ] + }, + "event": { + "type": "string", + "description": "Type of event." + }, + "body": { + "type": [ "array", "boolean", "integer", "null", "number" , "object", "string" ], + "description": "Event-specific information." + } + }, + "required": [ "type", "event" ] + }] + }, + + "Response": { + "allOf": [ { "$ref": "#/definitions/ProtocolMessage" }, { + "type": "object", + "description": "Response for a request.", + "properties": { + "type": { + "type": "string", + "enum": [ "response" ] + }, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request." + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf true, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`)." + }, + "command": { + "type": "string", + "description": "The command requested." + }, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": [ "cancelled", "notStopped" ], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state." + ] + }, + "body": { + "type": [ "array", "boolean", "integer", "null", "number" , "object", "string" ], + "description": "Contains request result if success is true and error details if success is false." + } + }, + "required": [ "type", "request_seq", "success", "command" ] + }] + }, + + "ErrorResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "On error (whenever `success` is false), the body can provide more details.", + "properties": { + "body": { + "type": "object", + "properties": { + "error": { + "$ref": "#/definitions/Message", + "description": "A structured error message." + } + } + } + }, + "required": [ "body" ] + }] + }, + + "CancelRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "The `cancel` request is used by the client in two situations:\n- to indicate that it is no longer interested in the result produced by a specific request issued earlier\n- to cancel a progress sequence.\nClients should only call this request if the corresponding capability `supportsCancelRequest` is true.\nThis request has a hint characteristic: a debug adapter can only be expected to make a 'best effort' in honoring this request but there are no guarantees.\nThe `cancel` request may return an error if it could not cancel an operation but a client should refrain from presenting this error to end users.\nThe request that got cancelled still needs to send a response back. This can either be a normal result (`success` attribute true) or an error response (`success` attribute false and the `message` set to `cancelled`).\nReturning partial results from a cancelled request is possible but please note that a client has no generic way for detecting that a response is partial or not.\nThe progress that got cancelled still needs to send a `progressEnd` event back.\n A client should not assume that progress just got cancelled after sending the `cancel` request.", + "properties": { + "command": { + "type": "string", + "enum": [ "cancel" ] + }, + "arguments": { + "$ref": "#/definitions/CancelArguments" + } + }, + "required": [ "command" ] + }] + }, + "CancelArguments": { + "type": "object", + "description": "Arguments for `cancel` request.", + "properties": { + "requestId": { + "type": "integer", + "description": "The ID (attribute `seq`) of the request to cancel. If missing no request is cancelled.\nBoth a `requestId` and a `progressId` can be specified in one request." + }, + "progressId": { + "type": "string", + "description": "The ID (attribute `progressId`) of the progress to cancel. If missing no progress is cancelled.\nBoth a `requestId` and a `progressId` can be specified in one request." + } + } + }, + "CancelResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `cancel` request. This is just an acknowledgement, so no body field is required." + }] + }, + + "InitializedEvent": { + "allOf": [ { "$ref": "#/definitions/Event" }, { + "type": "object", + "title": "Events", + "description": "This event indicates that the debug adapter is ready to accept configuration requests (e.g. `setBreakpoints`, `setExceptionBreakpoints`).\nA debug adapter is expected to send this event when it is ready to accept configuration requests (but not before the `initialize` request has finished).\nThe sequence of events/requests is as follows:\n- adapters sends `initialized` event (after the `initialize` request has returned)\n- client sends zero or more `setBreakpoints` requests\n- client sends one `setFunctionBreakpoints` request (if corresponding capability `supportsFunctionBreakpoints` is true)\n- client sends a `setExceptionBreakpoints` request if one or more `exceptionBreakpointFilters` have been defined (or if `supportsConfigurationDoneRequest` is not true)\n- client sends other future configuration requests\n- client sends one `configurationDone` request to indicate the end of the configuration.", + "properties": { + "event": { + "type": "string", + "enum": [ "initialized" ] + } + }, + "required": [ "event" ] + }] + }, + + "StoppedEvent": { + "allOf": [ { "$ref": "#/definitions/Event" }, { + "type": "object", + "description": "The event indicates that the execution of the debuggee has stopped due to some condition.\nThis can be caused by a breakpoint previously set, a stepping request has completed, by executing a debugger statement etc.", + "properties": { + "event": { + "type": "string", + "enum": [ "stopped" ] + }, + "body": { + "type": "object", + "properties": { + "reason": { + "type": "string", + "description": "The reason for the event.\nFor backward compatibility this string is shown in the UI if the `description` attribute is missing (but it must not be translated).", + "_enum": [ "step", "breakpoint", "exception", "pause", "entry", "goto", "function breakpoint", "data breakpoint", "instruction breakpoint" ] + }, + "description": { + "type": "string", + "description": "The full reason for the event, e.g. 'Paused on exception'. This string is shown in the UI as is and can be translated." + }, + "threadId": { + "type": "integer", + "description": "The thread which was stopped." + }, + "preserveFocusHint": { + "type": "boolean", + "description": "A value of true hints to the client that this event should not change the focus." + }, + "text": { + "type": "string", + "description": "Additional information. E.g. if reason is `exception`, text contains the exception name. This string is shown in the UI." + }, + "allThreadsStopped": { + "type": "boolean", + "description": "If `allThreadsStopped` is true, a debug adapter can announce that all threads have stopped.\n- The client should use this information to enable that all threads can be expanded to access their stacktraces.\n- If the attribute is missing or false, only the thread with the given `threadId` can be expanded." + }, + "hitBreakpointIds": { + "type": "array", + "items": { + "type": "integer" + }, + "description": "Ids of the breakpoints that triggered the event. In most cases there is only a single breakpoint but here are some examples for multiple breakpoints:\n- Different types of breakpoints map to the same location.\n- Multiple source breakpoints get collapsed to the same instruction by the compiler/runtime.\n- Multiple function breakpoints with different function names map to the same location." + } + }, + "required": [ "reason" ] + } + }, + "required": [ "event", "body" ] + }] + }, + + "ContinuedEvent": { + "allOf": [ { "$ref": "#/definitions/Event" }, { + "type": "object", + "description": "The event indicates that the execution of the debuggee has continued.\nPlease note: a debug adapter is not expected to send this event in response to a request that implies that execution continues, e.g. `launch` or `continue`.\nIt is only necessary to send a `continued` event if there was no previous request that implied this.", + "properties": { + "event": { + "type": "string", + "enum": [ "continued" ] + }, + "body": { + "type": "object", + "properties": { + "threadId": { + "type": "integer", + "description": "The thread which was continued." + }, + "allThreadsContinued": { + "type": "boolean", + "description": "If `allThreadsContinued` is true, a debug adapter can announce that all threads have continued." + } + }, + "required": [ "threadId" ] + } + }, + "required": [ "event", "body" ] + }] + }, + + "ExitedEvent": { + "allOf": [ { "$ref": "#/definitions/Event" }, { + "type": "object", + "description": "The event indicates that the debuggee has exited and returns its exit code.", + "properties": { + "event": { + "type": "string", + "enum": [ "exited" ] + }, + "body": { + "type": "object", + "properties": { + "exitCode": { + "type": "integer", + "description": "The exit code returned from the debuggee." + } + }, + "required": [ "exitCode" ] + } + }, + "required": [ "event", "body" ] + }] + }, + + "TerminatedEvent": { + "allOf": [ { "$ref": "#/definitions/Event" }, { + "type": "object", + "description": "The event indicates that debugging of the debuggee has terminated. This does **not** mean that the debuggee itself has exited.", + "properties": { + "event": { + "type": "string", + "enum": [ "terminated" ] + }, + "body": { + "type": "object", + "properties": { + "restart": { + "type": [ "array", "boolean", "integer", "null", "number", "object", "string" ], + "description": "A debug adapter may set `restart` to true (or to an arbitrary object) to request that the client restarts the session.\nThe value is not interpreted by the client and passed unmodified as an attribute `__restart` to the `launch` and `attach` requests." + } + } + } + }, + "required": [ "event" ] + }] + }, + + "ThreadEvent": { + "allOf": [ { "$ref": "#/definitions/Event" }, { + "type": "object", + "description": "The event indicates that a thread has started or exited.", + "properties": { + "event": { + "type": "string", + "enum": [ "thread" ] + }, + "body": { + "type": "object", + "properties": { + "reason": { + "type": "string", + "description": "The reason for the event.", + "_enum": [ "started", "exited" ] + }, + "threadId": { + "type": "integer", + "description": "The identifier of the thread." + } + }, + "required": ["reason", "threadId"] + } + }, + "required": [ "event", "body" ] + }] + }, + + "OutputEvent": { + "allOf": [ { "$ref": "#/definitions/Event" }, { + "type": "object", + "description": "The event indicates that the target has produced some output.", + "properties": { + "event": { + "type": "string", + "enum": [ "output" ] + }, + "body": { + "type": "object", + "properties": { + "category": { + "type": "string", + "description": "The output category. If not specified or if the category is not understood by the client, `console` is assumed.", + "_enum": [ "console", "important", "stdout", "stderr", "telemetry" ], + "enumDescriptions": [ + "Show the output in the client's default message UI, e.g. a 'debug console'. This category should only be used for informational output from the debugger (as opposed to the debuggee).", + "A hint for the client to show the output in the client's UI for important and highly visible information, e.g. as a popup notification. This category should only be used for important messages from the debugger (as opposed to the debuggee). Since this category value is a hint, clients might ignore the hint and assume the `console` category.", + "Show the output as normal program output from the debuggee.", + "Show the output as error program output from the debuggee.", + "Send the output to telemetry instead of showing it to the user." + ] + }, + "output": { + "type": "string", + "description": "The output to report." + }, + "group": { + "type": "string", + "description": "Support for keeping an output log organized by grouping related messages.", + "enum": [ "start", "startCollapsed", "end" ], + "enumDescriptions": [ + "Start a new group in expanded mode. Subsequent output events are members of the group and should be shown indented.\nThe `output` attribute becomes the name of the group and is not indented.", + "Start a new group in collapsed mode. Subsequent output events are members of the group and should be shown indented (as soon as the group is expanded).\nThe `output` attribute becomes the name of the group and is not indented.", + "End the current group and decrease the indentation of subsequent output events.\nA non-empty `output` attribute is shown as the unindented end of the group." + ] + }, + "variablesReference": { + "type": "integer", + "description": "If an attribute `variablesReference` exists and its value is > 0, the output contains objects which can be retrieved by passing `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details." + }, + "source": { + "$ref": "#/definitions/Source", + "description": "The source location where the output was produced." + }, + "line": { + "type": "integer", + "description": "The source location's line where the output was produced." + }, + "column": { + "type": "integer", + "description": "The position in `line` where the output was produced. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based." + }, + "data": { + "type": [ "array", "boolean", "integer", "null", "number" , "object", "string" ], + "description": "Additional data to report. For the `telemetry` category the data is sent to telemetry, for the other categories the data is shown in JSON format." + } + }, + "required": ["output"] + } + }, + "required": [ "event", "body" ] + }] + }, + + "BreakpointEvent": { + "allOf": [ { "$ref": "#/definitions/Event" }, { + "type": "object", + "description": "The event indicates that some information about a breakpoint has changed.", + "properties": { + "event": { + "type": "string", + "enum": [ "breakpoint" ] + }, + "body": { + "type": "object", + "properties": { + "reason": { + "type": "string", + "description": "The reason for the event.", + "_enum": [ "changed", "new", "removed" ] + }, + "breakpoint": { + "$ref": "#/definitions/Breakpoint", + "description": "The `id` attribute is used to find the target breakpoint, the other attributes are used as the new values." + } + }, + "required": [ "reason", "breakpoint" ] + } + }, + "required": [ "event", "body" ] + }] + }, + + "ModuleEvent": { + "allOf": [ { "$ref": "#/definitions/Event" }, { + "type": "object", + "description": "The event indicates that some information about a module has changed.", + "properties": { + "event": { + "type": "string", + "enum": [ "module" ] + }, + "body": { + "type": "object", + "properties": { + "reason": { + "type": "string", + "description": "The reason for the event.", + "enum": [ "new", "changed", "removed" ] + }, + "module": { + "$ref": "#/definitions/Module", + "description": "The new, changed, or removed module. In case of `removed` only the module id is used." + } + }, + "required": [ "reason", "module" ] + } + }, + "required": [ "event", "body" ] + }] + }, + + "LoadedSourceEvent": { + "allOf": [ { "$ref": "#/definitions/Event" }, { + "type": "object", + "description": "The event indicates that some source has been added, changed, or removed from the set of all loaded sources.", + "properties": { + "event": { + "type": "string", + "enum": [ "loadedSource" ] + }, + "body": { + "type": "object", + "properties": { + "reason": { + "type": "string", + "description": "The reason for the event.", + "enum": [ "new", "changed", "removed" ] + }, + "source": { + "$ref": "#/definitions/Source", + "description": "The new, changed, or removed source." + } + }, + "required": [ "reason", "source" ] + } + }, + "required": [ "event", "body" ] + }] + }, + + "ProcessEvent": { + "allOf": [ + { "$ref": "#/definitions/Event" }, + { + "type": "object", + "description": "The event indicates that the debugger has begun debugging a new process. Either one that it has launched, or one that it has attached to.", + "properties": { + "event": { + "type": "string", + "enum": [ "process" ] + }, + "body": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The logical name of the process. This is usually the full path to process's executable file. Example: /home/example/myproj/program.js." + }, + "systemProcessId": { + "type": "integer", + "description": "The system process id of the debugged process. This property is missing for non-system processes." + }, + "isLocalProcess": { + "type": "boolean", + "description": "If true, the process is running on the same computer as the debug adapter." + }, + "startMethod": { + "type": "string", + "enum": [ "launch", "attach", "attachForSuspendedLaunch" ], + "description": "Describes how the debug engine started debugging this process.", + "enumDescriptions": [ + "Process was launched under the debugger.", + "Debugger attached to an existing process.", + "A project launcher component has launched a new process in a suspended state and then asked the debugger to attach." + ] + }, + "pointerSize": { + "type": "integer", + "description": "The size of a pointer or address for this process, in bits. This value may be used by clients when formatting addresses for display." + } + }, + "required": [ "name" ] + } + }, + "required": [ "event", "body" ] + } + ] + }, + + "CapabilitiesEvent": { + "allOf": [ { "$ref": "#/definitions/Event" }, { + "type": "object", + "description": "The event indicates that one or more capabilities have changed.\nSince the capabilities are dependent on the client and its UI, it might not be possible to change that at random times (or too late).\nConsequently this event has a hint characteristic: a client can only be expected to make a 'best effort' in honoring individual capabilities but there are no guarantees.\nOnly changed capabilities need to be included, all other capabilities keep their values.", + "properties": { + "event": { + "type": "string", + "enum": [ "capabilities" ] + }, + "body": { + "type": "object", + "properties": { + "capabilities": { + "$ref": "#/definitions/Capabilities", + "description": "The set of updated capabilities." + } + }, + "required": [ "capabilities" ] + } + }, + "required": [ "event", "body" ] + }] + }, + + "ProgressStartEvent": { + "allOf": [ { "$ref": "#/definitions/Event" }, { + "type": "object", + "description": "The event signals that a long running operation is about to start and provides additional information for the client to set up a corresponding progress and cancellation UI.\nThe client is free to delay the showing of the UI in order to reduce flicker.\nThis event should only be sent if the corresponding capability `supportsProgressReporting` is true.", + "properties": { + "event": { + "type": "string", + "enum": [ "progressStart" ] + }, + "body": { + "type": "object", + "properties": { + "progressId": { + "type": "string", + "description": "An ID that can be used in subsequent `progressUpdate` and `progressEnd` events to make them refer to the same progress reporting.\nIDs must be unique within a debug session." + }, + "title": { + "type": "string", + "description": "Short title of the progress reporting. Shown in the UI to describe the long running operation." + }, + "requestId": { + "type": "integer", + "description": "The request ID that this progress report is related to. If specified a debug adapter is expected to emit progress events for the long running request until the request has been either completed or cancelled.\nIf the request ID is omitted, the progress report is assumed to be related to some general activity of the debug adapter." + }, + "cancellable": { + "type": "boolean", + "description": "If true, the request that reports progress may be cancelled with a `cancel` request.\nSo this property basically controls whether the client should use UX that supports cancellation.\nClients that don't support cancellation are allowed to ignore the setting." + }, + "message": { + "type": "string", + "description": "More detailed progress message." + }, + "percentage": { + "type": "number", + "description": "Progress percentage to display (value range: 0 to 100). If omitted no percentage is shown." + } + }, + "required": [ "progressId", "title" ] + } + }, + "required": [ "event", "body" ] + }] + }, + + "ProgressUpdateEvent": { + "allOf": [ { "$ref": "#/definitions/Event" }, { + "type": "object", + "description": "The event signals that the progress reporting needs to be updated with a new message and/or percentage.\nThe client does not have to update the UI immediately, but the clients needs to keep track of the message and/or percentage values.\nThis event should only be sent if the corresponding capability `supportsProgressReporting` is true.", + "properties": { + "event": { + "type": "string", + "enum": [ "progressUpdate" ] + }, + "body": { + "type": "object", + "properties": { + "progressId": { + "type": "string", + "description": "The ID that was introduced in the initial `progressStart` event." + }, + "message": { + "type": "string", + "description": "More detailed progress message. If omitted, the previous message (if any) is used." + }, + "percentage": { + "type": "number", + "description": "Progress percentage to display (value range: 0 to 100). If omitted no percentage is shown." + } + }, + "required": [ "progressId" ] + } + }, + "required": [ "event", "body" ] + }] + }, + + "ProgressEndEvent": { + "allOf": [ { "$ref": "#/definitions/Event" }, { + "type": "object", + "description": "The event signals the end of the progress reporting with a final message.\nThis event should only be sent if the corresponding capability `supportsProgressReporting` is true.", + "properties": { + "event": { + "type": "string", + "enum": [ "progressEnd" ] + }, + "body": { + "type": "object", + "properties": { + "progressId": { + "type": "string", + "description": "The ID that was introduced in the initial `ProgressStartEvent`." + }, + "message": { + "type": "string", + "description": "More detailed progress message. If omitted, the previous message (if any) is used." + } + }, + "required": [ "progressId" ] + } + }, + "required": [ "event", "body" ] + }] + }, + + "InvalidatedEvent": { + "allOf": [ { "$ref": "#/definitions/Event" }, { + "type": "object", + "description": "This event signals that some state in the debug adapter has changed and requires that the client needs to re-render the data snapshot previously requested.\nDebug adapters do not have to emit this event for runtime changes like stopped or thread events because in that case the client refetches the new state anyway. But the event can be used for example to refresh the UI after rendering formatting has changed in the debug adapter.\nThis event should only be sent if the corresponding capability `supportsInvalidatedEvent` is true.", + "properties": { + "event": { + "type": "string", + "enum": [ "invalidated" ] + }, + "body": { + "type": "object", + "properties": { + "areas": { + "type": "array", + "description": "Set of logical areas that got invalidated. This property has a hint characteristic: a client can only be expected to make a 'best effort' in honoring the areas but there are no guarantees. If this property is missing, empty, or if values are not understood, the client should assume a single value `all`.", + "items": { + "$ref": "#/definitions/InvalidatedAreas" + } + }, + "threadId": { + "type": "integer", + "description": "If specified, the client only needs to refetch data related to this thread." + }, + "stackFrameId": { + "type": "integer", + "description": "If specified, the client only needs to refetch data related to this stack frame (and the `threadId` is ignored)." + } + } + } + }, + "required": [ "event", "body" ] + }] + }, + + "MemoryEvent": { + "allOf": [ { "$ref": "#/definitions/Event" }, { + "type": "object", + "description": "This event indicates that some memory range has been updated. It should only be sent if the corresponding capability `supportsMemoryEvent` is true.\nClients typically react to the event by re-issuing a `readMemory` request if they show the memory identified by the `memoryReference` and if the updated memory range overlaps the displayed range. Clients should not make assumptions how individual memory references relate to each other, so they should not assume that they are part of a single continuous address range and might overlap.\nDebug adapters can use this event to indicate that the contents of a memory range has changed due to some other request like `setVariable` or `setExpression`. Debug adapters are not expected to emit this event for each and every memory change of a running program, because that information is typically not available from debuggers and it would flood clients with too many events.", + "properties": { + "event": { + "type": "string", + "enum": [ "memory" ] + }, + "body": { + "type": "object", + "properties": { + "memoryReference": { + "type": "string", + "description": "Memory reference of a memory range that has been updated." + }, + "offset": { + "type": "integer", + "description": "Starting offset in bytes where memory has been updated. Can be negative." + }, + "count": { + "type": "integer", + "description": "Number of bytes updated." + } + }, + "required": [ "memoryReference", "offset", "count" ] + } + }, + "required": [ "event", "body" ] + }] + }, + + "RunInTerminalRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "title": "Reverse Requests", + "description": "This request is sent from the debug adapter to the client to run a command in a terminal.\nThis is typically used to launch the debuggee in a terminal provided by the client.\nThis request should only be called if the corresponding client capability `supportsRunInTerminalRequest` is true.\nClient implementations of `runInTerminal` are free to run the command however they choose including issuing the command to a command line interpreter (aka 'shell'). Argument strings passed to the `runInTerminal` request must arrive verbatim in the command to be run. As a consequence, clients which use a shell are responsible for escaping any special shell characters in the argument strings to prevent them from being interpreted (and modified) by the shell.\nSome users may wish to take advantage of shell processing in the argument strings. For clients which implement `runInTerminal` using an intermediary shell, the `argsCanBeInterpretedByShell` property can be set to true. In this case the client is requested not to escape any special shell characters in the argument strings.", + "properties": { + "command": { + "type": "string", + "enum": [ "runInTerminal" ] + }, + "arguments": { + "$ref": "#/definitions/RunInTerminalRequestArguments" + } + }, + "required": [ "command", "arguments" ] + }] + }, + "RunInTerminalRequestArguments": { + "type": "object", + "description": "Arguments for `runInTerminal` request.", + "properties": { + "kind": { + "type": "string", + "enum": [ "integrated", "external" ], + "description": "What kind of terminal to launch. Defaults to `integrated` if not specified." + }, + "title": { + "type": "string", + "description": "Title of the terminal." + }, + "cwd": { + "type": "string", + "description": "Working directory for the command. For non-empty, valid paths this typically results in execution of a change directory command." + }, + "args": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of arguments. The first argument is the command to run." + }, + "env": { + "type": "object", + "description": "Environment key-value pairs that are added to or removed from the default environment.", + "additionalProperties": { + "type": [ "string", "null" ], + "description": "A string is a proper value for an environment variable. The value `null` removes the variable from the environment." + } + }, + "argsCanBeInterpretedByShell": { + "type": "boolean", + "description": "This property should only be set if the corresponding capability `supportsArgsCanBeInterpretedByShell` is true. If the client uses an intermediary shell to launch the application, then the client must not attempt to escape characters with special meanings for the shell. The user is fully responsible for escaping as needed and that arguments using special characters may not be portable across shells." + } + }, + "required": [ "args", "cwd" ] + }, + "RunInTerminalResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `runInTerminal` request.", + "properties": { + "body": { + "type": "object", + "properties": { + "processId": { + "type": "integer", + "description": "The process ID. The value should be less than or equal to 2147483647 (2^31-1)." + }, + "shellProcessId": { + "type": "integer", + "description": "The process ID of the terminal shell. The value should be less than or equal to 2147483647 (2^31-1)." + } + } + } + }, + "required": [ "body" ] + }] + }, + "StartDebuggingRequest": { + "allOf": [ + { + "$ref": "#/definitions/Request" + }, + { + "type": "object", + "description": "This request is sent from the debug adapter to the client to start a new debug session of the same type as the caller.\nThis request should only be sent if the corresponding client capability `supportsStartDebuggingRequest` is true.\nA client implementation of `startDebugging` should start a new debug session (of the same type as the caller) in the same way that the caller's session was started. If the client supports hierarchical debug sessions, the newly created session can be treated as a child of the caller session.", + "properties": { + "command": { + "type": "string", + "enum": [ + "startDebugging" + ] + }, + "arguments": { + "$ref": "#/definitions/StartDebuggingRequestArguments" + } + }, + "required": [ + "command", + "arguments" + ] + } + ] + }, + "StartDebuggingRequestArguments": { + "type": "object", + "description": "Arguments for `startDebugging` request.", + "properties": { + "configuration": { + "type": "object", + "additionalProperties": true, + "description": "Arguments passed to the new debug session. The arguments must only contain properties understood by the `launch` or `attach` requests of the debug adapter and they must not contain any client-specific properties (e.g. `type`) or client-specific features (e.g. substitutable 'variables')." + }, + "request": { + "type": "string", + "enum": [ + "launch", + "attach" + ], + "description": "Indicates whether the new debug session should be started with a `launch` or `attach` request." + } + }, + "required": [ + "configuration", + "request" + ] + }, + "StartDebuggingResponse": { + "allOf": [ + { + "$ref": "#/definitions/Response" + }, + { + "type": "object", + "description": "Response to `startDebugging` request. This is just an acknowledgement, so no body field is required." + } + ] + }, + + "InitializeRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "title": "Requests", + "description": "The `initialize` request is sent as the first request from the client to the debug adapter in order to configure it with client capabilities and to retrieve capabilities from the debug adapter.\nUntil the debug adapter has responded with an `initialize` response, the client must not send any additional requests or events to the debug adapter.\nIn addition the debug adapter is not allowed to send any requests or events to the client until it has responded with an `initialize` response.\nThe `initialize` request may only be sent once.", + "properties": { + "command": { + "type": "string", + "enum": [ "initialize" ] + }, + "arguments": { + "$ref": "#/definitions/InitializeRequestArguments" + } + }, + "required": [ "command", "arguments" ] + }] + }, + "InitializeRequestArguments": { + "type": "object", + "description": "Arguments for `initialize` request.", + "properties": { + "clientID": { + "type": "string", + "description": "The ID of the client using this adapter." + }, + "clientName": { + "type": "string", + "description": "The human-readable name of the client using this adapter." + }, + "adapterID": { + "type": "string", + "description": "The ID of the debug adapter." + }, + "locale": { + "type": "string", + "description": "The ISO-639 locale of the client using this adapter, e.g. en-US or de-CH." + }, + "linesStartAt1": { + "type": "boolean", + "description": "If true all line numbers are 1-based (default)." + }, + "columnsStartAt1": { + "type": "boolean", + "description": "If true all column numbers are 1-based (default)." + }, + "pathFormat": { + "type": "string", + "_enum": [ "path", "uri" ], + "description": "Determines in what format paths are specified. The default is `path`, which is the native format." + }, + "supportsVariableType": { + "type": "boolean", + "description": "Client supports the `type` attribute for variables." + }, + "supportsVariablePaging": { + "type": "boolean", + "description": "Client supports the paging of variables." + }, + "supportsRunInTerminalRequest": { + "type": "boolean", + "description": "Client supports the `runInTerminal` request." + }, + "supportsMemoryReferences": { + "type": "boolean", + "description": "Client supports memory references." + }, + "supportsProgressReporting": { + "type": "boolean", + "description": "Client supports progress reporting." + }, + "supportsInvalidatedEvent": { + "type": "boolean", + "description": "Client supports the `invalidated` event." + }, + "supportsMemoryEvent": { + "type": "boolean", + "description": "Client supports the `memory` event." + }, + "supportsArgsCanBeInterpretedByShell": { + "type": "boolean", + "description": "Client supports the `argsCanBeInterpretedByShell` attribute on the `runInTerminal` request." + }, + "supportsStartDebuggingRequest": { + "type": "boolean", + "description": "Client supports the `startDebugging` request." + } + }, + "required": [ "adapterID" ] + }, + "InitializeResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `initialize` request.", + "properties": { + "body": { + "$ref": "#/definitions/Capabilities", + "description": "The capabilities of this debug adapter." + } + } + }] + }, + + "ConfigurationDoneRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "This request indicates that the client has finished initialization of the debug adapter.\nSo it is the last request in the sequence of configuration requests (which was started by the `initialized` event).\nClients should only call this request if the corresponding capability `supportsConfigurationDoneRequest` is true.", + "properties": { + "command": { + "type": "string", + "enum": [ "configurationDone" ] + }, + "arguments": { + "$ref": "#/definitions/ConfigurationDoneArguments" + } + }, + "required": [ "command" ] + }] + }, + "ConfigurationDoneArguments": { + "type": "object", + "description": "Arguments for `configurationDone` request." + }, + "ConfigurationDoneResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `configurationDone` request. This is just an acknowledgement, so no body field is required." + }] + }, + + "LaunchRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "This launch request is sent from the client to the debug adapter to start the debuggee with or without debugging (if `noDebug` is true).\nSince launching is debugger/runtime specific, the arguments for this request are not part of this specification.", + "properties": { + "command": { + "type": "string", + "enum": [ "launch" ] + }, + "arguments": { + "$ref": "#/definitions/LaunchRequestArguments" + } + }, + "required": [ "command", "arguments" ] + }] + }, + "LaunchRequestArguments": { + "type": "object", + "description": "Arguments for `launch` request. Additional attributes are implementation specific.", + "properties": { + "noDebug": { + "type": "boolean", + "description": "If true, the launch request should launch the program without enabling debugging." + }, + "__restart": { + "type": [ "array", "boolean", "integer", "null", "number", "object", "string" ], + "description": "Arbitrary data from the previous, restarted session.\nThe data is sent as the `restart` attribute of the `terminated` event.\nThe client should leave the data intact." + } + } + }, + "LaunchResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `launch` request. This is just an acknowledgement, so no body field is required." + }] + }, + + "AttachRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "The `attach` request is sent from the client to the debug adapter to attach to a debuggee that is already running.\nSince attaching is debugger/runtime specific, the arguments for this request are not part of this specification.", + "properties": { + "command": { + "type": "string", + "enum": [ "attach" ] + }, + "arguments": { + "$ref": "#/definitions/AttachRequestArguments" + } + }, + "required": [ "command", "arguments" ] + }] + }, + "AttachRequestArguments": { + "type": "object", + "description": "Arguments for `attach` request. Additional attributes are implementation specific.", + "properties": { + "__restart": { + "type": [ "array", "boolean", "integer", "null", "number", "object", "string" ], + "description": "Arbitrary data from the previous, restarted session.\nThe data is sent as the `restart` attribute of the `terminated` event.\nThe client should leave the data intact." + } + } + }, + "AttachResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `attach` request. This is just an acknowledgement, so no body field is required." + }] + }, + + "RestartRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "Restarts a debug session. Clients should only call this request if the corresponding capability `supportsRestartRequest` is true.\nIf the capability is missing or has the value false, a typical client emulates `restart` by terminating the debug adapter first and then launching it anew.", + "properties": { + "command": { + "type": "string", + "enum": [ "restart" ] + }, + "arguments": { + "$ref": "#/definitions/RestartArguments" + } + }, + "required": [ "command" ] + }] + }, + "RestartArguments": { + "type": "object", + "description": "Arguments for `restart` request.", + "properties": { + "arguments": { + "oneOf": [ + { "$ref": "#/definitions/LaunchRequestArguments" }, + { "$ref": "#/definitions/AttachRequestArguments" } + ], + "description": "The latest version of the `launch` or `attach` configuration." + } + } + }, + "RestartResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `restart` request. This is just an acknowledgement, so no body field is required." + }] + }, + + "DisconnectRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "The `disconnect` request asks the debug adapter to disconnect from the debuggee (thus ending the debug session) and then to shut down itself (the debug adapter).\nIn addition, the debug adapter must terminate the debuggee if it was started with the `launch` request. If an `attach` request was used to connect to the debuggee, then the debug adapter must not terminate the debuggee.\nThis implicit behavior of when to terminate the debuggee can be overridden with the `terminateDebuggee` argument (which is only supported by a debug adapter if the corresponding capability `supportTerminateDebuggee` is true).", + "properties": { + "command": { + "type": "string", + "enum": [ "disconnect" ] + }, + "arguments": { + "$ref": "#/definitions/DisconnectArguments" + } + }, + "required": [ "command" ] + }] + }, + "DisconnectArguments": { + "type": "object", + "description": "Arguments for `disconnect` request.", + "properties": { + "restart": { + "type": "boolean", + "description": "A value of true indicates that this `disconnect` request is part of a restart sequence." + }, + "terminateDebuggee": { + "type": "boolean", + "description": "Indicates whether the debuggee should be terminated when the debugger is disconnected.\nIf unspecified, the debug adapter is free to do whatever it thinks is best.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportTerminateDebuggee` is true." + }, + "suspendDebuggee": { + "type": "boolean", + "description": "Indicates whether the debuggee should stay suspended when the debugger is disconnected.\nIf unspecified, the debuggee should resume execution.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportSuspendDebuggee` is true." + } + } + }, + "DisconnectResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `disconnect` request. This is just an acknowledgement, so no body field is required." + }] + }, + + "TerminateRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "The `terminate` request is sent from the client to the debug adapter in order to shut down the debuggee gracefully. Clients should only call this request if the capability `supportsTerminateRequest` is true.\nTypically a debug adapter implements `terminate` by sending a software signal which the debuggee intercepts in order to clean things up properly before terminating itself.\nPlease note that this request does not directly affect the state of the debug session: if the debuggee decides to veto the graceful shutdown for any reason by not terminating itself, then the debug session just continues.\nClients can surface the `terminate` request as an explicit command or they can integrate it into a two stage Stop command that first sends `terminate` to request a graceful shutdown, and if that fails uses `disconnect` for a forceful shutdown.", + "properties": { + "command": { + "type": "string", + "enum": [ "terminate" ] + }, + "arguments": { + "$ref": "#/definitions/TerminateArguments" + } + }, + "required": [ "command" ] + }] + }, + "TerminateArguments": { + "type": "object", + "description": "Arguments for `terminate` request.", + "properties": { + "restart": { + "type": "boolean", + "description": "A value of true indicates that this `terminate` request is part of a restart sequence." + } + } + }, + "TerminateResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `terminate` request. This is just an acknowledgement, so no body field is required." + }] + }, + + "BreakpointLocationsRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "The `breakpointLocations` request returns all possible locations for source breakpoints in a given range.\nClients should only call this request if the corresponding capability `supportsBreakpointLocationsRequest` is true.", + "properties": { + "command": { + "type": "string", + "enum": [ "breakpointLocations" ] + }, + "arguments": { + "$ref": "#/definitions/BreakpointLocationsArguments" + } + }, + "required": [ "command" ] + }] + + }, + "BreakpointLocationsArguments": { + "type": "object", + "description": "Arguments for `breakpointLocations` request.", + "properties": { + "source": { + "$ref": "#/definitions/Source", + "description": "The source location of the breakpoints; either `source.path` or `source.sourceReference` must be specified." + }, + "line": { + "type": "integer", + "description": "Start line of range to search possible breakpoint locations in. If only the line is specified, the request returns all possible locations in that line." + }, + "column": { + "type": "integer", + "description": "Start position within `line` to search possible breakpoint locations in. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based. If no column is given, the first position in the start line is assumed." + }, + "endLine": { + "type": "integer", + "description": "End line of range to search possible breakpoint locations in. If no end line is given, then the end line is assumed to be the start line." + }, + "endColumn": { + "type": "integer", + "description": "End position within `endLine` to search possible breakpoint locations in. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based. If no end column is given, the last position in the end line is assumed." + } + }, + "required": [ "source", "line" ] + }, + "BreakpointLocationsResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `breakpointLocations` request.\nContains possible locations for source breakpoints.", + "properties": { + "body": { + "type": "object", + "properties": { + "breakpoints": { + "type": "array", + "items": { + "$ref": "#/definitions/BreakpointLocation" + }, + "description": "Sorted set of possible breakpoint locations." + } + }, + "required": [ "breakpoints" ] + } + }, + "required": [ "body" ] + }] + }, + + "SetBreakpointsRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "Sets multiple breakpoints for a single source and clears all previous breakpoints in that source.\nTo clear all breakpoint for a source, specify an empty array.\nWhen a breakpoint is hit, a `stopped` event (with reason `breakpoint`) is generated.", + "properties": { + "command": { + "type": "string", + "enum": [ "setBreakpoints" ] + }, + "arguments": { + "$ref": "#/definitions/SetBreakpointsArguments" + } + }, + "required": [ "command", "arguments" ] + }] + }, + "SetBreakpointsArguments": { + "type": "object", + "description": "Arguments for `setBreakpoints` request.", + "properties": { + "source": { + "$ref": "#/definitions/Source", + "description": "The source location of the breakpoints; either `source.path` or `source.sourceReference` must be specified." + }, + "breakpoints": { + "type": "array", + "items": { + "$ref": "#/definitions/SourceBreakpoint" + }, + "description": "The code locations of the breakpoints." + }, + "lines": { + "type": "array", + "items": { + "type": "integer" + }, + "description": "Deprecated: The code locations of the breakpoints." + }, + "sourceModified": { + "type": "boolean", + "description": "A value of true indicates that the underlying source has been modified which results in new breakpoint locations." + } + }, + "required": [ "source" ] + }, + "SetBreakpointsResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `setBreakpoints` request.\nReturned is information about each breakpoint created by this request.\nThis includes the actual code location and whether the breakpoint could be verified.\nThe breakpoints returned are in the same order as the elements of the `breakpoints`\n(or the deprecated `lines`) array in the arguments.", + "properties": { + "body": { + "type": "object", + "properties": { + "breakpoints": { + "type": "array", + "items": { + "$ref": "#/definitions/Breakpoint" + }, + "description": "Information about the breakpoints.\nThe array elements are in the same order as the elements of the `breakpoints` (or the deprecated `lines`) array in the arguments." + } + }, + "required": [ "breakpoints" ] + } + }, + "required": [ "body" ] + }] + }, + + "SetFunctionBreakpointsRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "Replaces all existing function breakpoints with new function breakpoints.\nTo clear all function breakpoints, specify an empty array.\nWhen a function breakpoint is hit, a `stopped` event (with reason `function breakpoint`) is generated.\nClients should only call this request if the corresponding capability `supportsFunctionBreakpoints` is true.", + "properties": { + "command": { + "type": "string", + "enum": [ "setFunctionBreakpoints" ] + }, + "arguments": { + "$ref": "#/definitions/SetFunctionBreakpointsArguments" + } + }, + "required": [ "command", "arguments" ] + }] + }, + "SetFunctionBreakpointsArguments": { + "type": "object", + "description": "Arguments for `setFunctionBreakpoints` request.", + "properties": { + "breakpoints": { + "type": "array", + "items": { + "$ref": "#/definitions/FunctionBreakpoint" + }, + "description": "The function names of the breakpoints." + } + }, + "required": [ "breakpoints" ] + }, + "SetFunctionBreakpointsResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `setFunctionBreakpoints` request.\nReturned is information about each breakpoint created by this request.", + "properties": { + "body": { + "type": "object", + "properties": { + "breakpoints": { + "type": "array", + "items": { + "$ref": "#/definitions/Breakpoint" + }, + "description": "Information about the breakpoints. The array elements correspond to the elements of the `breakpoints` array." + } + }, + "required": [ "breakpoints" ] + } + }, + "required": [ "body" ] + }] + }, + + "SetExceptionBreakpointsRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "The request configures the debugger's response to thrown exceptions.\nIf an exception is configured to break, a `stopped` event is fired (with reason `exception`).\nClients should only call this request if the corresponding capability `exceptionBreakpointFilters` returns one or more filters.", + "properties": { + "command": { + "type": "string", + "enum": [ "setExceptionBreakpoints" ] + }, + "arguments": { + "$ref": "#/definitions/SetExceptionBreakpointsArguments" + } + }, + "required": [ "command", "arguments" ] + }] + }, + "SetExceptionBreakpointsArguments": { + "type": "object", + "description": "Arguments for `setExceptionBreakpoints` request.", + "properties": { + "filters": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Set of exception filters specified by their ID. The set of all possible exception filters is defined by the `exceptionBreakpointFilters` capability. The `filter` and `filterOptions` sets are additive." + }, + "filterOptions": { + "type": "array", + "items": { + "$ref": "#/definitions/ExceptionFilterOptions" + }, + "description": "Set of exception filters and their options. The set of all possible exception filters is defined by the `exceptionBreakpointFilters` capability. This attribute is only honored by a debug adapter if the corresponding capability `supportsExceptionFilterOptions` is true. The `filter` and `filterOptions` sets are additive." + }, + "exceptionOptions": { + "type": "array", + "items": { + "$ref": "#/definitions/ExceptionOptions" + }, + "description": "Configuration options for selected exceptions.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportsExceptionOptions` is true." + } + }, + "required": [ "filters" ] + }, + "SetExceptionBreakpointsResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `setExceptionBreakpoints` request.\nThe response contains an array of `Breakpoint` objects with information about each exception breakpoint or filter. The `Breakpoint` objects are in the same order as the elements of the `filters`, `filterOptions`, `exceptionOptions` arrays given as arguments. If both `filters` and `filterOptions` are given, the returned array must start with `filters` information first, followed by `filterOptions` information.\nThe `verified` property of a `Breakpoint` object signals whether the exception breakpoint or filter could be successfully created and whether the condition is valid. In case of an error the `message` property explains the problem. The `id` property can be used to introduce a unique ID for the exception breakpoint or filter so that it can be updated subsequently by sending breakpoint events.\nFor backward compatibility both the `breakpoints` array and the enclosing `body` are optional. If these elements are missing a client is not able to show problems for individual exception breakpoints or filters.", + "properties": { + "body": { + "type": "object", + "properties": { + "breakpoints": { + "type": "array", + "items": { + "$ref": "#/definitions/Breakpoint" + }, + "description": "Information about the exception breakpoints or filters.\nThe breakpoints returned are in the same order as the elements of the `filters`, `filterOptions`, `exceptionOptions` arrays in the arguments. If both `filters` and `filterOptions` are given, the returned array must start with `filters` information first, followed by `filterOptions` information." + } + } + } + } + }] + }, + + "DataBreakpointInfoRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "Obtains information on a possible data breakpoint that could be set on an expression or variable.\nClients should only call this request if the corresponding capability `supportsDataBreakpoints` is true.", + "properties": { + "command": { + "type": "string", + "enum": [ "dataBreakpointInfo" ] + }, + "arguments": { + "$ref": "#/definitions/DataBreakpointInfoArguments" + } + }, + "required": [ "command", "arguments" ] + }] + }, + "DataBreakpointInfoArguments": { + "type": "object", + "description": "Arguments for `dataBreakpointInfo` request.", + "properties": { + "variablesReference": { + "type": "integer", + "description": "Reference to the variable container if the data breakpoint is requested for a child of the container. The `variablesReference` must have been obtained in the current suspended state. See 'Lifetime of Object References' in the Overview section for details." + }, + "name": { + "type": "string", + "description": "The name of the variable's child to obtain data breakpoint information for.\nIf `variablesReference` isn't specified, this can be an expression." + }, + "frameId": { + "type": "integer", + "description": "When `name` is an expression, evaluate it in the scope of this stack frame. If not specified, the expression is evaluated in the global scope. When `variablesReference` is specified, this property has no effect." + } + }, + "required": [ "name" ] + }, + "DataBreakpointInfoResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `dataBreakpointInfo` request.", + "properties": { + "body": { + "type": "object", + "properties": { + "dataId": { + "type": [ "string", "null" ], + "description": "An identifier for the data on which a data breakpoint can be registered with the `setDataBreakpoints` request or null if no data breakpoint is available. If a `variablesReference` or `frameId` is passed, the `dataId` is valid in the current suspended state, otherwise it's valid indefinitely. See 'Lifetime of Object References' in the Overview section for details. Breakpoints set using the `dataId` in the `setDataBreakpoints` request may outlive the lifetime of the associated `dataId`." + }, + "description": { + "type": "string", + "description": "UI string that describes on what data the breakpoint is set on or why a data breakpoint is not available." + }, + "accessTypes": { + "type": "array", + "items": { + "$ref": "#/definitions/DataBreakpointAccessType" + }, + "description": "Attribute lists the available access types for a potential data breakpoint. A UI client could surface this information." + }, + "canPersist": { + "type": "boolean", + "description": "Attribute indicates that a potential data breakpoint could be persisted across sessions." + } + }, + "required": [ "dataId", "description" ] + } + }, + "required": [ "body" ] + }] + }, + + "SetDataBreakpointsRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "Replaces all existing data breakpoints with new data breakpoints.\nTo clear all data breakpoints, specify an empty array.\nWhen a data breakpoint is hit, a `stopped` event (with reason `data breakpoint`) is generated.\nClients should only call this request if the corresponding capability `supportsDataBreakpoints` is true.", + "properties": { + "command": { + "type": "string", + "enum": [ "setDataBreakpoints" ] + }, + "arguments": { + "$ref": "#/definitions/SetDataBreakpointsArguments" + } + }, + "required": [ "command", "arguments" ] + }] + }, + "SetDataBreakpointsArguments": { + "type": "object", + "description": "Arguments for `setDataBreakpoints` request.", + "properties": { + "breakpoints": { + "type": "array", + "items": { + "$ref": "#/definitions/DataBreakpoint" + }, + "description": "The contents of this array replaces all existing data breakpoints. An empty array clears all data breakpoints." + } + }, + "required": [ "breakpoints" ] + }, + "SetDataBreakpointsResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `setDataBreakpoints` request.\nReturned is information about each breakpoint created by this request.", + "properties": { + "body": { + "type": "object", + "properties": { + "breakpoints": { + "type": "array", + "items": { + "$ref": "#/definitions/Breakpoint" + }, + "description": "Information about the data breakpoints. The array elements correspond to the elements of the input argument `breakpoints` array." + } + }, + "required": [ "breakpoints" ] + } + }, + "required": [ "body" ] + }] + }, + + "SetInstructionBreakpointsRequest": { + "allOf": [ + { "$ref": "#/definitions/Request" }, + { + "type": "object", + "description": "Replaces all existing instruction breakpoints. Typically, instruction breakpoints would be set from a disassembly window. \nTo clear all instruction breakpoints, specify an empty array.\nWhen an instruction breakpoint is hit, a `stopped` event (with reason `instruction breakpoint`) is generated.\nClients should only call this request if the corresponding capability `supportsInstructionBreakpoints` is true.", + "properties": { + "command": { + "type": "string", + "enum": [ "setInstructionBreakpoints" ] + }, + "arguments": { + "$ref": "#/definitions/SetInstructionBreakpointsArguments" + } + }, + "required": [ "command", "arguments" ] + }] + }, + "SetInstructionBreakpointsArguments": { + "type": "object", + "description": "Arguments for `setInstructionBreakpoints` request", + "properties": { + "breakpoints": { + "type": "array", + "items": { + "$ref": "#/definitions/InstructionBreakpoint" + }, + "description": "The instruction references of the breakpoints" + } + }, + "required": ["breakpoints"] + }, + "SetInstructionBreakpointsResponse": { + "allOf": [ + { "$ref": "#/definitions/Response" }, + { + "type": "object", + "description": "Response to `setInstructionBreakpoints` request", + "properties": { + "body": { + "type": "object", + "properties": { + "breakpoints": { + "type": "array", + "items": { + "$ref": "#/definitions/Breakpoint" + }, + "description": "Information about the breakpoints. The array elements correspond to the elements of the `breakpoints` array." + } + }, + "required": [ "breakpoints" ] + } + }, + "required": [ "body" ] + }] + }, + + "ContinueRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "The request resumes execution of all threads. If the debug adapter supports single thread execution (see capability `supportsSingleThreadExecutionRequests`), setting the `singleThread` argument to true resumes only the specified thread. If not all threads were resumed, the `allThreadsContinued` attribute of the response should be set to false.", + "properties": { + "command": { + "type": "string", + "enum": [ "continue" ] + }, + "arguments": { + "$ref": "#/definitions/ContinueArguments" + } + }, + "required": [ "command", "arguments" ] + }] + }, + "ContinueArguments": { + "type": "object", + "description": "Arguments for `continue` request.", + "properties": { + "threadId": { + "type": "integer", + "description": "Specifies the active thread. If the debug adapter supports single thread execution (see `supportsSingleThreadExecutionRequests`) and the argument `singleThread` is true, only the thread with this ID is resumed." + }, + "singleThread": { + "type": "boolean", + "description": "If this flag is true, execution is resumed only for the thread with given `threadId`." + } + }, + "required": [ "threadId" ] + }, + "ContinueResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `continue` request.", + "properties": { + "body": { + "type": "object", + "properties": { + "allThreadsContinued": { + "type": "boolean", + "description": "The value true (or a missing property) signals to the client that all threads have been resumed. The value false indicates that not all threads were resumed." + } + } + } + }, + "required": [ "body" ] + }] + }, + + "NextRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "The request executes one step (in the given granularity) for the specified thread and allows all other threads to run freely by resuming them.\nIf the debug adapter supports single thread execution (see capability `supportsSingleThreadExecutionRequests`), setting the `singleThread` argument to true prevents other suspended threads from resuming.\nThe debug adapter first sends the response and then a `stopped` event (with reason `step`) after the step has completed.", + "properties": { + "command": { + "type": "string", + "enum": [ "next" ] + }, + "arguments": { + "$ref": "#/definitions/NextArguments" + } + }, + "required": [ "command", "arguments" ] + }] + }, + "NextArguments": { + "type": "object", + "description": "Arguments for `next` request.", + "properties": { + "threadId": { + "type": "integer", + "description": "Specifies the thread for which to resume execution for one step (of the given granularity)." + }, + "singleThread": { + "type": "boolean", + "description": "If this flag is true, all other suspended threads are not resumed." + }, + "granularity": { + "$ref": "#/definitions/SteppingGranularity", + "description": "Stepping granularity. If no granularity is specified, a granularity of `statement` is assumed." + } + }, + "required": [ "threadId" ] + }, + "NextResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `next` request. This is just an acknowledgement, so no body field is required." + }] + }, + + "StepInRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "The request resumes the given thread to step into a function/method and allows all other threads to run freely by resuming them.\nIf the debug adapter supports single thread execution (see capability `supportsSingleThreadExecutionRequests`), setting the `singleThread` argument to true prevents other suspended threads from resuming.\nIf the request cannot step into a target, `stepIn` behaves like the `next` request.\nThe debug adapter first sends the response and then a `stopped` event (with reason `step`) after the step has completed.\nIf there are multiple function/method calls (or other targets) on the source line,\nthe argument `targetId` can be used to control into which target the `stepIn` should occur.\nThe list of possible targets for a given source line can be retrieved via the `stepInTargets` request.", + "properties": { + "command": { + "type": "string", + "enum": [ "stepIn" ] + }, + "arguments": { + "$ref": "#/definitions/StepInArguments" + } + }, + "required": [ "command", "arguments" ] + }] + }, + "StepInArguments": { + "type": "object", + "description": "Arguments for `stepIn` request.", + "properties": { + "threadId": { + "type": "integer", + "description": "Specifies the thread for which to resume execution for one step-into (of the given granularity)." + }, + "singleThread": { + "type": "boolean", + "description": "If this flag is true, all other suspended threads are not resumed." + }, + "targetId": { + "type": "integer", + "description": "Id of the target to step into." + }, + "granularity": { + "$ref": "#/definitions/SteppingGranularity", + "description": "Stepping granularity. If no granularity is specified, a granularity of `statement` is assumed." + } + }, + "required": [ "threadId" ] + }, + "StepInResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `stepIn` request. This is just an acknowledgement, so no body field is required." + }] + }, + + "StepOutRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "The request resumes the given thread to step out (return) from a function/method and allows all other threads to run freely by resuming them.\nIf the debug adapter supports single thread execution (see capability `supportsSingleThreadExecutionRequests`), setting the `singleThread` argument to true prevents other suspended threads from resuming.\nThe debug adapter first sends the response and then a `stopped` event (with reason `step`) after the step has completed.", + "properties": { + "command": { + "type": "string", + "enum": [ "stepOut" ] + }, + "arguments": { + "$ref": "#/definitions/StepOutArguments" + } + }, + "required": [ "command", "arguments" ] + }] + }, + "StepOutArguments": { + "type": "object", + "description": "Arguments for `stepOut` request.", + "properties": { + "threadId": { + "type": "integer", + "description": "Specifies the thread for which to resume execution for one step-out (of the given granularity)." + }, + "singleThread": { + "type": "boolean", + "description": "If this flag is true, all other suspended threads are not resumed." + }, + "granularity": { + "$ref": "#/definitions/SteppingGranularity", + "description": "Stepping granularity. If no granularity is specified, a granularity of `statement` is assumed." + } + }, + "required": [ "threadId" ] + }, + "StepOutResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `stepOut` request. This is just an acknowledgement, so no body field is required." + }] + }, + + "StepBackRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "The request executes one backward step (in the given granularity) for the specified thread and allows all other threads to run backward freely by resuming them.\nIf the debug adapter supports single thread execution (see capability `supportsSingleThreadExecutionRequests`), setting the `singleThread` argument to true prevents other suspended threads from resuming.\nThe debug adapter first sends the response and then a `stopped` event (with reason `step`) after the step has completed.\nClients should only call this request if the corresponding capability `supportsStepBack` is true.", + "properties": { + "command": { + "type": "string", + "enum": [ "stepBack" ] + }, + "arguments": { + "$ref": "#/definitions/StepBackArguments" + } + }, + "required": [ "command", "arguments" ] + }] + }, + "StepBackArguments": { + "type": "object", + "description": "Arguments for `stepBack` request.", + "properties": { + "threadId": { + "type": "integer", + "description": "Specifies the thread for which to resume execution for one step backwards (of the given granularity)." + }, + "singleThread": { + "type": "boolean", + "description": "If this flag is true, all other suspended threads are not resumed." + }, + "granularity": { + "$ref": "#/definitions/SteppingGranularity", + "description": "Stepping granularity to step. If no granularity is specified, a granularity of `statement` is assumed." + } + }, + "required": [ "threadId" ] + }, + "StepBackResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `stepBack` request. This is just an acknowledgement, so no body field is required." + }] + }, + + "ReverseContinueRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "The request resumes backward execution of all threads. If the debug adapter supports single thread execution (see capability `supportsSingleThreadExecutionRequests`), setting the `singleThread` argument to true resumes only the specified thread. If not all threads were resumed, the `allThreadsContinued` attribute of the response should be set to false.\nClients should only call this request if the corresponding capability `supportsStepBack` is true.", + "properties": { + "command": { + "type": "string", + "enum": [ "reverseContinue" ] + }, + "arguments": { + "$ref": "#/definitions/ReverseContinueArguments" + } + }, + "required": [ "command", "arguments" ] + }] + }, + "ReverseContinueArguments": { + "type": "object", + "description": "Arguments for `reverseContinue` request.", + "properties": { + "threadId": { + "type": "integer", + "description": "Specifies the active thread. If the debug adapter supports single thread execution (see `supportsSingleThreadExecutionRequests`) and the `singleThread` argument is true, only the thread with this ID is resumed." + }, + "singleThread": { + "type": "boolean", + "description": "If this flag is true, backward execution is resumed only for the thread with given `threadId`." + } + + }, + "required": [ "threadId" ] + }, + "ReverseContinueResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `reverseContinue` request. This is just an acknowledgement, so no body field is required." + }] + }, + + "RestartFrameRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "The request restarts execution of the specified stack frame.\nThe debug adapter first sends the response and then a `stopped` event (with reason `restart`) after the restart has completed.\nClients should only call this request if the corresponding capability `supportsRestartFrame` is true.", + "properties": { + "command": { + "type": "string", + "enum": [ "restartFrame" ] + }, + "arguments": { + "$ref": "#/definitions/RestartFrameArguments" + } + }, + "required": [ "command", "arguments" ] + }] + }, + "RestartFrameArguments": { + "type": "object", + "description": "Arguments for `restartFrame` request.", + "properties": { + "frameId": { + "type": "integer", + "description": "Restart the stack frame identified by `frameId`. The `frameId` must have been obtained in the current suspended state. See 'Lifetime of Object References' in the Overview section for details." + } + }, + "required": [ "frameId" ] + }, + "RestartFrameResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `restartFrame` request. This is just an acknowledgement, so no body field is required." + }] + }, + + "GotoRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "The request sets the location where the debuggee will continue to run.\nThis makes it possible to skip the execution of code or to execute code again.\nThe code between the current location and the goto target is not executed but skipped.\nThe debug adapter first sends the response and then a `stopped` event with reason `goto`.\nClients should only call this request if the corresponding capability `supportsGotoTargetsRequest` is true (because only then goto targets exist that can be passed as arguments).", + "properties": { + "command": { + "type": "string", + "enum": [ "goto" ] + }, + "arguments": { + "$ref": "#/definitions/GotoArguments" + } + }, + "required": [ "command", "arguments" ] + }] + }, + "GotoArguments": { + "type": "object", + "description": "Arguments for `goto` request.", + "properties": { + "threadId": { + "type": "integer", + "description": "Set the goto target for this thread." + }, + "targetId": { + "type": "integer", + "description": "The location where the debuggee will continue to run." + } + }, + "required": [ "threadId", "targetId" ] + }, + "GotoResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `goto` request. This is just an acknowledgement, so no body field is required." + }] + }, + + "PauseRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "The request suspends the debuggee.\nThe debug adapter first sends the response and then a `stopped` event (with reason `pause`) after the thread has been paused successfully.", + "properties": { + "command": { + "type": "string", + "enum": [ "pause" ] + }, + "arguments": { + "$ref": "#/definitions/PauseArguments" + } + }, + "required": [ "command", "arguments" ] + }] + }, + "PauseArguments": { + "type": "object", + "description": "Arguments for `pause` request.", + "properties": { + "threadId": { + "type": "integer", + "description": "Pause execution for this thread." + } + }, + "required": [ "threadId" ] + }, + "PauseResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `pause` request. This is just an acknowledgement, so no body field is required." + }] + }, + + "StackTraceRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "The request returns a stacktrace from the current execution state of a given thread.\nA client can request all stack frames by omitting the startFrame and levels arguments. For performance-conscious clients and if the corresponding capability `supportsDelayedStackTraceLoading` is true, stack frames can be retrieved in a piecemeal way with the `startFrame` and `levels` arguments. The response of the `stackTrace` request may contain a `totalFrames` property that hints at the total number of frames in the stack. If a client needs this total number upfront, it can issue a request for a single (first) frame and depending on the value of `totalFrames` decide how to proceed. In any case a client should be prepared to receive fewer frames than requested, which is an indication that the end of the stack has been reached.", + "properties": { + "command": { + "type": "string", + "enum": [ "stackTrace" ] + }, + "arguments": { + "$ref": "#/definitions/StackTraceArguments" + } + }, + "required": [ "command", "arguments" ] + }] + }, + "StackTraceArguments": { + "type": "object", + "description": "Arguments for `stackTrace` request.", + "properties": { + "threadId": { + "type": "integer", + "description": "Retrieve the stacktrace for this thread." + }, + "startFrame": { + "type": "integer", + "description": "The index of the first frame to return; if omitted frames start at 0." + }, + "levels": { + "type": "integer", + "description": "The maximum number of frames to return. If levels is not specified or 0, all frames are returned." + }, + "format": { + "$ref": "#/definitions/StackFrameFormat", + "description": "Specifies details on how to format the stack frames.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportsValueFormattingOptions` is true." + } + }, + "required": [ "threadId" ] + }, + "StackTraceResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `stackTrace` request.", + "properties": { + "body": { + "type": "object", + "properties": { + "stackFrames": { + "type": "array", + "items": { + "$ref": "#/definitions/StackFrame" + }, + "description": "The frames of the stack frame. If the array has length zero, there are no stack frames available.\nThis means that there is no location information available." + }, + "totalFrames": { + "type": "integer", + "description": "The total number of frames available in the stack. If omitted or if `totalFrames` is larger than the available frames, a client is expected to request frames until a request returns less frames than requested (which indicates the end of the stack). Returning monotonically increasing `totalFrames` values for subsequent requests can be used to enforce paging in the client." + } + }, + "required": [ "stackFrames" ] + } + }, + "required": [ "body" ] + }] + }, + + "ScopesRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "The request returns the variable scopes for a given stack frame ID.", + "properties": { + "command": { + "type": "string", + "enum": [ "scopes" ] + }, + "arguments": { + "$ref": "#/definitions/ScopesArguments" + } + }, + "required": [ "command", "arguments" ] + }] + }, + "ScopesArguments": { + "type": "object", + "description": "Arguments for `scopes` request.", + "properties": { + "frameId": { + "type": "integer", + "description": "Retrieve the scopes for the stack frame identified by `frameId`. The `frameId` must have been obtained in the current suspended state. See 'Lifetime of Object References' in the Overview section for details." + } + }, + "required": [ "frameId" ] + }, + "ScopesResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `scopes` request.", + "properties": { + "body": { + "type": "object", + "properties": { + "scopes": { + "type": "array", + "items": { + "$ref": "#/definitions/Scope" + }, + "description": "The scopes of the stack frame. If the array has length zero, there are no scopes available." + } + }, + "required": [ "scopes" ] + } + }, + "required": [ "body" ] + }] + }, + + "VariablesRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "Retrieves all child variables for the given variable reference.\nA filter can be used to limit the fetched children to either named or indexed children.", + "properties": { + "command": { + "type": "string", + "enum": [ "variables" ] + }, + "arguments": { + "$ref": "#/definitions/VariablesArguments" + } + }, + "required": [ "command", "arguments" ] + }] + }, + "VariablesArguments": { + "type": "object", + "description": "Arguments for `variables` request.", + "properties": { + "variablesReference": { + "type": "integer", + "description": "The variable for which to retrieve its children. The `variablesReference` must have been obtained in the current suspended state. See 'Lifetime of Object References' in the Overview section for details." + }, + "filter": { + "type": "string", + "enum": [ "indexed", "named" ], + "description": "Filter to limit the child variables to either named or indexed. If omitted, both types are fetched." + }, + "start": { + "type": "integer", + "description": "The index of the first variable to return; if omitted children start at 0.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportsVariablePaging` is true." + }, + "count": { + "type": "integer", + "description": "The number of variables to return. If count is missing or 0, all variables are returned.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportsVariablePaging` is true." + }, + "format": { + "$ref": "#/definitions/ValueFormat", + "description": "Specifies details on how to format the Variable values.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportsValueFormattingOptions` is true." + } + }, + "required": [ "variablesReference" ] + }, + "VariablesResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `variables` request.", + "properties": { + "body": { + "type": "object", + "properties": { + "variables": { + "type": "array", + "items": { + "$ref": "#/definitions/Variable" + }, + "description": "All (or a range) of variables for the given variable reference." + } + }, + "required": [ "variables" ] + } + }, + "required": [ "body" ] + }] + }, + + "SetVariableRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "Set the variable with the given name in the variable container to a new value. Clients should only call this request if the corresponding capability `supportsSetVariable` is true.\nIf a debug adapter implements both `setVariable` and `setExpression`, a client will only use `setExpression` if the variable has an `evaluateName` property.", + "properties": { + "command": { + "type": "string", + "enum": [ "setVariable" ] + }, + "arguments": { + "$ref": "#/definitions/SetVariableArguments" + } + }, + "required": [ "command", "arguments" ] + }] + }, + "SetVariableArguments": { + "type": "object", + "description": "Arguments for `setVariable` request.", + "properties": { + "variablesReference": { + "type": "integer", + "description": "The reference of the variable container. The `variablesReference` must have been obtained in the current suspended state. See 'Lifetime of Object References' in the Overview section for details." + }, + "name": { + "type": "string", + "description": "The name of the variable in the container." + }, + "value": { + "type": "string", + "description": "The value of the variable." + }, + "format": { + "$ref": "#/definitions/ValueFormat", + "description": "Specifies details on how to format the response value." + } + }, + "required": [ "variablesReference", "name", "value" ] + }, + "SetVariableResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `setVariable` request.", + "properties": { + "body": { + "type": "object", + "properties": { + "value": { + "type": "string", + "description": "The new value of the variable." + }, + "type": { + "type": "string", + "description": "The type of the new value. Typically shown in the UI when hovering over the value." + }, + "variablesReference": { + "type": "integer", + "description": "If `variablesReference` is > 0, the new value is structured and its children can be retrieved by passing `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details." + }, + "namedVariables": { + "type": "integer", + "description": "The number of named child variables.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1)." + }, + "indexedVariables": { + "type": "integer", + "description": "The number of indexed child variables.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1)." + }, + "memoryReference": { + "type": "string", + "description": "A memory reference to a location appropriate for this result.\nFor pointer type eval results, this is generally a reference to the memory address contained in the pointer.\nThis attribute may be returned by a debug adapter if corresponding capability `supportsMemoryReferences` is true." + } + }, + "required": [ "value" ] + } + }, + "required": [ "body" ] + }] + }, + + "SourceRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "The request retrieves the source code for a given source reference.", + "properties": { + "command": { + "type": "string", + "enum": [ "source" ] + }, + "arguments": { + "$ref": "#/definitions/SourceArguments" + } + }, + "required": [ "command", "arguments" ] + }] + }, + "SourceArguments": { + "type": "object", + "description": "Arguments for `source` request.", + "properties": { + "source": { + "$ref": "#/definitions/Source", + "description": "Specifies the source content to load. Either `source.path` or `source.sourceReference` must be specified." + }, + "sourceReference": { + "type": "integer", + "description": "The reference to the source. This is the same as `source.sourceReference`.\nThis is provided for backward compatibility since old clients do not understand the `source` attribute." + } + }, + "required": [ "sourceReference" ] + }, + "SourceResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `source` request.", + "properties": { + "body": { + "type": "object", + "properties": { + "content": { + "type": "string", + "description": "Content of the source reference." + }, + "mimeType": { + "type": "string", + "description": "Content type (MIME type) of the source." + } + }, + "required": [ "content" ] + } + }, + "required": [ "body" ] + }] + }, + + "ThreadsRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "The request retrieves a list of all threads.", + "properties": { + "command": { + "type": "string", + "enum": [ "threads" ] + } + }, + "required": [ "command" ] + }] + }, + "ThreadsResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `threads` request.", + "properties": { + "body": { + "type": "object", + "properties": { + "threads": { + "type": "array", + "items": { + "$ref": "#/definitions/Thread" + }, + "description": "All threads." + } + }, + "required": [ "threads" ] + } + }, + "required": [ "body" ] + }] + }, + + "TerminateThreadsRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "The request terminates the threads with the given ids.\nClients should only call this request if the corresponding capability `supportsTerminateThreadsRequest` is true.", + "properties": { + "command": { + "type": "string", + "enum": [ "terminateThreads" ] + }, + "arguments": { + "$ref": "#/definitions/TerminateThreadsArguments" + } + }, + "required": [ "command", "arguments" ] + }] + }, + "TerminateThreadsArguments": { + "type": "object", + "description": "Arguments for `terminateThreads` request.", + "properties": { + "threadIds": { + "type": "array", + "items": { + "type": "integer" + }, + "description": "Ids of threads to be terminated." + } + } + }, + "TerminateThreadsResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `terminateThreads` request. This is just an acknowledgement, no body field is required." + }] + }, + + "ModulesRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "Modules can be retrieved from the debug adapter with this request which can either return all modules or a range of modules to support paging.\nClients should only call this request if the corresponding capability `supportsModulesRequest` is true.", + "properties": { + "command": { + "type": "string", + "enum": [ "modules" ] + }, + "arguments": { + "$ref": "#/definitions/ModulesArguments" + } + }, + "required": [ "command", "arguments" ] + }] + }, + "ModulesArguments": { + "type": "object", + "description": "Arguments for `modules` request.", + "properties": { + "startModule": { + "type": "integer", + "description": "The index of the first module to return; if omitted modules start at 0." + }, + "moduleCount": { + "type": "integer", + "description": "The number of modules to return. If `moduleCount` is not specified or 0, all modules are returned." + } + } + }, + "ModulesResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `modules` request.", + "properties": { + "body": { + "type": "object", + "properties": { + "modules": { + "type": "array", + "items": { + "$ref": "#/definitions/Module" + }, + "description": "All modules or range of modules." + }, + "totalModules": { + "type": "integer", + "description": "The total number of modules available." + } + }, + "required": [ "modules" ] + } + }, + "required": [ "body" ] + }] + }, + + "LoadedSourcesRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "Retrieves the set of all sources currently loaded by the debugged process.\nClients should only call this request if the corresponding capability `supportsLoadedSourcesRequest` is true.", + "properties": { + "command": { + "type": "string", + "enum": [ "loadedSources" ] + }, + "arguments": { + "$ref": "#/definitions/LoadedSourcesArguments" + } + }, + "required": [ "command" ] + }] + }, + "LoadedSourcesArguments": { + "type": "object", + "description": "Arguments for `loadedSources` request." + }, + "LoadedSourcesResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `loadedSources` request.", + "properties": { + "body": { + "type": "object", + "properties": { + "sources": { + "type": "array", + "items": { + "$ref": "#/definitions/Source" + }, + "description": "Set of loaded sources." + } + }, + "required": [ "sources" ] + } + }, + "required": [ "body" ] + }] + }, + + "EvaluateRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "Evaluates the given expression in the context of the topmost stack frame.\nThe expression has access to any variables and arguments that are in scope.", + "properties": { + "command": { + "type": "string", + "enum": [ "evaluate" ] + }, + "arguments": { + "$ref": "#/definitions/EvaluateArguments" + } + }, + "required": [ "command", "arguments" ] + }] + }, + "EvaluateArguments": { + "type": "object", + "description": "Arguments for `evaluate` request.", + "properties": { + "expression": { + "type": "string", + "description": "The expression to evaluate." + }, + "frameId": { + "type": "integer", + "description": "Evaluate the expression in the scope of this stack frame. If not specified, the expression is evaluated in the global scope." + }, + "context": { + "type": "string", + "_enum": [ "watch", "repl", "hover", "clipboard", "variables" ], + "enumDescriptions": [ + "evaluate is called from a watch view context.", + "evaluate is called from a REPL context.", + "evaluate is called to generate the debug hover contents.\nThis value should only be used if the corresponding capability `supportsEvaluateForHovers` is true.", + "evaluate is called to generate clipboard contents.\nThis value should only be used if the corresponding capability `supportsClipboardContext` is true.", + "evaluate is called from a variables view context." + ], + "description": "The context in which the evaluate request is used." + }, + "format": { + "$ref": "#/definitions/ValueFormat", + "description": "Specifies details on how to format the result.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportsValueFormattingOptions` is true." + } + }, + "required": [ "expression" ] + }, + "EvaluateResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `evaluate` request.", + "properties": { + "body": { + "type": "object", + "properties": { + "result": { + "type": "string", + "description": "The result of the evaluate request." + }, + "type": { + "type": "string", + "description": "The type of the evaluate result.\nThis attribute should only be returned by a debug adapter if the corresponding capability `supportsVariableType` is true." + }, + "presentationHint": { + "$ref": "#/definitions/VariablePresentationHint", + "description": "Properties of an evaluate result that can be used to determine how to render the result in the UI." + }, + "variablesReference": { + "type": "integer", + "description": "If `variablesReference` is > 0, the evaluate result is structured and its children can be retrieved by passing `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details." + }, + "namedVariables": { + "type": "integer", + "description": "The number of named child variables.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1)." + }, + "indexedVariables": { + "type": "integer", + "description": "The number of indexed child variables.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1)." + }, + "memoryReference": { + "type": "string", + "description": "A memory reference to a location appropriate for this result.\nFor pointer type eval results, this is generally a reference to the memory address contained in the pointer.\nThis attribute may be returned by a debug adapter if corresponding capability `supportsMemoryReferences` is true." + } + }, + "required": [ "result", "variablesReference" ] + } + }, + "required": [ "body" ] + }] + }, + + "SetExpressionRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "Evaluates the given `value` expression and assigns it to the `expression` which must be a modifiable l-value.\nThe expressions have access to any variables and arguments that are in scope of the specified frame.\nClients should only call this request if the corresponding capability `supportsSetExpression` is true.\nIf a debug adapter implements both `setExpression` and `setVariable`, a client uses `setExpression` if the variable has an `evaluateName` property.", + "properties": { + "command": { + "type": "string", + "enum": [ "setExpression" ] + }, + "arguments": { + "$ref": "#/definitions/SetExpressionArguments" + } + }, + "required": [ "command", "arguments" ] + }] + }, + "SetExpressionArguments": { + "type": "object", + "description": "Arguments for `setExpression` request.", + "properties": { + "expression": { + "type": "string", + "description": "The l-value expression to assign to." + }, + "value": { + "type": "string", + "description": "The value expression to assign to the l-value expression." + }, + "frameId": { + "type": "integer", + "description": "Evaluate the expressions in the scope of this stack frame. If not specified, the expressions are evaluated in the global scope." + }, + "format": { + "$ref": "#/definitions/ValueFormat", + "description": "Specifies how the resulting value should be formatted." + } + }, + "required": [ "expression", "value" ] + }, + "SetExpressionResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `setExpression` request.", + "properties": { + "body": { + "type": "object", + "properties": { + "value": { + "type": "string", + "description": "The new value of the expression." + }, + "type": { + "type": "string", + "description": "The type of the value.\nThis attribute should only be returned by a debug adapter if the corresponding capability `supportsVariableType` is true." + }, + "presentationHint": { + "$ref": "#/definitions/VariablePresentationHint", + "description": "Properties of a value that can be used to determine how to render the result in the UI." + }, + "variablesReference": { + "type": "integer", + "description": "If `variablesReference` is > 0, the evaluate result is structured and its children can be retrieved by passing `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details." + }, + "namedVariables": { + "type": "integer", + "description": "The number of named child variables.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1)." + }, + "indexedVariables": { + "type": "integer", + "description": "The number of indexed child variables.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1)." + }, + "memoryReference": { + "type": "string", + "description": "A memory reference to a location appropriate for this result.\nFor pointer type eval results, this is generally a reference to the memory address contained in the pointer.\nThis attribute may be returned by a debug adapter if corresponding capability `supportsMemoryReferences` is true." + } + }, + "required": [ "value" ] + } + }, + "required": [ "body" ] + }] + }, + + "StepInTargetsRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "This request retrieves the possible step-in targets for the specified stack frame.\nThese targets can be used in the `stepIn` request.\nClients should only call this request if the corresponding capability `supportsStepInTargetsRequest` is true.", + "properties": { + "command": { + "type": "string", + "enum": [ "stepInTargets" ] + }, + "arguments": { + "$ref": "#/definitions/StepInTargetsArguments" + } + }, + "required": [ "command", "arguments" ] + }] + }, + "StepInTargetsArguments": { + "type": "object", + "description": "Arguments for `stepInTargets` request.", + "properties": { + "frameId": { + "type": "integer", + "description": "The stack frame for which to retrieve the possible step-in targets." + } + }, + "required": [ "frameId" ] + }, + "StepInTargetsResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `stepInTargets` request.", + "properties": { + "body": { + "type": "object", + "properties": { + "targets": { + "type": "array", + "items": { + "$ref": "#/definitions/StepInTarget" + }, + "description": "The possible step-in targets of the specified source location." + } + }, + "required": [ "targets" ] + } + }, + "required": [ "body" ] + }] + }, + + "GotoTargetsRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "This request retrieves the possible goto targets for the specified source location.\nThese targets can be used in the `goto` request.\nClients should only call this request if the corresponding capability `supportsGotoTargetsRequest` is true.", + "properties": { + "command": { + "type": "string", + "enum": [ "gotoTargets" ] + }, + "arguments": { + "$ref": "#/definitions/GotoTargetsArguments" + } + }, + "required": [ "command", "arguments" ] + }] + }, + "GotoTargetsArguments": { + "type": "object", + "description": "Arguments for `gotoTargets` request.", + "properties": { + "source": { + "$ref": "#/definitions/Source", + "description": "The source location for which the goto targets are determined." + }, + "line": { + "type": "integer", + "description": "The line location for which the goto targets are determined." + }, + "column": { + "type": "integer", + "description": "The position within `line` for which the goto targets are determined. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based." + } + }, + "required": [ "source", "line" ] + }, + "GotoTargetsResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `gotoTargets` request.", + "properties": { + "body": { + "type": "object", + "properties": { + "targets": { + "type": "array", + "items": { + "$ref": "#/definitions/GotoTarget" + }, + "description": "The possible goto targets of the specified location." + } + }, + "required": [ "targets" ] + } + }, + "required": [ "body" ] + }] + }, + + "CompletionsRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "Returns a list of possible completions for a given caret position and text.\nClients should only call this request if the corresponding capability `supportsCompletionsRequest` is true.", + "properties": { + "command": { + "type": "string", + "enum": [ "completions" ] + }, + "arguments": { + "$ref": "#/definitions/CompletionsArguments" + } + }, + "required": [ "command", "arguments" ] + }] + }, + "CompletionsArguments": { + "type": "object", + "description": "Arguments for `completions` request.", + "properties": { + "frameId": { + "type": "integer", + "description": "Returns completions in the scope of this stack frame. If not specified, the completions are returned for the global scope." + }, + "text": { + "type": "string", + "description": "One or more source lines. Typically this is the text users have typed into the debug console before they asked for completion." + }, + "column": { + "type": "integer", + "description": "The position within `text` for which to determine the completion proposals. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based." + }, + "line": { + "type": "integer", + "description": "A line for which to determine the completion proposals. If missing the first line of the text is assumed." + } + }, + "required": [ "text", "column" ] + }, + "CompletionsResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `completions` request.", + "properties": { + "body": { + "type": "object", + "properties": { + "targets": { + "type": "array", + "items": { + "$ref": "#/definitions/CompletionItem" + }, + "description": "The possible completions for ." + } + }, + "required": [ "targets" ] + } + }, + "required": [ "body" ] + }] + }, + + "ExceptionInfoRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "Retrieves the details of the exception that caused this event to be raised.\nClients should only call this request if the corresponding capability `supportsExceptionInfoRequest` is true.", + "properties": { + "command": { + "type": "string", + "enum": [ "exceptionInfo" ] + }, + "arguments": { + "$ref": "#/definitions/ExceptionInfoArguments" + } + }, + "required": [ "command", "arguments" ] + }] + }, + "ExceptionInfoArguments": { + "type": "object", + "description": "Arguments for `exceptionInfo` request.", + "properties": { + "threadId": { + "type": "integer", + "description": "Thread for which exception information should be retrieved." + } + }, + "required": [ "threadId" ] + }, + "ExceptionInfoResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `exceptionInfo` request.", + "properties": { + "body": { + "type": "object", + "properties": { + "exceptionId": { + "type": "string", + "description": "ID of the exception that was thrown." + }, + "description": { + "type": "string", + "description": "Descriptive text for the exception." + }, + "breakMode": { + "$ref": "#/definitions/ExceptionBreakMode", + "description": "Mode that caused the exception notification to be raised." + }, + "details": { + "$ref": "#/definitions/ExceptionDetails", + "description": "Detailed information about the exception." + } + }, + "required": [ "exceptionId", "breakMode" ] + } + }, + "required": [ "body" ] + }] + }, + + "ReadMemoryRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "Reads bytes from memory at the provided location.\nClients should only call this request if the corresponding capability `supportsReadMemoryRequest` is true.", + "properties": { + "command": { + "type": "string", + "enum": [ "readMemory" ] + }, + "arguments": { + "$ref": "#/definitions/ReadMemoryArguments" + } + }, + "required": [ "command", "arguments" ] + }] + }, + "ReadMemoryArguments": { + "type": "object", + "description": "Arguments for `readMemory` request.", + "properties": { + "memoryReference": { + "type": "string", + "description": "Memory reference to the base location from which data should be read." + }, + "offset": { + "type": "integer", + "description": "Offset (in bytes) to be applied to the reference location before reading data. Can be negative." + }, + "count": { + "type": "integer", + "description": "Number of bytes to read at the specified location and offset." + } + }, + "required": [ "memoryReference", "count" ] + }, + "ReadMemoryResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `readMemory` request.", + "properties": { + "body": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "The address of the first byte of data returned.\nTreated as a hex value if prefixed with `0x`, or as a decimal value otherwise." + }, + "unreadableBytes": { + "type": "integer", + "description": "The number of unreadable bytes encountered after the last successfully read byte.\nThis can be used to determine the number of bytes that should be skipped before a subsequent `readMemory` request succeeds." + }, + "data": { + "type": "string", + "description": "The bytes read from memory, encoded using base64. If the decoded length of `data` is less than the requested `count` in the original `readMemory` request, and `unreadableBytes` is zero or omitted, then the client should assume it's reached the end of readable memory." + } + }, + "required": [ "address" ] + } + } + }] + }, + + "WriteMemoryRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "Writes bytes to memory at the provided location.\nClients should only call this request if the corresponding capability `supportsWriteMemoryRequest` is true.", + "properties": { + "command": { + "type": "string", + "enum": [ "writeMemory" ] + }, + "arguments": { + "$ref": "#/definitions/WriteMemoryArguments" + } + }, + "required": [ "command", "arguments" ] + }] + }, + "WriteMemoryArguments": { + "type": "object", + "description": "Arguments for `writeMemory` request.", + "properties": { + "memoryReference": { + "type": "string", + "description": "Memory reference to the base location to which data should be written." + }, + "offset": { + "type": "integer", + "description": "Offset (in bytes) to be applied to the reference location before writing data. Can be negative." + }, + "allowPartial": { + "type": "boolean", + "description": "Property to control partial writes. If true, the debug adapter should attempt to write memory even if the entire memory region is not writable. In such a case the debug adapter should stop after hitting the first byte of memory that cannot be written and return the number of bytes written in the response via the `offset` and `bytesWritten` properties.\nIf false or missing, a debug adapter should attempt to verify the region is writable before writing, and fail the response if it is not." + }, + "data": { + "type": "string", + "description": "Bytes to write, encoded using base64." + } + }, + "required": [ "memoryReference", "data" ] + }, + "WriteMemoryResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `writeMemory` request.", + "properties": { + "body": { + "type": "object", + "properties": { + "offset": { + "type": "integer", + "description": "Property that should be returned when `allowPartial` is true to indicate the offset of the first byte of data successfully written. Can be negative." + }, + "bytesWritten": { + "type": "integer", + "description": "Property that should be returned when `allowPartial` is true to indicate the number of bytes starting from address that were successfully written." + } + } + } + } + }] + }, + + "DisassembleRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "Disassembles code stored at the provided location.\nClients should only call this request if the corresponding capability `supportsDisassembleRequest` is true.", + "properties": { + "command": { + "type": "string", + "enum": [ "disassemble" ] + }, + "arguments": { + "$ref": "#/definitions/DisassembleArguments" + } + }, + "required": [ "command", "arguments" ] + }] + }, + "DisassembleArguments": { + "type": "object", + "description": "Arguments for `disassemble` request.", + "properties": { + "memoryReference": { + "type": "string", + "description": "Memory reference to the base location containing the instructions to disassemble." + }, + "offset": { + "type": "integer", + "description": "Offset (in bytes) to be applied to the reference location before disassembling. Can be negative." + }, + "instructionOffset": { + "type": "integer", + "description": "Offset (in instructions) to be applied after the byte offset (if any) before disassembling. Can be negative." + }, + "instructionCount": { + "type": "integer", + "description": "Number of instructions to disassemble starting at the specified location and offset.\nAn adapter must return exactly this number of instructions - any unavailable instructions should be replaced with an implementation-defined 'invalid instruction' value." + }, + "resolveSymbols": { + "type": "boolean", + "description": "If true, the adapter should attempt to resolve memory addresses and other values to symbolic names." + } + }, + "required": [ "memoryReference", "instructionCount" ] + }, + "DisassembleResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to `disassemble` request.", + "properties": { + "body": { + "type": "object", + "properties": { + "instructions": { + "type": "array", + "items": { + "$ref": "#/definitions/DisassembledInstruction" + }, + "description": "The list of disassembled instructions." + } + }, + "required": [ "instructions" ] + } + } + }] + }, + + "Capabilities": { + "type": "object", + "title": "Types", + "description": "Information about the capabilities of a debug adapter.", + "properties": { + "supportsConfigurationDoneRequest": { + "type": "boolean", + "description": "The debug adapter supports the `configurationDone` request." + }, + "supportsFunctionBreakpoints": { + "type": "boolean", + "description": "The debug adapter supports function breakpoints." + }, + "supportsConditionalBreakpoints": { + "type": "boolean", + "description": "The debug adapter supports conditional breakpoints." + }, + "supportsHitConditionalBreakpoints": { + "type": "boolean", + "description": "The debug adapter supports breakpoints that break execution after a specified number of hits." + }, + "supportsEvaluateForHovers": { + "type": "boolean", + "description": "The debug adapter supports a (side effect free) `evaluate` request for data hovers." + }, + "exceptionBreakpointFilters": { + "type": "array", + "items": { + "$ref": "#/definitions/ExceptionBreakpointsFilter" + }, + "description": "Available exception filter options for the `setExceptionBreakpoints` request." + }, + "supportsStepBack": { + "type": "boolean", + "description": "The debug adapter supports stepping back via the `stepBack` and `reverseContinue` requests." + }, + "supportsSetVariable": { + "type": "boolean", + "description": "The debug adapter supports setting a variable to a value." + }, + "supportsRestartFrame": { + "type": "boolean", + "description": "The debug adapter supports restarting a frame." + }, + "supportsGotoTargetsRequest": { + "type": "boolean", + "description": "The debug adapter supports the `gotoTargets` request." + }, + "supportsStepInTargetsRequest": { + "type": "boolean", + "description": "The debug adapter supports the `stepInTargets` request." + }, + "supportsCompletionsRequest": { + "type": "boolean", + "description": "The debug adapter supports the `completions` request." + }, + "completionTriggerCharacters": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The set of characters that should trigger completion in a REPL. If not specified, the UI should assume the `.` character." + }, + "supportsModulesRequest": { + "type": "boolean", + "description": "The debug adapter supports the `modules` request." + }, + "additionalModuleColumns": { + "type": "array", + "items": { + "$ref": "#/definitions/ColumnDescriptor" + }, + "description": "The set of additional module information exposed by the debug adapter." + }, + "supportedChecksumAlgorithms": { + "type": "array", + "items": { + "$ref": "#/definitions/ChecksumAlgorithm" + }, + "description": "Checksum algorithms supported by the debug adapter." + }, + "supportsRestartRequest": { + "type": "boolean", + "description": "The debug adapter supports the `restart` request. In this case a client should not implement `restart` by terminating and relaunching the adapter but by calling the `restart` request." + }, + "supportsExceptionOptions": { + "type": "boolean", + "description": "The debug adapter supports `exceptionOptions` on the `setExceptionBreakpoints` request." + }, + "supportsValueFormattingOptions": { + "type": "boolean", + "description": "The debug adapter supports a `format` attribute on the `stackTrace`, `variables`, and `evaluate` requests." + }, + "supportsExceptionInfoRequest": { + "type": "boolean", + "description": "The debug adapter supports the `exceptionInfo` request." + }, + "supportTerminateDebuggee": { + "type": "boolean", + "description": "The debug adapter supports the `terminateDebuggee` attribute on the `disconnect` request." + }, + "supportSuspendDebuggee": { + "type": "boolean", + "description": "The debug adapter supports the `suspendDebuggee` attribute on the `disconnect` request." + }, + "supportsDelayedStackTraceLoading": { + "type": "boolean", + "description": "The debug adapter supports the delayed loading of parts of the stack, which requires that both the `startFrame` and `levels` arguments and the `totalFrames` result of the `stackTrace` request are supported." + }, + "supportsLoadedSourcesRequest": { + "type": "boolean", + "description": "The debug adapter supports the `loadedSources` request." + }, + "supportsLogPoints": { + "type": "boolean", + "description": "The debug adapter supports log points by interpreting the `logMessage` attribute of the `SourceBreakpoint`." + }, + "supportsTerminateThreadsRequest": { + "type": "boolean", + "description": "The debug adapter supports the `terminateThreads` request." + }, + "supportsSetExpression": { + "type": "boolean", + "description": "The debug adapter supports the `setExpression` request." + }, + "supportsTerminateRequest": { + "type": "boolean", + "description": "The debug adapter supports the `terminate` request." + }, + "supportsDataBreakpoints": { + "type": "boolean", + "description": "The debug adapter supports data breakpoints." + }, + "supportsReadMemoryRequest": { + "type": "boolean", + "description": "The debug adapter supports the `readMemory` request." + }, + "supportsWriteMemoryRequest": { + "type": "boolean", + "description": "The debug adapter supports the `writeMemory` request." + }, + "supportsDisassembleRequest": { + "type": "boolean", + "description": "The debug adapter supports the `disassemble` request." + }, + "supportsCancelRequest": { + "type": "boolean", + "description": "The debug adapter supports the `cancel` request." + }, + "supportsBreakpointLocationsRequest": { + "type": "boolean", + "description": "The debug adapter supports the `breakpointLocations` request." + }, + "supportsClipboardContext": { + "type": "boolean", + "description": "The debug adapter supports the `clipboard` context value in the `evaluate` request." + }, + "supportsSteppingGranularity": { + "type": "boolean", + "description": "The debug adapter supports stepping granularities (argument `granularity`) for the stepping requests." + }, + "supportsInstructionBreakpoints": { + "type": "boolean", + "description": "The debug adapter supports adding breakpoints based on instruction references." + }, + "supportsExceptionFilterOptions": { + "type": "boolean", + "description": "The debug adapter supports `filterOptions` as an argument on the `setExceptionBreakpoints` request." + }, + "supportsSingleThreadExecutionRequests": { + "type": "boolean", + "description": "The debug adapter supports the `singleThread` property on the execution requests (`continue`, `next`, `stepIn`, `stepOut`, `reverseContinue`, `stepBack`)." + } + } + }, + + "ExceptionBreakpointsFilter": { + "type": "object", + "description": "An `ExceptionBreakpointsFilter` is shown in the UI as an filter option for configuring how exceptions are dealt with.", + "properties": { + "filter": { + "type": "string", + "description": "The internal ID of the filter option. This value is passed to the `setExceptionBreakpoints` request." + }, + "label": { + "type": "string", + "description": "The name of the filter option. This is shown in the UI." + }, + "description": { + "type": "string", + "description": "A help text providing additional information about the exception filter. This string is typically shown as a hover and can be translated." + }, + "default": { + "type": "boolean", + "description": "Initial value of the filter option. If not specified a value false is assumed." + }, + "supportsCondition": { + "type": "boolean", + "description": "Controls whether a condition can be specified for this filter option. If false or missing, a condition can not be set." + }, + "conditionDescription": { + "type": "string", + "description": "A help text providing information about the condition. This string is shown as the placeholder text for a text box and can be translated." + } + }, + "required": [ "filter", "label" ] + }, + + "Message": { + "type": "object", + "description": "A structured message object. Used to return errors from requests.", + "properties": { + "id": { + "type": "integer", + "description": "Unique (within a debug adapter implementation) identifier for the message. The purpose of these error IDs is to help extension authors that have the requirement that every user visible error message needs a corresponding error number, so that users or customer support can find information about the specific error more easily." + }, + "format": { + "type": "string", + "description": "A format string for the message. Embedded variables have the form `{name}`.\nIf variable name starts with an underscore character, the variable does not contain user data (PII) and can be safely used for telemetry purposes." + }, + "variables": { + "type": "object", + "description": "An object used as a dictionary for looking up the variables in the format string.", + "additionalProperties": { + "type": "string", + "description": "All dictionary values must be strings." + } + }, + "sendTelemetry": { + "type": "boolean", + "description": "If true send to telemetry." + }, + "showUser": { + "type": "boolean", + "description": "If true show user." + }, + "url": { + "type": "string", + "description": "A url where additional information about this message can be found." + }, + "urlLabel": { + "type": "string", + "description": "A label that is presented to the user as the UI for opening the url." + } + }, + "required": [ "id", "format" ] + }, + + "Module": { + "type": "object", + "description": "A Module object represents a row in the modules view.\nThe `id` attribute identifies a module in the modules view and is used in a `module` event for identifying a module for adding, updating or deleting.\nThe `name` attribute is used to minimally render the module in the UI.\n\nAdditional attributes can be added to the module. They show up in the module view if they have a corresponding `ColumnDescriptor`.\n\nTo avoid an unnecessary proliferation of additional attributes with similar semantics but different names, we recommend to re-use attributes from the 'recommended' list below first, and only introduce new attributes if nothing appropriate could be found.", + "properties": { + "id": { + "type": ["integer", "string"], + "description": "Unique identifier for the module." + }, + "name": { + "type": "string", + "description": "A name of the module." + }, + "path": { + "type": "string", + "description": "Logical full path to the module. The exact definition is implementation defined, but usually this would be a full path to the on-disk file for the module." + }, + "isOptimized": { + "type": "boolean", + "description": "True if the module is optimized." + }, + "isUserCode": { + "type": "boolean", + "description": "True if the module is considered 'user code' by a debugger that supports 'Just My Code'." + }, + "version": { + "type": "string", + "description": "Version of Module." + }, + "symbolStatus": { + "type": "string", + "description": "User-understandable description of if symbols were found for the module (ex: 'Symbols Loaded', 'Symbols not found', etc.)" + }, + "symbolFilePath": { + "type": "string", + "description": "Logical full path to the symbol file. The exact definition is implementation defined." + }, + "dateTimeStamp": { + "type": "string", + "description": "Module created or modified, encoded as a RFC 3339 timestamp." + }, + "addressRange": { + "type": "string", + "description": "Address range covered by this module." + } + }, + "required": [ "id", "name" ] + }, + + "ColumnDescriptor": { + "type": "object", + "description": "A `ColumnDescriptor` specifies what module attribute to show in a column of the modules view, how to format it,\nand what the column's label should be.\nIt is only used if the underlying UI actually supports this level of customization.", + "properties": { + "attributeName": { + "type": "string", + "description": "Name of the attribute rendered in this column." + }, + "label": { + "type": "string", + "description": "Header UI label of column." + }, + "format": { + "type": "string", + "description": "Format to use for the rendered values in this column. TBD how the format strings looks like." + }, + "type": { + "type": "string", + "enum": [ "string", "number", "boolean", "unixTimestampUTC" ], + "description": "Datatype of values in this column. Defaults to `string` if not specified." + }, + "width": { + "type": "integer", + "description": "Width of this column in characters (hint only)." + } + }, + "required": [ "attributeName", "label"] + }, + + "Thread": { + "type": "object", + "description": "A Thread", + "properties": { + "id": { + "type": "integer", + "description": "Unique identifier for the thread." + }, + "name": { + "type": "string", + "description": "The name of the thread." + } + }, + "required": [ "id", "name" ] + }, + + "Source": { + "type": "object", + "description": "A `Source` is a descriptor for source code.\nIt is returned from the debug adapter as part of a `StackFrame` and it is used by clients when specifying breakpoints.", + "properties": { + "name": { + "type": "string", + "description": "The short name of the source. Every source returned from the debug adapter has a name.\nWhen sending a source to the debug adapter this name is optional." + }, + "path": { + "type": "string", + "description": "The path of the source to be shown in the UI.\nIt is only used to locate and load the content of the source if no `sourceReference` is specified (or its value is 0)." + }, + "sourceReference": { + "type": "integer", + "description": "If the value > 0 the contents of the source must be retrieved through the `source` request (even if a path is specified).\nSince a `sourceReference` is only valid for a session, it can not be used to persist a source.\nThe value should be less than or equal to 2147483647 (2^31-1)." + }, + "presentationHint": { + "type": "string", + "description": "A hint for how to present the source in the UI.\nA value of `deemphasize` can be used to indicate that the source is not available or that it is skipped on stepping.", + "enum": [ "normal", "emphasize", "deemphasize" ] + }, + "origin": { + "type": "string", + "description": "The origin of this source. For example, 'internal module', 'inlined content from source map', etc." + }, + "sources": { + "type": "array", + "items": { + "$ref": "#/definitions/Source" + }, + "description": "A list of sources that are related to this source. These may be the source that generated this source." + }, + "adapterData": { + "type": [ "array", "boolean", "integer", "null", "number", "object", "string" ], + "description": "Additional data that a debug adapter might want to loop through the client.\nThe client should leave the data intact and persist it across sessions. The client should not interpret the data." + }, + "checksums": { + "type": "array", + "items": { + "$ref": "#/definitions/Checksum" + }, + "description": "The checksums associated with this file." + } + } + }, + + "StackFrame": { + "type": "object", + "description": "A Stackframe contains the source location.", + "properties": { + "id": { + "type": "integer", + "description": "An identifier for the stack frame. It must be unique across all threads.\nThis id can be used to retrieve the scopes of the frame with the `scopes` request or to restart the execution of a stack frame." + }, + "name": { + "type": "string", + "description": "The name of the stack frame, typically a method name." + }, + "source": { + "$ref": "#/definitions/Source", + "description": "The source of the frame." + }, + "line": { + "type": "integer", + "description": "The line within the source of the frame. If the source attribute is missing or doesn't exist, `line` is 0 and should be ignored by the client." + }, + "column": { + "type": "integer", + "description": "Start position of the range covered by the stack frame. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based. If attribute `source` is missing or doesn't exist, `column` is 0 and should be ignored by the client." + }, + "endLine": { + "type": "integer", + "description": "The end line of the range covered by the stack frame." + }, + "endColumn": { + "type": "integer", + "description": "End position of the range covered by the stack frame. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based." + }, + "canRestart": { + "type": "boolean", + "description": "Indicates whether this frame can be restarted with the `restart` request. Clients should only use this if the debug adapter supports the `restart` request and the corresponding capability `supportsRestartRequest` is true. If a debug adapter has this capability, then `canRestart` defaults to `true` if the property is absent." + }, + "instructionPointerReference": { + "type": "string", + "description": "A memory reference for the current instruction pointer in this frame." + }, + "moduleId": { + "type": ["integer", "string"], + "description": "The module associated with this frame, if any." + }, + "presentationHint": { + "type": "string", + "enum": [ "normal", "label", "subtle" ], + "description": "A hint for how to present this frame in the UI.\nA value of `label` can be used to indicate that the frame is an artificial frame that is used as a visual label or separator. A value of `subtle` can be used to change the appearance of a frame in a 'subtle' way." + } + }, + "required": [ "id", "name", "line", "column" ] + }, + + "Scope": { + "type": "object", + "description": "A `Scope` is a named container for variables. Optionally a scope can map to a source or a range within a source.", + "properties": { + "name": { + "type": "string", + "description": "Name of the scope such as 'Arguments', 'Locals', or 'Registers'. This string is shown in the UI as is and can be translated." + }, + "presentationHint": { + "type": "string", + "description": "A hint for how to present this scope in the UI. If this attribute is missing, the scope is shown with a generic UI.", + "_enum": [ "arguments", "locals", "registers" ], + "enumDescriptions": [ + "Scope contains method arguments.", + "Scope contains local variables.", + "Scope contains registers. Only a single `registers` scope should be returned from a `scopes` request." + ] + }, + "variablesReference": { + "type": "integer", + "description": "The variables of this scope can be retrieved by passing the value of `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details." + }, + "namedVariables": { + "type": "integer", + "description": "The number of named variables in this scope.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks." + }, + "indexedVariables": { + "type": "integer", + "description": "The number of indexed variables in this scope.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks." + }, + "expensive": { + "type": "boolean", + "description": "If true, the number of variables in this scope is large or expensive to retrieve." + }, + "source": { + "$ref": "#/definitions/Source", + "description": "The source for this scope." + }, + "line": { + "type": "integer", + "description": "The start line of the range covered by this scope." + }, + "column": { + "type": "integer", + "description": "Start position of the range covered by the scope. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based." + }, + "endLine": { + "type": "integer", + "description": "The end line of the range covered by this scope." + }, + "endColumn": { + "type": "integer", + "description": "End position of the range covered by the scope. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based." + } + }, + "required": [ "name", "variablesReference", "expensive" ] + }, + + "Variable": { + "type": "object", + "description": "A Variable is a name/value pair.\nThe `type` attribute is shown if space permits or when hovering over the variable's name.\nThe `kind` attribute is used to render additional properties of the variable, e.g. different icons can be used to indicate that a variable is public or private.\nIf the value is structured (has children), a handle is provided to retrieve the children with the `variables` request.\nIf the number of named or indexed children is large, the numbers should be returned via the `namedVariables` and `indexedVariables` attributes.\nThe client can use this information to present the children in a paged UI and fetch them in chunks.", + "properties": { + "name": { + "type": "string", + "description": "The variable's name." + }, + "value": { + "type": "string", + "description": "The variable's value.\nThis can be a multi-line text, e.g. for a function the body of a function.\nFor structured variables (which do not have a simple value), it is recommended to provide a one-line representation of the structured object. This helps to identify the structured object in the collapsed state when its children are not yet visible.\nAn empty string can be used if no value should be shown in the UI." + }, + "type": { + "type": "string", + "description": "The type of the variable's value. Typically shown in the UI when hovering over the value.\nThis attribute should only be returned by a debug adapter if the corresponding capability `supportsVariableType` is true." + }, + "presentationHint": { + "$ref": "#/definitions/VariablePresentationHint", + "description": "Properties of a variable that can be used to determine how to render the variable in the UI." + }, + "evaluateName": { + "type": "string", + "description": "The evaluatable name of this variable which can be passed to the `evaluate` request to fetch the variable's value." + }, + "variablesReference": { + "type": "integer", + "description": "If `variablesReference` is > 0, the variable is structured and its children can be retrieved by passing `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details." + }, + "namedVariables": { + "type": "integer", + "description": "The number of named child variables.\nThe client can use this information to present the children in a paged UI and fetch them in chunks." + }, + "indexedVariables": { + "type": "integer", + "description": "The number of indexed child variables.\nThe client can use this information to present the children in a paged UI and fetch them in chunks." + }, + "memoryReference": { + "type": "string", + "description": "A memory reference associated with this variable.\nFor pointer type variables, this is generally a reference to the memory address contained in the pointer.\nFor executable data, this reference may later be used in a `disassemble` request.\nThis attribute may be returned by a debug adapter if corresponding capability `supportsMemoryReferences` is true." + } + }, + "required": [ "name", "value", "variablesReference" ] + }, + + "VariablePresentationHint": { + "type": "object", + "description": "Properties of a variable that can be used to determine how to render the variable in the UI.", + "properties": { + "kind": { + "description": "The kind of variable. Before introducing additional values, try to use the listed values.", + "type": "string", + "_enum": [ "property", "method", "class", "data", "event", "baseClass", "innerClass", "interface", "mostDerivedClass", "virtual", "dataBreakpoint" ], + "enumDescriptions": [ + "Indicates that the object is a property.", + "Indicates that the object is a method.", + "Indicates that the object is a class.", + "Indicates that the object is data.", + "Indicates that the object is an event.", + "Indicates that the object is a base class.", + "Indicates that the object is an inner class.", + "Indicates that the object is an interface.", + "Indicates that the object is the most derived class.", + "Indicates that the object is virtual, that means it is a synthetic object introduced by the adapter for rendering purposes, e.g. an index range for large arrays.", + "Deprecated: Indicates that a data breakpoint is registered for the object. The `hasDataBreakpoint` attribute should generally be used instead." + ] + }, + "attributes": { + "description": "Set of attributes represented as an array of strings. Before introducing additional values, try to use the listed values.", + "type": "array", + "items": { + "type": "string", + "_enum": [ "static", "constant", "readOnly", "rawString", "hasObjectId", "canHaveObjectId", "hasSideEffects", "hasDataBreakpoint" ], + "enumDescriptions": [ + "Indicates that the object is static.", + "Indicates that the object is a constant.", + "Indicates that the object is read only.", + "Indicates that the object is a raw string.", + "Indicates that the object can have an Object ID created for it. This is a vestigial attribute that is used by some clients; 'Object ID's are not specified in the protocol.", + "Indicates that the object has an Object ID associated with it. This is a vestigial attribute that is used by some clients; 'Object ID's are not specified in the protocol.", + "Indicates that the evaluation had side effects.", + "Indicates that the object has its value tracked by a data breakpoint." + ] + } + }, + "visibility": { + "description": "Visibility of variable. Before introducing additional values, try to use the listed values.", + "type": "string", + "_enum": [ "public", "private", "protected", "internal", "final" ] + }, + "lazy": { + "description": "If true, clients can present the variable with a UI that supports a specific gesture to trigger its evaluation.\nThis mechanism can be used for properties that require executing code when retrieving their value and where the code execution can be expensive and/or produce side-effects. A typical example are properties based on a getter function.\nPlease note that in addition to the `lazy` flag, the variable's `variablesReference` is expected to refer to a variable that will provide the value through another `variable` request.", + "type": "boolean" + } + } + }, + + "BreakpointLocation": { + "type": "object", + "description": "Properties of a breakpoint location returned from the `breakpointLocations` request.", + "properties": { + "line": { + "type": "integer", + "description": "Start line of breakpoint location." + }, + "column": { + "type": "integer", + "description": "The start position of a breakpoint location. Position is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based." + }, + "endLine": { + "type": "integer", + "description": "The end line of breakpoint location if the location covers a range." + }, + "endColumn": { + "type": "integer", + "description": "The end position of a breakpoint location (if the location covers a range). Position is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based." + } + }, + "required": [ "line" ] + }, + + "SourceBreakpoint": { + "type": "object", + "description": "Properties of a breakpoint or logpoint passed to the `setBreakpoints` request.", + "properties": { + "line": { + "type": "integer", + "description": "The source line of the breakpoint or logpoint." + }, + "column": { + "type": "integer", + "description": "Start position within source line of the breakpoint or logpoint. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based." + }, + "condition": { + "type": "string", + "description": "The expression for conditional breakpoints.\nIt is only honored by a debug adapter if the corresponding capability `supportsConditionalBreakpoints` is true." + }, + "hitCondition": { + "type": "string", + "description": "The expression that controls how many hits of the breakpoint are ignored.\nThe debug adapter is expected to interpret the expression as needed.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportsHitConditionalBreakpoints` is true.\nIf both this property and `condition` are specified, `hitCondition` should be evaluated only if the `condition` is met, and the debug adapter should stop only if both conditions are met." + }, + "logMessage": { + "type": "string", + "description": "If this attribute exists and is non-empty, the debug adapter must not 'break' (stop)\nbut log the message instead. Expressions within `{}` are interpolated.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportsLogPoints` is true.\nIf either `hitCondition` or `condition` is specified, then the message should only be logged if those conditions are met." + } + }, + "required": [ "line" ] + }, + + "FunctionBreakpoint": { + "type": "object", + "description": "Properties of a breakpoint passed to the `setFunctionBreakpoints` request.", + "properties": { + "name": { + "type": "string", + "description": "The name of the function." + }, + "condition": { + "type": "string", + "description": "An expression for conditional breakpoints.\nIt is only honored by a debug adapter if the corresponding capability `supportsConditionalBreakpoints` is true." + }, + "hitCondition": { + "type": "string", + "description": "An expression that controls how many hits of the breakpoint are ignored.\nThe debug adapter is expected to interpret the expression as needed.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportsHitConditionalBreakpoints` is true." + } + }, + "required": [ "name" ] + }, + + "DataBreakpointAccessType": { + "type": "string", + "description": "This enumeration defines all possible access types for data breakpoints.", + "enum": [ "read", "write", "readWrite" ] + }, + + "DataBreakpoint": { + "type": "object", + "description": "Properties of a data breakpoint passed to the `setDataBreakpoints` request.", + "properties": { + "dataId": { + "type": "string", + "description": "An id representing the data. This id is returned from the `dataBreakpointInfo` request." + }, + "accessType": { + "$ref": "#/definitions/DataBreakpointAccessType", + "description": "The access type of the data." + }, + "condition": { + "type": "string", + "description": "An expression for conditional breakpoints." + }, + "hitCondition": { + "type": "string", + "description": "An expression that controls how many hits of the breakpoint are ignored.\nThe debug adapter is expected to interpret the expression as needed." + } + }, + "required": [ "dataId" ] + }, + + "InstructionBreakpoint": { + "type": "object", + "description": "Properties of a breakpoint passed to the `setInstructionBreakpoints` request", + "properties": { + "instructionReference": { + "type": "string", + "description": "The instruction reference of the breakpoint.\nThis should be a memory or instruction pointer reference from an `EvaluateResponse`, `Variable`, `StackFrame`, `GotoTarget`, or `Breakpoint`." + }, + "offset": { + "type": "integer", + "description": "The offset from the instruction reference in bytes.\nThis can be negative." + }, + "condition": { + "type": "string", + "description": "An expression for conditional breakpoints.\nIt is only honored by a debug adapter if the corresponding capability `supportsConditionalBreakpoints` is true." + }, + "hitCondition": { + "type": "string", + "description": "An expression that controls how many hits of the breakpoint are ignored.\nThe debug adapter is expected to interpret the expression as needed.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportsHitConditionalBreakpoints` is true." + } + }, + "required": [ "instructionReference" ] + }, + + "Breakpoint": { + "type": "object", + "description": "Information about a breakpoint created in `setBreakpoints`, `setFunctionBreakpoints`, `setInstructionBreakpoints`, or `setDataBreakpoints` requests.", + "properties": { + "id": { + "type": "integer", + "description": "The identifier for the breakpoint. It is needed if breakpoint events are used to update or remove breakpoints." + }, + "verified": { + "type": "boolean", + "description": "If true, the breakpoint could be set (but not necessarily at the desired location)." + }, + "message": { + "type": "string", + "description": "A message about the state of the breakpoint.\nThis is shown to the user and can be used to explain why a breakpoint could not be verified." + }, + "source": { + "$ref": "#/definitions/Source", + "description": "The source where the breakpoint is located." + }, + "line": { + "type": "integer", + "description": "The start line of the actual range covered by the breakpoint." + }, + "column": { + "type": "integer", + "description": "Start position of the source range covered by the breakpoint. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based." + }, + "endLine": { + "type": "integer", + "description": "The end line of the actual range covered by the breakpoint." + }, + "endColumn": { + "type": "integer", + "description": "End position of the source range covered by the breakpoint. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.\nIf no end line is given, then the end column is assumed to be in the start line." + }, + "instructionReference": { + "type": "string", + "description": "A memory reference to where the breakpoint is set." + }, + "offset": { + "type": "integer", + "description": "The offset from the instruction reference.\nThis can be negative." + }, + "reason": { + "type": "string", + "description": "A machine-readable explanation of why a breakpoint may not be verified. If a breakpoint is verified or a specific reason is not known, the adapter should omit this property. Possible values include:\n\n- `pending`: Indicates a breakpoint might be verified in the future, but the adapter cannot verify it in the current state.\n - `failed`: Indicates a breakpoint was not able to be verified, and the adapter does not believe it can be verified without intervention.", + "enum": [ "pending", "failed" ] + } + }, + "required": [ "verified" ] + }, + + "SteppingGranularity": { + "type": "string", + "description": "The granularity of one 'step' in the stepping requests `next`, `stepIn`, `stepOut`, and `stepBack`.", + "enum": [ "statement", "line", "instruction" ], + "enumDescriptions": [ + "The step should allow the program to run until the current statement has finished executing.\nThe meaning of a statement is determined by the adapter and it may be considered equivalent to a line.\nFor example 'for(int i = 0; i < 10; i++)' could be considered to have 3 statements 'int i = 0', 'i < 10', and 'i++'.", + "The step should allow the program to run until the current source line has executed.", + "The step should allow one instruction to execute (e.g. one x86 instruction)." + ] + }, + + "StepInTarget": { + "type": "object", + "description": "A `StepInTarget` can be used in the `stepIn` request and determines into which single target the `stepIn` request should step.", + "properties": { + "id": { + "type": "integer", + "description": "Unique identifier for a step-in target." + }, + "label": { + "type": "string", + "description": "The name of the step-in target (shown in the UI)." + }, + "line": { + "type": "integer", + "description": "The line of the step-in target." + }, + "column": { + "type": "integer", + "description": "Start position of the range covered by the step in target. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based." + }, + "endLine": { + "type": "integer", + "description": "The end line of the range covered by the step-in target." + }, + "endColumn": { + "type": "integer", + "description": "End position of the range covered by the step in target. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based." + } + }, + "required": [ "id", "label" ] + }, + + "GotoTarget": { + "type": "object", + "description": "A `GotoTarget` describes a code location that can be used as a target in the `goto` request.\nThe possible goto targets can be determined via the `gotoTargets` request.", + "properties": { + "id": { + "type": "integer", + "description": "Unique identifier for a goto target. This is used in the `goto` request." + }, + "label": { + "type": "string", + "description": "The name of the goto target (shown in the UI)." + }, + "line": { + "type": "integer", + "description": "The line of the goto target." + }, + "column": { + "type": "integer", + "description": "The column of the goto target." + }, + "endLine": { + "type": "integer", + "description": "The end line of the range covered by the goto target." + }, + "endColumn": { + "type": "integer", + "description": "The end column of the range covered by the goto target." + }, + "instructionPointerReference": { + "type": "string", + "description": "A memory reference for the instruction pointer value represented by this target." + } + }, + "required": [ "id", "label", "line" ] + }, + + "CompletionItem": { + "type": "object", + "description": "`CompletionItems` are the suggestions returned from the `completions` request.", + "properties": { + "label": { + "type": "string", + "description": "The label of this completion item. By default this is also the text that is inserted when selecting this completion." + }, + "text": { + "type": "string", + "description": "If text is returned and not an empty string, then it is inserted instead of the label." + }, + "sortText": { + "type": "string", + "description": "A string that should be used when comparing this item with other items. If not returned or an empty string, the `label` is used instead." + }, + "detail": { + "type": "string", + "description": "A human-readable string with additional information about this item, like type or symbol information." + }, + "type": { + "$ref": "#/definitions/CompletionItemType", + "description": "The item's type. Typically the client uses this information to render the item in the UI with an icon." + }, + "start": { + "type": "integer", + "description": "Start position (within the `text` attribute of the `completions` request) where the completion text is added. The position is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based. If the start position is omitted the text is added at the location specified by the `column` attribute of the `completions` request." + }, + "length": { + "type": "integer", + "description": "Length determines how many characters are overwritten by the completion text and it is measured in UTF-16 code units. If missing the value 0 is assumed which results in the completion text being inserted." + }, + "selectionStart": { + "type": "integer", + "description": "Determines the start of the new selection after the text has been inserted (or replaced). `selectionStart` is measured in UTF-16 code units and must be in the range 0 and length of the completion text. If omitted the selection starts at the end of the completion text." + }, + "selectionLength": { + "type": "integer", + "description": "Determines the length of the new selection after the text has been inserted (or replaced) and it is measured in UTF-16 code units. The selection can not extend beyond the bounds of the completion text. If omitted the length is assumed to be 0." + } + }, + "required": [ "label" ] + }, + + "CompletionItemType": { + "type": "string", + "description": "Some predefined types for the CompletionItem. Please note that not all clients have specific icons for all of them.", + "enum": [ "method", "function", "constructor", "field", "variable", "class", "interface", "module", "property", "unit", "value", "enum", "keyword", "snippet", "text", "color", "file", "reference", "customcolor" ] + }, + + "ChecksumAlgorithm": { + "type": "string", + "description": "Names of checksum algorithms that may be supported by a debug adapter.", + "enum": [ "MD5", "SHA1", "SHA256", "timestamp" ] + }, + + "Checksum": { + "type": "object", + "description": "The checksum of an item calculated by the specified algorithm.", + "properties": { + "algorithm": { + "$ref": "#/definitions/ChecksumAlgorithm", + "description": "The algorithm used to calculate this checksum." + }, + "checksum": { + "type": "string", + "description": "Value of the checksum, encoded as a hexadecimal value." + } + }, + "required": [ "algorithm", "checksum" ] + }, + + "ValueFormat": { + "type": "object", + "description": "Provides formatting information for a value.", + "properties": { + "hex": { + "type": "boolean", + "description": "Display the value in hex." + } + } + }, + + "StackFrameFormat": { + "allOf": [ { "$ref": "#/definitions/ValueFormat" }, { + "type": "object", + "description": "Provides formatting information for a stack frame.", + "properties": { + "parameters": { + "type": "boolean", + "description": "Displays parameters for the stack frame." + }, + "parameterTypes": { + "type": "boolean", + "description": "Displays the types of parameters for the stack frame." + }, + "parameterNames": { + "type": "boolean", + "description": "Displays the names of parameters for the stack frame." + }, + "parameterValues": { + "type": "boolean", + "description": "Displays the values of parameters for the stack frame." + }, + "line": { + "type": "boolean", + "description": "Displays the line number of the stack frame." + }, + "module": { + "type": "boolean", + "description": "Displays the module of the stack frame." + }, + "includeAll": { + "type": "boolean", + "description": "Includes all stack frames, including those the debug adapter might otherwise hide." + } + } + }] + }, + + "ExceptionFilterOptions": { + "type": "object", + "description": "An `ExceptionFilterOptions` is used to specify an exception filter together with a condition for the `setExceptionBreakpoints` request.", + "properties": { + "filterId": { + "type": "string", + "description": "ID of an exception filter returned by the `exceptionBreakpointFilters` capability." + }, + "condition": { + "type": "string", + "description": "An expression for conditional exceptions.\nThe exception breaks into the debugger if the result of the condition is true." + } + }, + "required": [ "filterId" ] + }, + + "ExceptionOptions": { + "type": "object", + "description": "An `ExceptionOptions` assigns configuration options to a set of exceptions.", + "properties": { + "path": { + "type": "array", + "items": { + "$ref": "#/definitions/ExceptionPathSegment" + }, + "description": "A path that selects a single or multiple exceptions in a tree. If `path` is missing, the whole tree is selected.\nBy convention the first segment of the path is a category that is used to group exceptions in the UI." + }, + "breakMode": { + "$ref": "#/definitions/ExceptionBreakMode", + "description": "Condition when a thrown exception should result in a break." + } + }, + "required": [ "breakMode" ] + }, + + "ExceptionBreakMode": { + "type": "string", + "description": "This enumeration defines all possible conditions when a thrown exception should result in a break.\nnever: never breaks,\nalways: always breaks,\nunhandled: breaks when exception unhandled,\nuserUnhandled: breaks if the exception is not handled by user code.", + "enum": [ "never", "always", "unhandled", "userUnhandled" ] + }, + + "ExceptionPathSegment": { + "type": "object", + "description": "An `ExceptionPathSegment` represents a segment in a path that is used to match leafs or nodes in a tree of exceptions.\nIf a segment consists of more than one name, it matches the names provided if `negate` is false or missing, or it matches anything except the names provided if `negate` is true.", + "properties": { + "negate": { + "type": "boolean", + "description": "If false or missing this segment matches the names provided, otherwise it matches anything except the names provided." + }, + "names": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Depending on the value of `negate` the names that should match or not match." + } + }, + "required": [ "names" ] + }, + + "ExceptionDetails": { + "type": "object", + "description": "Detailed information about an exception that has occurred.", + "properties": { + "message": { + "type": "string", + "description": "Message contained in the exception." + }, + "typeName": { + "type": "string", + "description": "Short type name of the exception object." + }, + "fullTypeName": { + "type": "string", + "description": "Fully-qualified type name of the exception object." + }, + "evaluateName": { + "type": "string", + "description": "An expression that can be evaluated in the current scope to obtain the exception object." + }, + "stackTrace": { + "type": "string", + "description": "Stack trace at the time the exception was thrown." + }, + "innerException": { + "type": "array", + "items": { + "$ref": "#/definitions/ExceptionDetails" + }, + "description": "Details of the exception contained by this exception, if any." + } + } + }, + + "DisassembledInstruction": { + "type": "object", + "description": "Represents a single disassembled instruction.", + "properties": { + "address": { + "type": "string", + "description": "The address of the instruction. Treated as a hex value if prefixed with `0x`, or as a decimal value otherwise." + }, + "instructionBytes": { + "type": "string", + "description": "Raw bytes representing the instruction and its operands, in an implementation-defined format." + }, + "instruction": { + "type": "string", + "description": "Text representing the instruction and its operands, in an implementation-defined format." + }, + "symbol": { + "type": "string", + "description": "Name of the symbol that corresponds with the location of this instruction, if any." + }, + "location": { + "$ref": "#/definitions/Source", + "description": "Source location that corresponds to this instruction, if any.\nShould always be set (if available) on the first instruction returned,\nbut can be omitted afterwards if this instruction maps to the same source file as the previous instruction." + }, + "line": { + "type": "integer", + "description": "The line within the source location that corresponds to this instruction, if any." + }, + "column": { + "type": "integer", + "description": "The column within the line that corresponds to this instruction, if any." + }, + "endLine": { + "type": "integer", + "description": "The end line of the range that corresponds to this instruction, if any." + }, + "endColumn": { + "type": "integer", + "description": "The end column of the range that corresponds to this instruction, if any." + }, + "presentationHint": { + "type": "string", + "description": "A hint for how to present the instruction in the UI.\n\nA value of `invalid` may be used to indicate this instruction is 'filler' and cannot be reached by the program. For example, unreadable memory addresses may be presented is 'invalid.'", + "enum": [ "normal", "invalid" ] + } + }, + "required": [ "address", "instruction" ] + }, + + "InvalidatedAreas": { + "type": "string", + "description": "Logical areas that can be invalidated by the `invalidated` event.", + "_enum": [ "all", "stacks", "threads", "variables" ], + "enumDescriptions": [ + "All previously fetched data has become invalid and needs to be refetched.", + "Previously fetched stack related data has become invalid and needs to be refetched.", + "Previously fetched thread related data has become invalid and needs to be refetched.", + "Previously fetched variable data has become invalid and needs to be refetched." + ] + } + + } +} diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocolCustom.json b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocolCustom.json new file mode 100644 index 000000000..a0a9b873e --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocolCustom.json @@ -0,0 +1,325 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Custom Debug Adapter Protocol", + "description": "Extension to the DAP to support additional features.", + "type": "object", + + + "definitions": { + + "SetDebuggerPropertyRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "The request can be used to enable or disable debugger features.", + "properties": { + "command": { + "type": "string", + "enum": [ "setDebuggerProperty" ] + }, + "arguments": { + "$ref": "#/definitions/SetDebuggerPropertyArguments" + } + }, + "required": [ "command", "arguments" ] + }] + }, + "SetDebuggerPropertyArguments": { + "type": "object", + "description": "Arguments for 'setDebuggerProperty' request.", + "properties": { + "ideOS": { + "type": [ "string" ], + "description": "OS where the ide is running. Supported values [Windows, Linux]" + }, + "dontTraceStartPatterns": { + "type": [ "array" ], + "description": "Patterns to match with the start of the file paths. Matching paths will be added to a list of file where trace is ignored." + }, + "dontTraceEndPatterns": { + "type": [ "array" ], + "description": "Patterns to match with the end of the file paths. Matching paths will be added to a list of file where trace is ignored." + }, + "skipSuspendOnBreakpointException": { + "type": [ "array" ], + "description": "List of exceptions that should be skipped when doing condition evaluations." + }, + "skipPrintBreakpointException": { + "type": [ "array" ], + "description": "List of exceptions that should skip printing to stderr when doing condition evaluations." + }, + "multiThreadsSingleNotification": { + "type": [ "boolean" ], + "description": "If false then a notification is generated for each thread event. If true a single event is gnenerated, and all threads follow that behavior." + } + } + }, + "SetDebuggerPropertyResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to 'setDebuggerProperty' request. This is just an acknowledgement, so no body field is required." + }] + }, + + "PydevdInputRequestedEvent": { + "allOf": [ { "$ref": "#/definitions/Event" }, { + "type": "object", + "description": "The event indicates input was requested by debuggee.", + "properties": { + "event": { + "type": "string", + "enum": [ "pydevdInputRequested" ] + } + }, + "required": [ "event" ] + }] + }, + + "SetPydevdSourceMapRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": [ + "Sets multiple PydevdSourceMap for a single source and clears all previous PydevdSourceMap in that source.", + "i.e.: Maps paths and lines in a 1:N mapping (use case: map a single file in the IDE to multiple IPython cells).", + "To clear all PydevdSourceMap for a source, specify an empty array.", + "Interaction with breakpoints: When a new mapping is sent, breakpoints that match the source (or previously matched a source) are reapplied.", + "Interaction with launch pathMapping: both mappings are independent. This mapping is applied after the launch pathMapping." + ], + "properties": { + "command": { + "type": "string", + "enum": [ "setPydevdSourceMap" ] + }, + "arguments": { + "$ref": "#/definitions/SetPydevdSourceMapArguments" + } + }, + "required": [ "command", "arguments" ] + }] + }, + "SetPydevdSourceMapArguments": { + "type": "object", + "description": "Arguments for 'setPydevdSourceMap' request.", + "properties": { + "source": { + "$ref": "#/definitions/Source", + "description": "The source location of the PydevdSourceMap; 'source.path' must be specified (e.g.: for an ipython notebook this could be something as /home/notebook/note.py)." + }, + "pydevdSourceMaps": { + "type": "array", + "items": { + "$ref": "#/definitions/PydevdSourceMap" + }, + "description": "The PydevdSourceMaps to be set to the given source (provide an empty array to clear the source mappings for a given path)." + } + }, + "required": [ "source", "pydevdSourceMap" ] + }, + "SetPydevdSourceMapResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to 'setPydevdSourceMap' request. This is just an acknowledgement, so no body field is required." + }] + }, + + "PydevdSourceMap": { + "type": "object", + "description": "Information that allows mapping a local line to a remote source/line.", + "properties": { + "line": { + "type": "integer", + "description": "The local line to which the mapping should map to (e.g.: for an ipython notebook this would be the first line of the cell in the file)." + }, + "endLine": { + "type": "integer", + "description": "The end line." + }, + "runtimeSource": { + "$ref": "#/definitions/Source", + "description": "The path that the user has remotely -- 'source.path' must be specified (e.g.: for an ipython notebook this could be something as '')" + }, + "runtimeLine": { + "type": "integer", + "description": "The remote line to which the mapping should map to (e.g.: for an ipython notebook this would be always 1 as it'd map the start of the cell)." + } + }, + "required": ["line", "endLine", "runtimeSource", "runtimeLine"] + }, + + "PydevdSystemInfoRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "The request can be used retrieve system information, python version, etc.", + "properties": { + "command": { + "type": "string", + "enum": [ "pydevdSystemInfo" ] + }, + "arguments": { + "$ref": "#/definitions/PydevdSystemInfoArguments" + } + }, + "required": [ "command" ] + }] + }, + "PydevdSystemInfoArguments": { + "type": "object", + "description": "Arguments for 'pydevdSystemInfo' request." + }, + "PydevdSystemInfoResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to 'pydevdSystemInfo' request.", + "properties": { + "body": { + "type": "object", + "properties": { + "python": { + "$ref": "#/definitions/PydevdPythonInfo", + "description": "Information about the python version running in the current process." + }, + "platform": { + "$ref": "#/definitions/PydevdPlatformInfo", + "description": "Information about the plarforn on which the current process is running." + }, + "process": { + "$ref": "#/definitions/PydevdProcessInfo", + "description": "Information about the current process." + }, + "pydevd": { + "$ref": "#/definitions/PydevdInfo", + "description": "Information about pydevd." + } + }, + "required": [ "python", "platform", "process", "pydevd" ] + } + }, + "required": [ "body" ] + }] + }, + + "PydevdPythonInfo": { + "type": "object", + "description": "This object contains python version and implementation details.", + "properties": { + "version": { + "type": "string", + "description": "Python version as a string in semver format: ..." + }, + "implementation": { + "$ref": "#/definitions/PydevdPythonImplementationInfo", + "description": "Python version as a string in this format ..." + } + } + }, + "PydevdPythonImplementationInfo": { + "type": "object", + "description": "This object contains python implementation details.", + "properties": { + "name": { + "type": "string", + "description": "Python implementation name." + }, + "version": { + "type": "string", + "description": "Python version as a string in semver format: ..." + }, + "description": { + "type": "string", + "description": "Optional description for this python implementation." + } + } + }, + "PydevdPlatformInfo": { + "type": "object", + "description": "This object contains python version and implementation details.", + "properties": { + "name": { + "type": "string", + "description": "Name of the platform as returned by 'sys.platform'." + } + } + }, + "PydevdProcessInfo": { + "type": "object", + "description": "This object contains python process details.", + "properties": { + "pid": { + "type": "integer", + "description": "Process ID for the current process." + }, + "ppid": { + "type": "integer", + "description": "Parent Process ID for the current process." + }, + "executable": { + "type": "string", + "description": "Path to the executable as returned by 'sys.executable'." + }, + "bitness": { + "type": "integer", + "description": "Integer value indicating the bitness of the current process." + } + } + }, + "PydevdInfo": { + "type": "object", + "description": "This object contains details on pydevd.", + "properties": { + "usingCython": { + "type": "boolean", + "description": "Specifies whether the cython native module is being used." + }, + "usingFrameEval": { + "type": "boolean", + "description": "Specifies whether the frame eval native module is being used." + } + } + }, + "PydevdAuthorizeRequest": { + "allOf": [ { "$ref": "#/definitions/Request" }, { + "type": "object", + "description": "A request to authorize the ide to start accepting commands.", + "properties": { + "command": { + "type": "string", + "enum": [ "pydevdAuthorize" ] + }, + "arguments": { + "$ref": "#/definitions/PydevdAuthorizeArguments" + } + }, + "required": [ "command", "arguments" ] + }] + }, + "PydevdAuthorizeArguments": { + "type": "object", + "description": "Arguments for 'pydevdAuthorize' request.", + "properties": { + "debugServerAccessToken": { + "type": "string" , + "description": "The access token to access the debug server." + } + }, + "required": [ "command" ] + }, + "PydevdAuthorizeResponse": { + "allOf": [ { "$ref": "#/definitions/Response" }, { + "type": "object", + "description": "Response to 'pydevdAuthorize' request.", + "properties": { + "body": { + "type": "object", + "properties": { + "clientAccessToken": { + "type": "string", + "description": "The access token to access the client (i.e.: usually the IDE)." + } + }, + "required": [ "clientAccessToken" ] + } + }, + "required": [ "body" ] + }] + } + } +} \ No newline at end of file diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_base_schema.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_base_schema.py new file mode 100644 index 000000000..4f8097997 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_base_schema.py @@ -0,0 +1,147 @@ +import itertools +import json +from functools import partial + +from _pydevd_bundle._debug_adapter.pydevd_schema_log import debug_exception + + +class BaseSchema: + @staticmethod + def initialize_ids_translation(): + BaseSchema._dap_id_to_obj_id = {0: 0, None: None} + BaseSchema._obj_id_to_dap_id = {0: 0, None: None} + BaseSchema._next_dap_id = partial(next, itertools.count(1)) + + def to_json(self): + return json.dumps(self.to_dict()) + + @staticmethod + def _translate_id_to_dap(obj_id): + if obj_id == "*": + return "*" + # Note: we don't invalidate ids, so, if some object starts using the same id + # of another object, the same id will be used. + dap_id = BaseSchema._obj_id_to_dap_id.get(obj_id) + if dap_id is None: + dap_id = BaseSchema._obj_id_to_dap_id[obj_id] = BaseSchema._next_dap_id() + BaseSchema._dap_id_to_obj_id[dap_id] = obj_id + return dap_id + + @staticmethod + def _translate_id_from_dap(dap_id): + if dap_id == "*": + return "*" + try: + return BaseSchema._dap_id_to_obj_id[dap_id] + except: + raise KeyError("Wrong ID sent from the client: %s" % (dap_id,)) + + @staticmethod + def update_dict_ids_to_dap(dct): + return dct + + @staticmethod + def update_dict_ids_from_dap(dct): + return dct + + +BaseSchema.initialize_ids_translation() + +_requests_to_types = {} +_responses_to_types = {} +_event_to_types = {} +_all_messages = {} + + +def register(cls): + _all_messages[cls.__name__] = cls + return cls + + +def register_request(command): + def do_register(cls): + _requests_to_types[command] = cls + return cls + + return do_register + + +def register_response(command): + def do_register(cls): + _responses_to_types[command] = cls + return cls + + return do_register + + +def register_event(event): + def do_register(cls): + _event_to_types[event] = cls + return cls + + return do_register + + +def from_dict(dct, update_ids_from_dap=False): + msg_type = dct.get("type") + if msg_type is None: + raise ValueError("Unable to make sense of message: %s" % (dct,)) + + if msg_type == "request": + to_type = _requests_to_types + use = dct["command"] + + elif msg_type == "response": + to_type = _responses_to_types + use = dct["command"] + + else: + to_type = _event_to_types + use = dct["event"] + + cls = to_type.get(use) + if cls is None: + raise ValueError( + "Unable to create message from dict: %s. %s not in %s" + % (dct, use, sorted(to_type.keys())) + ) + try: + return cls(update_ids_from_dap=update_ids_from_dap, **dct) + except: + msg = "Error creating %s from %s" % (cls, dct) + debug_exception(msg) + raise + + +def from_json(json_msg, update_ids_from_dap=False, on_dict_loaded=lambda dct: None): + if isinstance(json_msg, bytes): + json_msg = json_msg.decode("utf-8") + + as_dict = json.loads(json_msg) + on_dict_loaded(as_dict) + try: + return from_dict(as_dict, update_ids_from_dap=update_ids_from_dap) + except: + if as_dict.get("type") == "response" and not as_dict.get("success"): + # Error messages may not have required body (return as a generic Response). + Response = _all_messages["Response"] + return Response(**as_dict) + else: + raise + + +def get_response_class(request): + if request.__class__ == dict: + return _responses_to_types[request["command"]] + return _responses_to_types[request.command] + + +def build_response(request, kwargs=None): + if kwargs is None: + kwargs = {"success": True} + else: + if "success" not in kwargs: + kwargs["success"] = True + response_class = _responses_to_types[request.command] + kwargs.setdefault("seq", -1) # To be overwritten before sending + return response_class(command=request.command, request_seq=request.seq, **kwargs) diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema.py new file mode 100644 index 000000000..a49c094a8 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema.py @@ -0,0 +1,19870 @@ +# Automatically generated code. +# Do not edit manually. +# Generated by running: __main__pydevd_gen_debug_adapter_protocol.py +from .pydevd_base_schema import ( + BaseSchema, + register, + register_event, + register_request, + register_response, +) + + +@register +class ProtocolMessage(BaseSchema): + """ + Base class of requests, responses, and events. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": { + "type": "string", + "description": "Message type.", + "_enum": ["request", "response", "event"], + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, type, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: Message type. + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = type + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + seq = self.seq + dct = { + "type": type, + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register +class Request(BaseSchema): + """ + A client or debug adapter initiated request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "description": "The command to execute."}, + "arguments": { + "type": [ + "array", + "boolean", + "integer", + "null", + "number", + "object", + "string", + ], + "description": "Object containing arguments for the command.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, command, seq=-1, arguments=None, update_ids_from_dap=False, **kwargs + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: The command to execute. + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] arguments: Object containing arguments for the command. + """ + self.type = "request" + self.command = command + self.seq = seq + self.arguments = arguments + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + seq = self.seq + arguments = self.arguments + dct = { + "type": type, + "command": command, + "seq": seq, + } + if arguments is not None: + dct["arguments"] = arguments + dct.update(self.kwargs) + return dct + + +@register +class Event(BaseSchema): + """ + A debug adapter initiated event. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["event"]}, + "event": {"type": "string", "description": "Type of event."}, + "body": { + "type": [ + "array", + "boolean", + "integer", + "null", + "number", + "object", + "string", + ], + "description": "Event-specific information.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, event, seq=-1, body=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string event: Type of event. + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Event-specific information. + """ + self.type = "event" + self.event = event + self.seq = seq + self.body = body + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + event = self.event + seq = self.seq + body = self.body + dct = { + "type": type, + "event": event, + "seq": seq, + } + if body is not None: + dct["body"] = body + dct.update(self.kwargs) + return dct + + +@register +class Response(BaseSchema): + """ + Response for a request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": [ + "array", + "boolean", + "integer", + "null", + "number", + "object", + "string", + ], + "description": "Contains request result if success is True and error details if success is false.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + seq=-1, + message=None, + body=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and error details if success is false. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + self.seq = seq + self.message = message + self.body = body + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + seq = self.seq + message = self.message + body = self.body + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "seq": seq, + } + if message is not None: + dct["message"] = message + if body is not None: + dct["body"] = body + dct.update(self.kwargs) + return dct + + +@register_response("error") +@register +class ErrorResponse(BaseSchema): + """ + On error (whenever `success` is false), the body can provide more details. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": "object", + "properties": { + "error": { + "$ref": "#/definitions/Message", + "description": "A structured error message.", + } + }, + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + body, + seq=-1, + message=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param ErrorResponseBody body: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + if body is None: + self.body = ErrorResponseBody() + else: + self.body = ( + ErrorResponseBody(update_ids_from_dap=update_ids_from_dap, **body) + if body.__class__ != ErrorResponseBody + else body + ) + self.seq = seq + self.message = message + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + body = self.body + seq = self.seq + message = self.message + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "body": body.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + if message is not None: + dct["message"] = message + dct.update(self.kwargs) + return dct + + +@register_request("cancel") +@register +class CancelRequest(BaseSchema): + """ + The `cancel` request is used by the client in two situations: + + - to indicate that it is no longer interested in the result produced by a specific request issued + earlier + + - to cancel a progress sequence. + + Clients should only call this request if the corresponding capability `supportsCancelRequest` is + true. + + This request has a hint characteristic: a debug adapter can only be expected to make a 'best effort' + in honoring this request but there are no guarantees. + + The `cancel` request may return an error if it could not cancel an operation but a client should + refrain from presenting this error to end users. + + The request that got cancelled still needs to send a response back. This can either be a normal + result (`success` attribute true) or an error response (`success` attribute false and the `message` + set to `cancelled`). + + Returning partial results from a cancelled request is possible but please note that a client has no + generic way for detecting that a response is partial or not. + + The progress that got cancelled still needs to send a `progressEnd` event back. + + A client should not assume that progress just got cancelled after sending the `cancel` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["cancel"]}, + "arguments": {"type": "CancelArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, seq=-1, arguments=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param CancelArguments arguments: + """ + self.type = "request" + self.command = "cancel" + self.seq = seq + if arguments is None: + self.arguments = CancelArguments() + else: + self.arguments = ( + CancelArguments(update_ids_from_dap=update_ids_from_dap, **arguments) + if arguments.__class__ != CancelArguments + else arguments + ) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + seq = self.seq + arguments = self.arguments + dct = { + "type": type, + "command": command, + "seq": seq, + } + if arguments is not None: + dct["arguments"] = arguments.to_dict(update_ids_to_dap=update_ids_to_dap) + dct.update(self.kwargs) + return dct + + +@register +class CancelArguments(BaseSchema): + """ + Arguments for `cancel` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "requestId": { + "type": "integer", + "description": "The ID (attribute `seq`) of the request to cancel. If missing no request is cancelled.\nBoth a `requestId` and a `progressId` can be specified in one request.", + }, + "progressId": { + "type": "string", + "description": "The ID (attribute `progressId`) of the progress to cancel. If missing no progress is cancelled.\nBoth a `requestId` and a `progressId` can be specified in one request.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, requestId=None, progressId=None, update_ids_from_dap=False, **kwargs + ): # noqa (update_ids_from_dap may be unused) + """ + :param integer requestId: The ID (attribute `seq`) of the request to cancel. If missing no request is cancelled. + Both a `requestId` and a `progressId` can be specified in one request. + :param string progressId: The ID (attribute `progressId`) of the progress to cancel. If missing no progress is cancelled. + Both a `requestId` and a `progressId` can be specified in one request. + """ + self.requestId = requestId + self.progressId = progressId + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + requestId = self.requestId + progressId = self.progressId + dct = {} + if requestId is not None: + dct["requestId"] = requestId + if progressId is not None: + dct["progressId"] = progressId + dct.update(self.kwargs) + return dct + + +@register_response("cancel") +@register +class CancelResponse(BaseSchema): + """ + Response to `cancel` request. This is just an acknowledgement, so no body field is required. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": [ + "array", + "boolean", + "integer", + "null", + "number", + "object", + "string", + ], + "description": "Contains request result if success is True and error details if success is false.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + seq=-1, + message=None, + body=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and error details if success is false. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + self.seq = seq + self.message = message + self.body = body + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + seq = self.seq + message = self.message + body = self.body + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "seq": seq, + } + if message is not None: + dct["message"] = message + if body is not None: + dct["body"] = body + dct.update(self.kwargs) + return dct + + +@register_event("initialized") +@register +class InitializedEvent(BaseSchema): + """ + This event indicates that the debug adapter is ready to accept configuration requests (e.g. + `setBreakpoints`, `setExceptionBreakpoints`). + + A debug adapter is expected to send this event when it is ready to accept configuration requests + (but not before the `initialize` request has finished). + + The sequence of events/requests is as follows: + + - adapters sends `initialized` event (after the `initialize` request has returned) + + - client sends zero or more `setBreakpoints` requests + + - client sends one `setFunctionBreakpoints` request (if corresponding capability + `supportsFunctionBreakpoints` is true) + + - client sends a `setExceptionBreakpoints` request if one or more `exceptionBreakpointFilters` have + been defined (or if `supportsConfigurationDoneRequest` is not true) + + - client sends other future configuration requests + + - client sends one `configurationDone` request to indicate the end of the configuration. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["event"]}, + "event": {"type": "string", "enum": ["initialized"]}, + "body": { + "type": [ + "array", + "boolean", + "integer", + "null", + "number", + "object", + "string", + ], + "description": "Event-specific information.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, seq=-1, body=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string event: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Event-specific information. + """ + self.type = "event" + self.event = "initialized" + self.seq = seq + self.body = body + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + event = self.event + seq = self.seq + body = self.body + dct = { + "type": type, + "event": event, + "seq": seq, + } + if body is not None: + dct["body"] = body + dct.update(self.kwargs) + return dct + + +@register_event("stopped") +@register +class StoppedEvent(BaseSchema): + """ + The event indicates that the execution of the debuggee has stopped due to some condition. + + This can be caused by a breakpoint previously set, a stepping request has completed, by executing a + debugger statement etc. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["event"]}, + "event": {"type": "string", "enum": ["stopped"]}, + "body": { + "type": "object", + "properties": { + "reason": { + "type": "string", + "description": "The reason for the event.\nFor backward compatibility this string is shown in the UI if the `description` attribute is missing (but it must not be translated).", + "_enum": [ + "step", + "breakpoint", + "exception", + "pause", + "entry", + "goto", + "function breakpoint", + "data breakpoint", + "instruction breakpoint", + ], + }, + "description": { + "type": "string", + "description": "The full reason for the event, e.g. 'Paused on exception'. This string is shown in the UI as is and can be translated.", + }, + "threadId": { + "type": "integer", + "description": "The thread which was stopped.", + }, + "preserveFocusHint": { + "type": "boolean", + "description": "A value of True hints to the client that this event should not change the focus.", + }, + "text": { + "type": "string", + "description": "Additional information. E.g. if reason is `exception`, text contains the exception name. This string is shown in the UI.", + }, + "allThreadsStopped": { + "type": "boolean", + "description": "If `allThreadsStopped` is True, a debug adapter can announce that all threads have stopped.\n- The client should use this information to enable that all threads can be expanded to access their stacktraces.\n- If the attribute is missing or false, only the thread with the given `threadId` can be expanded.", + }, + "hitBreakpointIds": { + "type": "array", + "items": {"type": "integer"}, + "description": "Ids of the breakpoints that triggered the event. In most cases there is only a single breakpoint but here are some examples for multiple breakpoints:\n- Different types of breakpoints map to the same location.\n- Multiple source breakpoints get collapsed to the same instruction by the compiler/runtime.\n- Multiple function breakpoints with different function names map to the same location.", + }, + }, + "required": ["reason"], + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, body, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string event: + :param StoppedEventBody body: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "event" + self.event = "stopped" + if body is None: + self.body = StoppedEventBody() + else: + self.body = ( + StoppedEventBody(update_ids_from_dap=update_ids_from_dap, **body) + if body.__class__ != StoppedEventBody + else body + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + event = self.event + body = self.body + seq = self.seq + dct = { + "type": type, + "event": event, + "body": body.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register_event("continued") +@register +class ContinuedEvent(BaseSchema): + """ + The event indicates that the execution of the debuggee has continued. + + Please note: a debug adapter is not expected to send this event in response to a request that + implies that execution continues, e.g. `launch` or `continue`. + + It is only necessary to send a `continued` event if there was no previous request that implied this. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["event"]}, + "event": {"type": "string", "enum": ["continued"]}, + "body": { + "type": "object", + "properties": { + "threadId": { + "type": "integer", + "description": "The thread which was continued.", + }, + "allThreadsContinued": { + "type": "boolean", + "description": "If `allThreadsContinued` is True, a debug adapter can announce that all threads have continued.", + }, + }, + "required": ["threadId"], + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, body, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string event: + :param ContinuedEventBody body: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "event" + self.event = "continued" + if body is None: + self.body = ContinuedEventBody() + else: + self.body = ( + ContinuedEventBody(update_ids_from_dap=update_ids_from_dap, **body) + if body.__class__ != ContinuedEventBody + else body + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + event = self.event + body = self.body + seq = self.seq + dct = { + "type": type, + "event": event, + "body": body.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register_event("exited") +@register +class ExitedEvent(BaseSchema): + """ + The event indicates that the debuggee has exited and returns its exit code. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["event"]}, + "event": {"type": "string", "enum": ["exited"]}, + "body": { + "type": "object", + "properties": { + "exitCode": { + "type": "integer", + "description": "The exit code returned from the debuggee.", + } + }, + "required": ["exitCode"], + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, body, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string event: + :param ExitedEventBody body: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "event" + self.event = "exited" + if body is None: + self.body = ExitedEventBody() + else: + self.body = ( + ExitedEventBody(update_ids_from_dap=update_ids_from_dap, **body) + if body.__class__ != ExitedEventBody + else body + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + event = self.event + body = self.body + seq = self.seq + dct = { + "type": type, + "event": event, + "body": body.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register_event("terminated") +@register +class TerminatedEvent(BaseSchema): + """ + The event indicates that debugging of the debuggee has terminated. This does **not** mean that the + debuggee itself has exited. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["event"]}, + "event": {"type": "string", "enum": ["terminated"]}, + "body": { + "type": "object", + "properties": { + "restart": { + "type": [ + "array", + "boolean", + "integer", + "null", + "number", + "object", + "string", + ], + "description": "A debug adapter may set `restart` to True (or to an arbitrary object) to request that the client restarts the session.\nThe value is not interpreted by the client and passed unmodified as an attribute `__restart` to the `launch` and `attach` requests.", + } + }, + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, seq=-1, body=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string event: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param TerminatedEventBody body: + """ + self.type = "event" + self.event = "terminated" + self.seq = seq + if body is None: + self.body = TerminatedEventBody() + else: + self.body = ( + TerminatedEventBody(update_ids_from_dap=update_ids_from_dap, **body) + if body.__class__ != TerminatedEventBody + else body + ) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + event = self.event + seq = self.seq + body = self.body + dct = { + "type": type, + "event": event, + "seq": seq, + } + if body is not None: + dct["body"] = body.to_dict(update_ids_to_dap=update_ids_to_dap) + dct.update(self.kwargs) + return dct + + +@register_event("thread") +@register +class ThreadEvent(BaseSchema): + """ + The event indicates that a thread has started or exited. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["event"]}, + "event": {"type": "string", "enum": ["thread"]}, + "body": { + "type": "object", + "properties": { + "reason": { + "type": "string", + "description": "The reason for the event.", + "_enum": ["started", "exited"], + }, + "threadId": { + "type": "integer", + "description": "The identifier of the thread.", + }, + }, + "required": ["reason", "threadId"], + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, body, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string event: + :param ThreadEventBody body: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "event" + self.event = "thread" + if body is None: + self.body = ThreadEventBody() + else: + self.body = ( + ThreadEventBody(update_ids_from_dap=update_ids_from_dap, **body) + if body.__class__ != ThreadEventBody + else body + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + event = self.event + body = self.body + seq = self.seq + dct = { + "type": type, + "event": event, + "body": body.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register_event("output") +@register +class OutputEvent(BaseSchema): + """ + The event indicates that the target has produced some output. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["event"]}, + "event": {"type": "string", "enum": ["output"]}, + "body": { + "type": "object", + "properties": { + "category": { + "type": "string", + "description": "The output category. If not specified or if the category is not understood by the client, `console` is assumed.", + "_enum": ["console", "important", "stdout", "stderr", "telemetry"], + "enumDescriptions": [ + "Show the output in the client's default message UI, e.g. a 'debug console'. This category should only be used for informational output from the debugger (as opposed to the debuggee).", + "A hint for the client to show the output in the client's UI for important and highly visible information, e.g. as a popup notification. This category should only be used for important messages from the debugger (as opposed to the debuggee). Since this category value is a hint, clients might ignore the hint and assume the `console` category.", + "Show the output as normal program output from the debuggee.", + "Show the output as error program output from the debuggee.", + "Send the output to telemetry instead of showing it to the user.", + ], + }, + "output": {"type": "string", "description": "The output to report."}, + "group": { + "type": "string", + "description": "Support for keeping an output log organized by grouping related messages.", + "enum": ["start", "startCollapsed", "end"], + "enumDescriptions": [ + "Start a new group in expanded mode. Subsequent output events are members of the group and should be shown indented.\nThe `output` attribute becomes the name of the group and is not indented.", + "Start a new group in collapsed mode. Subsequent output events are members of the group and should be shown indented (as soon as the group is expanded).\nThe `output` attribute becomes the name of the group and is not indented.", + "End the current group and decrease the indentation of subsequent output events.\nA non-empty `output` attribute is shown as the unindented end of the group.", + ], + }, + "variablesReference": { + "type": "integer", + "description": "If an attribute `variablesReference` exists and its value is > 0, the output contains objects which can be retrieved by passing `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details.", + }, + "source": { + "$ref": "#/definitions/Source", + "description": "The source location where the output was produced.", + }, + "line": { + "type": "integer", + "description": "The source location's line where the output was produced.", + }, + "column": { + "type": "integer", + "description": "The position in `line` where the output was produced. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.", + }, + "data": { + "type": [ + "array", + "boolean", + "integer", + "null", + "number", + "object", + "string", + ], + "description": "Additional data to report. For the `telemetry` category the data is sent to telemetry, for the other categories the data is shown in JSON format.", + }, + }, + "required": ["output"], + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, body, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string event: + :param OutputEventBody body: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "event" + self.event = "output" + if body is None: + self.body = OutputEventBody() + else: + self.body = ( + OutputEventBody(update_ids_from_dap=update_ids_from_dap, **body) + if body.__class__ != OutputEventBody + else body + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + event = self.event + body = self.body + seq = self.seq + dct = { + "type": type, + "event": event, + "body": body.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register_event("breakpoint") +@register +class BreakpointEvent(BaseSchema): + """ + The event indicates that some information about a breakpoint has changed. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["event"]}, + "event": {"type": "string", "enum": ["breakpoint"]}, + "body": { + "type": "object", + "properties": { + "reason": { + "type": "string", + "description": "The reason for the event.", + "_enum": ["changed", "new", "removed"], + }, + "breakpoint": { + "$ref": "#/definitions/Breakpoint", + "description": "The `id` attribute is used to find the target breakpoint, the other attributes are used as the new values.", + }, + }, + "required": ["reason", "breakpoint"], + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, body, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string event: + :param BreakpointEventBody body: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "event" + self.event = "breakpoint" + if body is None: + self.body = BreakpointEventBody() + else: + self.body = ( + BreakpointEventBody(update_ids_from_dap=update_ids_from_dap, **body) + if body.__class__ != BreakpointEventBody + else body + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + event = self.event + body = self.body + seq = self.seq + dct = { + "type": type, + "event": event, + "body": body.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register_event("module") +@register +class ModuleEvent(BaseSchema): + """ + The event indicates that some information about a module has changed. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["event"]}, + "event": {"type": "string", "enum": ["module"]}, + "body": { + "type": "object", + "properties": { + "reason": { + "type": "string", + "description": "The reason for the event.", + "enum": ["new", "changed", "removed"], + }, + "module": { + "$ref": "#/definitions/Module", + "description": "The new, changed, or removed module. In case of `removed` only the module id is used.", + }, + }, + "required": ["reason", "module"], + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, body, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string event: + :param ModuleEventBody body: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "event" + self.event = "module" + if body is None: + self.body = ModuleEventBody() + else: + self.body = ( + ModuleEventBody(update_ids_from_dap=update_ids_from_dap, **body) + if body.__class__ != ModuleEventBody + else body + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + event = self.event + body = self.body + seq = self.seq + dct = { + "type": type, + "event": event, + "body": body.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register_event("loadedSource") +@register +class LoadedSourceEvent(BaseSchema): + """ + The event indicates that some source has been added, changed, or removed from the set of all loaded + sources. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["event"]}, + "event": {"type": "string", "enum": ["loadedSource"]}, + "body": { + "type": "object", + "properties": { + "reason": { + "type": "string", + "description": "The reason for the event.", + "enum": ["new", "changed", "removed"], + }, + "source": { + "$ref": "#/definitions/Source", + "description": "The new, changed, or removed source.", + }, + }, + "required": ["reason", "source"], + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, body, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string event: + :param LoadedSourceEventBody body: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "event" + self.event = "loadedSource" + if body is None: + self.body = LoadedSourceEventBody() + else: + self.body = ( + LoadedSourceEventBody(update_ids_from_dap=update_ids_from_dap, **body) + if body.__class__ != LoadedSourceEventBody + else body + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + event = self.event + body = self.body + seq = self.seq + dct = { + "type": type, + "event": event, + "body": body.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register_event("process") +@register +class ProcessEvent(BaseSchema): + """ + The event indicates that the debugger has begun debugging a new process. Either one that it has + launched, or one that it has attached to. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["event"]}, + "event": {"type": "string", "enum": ["process"]}, + "body": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The logical name of the process. This is usually the full path to process's executable file. Example: /home/example/myproj/program.js.", + }, + "systemProcessId": { + "type": "integer", + "description": "The system process id of the debugged process. This property is missing for non-system processes.", + }, + "isLocalProcess": { + "type": "boolean", + "description": "If True, the process is running on the same computer as the debug adapter.", + }, + "startMethod": { + "type": "string", + "enum": ["launch", "attach", "attachForSuspendedLaunch"], + "description": "Describes how the debug engine started debugging this process.", + "enumDescriptions": [ + "Process was launched under the debugger.", + "Debugger attached to an existing process.", + "A project launcher component has launched a new process in a suspended state and then asked the debugger to attach.", + ], + }, + "pointerSize": { + "type": "integer", + "description": "The size of a pointer or address for this process, in bits. This value may be used by clients when formatting addresses for display.", + }, + }, + "required": ["name"], + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, body, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string event: + :param ProcessEventBody body: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "event" + self.event = "process" + if body is None: + self.body = ProcessEventBody() + else: + self.body = ( + ProcessEventBody(update_ids_from_dap=update_ids_from_dap, **body) + if body.__class__ != ProcessEventBody + else body + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + event = self.event + body = self.body + seq = self.seq + dct = { + "type": type, + "event": event, + "body": body.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register_event("capabilities") +@register +class CapabilitiesEvent(BaseSchema): + """ + The event indicates that one or more capabilities have changed. + + Since the capabilities are dependent on the client and its UI, it might not be possible to change + that at random times (or too late). + + Consequently this event has a hint characteristic: a client can only be expected to make a 'best + effort' in honoring individual capabilities but there are no guarantees. + + Only changed capabilities need to be included, all other capabilities keep their values. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["event"]}, + "event": {"type": "string", "enum": ["capabilities"]}, + "body": { + "type": "object", + "properties": { + "capabilities": { + "$ref": "#/definitions/Capabilities", + "description": "The set of updated capabilities.", + } + }, + "required": ["capabilities"], + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, body, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string event: + :param CapabilitiesEventBody body: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "event" + self.event = "capabilities" + if body is None: + self.body = CapabilitiesEventBody() + else: + self.body = ( + CapabilitiesEventBody(update_ids_from_dap=update_ids_from_dap, **body) + if body.__class__ != CapabilitiesEventBody + else body + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + event = self.event + body = self.body + seq = self.seq + dct = { + "type": type, + "event": event, + "body": body.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register_event("progressStart") +@register +class ProgressStartEvent(BaseSchema): + """ + The event signals that a long running operation is about to start and provides additional + information for the client to set up a corresponding progress and cancellation UI. + + The client is free to delay the showing of the UI in order to reduce flicker. + + This event should only be sent if the corresponding capability `supportsProgressReporting` is true. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["event"]}, + "event": {"type": "string", "enum": ["progressStart"]}, + "body": { + "type": "object", + "properties": { + "progressId": { + "type": "string", + "description": "An ID that can be used in subsequent `progressUpdate` and `progressEnd` events to make them refer to the same progress reporting.\nIDs must be unique within a debug session.", + }, + "title": { + "type": "string", + "description": "Short title of the progress reporting. Shown in the UI to describe the long running operation.", + }, + "requestId": { + "type": "integer", + "description": "The request ID that this progress report is related to. If specified a debug adapter is expected to emit progress events for the long running request until the request has been either completed or cancelled.\nIf the request ID is omitted, the progress report is assumed to be related to some general activity of the debug adapter.", + }, + "cancellable": { + "type": "boolean", + "description": "If True, the request that reports progress may be cancelled with a `cancel` request.\nSo this property basically controls whether the client should use UX that supports cancellation.\nClients that don't support cancellation are allowed to ignore the setting.", + }, + "message": { + "type": "string", + "description": "More detailed progress message.", + }, + "percentage": { + "type": "number", + "description": "Progress percentage to display (value range: 0 to 100). If omitted no percentage is shown.", + }, + }, + "required": ["progressId", "title"], + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, body, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string event: + :param ProgressStartEventBody body: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "event" + self.event = "progressStart" + if body is None: + self.body = ProgressStartEventBody() + else: + self.body = ( + ProgressStartEventBody(update_ids_from_dap=update_ids_from_dap, **body) + if body.__class__ != ProgressStartEventBody + else body + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + event = self.event + body = self.body + seq = self.seq + dct = { + "type": type, + "event": event, + "body": body.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register_event("progressUpdate") +@register +class ProgressUpdateEvent(BaseSchema): + """ + The event signals that the progress reporting needs to be updated with a new message and/or + percentage. + + The client does not have to update the UI immediately, but the clients needs to keep track of the + message and/or percentage values. + + This event should only be sent if the corresponding capability `supportsProgressReporting` is true. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["event"]}, + "event": {"type": "string", "enum": ["progressUpdate"]}, + "body": { + "type": "object", + "properties": { + "progressId": { + "type": "string", + "description": "The ID that was introduced in the initial `progressStart` event.", + }, + "message": { + "type": "string", + "description": "More detailed progress message. If omitted, the previous message (if any) is used.", + }, + "percentage": { + "type": "number", + "description": "Progress percentage to display (value range: 0 to 100). If omitted no percentage is shown.", + }, + }, + "required": ["progressId"], + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, body, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string event: + :param ProgressUpdateEventBody body: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "event" + self.event = "progressUpdate" + if body is None: + self.body = ProgressUpdateEventBody() + else: + self.body = ( + ProgressUpdateEventBody(update_ids_from_dap=update_ids_from_dap, **body) + if body.__class__ != ProgressUpdateEventBody + else body + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + event = self.event + body = self.body + seq = self.seq + dct = { + "type": type, + "event": event, + "body": body.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register_event("progressEnd") +@register +class ProgressEndEvent(BaseSchema): + """ + The event signals the end of the progress reporting with a final message. + + This event should only be sent if the corresponding capability `supportsProgressReporting` is true. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["event"]}, + "event": {"type": "string", "enum": ["progressEnd"]}, + "body": { + "type": "object", + "properties": { + "progressId": { + "type": "string", + "description": "The ID that was introduced in the initial `ProgressStartEvent`.", + }, + "message": { + "type": "string", + "description": "More detailed progress message. If omitted, the previous message (if any) is used.", + }, + }, + "required": ["progressId"], + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, body, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string event: + :param ProgressEndEventBody body: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "event" + self.event = "progressEnd" + if body is None: + self.body = ProgressEndEventBody() + else: + self.body = ( + ProgressEndEventBody(update_ids_from_dap=update_ids_from_dap, **body) + if body.__class__ != ProgressEndEventBody + else body + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + event = self.event + body = self.body + seq = self.seq + dct = { + "type": type, + "event": event, + "body": body.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register_event("invalidated") +@register +class InvalidatedEvent(BaseSchema): + """ + This event signals that some state in the debug adapter has changed and requires that the client + needs to re-render the data snapshot previously requested. + + Debug adapters do not have to emit this event for runtime changes like stopped or thread events + because in that case the client refetches the new state anyway. But the event can be used for + example to refresh the UI after rendering formatting has changed in the debug adapter. + + This event should only be sent if the corresponding capability `supportsInvalidatedEvent` is true. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["event"]}, + "event": {"type": "string", "enum": ["invalidated"]}, + "body": { + "type": "object", + "properties": { + "areas": { + "type": "array", + "description": "Set of logical areas that got invalidated. This property has a hint characteristic: a client can only be expected to make a 'best effort' in honoring the areas but there are no guarantees. If this property is missing, empty, or if values are not understood, the client should assume a single value `all`.", + "items": {"$ref": "#/definitions/InvalidatedAreas"}, + }, + "threadId": { + "type": "integer", + "description": "If specified, the client only needs to refetch data related to this thread.", + }, + "stackFrameId": { + "type": "integer", + "description": "If specified, the client only needs to refetch data related to this stack frame (and the `threadId` is ignored).", + }, + }, + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, body, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string event: + :param InvalidatedEventBody body: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "event" + self.event = "invalidated" + if body is None: + self.body = InvalidatedEventBody() + else: + self.body = ( + InvalidatedEventBody(update_ids_from_dap=update_ids_from_dap, **body) + if body.__class__ != InvalidatedEventBody + else body + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + event = self.event + body = self.body + seq = self.seq + dct = { + "type": type, + "event": event, + "body": body.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register_event("memory") +@register +class MemoryEvent(BaseSchema): + """ + This event indicates that some memory range has been updated. It should only be sent if the + corresponding capability `supportsMemoryEvent` is true. + + Clients typically react to the event by re-issuing a `readMemory` request if they show the memory + identified by the `memoryReference` and if the updated memory range overlaps the displayed range. + Clients should not make assumptions how individual memory references relate to each other, so they + should not assume that they are part of a single continuous address range and might overlap. + + Debug adapters can use this event to indicate that the contents of a memory range has changed due to + some other request like `setVariable` or `setExpression`. Debug adapters are not expected to emit + this event for each and every memory change of a running program, because that information is + typically not available from debuggers and it would flood clients with too many events. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["event"]}, + "event": {"type": "string", "enum": ["memory"]}, + "body": { + "type": "object", + "properties": { + "memoryReference": { + "type": "string", + "description": "Memory reference of a memory range that has been updated.", + }, + "offset": { + "type": "integer", + "description": "Starting offset in bytes where memory has been updated. Can be negative.", + }, + "count": {"type": "integer", "description": "Number of bytes updated."}, + }, + "required": ["memoryReference", "offset", "count"], + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, body, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string event: + :param MemoryEventBody body: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "event" + self.event = "memory" + if body is None: + self.body = MemoryEventBody() + else: + self.body = ( + MemoryEventBody(update_ids_from_dap=update_ids_from_dap, **body) + if body.__class__ != MemoryEventBody + else body + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + event = self.event + body = self.body + seq = self.seq + dct = { + "type": type, + "event": event, + "body": body.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register_request("runInTerminal") +@register +class RunInTerminalRequest(BaseSchema): + """ + This request is sent from the debug adapter to the client to run a command in a terminal. + + This is typically used to launch the debuggee in a terminal provided by the client. + + This request should only be called if the corresponding client capability + `supportsRunInTerminalRequest` is true. + + Client implementations of `runInTerminal` are free to run the command however they choose including + issuing the command to a command line interpreter (aka 'shell'). Argument strings passed to the + `runInTerminal` request must arrive verbatim in the command to be run. As a consequence, clients + which use a shell are responsible for escaping any special shell characters in the argument strings + to prevent them from being interpreted (and modified) by the shell. + + Some users may wish to take advantage of shell processing in the argument strings. For clients which + implement `runInTerminal` using an intermediary shell, the `argsCanBeInterpretedByShell` property + can be set to true. In this case the client is requested not to escape any special shell characters + in the argument strings. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["runInTerminal"]}, + "arguments": {"type": "RunInTerminalRequestArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param RunInTerminalRequestArguments arguments: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "request" + self.command = "runInTerminal" + if arguments is None: + self.arguments = RunInTerminalRequestArguments() + else: + self.arguments = ( + RunInTerminalRequestArguments( + update_ids_from_dap=update_ids_from_dap, **arguments + ) + if arguments.__class__ != RunInTerminalRequestArguments + else arguments + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + arguments = self.arguments + seq = self.seq + dct = { + "type": type, + "command": command, + "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register +class RunInTerminalRequestArguments(BaseSchema): + """ + Arguments for `runInTerminal` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "kind": { + "type": "string", + "enum": ["integrated", "external"], + "description": "What kind of terminal to launch. Defaults to `integrated` if not specified.", + }, + "title": {"type": "string", "description": "Title of the terminal."}, + "cwd": { + "type": "string", + "description": "Working directory for the command. For non-empty, valid paths this typically results in execution of a change directory command.", + }, + "args": { + "type": "array", + "items": {"type": "string"}, + "description": "List of arguments. The first argument is the command to run.", + }, + "env": { + "type": "object", + "description": "Environment key-value pairs that are added to or removed from the default environment.", + "additionalProperties": { + "type": ["string", "null"], + "description": "A string is a proper value for an environment variable. The value `null` removes the variable from the environment.", + }, + }, + "argsCanBeInterpretedByShell": { + "type": "boolean", + "description": "This property should only be set if the corresponding capability `supportsArgsCanBeInterpretedByShell` is True. If the client uses an intermediary shell to launch the application, then the client must not attempt to escape characters with special meanings for the shell. The user is fully responsible for escaping as needed and that arguments using special characters may not be portable across shells.", + }, + } + __refs__ = set(["env"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + cwd, + args, + kind=None, + title=None, + env=None, + argsCanBeInterpretedByShell=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string cwd: Working directory for the command. For non-empty, valid paths this typically results in execution of a change directory command. + :param array args: List of arguments. The first argument is the command to run. + :param string kind: What kind of terminal to launch. Defaults to `integrated` if not specified. + :param string title: Title of the terminal. + :param RunInTerminalRequestArgumentsEnv env: Environment key-value pairs that are added to or removed from the default environment. + :param boolean argsCanBeInterpretedByShell: This property should only be set if the corresponding capability `supportsArgsCanBeInterpretedByShell` is true. If the client uses an intermediary shell to launch the application, then the client must not attempt to escape characters with special meanings for the shell. The user is fully responsible for escaping as needed and that arguments using special characters may not be portable across shells. + """ + self.cwd = cwd + self.args = args + self.kind = kind + self.title = title + if env is None: + self.env = RunInTerminalRequestArgumentsEnv() + else: + self.env = ( + RunInTerminalRequestArgumentsEnv( + update_ids_from_dap=update_ids_from_dap, **env + ) + if env.__class__ != RunInTerminalRequestArgumentsEnv + else env + ) + self.argsCanBeInterpretedByShell = argsCanBeInterpretedByShell + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + cwd = self.cwd + args = self.args + if args and hasattr(args[0], "to_dict"): + args = [x.to_dict() for x in args] + kind = self.kind + title = self.title + env = self.env + argsCanBeInterpretedByShell = self.argsCanBeInterpretedByShell + dct = { + "cwd": cwd, + "args": args, + } + if kind is not None: + dct["kind"] = kind + if title is not None: + dct["title"] = title + if env is not None: + dct["env"] = env.to_dict(update_ids_to_dap=update_ids_to_dap) + if argsCanBeInterpretedByShell is not None: + dct["argsCanBeInterpretedByShell"] = argsCanBeInterpretedByShell + dct.update(self.kwargs) + return dct + + +@register_response("runInTerminal") +@register +class RunInTerminalResponse(BaseSchema): + """ + Response to `runInTerminal` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": "object", + "properties": { + "processId": { + "type": "integer", + "description": "The process ID. The value should be less than or equal to 2147483647 (2^31-1).", + }, + "shellProcessId": { + "type": "integer", + "description": "The process ID of the terminal shell. The value should be less than or equal to 2147483647 (2^31-1).", + }, + }, + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + body, + seq=-1, + message=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param RunInTerminalResponseBody body: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + if body is None: + self.body = RunInTerminalResponseBody() + else: + self.body = ( + RunInTerminalResponseBody( + update_ids_from_dap=update_ids_from_dap, **body + ) + if body.__class__ != RunInTerminalResponseBody + else body + ) + self.seq = seq + self.message = message + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + body = self.body + seq = self.seq + message = self.message + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "body": body.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + if message is not None: + dct["message"] = message + dct.update(self.kwargs) + return dct + + +@register_request("startDebugging") +@register +class StartDebuggingRequest(BaseSchema): + """ + This request is sent from the debug adapter to the client to start a new debug session of the same + type as the caller. + + This request should only be sent if the corresponding client capability + `supportsStartDebuggingRequest` is true. + + A client implementation of `startDebugging` should start a new debug session (of the same type as + the caller) in the same way that the caller's session was started. If the client supports + hierarchical debug sessions, the newly created session can be treated as a child of the caller + session. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["startDebugging"]}, + "arguments": {"type": "StartDebuggingRequestArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param StartDebuggingRequestArguments arguments: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "request" + self.command = "startDebugging" + if arguments is None: + self.arguments = StartDebuggingRequestArguments() + else: + self.arguments = ( + StartDebuggingRequestArguments( + update_ids_from_dap=update_ids_from_dap, **arguments + ) + if arguments.__class__ != StartDebuggingRequestArguments + else arguments + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + arguments = self.arguments + seq = self.seq + dct = { + "type": type, + "command": command, + "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register +class StartDebuggingRequestArguments(BaseSchema): + """ + Arguments for `startDebugging` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "configuration": { + "type": "object", + "additionalProperties": True, + "description": "Arguments passed to the new debug session. The arguments must only contain properties understood by the `launch` or `attach` requests of the debug adapter and they must not contain any client-specific properties (e.g. `type`) or client-specific features (e.g. substitutable 'variables').", + }, + "request": { + "type": "string", + "enum": ["launch", "attach"], + "description": "Indicates whether the new debug session should be started with a `launch` or `attach` request.", + }, + } + __refs__ = set(["configuration"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, configuration, request, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param StartDebuggingRequestArgumentsConfiguration configuration: Arguments passed to the new debug session. The arguments must only contain properties understood by the `launch` or `attach` requests of the debug adapter and they must not contain any client-specific properties (e.g. `type`) or client-specific features (e.g. substitutable 'variables'). + :param string request: Indicates whether the new debug session should be started with a `launch` or `attach` request. + """ + if configuration is None: + self.configuration = StartDebuggingRequestArgumentsConfiguration() + else: + self.configuration = ( + StartDebuggingRequestArgumentsConfiguration( + update_ids_from_dap=update_ids_from_dap, **configuration + ) + if configuration.__class__ + != StartDebuggingRequestArgumentsConfiguration + else configuration + ) + self.request = request + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + configuration = self.configuration + request = self.request + dct = { + "configuration": configuration.to_dict(update_ids_to_dap=update_ids_to_dap), + "request": request, + } + dct.update(self.kwargs) + return dct + + +@register_response("startDebugging") +@register +class StartDebuggingResponse(BaseSchema): + """ + Response to `startDebugging` request. This is just an acknowledgement, so no body field is required. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": [ + "array", + "boolean", + "integer", + "null", + "number", + "object", + "string", + ], + "description": "Contains request result if success is True and error details if success is false.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + seq=-1, + message=None, + body=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and error details if success is false. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + self.seq = seq + self.message = message + self.body = body + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + seq = self.seq + message = self.message + body = self.body + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "seq": seq, + } + if message is not None: + dct["message"] = message + if body is not None: + dct["body"] = body + dct.update(self.kwargs) + return dct + + +@register_request("initialize") +@register +class InitializeRequest(BaseSchema): + """ + The `initialize` request is sent as the first request from the client to the debug adapter in order + to configure it with client capabilities and to retrieve capabilities from the debug adapter. + + Until the debug adapter has responded with an `initialize` response, the client must not send any + additional requests or events to the debug adapter. + + In addition the debug adapter is not allowed to send any requests or events to the client until it + has responded with an `initialize` response. + + The `initialize` request may only be sent once. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["initialize"]}, + "arguments": {"type": "InitializeRequestArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param InitializeRequestArguments arguments: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "request" + self.command = "initialize" + if arguments is None: + self.arguments = InitializeRequestArguments() + else: + self.arguments = ( + InitializeRequestArguments( + update_ids_from_dap=update_ids_from_dap, **arguments + ) + if arguments.__class__ != InitializeRequestArguments + else arguments + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + arguments = self.arguments + seq = self.seq + dct = { + "type": type, + "command": command, + "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register +class InitializeRequestArguments(BaseSchema): + """ + Arguments for `initialize` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "clientID": { + "type": "string", + "description": "The ID of the client using this adapter.", + }, + "clientName": { + "type": "string", + "description": "The human-readable name of the client using this adapter.", + }, + "adapterID": {"type": "string", "description": "The ID of the debug adapter."}, + "locale": { + "type": "string", + "description": "The ISO-639 locale of the client using this adapter, e.g. en-US or de-CH.", + }, + "linesStartAt1": { + "type": "boolean", + "description": "If True all line numbers are 1-based (default).", + }, + "columnsStartAt1": { + "type": "boolean", + "description": "If True all column numbers are 1-based (default).", + }, + "pathFormat": { + "type": "string", + "_enum": ["path", "uri"], + "description": "Determines in what format paths are specified. The default is `path`, which is the native format.", + }, + "supportsVariableType": { + "type": "boolean", + "description": "Client supports the `type` attribute for variables.", + }, + "supportsVariablePaging": { + "type": "boolean", + "description": "Client supports the paging of variables.", + }, + "supportsRunInTerminalRequest": { + "type": "boolean", + "description": "Client supports the `runInTerminal` request.", + }, + "supportsMemoryReferences": { + "type": "boolean", + "description": "Client supports memory references.", + }, + "supportsProgressReporting": { + "type": "boolean", + "description": "Client supports progress reporting.", + }, + "supportsInvalidatedEvent": { + "type": "boolean", + "description": "Client supports the `invalidated` event.", + }, + "supportsMemoryEvent": { + "type": "boolean", + "description": "Client supports the `memory` event.", + }, + "supportsArgsCanBeInterpretedByShell": { + "type": "boolean", + "description": "Client supports the `argsCanBeInterpretedByShell` attribute on the `runInTerminal` request.", + }, + "supportsStartDebuggingRequest": { + "type": "boolean", + "description": "Client supports the `startDebugging` request.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + adapterID, + clientID=None, + clientName=None, + locale=None, + linesStartAt1=None, + columnsStartAt1=None, + pathFormat=None, + supportsVariableType=None, + supportsVariablePaging=None, + supportsRunInTerminalRequest=None, + supportsMemoryReferences=None, + supportsProgressReporting=None, + supportsInvalidatedEvent=None, + supportsMemoryEvent=None, + supportsArgsCanBeInterpretedByShell=None, + supportsStartDebuggingRequest=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string adapterID: The ID of the debug adapter. + :param string clientID: The ID of the client using this adapter. + :param string clientName: The human-readable name of the client using this adapter. + :param string locale: The ISO-639 locale of the client using this adapter, e.g. en-US or de-CH. + :param boolean linesStartAt1: If true all line numbers are 1-based (default). + :param boolean columnsStartAt1: If true all column numbers are 1-based (default). + :param string pathFormat: Determines in what format paths are specified. The default is `path`, which is the native format. + :param boolean supportsVariableType: Client supports the `type` attribute for variables. + :param boolean supportsVariablePaging: Client supports the paging of variables. + :param boolean supportsRunInTerminalRequest: Client supports the `runInTerminal` request. + :param boolean supportsMemoryReferences: Client supports memory references. + :param boolean supportsProgressReporting: Client supports progress reporting. + :param boolean supportsInvalidatedEvent: Client supports the `invalidated` event. + :param boolean supportsMemoryEvent: Client supports the `memory` event. + :param boolean supportsArgsCanBeInterpretedByShell: Client supports the `argsCanBeInterpretedByShell` attribute on the `runInTerminal` request. + :param boolean supportsStartDebuggingRequest: Client supports the `startDebugging` request. + """ + self.adapterID = adapterID + self.clientID = clientID + self.clientName = clientName + self.locale = locale + self.linesStartAt1 = linesStartAt1 + self.columnsStartAt1 = columnsStartAt1 + self.pathFormat = pathFormat + self.supportsVariableType = supportsVariableType + self.supportsVariablePaging = supportsVariablePaging + self.supportsRunInTerminalRequest = supportsRunInTerminalRequest + self.supportsMemoryReferences = supportsMemoryReferences + self.supportsProgressReporting = supportsProgressReporting + self.supportsInvalidatedEvent = supportsInvalidatedEvent + self.supportsMemoryEvent = supportsMemoryEvent + self.supportsArgsCanBeInterpretedByShell = supportsArgsCanBeInterpretedByShell + self.supportsStartDebuggingRequest = supportsStartDebuggingRequest + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + adapterID = self.adapterID + clientID = self.clientID + clientName = self.clientName + locale = self.locale + linesStartAt1 = self.linesStartAt1 + columnsStartAt1 = self.columnsStartAt1 + pathFormat = self.pathFormat + supportsVariableType = self.supportsVariableType + supportsVariablePaging = self.supportsVariablePaging + supportsRunInTerminalRequest = self.supportsRunInTerminalRequest + supportsMemoryReferences = self.supportsMemoryReferences + supportsProgressReporting = self.supportsProgressReporting + supportsInvalidatedEvent = self.supportsInvalidatedEvent + supportsMemoryEvent = self.supportsMemoryEvent + supportsArgsCanBeInterpretedByShell = self.supportsArgsCanBeInterpretedByShell + supportsStartDebuggingRequest = self.supportsStartDebuggingRequest + dct = { + "adapterID": adapterID, + } + if clientID is not None: + dct["clientID"] = clientID + if clientName is not None: + dct["clientName"] = clientName + if locale is not None: + dct["locale"] = locale + if linesStartAt1 is not None: + dct["linesStartAt1"] = linesStartAt1 + if columnsStartAt1 is not None: + dct["columnsStartAt1"] = columnsStartAt1 + if pathFormat is not None: + dct["pathFormat"] = pathFormat + if supportsVariableType is not None: + dct["supportsVariableType"] = supportsVariableType + if supportsVariablePaging is not None: + dct["supportsVariablePaging"] = supportsVariablePaging + if supportsRunInTerminalRequest is not None: + dct["supportsRunInTerminalRequest"] = supportsRunInTerminalRequest + if supportsMemoryReferences is not None: + dct["supportsMemoryReferences"] = supportsMemoryReferences + if supportsProgressReporting is not None: + dct["supportsProgressReporting"] = supportsProgressReporting + if supportsInvalidatedEvent is not None: + dct["supportsInvalidatedEvent"] = supportsInvalidatedEvent + if supportsMemoryEvent is not None: + dct["supportsMemoryEvent"] = supportsMemoryEvent + if supportsArgsCanBeInterpretedByShell is not None: + dct[ + "supportsArgsCanBeInterpretedByShell" + ] = supportsArgsCanBeInterpretedByShell + if supportsStartDebuggingRequest is not None: + dct["supportsStartDebuggingRequest"] = supportsStartDebuggingRequest + dct.update(self.kwargs) + return dct + + +@register_response("initialize") +@register +class InitializeResponse(BaseSchema): + """ + Response to `initialize` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "description": "The capabilities of this debug adapter.", + "type": "Capabilities", + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + seq=-1, + message=None, + body=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + :param Capabilities body: The capabilities of this debug adapter. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + self.seq = seq + self.message = message + if body is None: + self.body = Capabilities() + else: + self.body = ( + Capabilities(update_ids_from_dap=update_ids_from_dap, **body) + if body.__class__ != Capabilities + else body + ) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + seq = self.seq + message = self.message + body = self.body + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "seq": seq, + } + if message is not None: + dct["message"] = message + if body is not None: + dct["body"] = body.to_dict(update_ids_to_dap=update_ids_to_dap) + dct.update(self.kwargs) + return dct + + +@register_request("configurationDone") +@register +class ConfigurationDoneRequest(BaseSchema): + """ + This request indicates that the client has finished initialization of the debug adapter. + + So it is the last request in the sequence of configuration requests (which was started by the + `initialized` event). + + Clients should only call this request if the corresponding capability + `supportsConfigurationDoneRequest` is true. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["configurationDone"]}, + "arguments": {"type": "ConfigurationDoneArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, seq=-1, arguments=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param ConfigurationDoneArguments arguments: + """ + self.type = "request" + self.command = "configurationDone" + self.seq = seq + if arguments is None: + self.arguments = ConfigurationDoneArguments() + else: + self.arguments = ( + ConfigurationDoneArguments( + update_ids_from_dap=update_ids_from_dap, **arguments + ) + if arguments.__class__ != ConfigurationDoneArguments + else arguments + ) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + seq = self.seq + arguments = self.arguments + dct = { + "type": type, + "command": command, + "seq": seq, + } + if arguments is not None: + dct["arguments"] = arguments.to_dict(update_ids_to_dap=update_ids_to_dap) + dct.update(self.kwargs) + return dct + + +@register +class ConfigurationDoneArguments(BaseSchema): + """ + Arguments for `configurationDone` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = {} + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ """ + + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + dct = {} + dct.update(self.kwargs) + return dct + + +@register_response("configurationDone") +@register +class ConfigurationDoneResponse(BaseSchema): + """ + Response to `configurationDone` request. This is just an acknowledgement, so no body field is + required. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": [ + "array", + "boolean", + "integer", + "null", + "number", + "object", + "string", + ], + "description": "Contains request result if success is True and error details if success is false.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + seq=-1, + message=None, + body=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and error details if success is false. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + self.seq = seq + self.message = message + self.body = body + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + seq = self.seq + message = self.message + body = self.body + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "seq": seq, + } + if message is not None: + dct["message"] = message + if body is not None: + dct["body"] = body + dct.update(self.kwargs) + return dct + + +@register_request("launch") +@register +class LaunchRequest(BaseSchema): + """ + This launch request is sent from the client to the debug adapter to start the debuggee with or + without debugging (if `noDebug` is true). + + Since launching is debugger/runtime specific, the arguments for this request are not part of this + specification. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["launch"]}, + "arguments": {"type": "LaunchRequestArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param LaunchRequestArguments arguments: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "request" + self.command = "launch" + if arguments is None: + self.arguments = LaunchRequestArguments() + else: + self.arguments = ( + LaunchRequestArguments( + update_ids_from_dap=update_ids_from_dap, **arguments + ) + if arguments.__class__ != LaunchRequestArguments + else arguments + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + arguments = self.arguments + seq = self.seq + dct = { + "type": type, + "command": command, + "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register +class LaunchRequestArguments(BaseSchema): + """ + Arguments for `launch` request. Additional attributes are implementation specific. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "noDebug": { + "type": "boolean", + "description": "If True, the launch request should launch the program without enabling debugging.", + }, + "__restart": { + "type": [ + "array", + "boolean", + "integer", + "null", + "number", + "object", + "string", + ], + "description": "Arbitrary data from the previous, restarted session.\nThe data is sent as the `restart` attribute of the `terminated` event.\nThe client should leave the data intact.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, noDebug=None, __restart=None, update_ids_from_dap=False, **kwargs + ): # noqa (update_ids_from_dap may be unused) + """ + :param boolean noDebug: If true, the launch request should launch the program without enabling debugging. + :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] __restart: Arbitrary data from the previous, restarted session. + The data is sent as the `restart` attribute of the `terminated` event. + The client should leave the data intact. + """ + self.noDebug = noDebug + self.__restart = __restart + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + noDebug = self.noDebug + __restart = self.__restart + dct = {} + if noDebug is not None: + dct["noDebug"] = noDebug + if __restart is not None: + dct["__restart"] = __restart + dct.update(self.kwargs) + return dct + + +@register_response("launch") +@register +class LaunchResponse(BaseSchema): + """ + Response to `launch` request. This is just an acknowledgement, so no body field is required. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": [ + "array", + "boolean", + "integer", + "null", + "number", + "object", + "string", + ], + "description": "Contains request result if success is True and error details if success is false.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + seq=-1, + message=None, + body=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and error details if success is false. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + self.seq = seq + self.message = message + self.body = body + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + seq = self.seq + message = self.message + body = self.body + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "seq": seq, + } + if message is not None: + dct["message"] = message + if body is not None: + dct["body"] = body + dct.update(self.kwargs) + return dct + + +@register_request("attach") +@register +class AttachRequest(BaseSchema): + """ + The `attach` request is sent from the client to the debug adapter to attach to a debuggee that is + already running. + + Since attaching is debugger/runtime specific, the arguments for this request are not part of this + specification. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["attach"]}, + "arguments": {"type": "AttachRequestArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param AttachRequestArguments arguments: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "request" + self.command = "attach" + if arguments is None: + self.arguments = AttachRequestArguments() + else: + self.arguments = ( + AttachRequestArguments( + update_ids_from_dap=update_ids_from_dap, **arguments + ) + if arguments.__class__ != AttachRequestArguments + else arguments + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + arguments = self.arguments + seq = self.seq + dct = { + "type": type, + "command": command, + "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register +class AttachRequestArguments(BaseSchema): + """ + Arguments for `attach` request. Additional attributes are implementation specific. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "__restart": { + "type": [ + "array", + "boolean", + "integer", + "null", + "number", + "object", + "string", + ], + "description": "Arbitrary data from the previous, restarted session.\nThe data is sent as the `restart` attribute of the `terminated` event.\nThe client should leave the data intact.", + } + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, __restart=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] __restart: Arbitrary data from the previous, restarted session. + The data is sent as the `restart` attribute of the `terminated` event. + The client should leave the data intact. + """ + self.__restart = __restart + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + __restart = self.__restart + dct = {} + if __restart is not None: + dct["__restart"] = __restart + dct.update(self.kwargs) + return dct + + +@register_response("attach") +@register +class AttachResponse(BaseSchema): + """ + Response to `attach` request. This is just an acknowledgement, so no body field is required. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": [ + "array", + "boolean", + "integer", + "null", + "number", + "object", + "string", + ], + "description": "Contains request result if success is True and error details if success is false.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + seq=-1, + message=None, + body=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and error details if success is false. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + self.seq = seq + self.message = message + self.body = body + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + seq = self.seq + message = self.message + body = self.body + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "seq": seq, + } + if message is not None: + dct["message"] = message + if body is not None: + dct["body"] = body + dct.update(self.kwargs) + return dct + + +@register_request("restart") +@register +class RestartRequest(BaseSchema): + """ + Restarts a debug session. Clients should only call this request if the corresponding capability + `supportsRestartRequest` is true. + + If the capability is missing or has the value false, a typical client emulates `restart` by + terminating the debug adapter first and then launching it anew. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["restart"]}, + "arguments": {"type": "RestartArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, seq=-1, arguments=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param RestartArguments arguments: + """ + self.type = "request" + self.command = "restart" + self.seq = seq + if arguments is None: + self.arguments = RestartArguments() + else: + self.arguments = ( + RestartArguments(update_ids_from_dap=update_ids_from_dap, **arguments) + if arguments.__class__ != RestartArguments + else arguments + ) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + seq = self.seq + arguments = self.arguments + dct = { + "type": type, + "command": command, + "seq": seq, + } + if arguments is not None: + dct["arguments"] = arguments.to_dict(update_ids_to_dap=update_ids_to_dap) + dct.update(self.kwargs) + return dct + + +@register +class RestartArguments(BaseSchema): + """ + Arguments for `restart` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "arguments": { + "oneOf": [ + {"$ref": "#/definitions/LaunchRequestArguments"}, + {"$ref": "#/definitions/AttachRequestArguments"}, + ], + "description": "The latest version of the `launch` or `attach` configuration.", + } + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, arguments=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param TypeNA arguments: The latest version of the `launch` or `attach` configuration. + """ + self.arguments = arguments + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + arguments = self.arguments + dct = {} + if arguments is not None: + dct["arguments"] = arguments + dct.update(self.kwargs) + return dct + + +@register_response("restart") +@register +class RestartResponse(BaseSchema): + """ + Response to `restart` request. This is just an acknowledgement, so no body field is required. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": [ + "array", + "boolean", + "integer", + "null", + "number", + "object", + "string", + ], + "description": "Contains request result if success is True and error details if success is false.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + seq=-1, + message=None, + body=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and error details if success is false. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + self.seq = seq + self.message = message + self.body = body + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + seq = self.seq + message = self.message + body = self.body + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "seq": seq, + } + if message is not None: + dct["message"] = message + if body is not None: + dct["body"] = body + dct.update(self.kwargs) + return dct + + +@register_request("disconnect") +@register +class DisconnectRequest(BaseSchema): + """ + The `disconnect` request asks the debug adapter to disconnect from the debuggee (thus ending the + debug session) and then to shut down itself (the debug adapter). + + In addition, the debug adapter must terminate the debuggee if it was started with the `launch` + request. If an `attach` request was used to connect to the debuggee, then the debug adapter must not + terminate the debuggee. + + This implicit behavior of when to terminate the debuggee can be overridden with the + `terminateDebuggee` argument (which is only supported by a debug adapter if the corresponding + capability `supportTerminateDebuggee` is true). + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["disconnect"]}, + "arguments": {"type": "DisconnectArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, seq=-1, arguments=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param DisconnectArguments arguments: + """ + self.type = "request" + self.command = "disconnect" + self.seq = seq + if arguments is None: + self.arguments = DisconnectArguments() + else: + self.arguments = ( + DisconnectArguments( + update_ids_from_dap=update_ids_from_dap, **arguments + ) + if arguments.__class__ != DisconnectArguments + else arguments + ) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + seq = self.seq + arguments = self.arguments + dct = { + "type": type, + "command": command, + "seq": seq, + } + if arguments is not None: + dct["arguments"] = arguments.to_dict(update_ids_to_dap=update_ids_to_dap) + dct.update(self.kwargs) + return dct + + +@register +class DisconnectArguments(BaseSchema): + """ + Arguments for `disconnect` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "restart": { + "type": "boolean", + "description": "A value of True indicates that this `disconnect` request is part of a restart sequence.", + }, + "terminateDebuggee": { + "type": "boolean", + "description": "Indicates whether the debuggee should be terminated when the debugger is disconnected.\nIf unspecified, the debug adapter is free to do whatever it thinks is best.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportTerminateDebuggee` is True.", + }, + "suspendDebuggee": { + "type": "boolean", + "description": "Indicates whether the debuggee should stay suspended when the debugger is disconnected.\nIf unspecified, the debuggee should resume execution.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportSuspendDebuggee` is True.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + restart=None, + terminateDebuggee=None, + suspendDebuggee=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param boolean restart: A value of true indicates that this `disconnect` request is part of a restart sequence. + :param boolean terminateDebuggee: Indicates whether the debuggee should be terminated when the debugger is disconnected. + If unspecified, the debug adapter is free to do whatever it thinks is best. + The attribute is only honored by a debug adapter if the corresponding capability `supportTerminateDebuggee` is true. + :param boolean suspendDebuggee: Indicates whether the debuggee should stay suspended when the debugger is disconnected. + If unspecified, the debuggee should resume execution. + The attribute is only honored by a debug adapter if the corresponding capability `supportSuspendDebuggee` is true. + """ + self.restart = restart + self.terminateDebuggee = terminateDebuggee + self.suspendDebuggee = suspendDebuggee + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + restart = self.restart + terminateDebuggee = self.terminateDebuggee + suspendDebuggee = self.suspendDebuggee + dct = {} + if restart is not None: + dct["restart"] = restart + if terminateDebuggee is not None: + dct["terminateDebuggee"] = terminateDebuggee + if suspendDebuggee is not None: + dct["suspendDebuggee"] = suspendDebuggee + dct.update(self.kwargs) + return dct + + +@register_response("disconnect") +@register +class DisconnectResponse(BaseSchema): + """ + Response to `disconnect` request. This is just an acknowledgement, so no body field is required. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": [ + "array", + "boolean", + "integer", + "null", + "number", + "object", + "string", + ], + "description": "Contains request result if success is True and error details if success is false.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + seq=-1, + message=None, + body=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and error details if success is false. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + self.seq = seq + self.message = message + self.body = body + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + seq = self.seq + message = self.message + body = self.body + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "seq": seq, + } + if message is not None: + dct["message"] = message + if body is not None: + dct["body"] = body + dct.update(self.kwargs) + return dct + + +@register_request("terminate") +@register +class TerminateRequest(BaseSchema): + """ + The `terminate` request is sent from the client to the debug adapter in order to shut down the + debuggee gracefully. Clients should only call this request if the capability + `supportsTerminateRequest` is true. + + Typically a debug adapter implements `terminate` by sending a software signal which the debuggee + intercepts in order to clean things up properly before terminating itself. + + Please note that this request does not directly affect the state of the debug session: if the + debuggee decides to veto the graceful shutdown for any reason by not terminating itself, then the + debug session just continues. + + Clients can surface the `terminate` request as an explicit command or they can integrate it into a + two stage Stop command that first sends `terminate` to request a graceful shutdown, and if that + fails uses `disconnect` for a forceful shutdown. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["terminate"]}, + "arguments": {"type": "TerminateArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, seq=-1, arguments=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param TerminateArguments arguments: + """ + self.type = "request" + self.command = "terminate" + self.seq = seq + if arguments is None: + self.arguments = TerminateArguments() + else: + self.arguments = ( + TerminateArguments(update_ids_from_dap=update_ids_from_dap, **arguments) + if arguments.__class__ != TerminateArguments + else arguments + ) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + seq = self.seq + arguments = self.arguments + dct = { + "type": type, + "command": command, + "seq": seq, + } + if arguments is not None: + dct["arguments"] = arguments.to_dict(update_ids_to_dap=update_ids_to_dap) + dct.update(self.kwargs) + return dct + + +@register +class TerminateArguments(BaseSchema): + """ + Arguments for `terminate` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "restart": { + "type": "boolean", + "description": "A value of True indicates that this `terminate` request is part of a restart sequence.", + } + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, restart=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param boolean restart: A value of true indicates that this `terminate` request is part of a restart sequence. + """ + self.restart = restart + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + restart = self.restart + dct = {} + if restart is not None: + dct["restart"] = restart + dct.update(self.kwargs) + return dct + + +@register_response("terminate") +@register +class TerminateResponse(BaseSchema): + """ + Response to `terminate` request. This is just an acknowledgement, so no body field is required. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": [ + "array", + "boolean", + "integer", + "null", + "number", + "object", + "string", + ], + "description": "Contains request result if success is True and error details if success is false.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + seq=-1, + message=None, + body=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and error details if success is false. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + self.seq = seq + self.message = message + self.body = body + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + seq = self.seq + message = self.message + body = self.body + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "seq": seq, + } + if message is not None: + dct["message"] = message + if body is not None: + dct["body"] = body + dct.update(self.kwargs) + return dct + + +@register_request("breakpointLocations") +@register +class BreakpointLocationsRequest(BaseSchema): + """ + The `breakpointLocations` request returns all possible locations for source breakpoints in a given + range. + + Clients should only call this request if the corresponding capability + `supportsBreakpointLocationsRequest` is true. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["breakpointLocations"]}, + "arguments": {"type": "BreakpointLocationsArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, seq=-1, arguments=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param BreakpointLocationsArguments arguments: + """ + self.type = "request" + self.command = "breakpointLocations" + self.seq = seq + if arguments is None: + self.arguments = BreakpointLocationsArguments() + else: + self.arguments = ( + BreakpointLocationsArguments( + update_ids_from_dap=update_ids_from_dap, **arguments + ) + if arguments.__class__ != BreakpointLocationsArguments + else arguments + ) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + seq = self.seq + arguments = self.arguments + dct = { + "type": type, + "command": command, + "seq": seq, + } + if arguments is not None: + dct["arguments"] = arguments.to_dict(update_ids_to_dap=update_ids_to_dap) + dct.update(self.kwargs) + return dct + + +@register +class BreakpointLocationsArguments(BaseSchema): + """ + Arguments for `breakpointLocations` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "source": { + "description": "The source location of the breakpoints; either `source.path` or `source.sourceReference` must be specified.", + "type": "Source", + }, + "line": { + "type": "integer", + "description": "Start line of range to search possible breakpoint locations in. If only the line is specified, the request returns all possible locations in that line.", + }, + "column": { + "type": "integer", + "description": "Start position within `line` to search possible breakpoint locations in. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based. If no column is given, the first position in the start line is assumed.", + }, + "endLine": { + "type": "integer", + "description": "End line of range to search possible breakpoint locations in. If no end line is given, then the end line is assumed to be the start line.", + }, + "endColumn": { + "type": "integer", + "description": "End position within `endLine` to search possible breakpoint locations in. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based. If no end column is given, the last position in the end line is assumed.", + }, + } + __refs__ = set(["source"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + source, + line, + column=None, + endLine=None, + endColumn=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param Source source: The source location of the breakpoints; either `source.path` or `source.sourceReference` must be specified. + :param integer line: Start line of range to search possible breakpoint locations in. If only the line is specified, the request returns all possible locations in that line. + :param integer column: Start position within `line` to search possible breakpoint locations in. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based. If no column is given, the first position in the start line is assumed. + :param integer endLine: End line of range to search possible breakpoint locations in. If no end line is given, then the end line is assumed to be the start line. + :param integer endColumn: End position within `endLine` to search possible breakpoint locations in. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based. If no end column is given, the last position in the end line is assumed. + """ + if source is None: + self.source = Source() + else: + self.source = ( + Source(update_ids_from_dap=update_ids_from_dap, **source) + if source.__class__ != Source + else source + ) + self.line = line + self.column = column + self.endLine = endLine + self.endColumn = endColumn + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + source = self.source + line = self.line + column = self.column + endLine = self.endLine + endColumn = self.endColumn + dct = { + "source": source.to_dict(update_ids_to_dap=update_ids_to_dap), + "line": line, + } + if column is not None: + dct["column"] = column + if endLine is not None: + dct["endLine"] = endLine + if endColumn is not None: + dct["endColumn"] = endColumn + dct.update(self.kwargs) + return dct + + +@register_response("breakpointLocations") +@register +class BreakpointLocationsResponse(BaseSchema): + """ + Response to `breakpointLocations` request. + + Contains possible locations for source breakpoints. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": "object", + "properties": { + "breakpoints": { + "type": "array", + "items": {"$ref": "#/definitions/BreakpointLocation"}, + "description": "Sorted set of possible breakpoint locations.", + } + }, + "required": ["breakpoints"], + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + body, + seq=-1, + message=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param BreakpointLocationsResponseBody body: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + if body is None: + self.body = BreakpointLocationsResponseBody() + else: + self.body = ( + BreakpointLocationsResponseBody( + update_ids_from_dap=update_ids_from_dap, **body + ) + if body.__class__ != BreakpointLocationsResponseBody + else body + ) + self.seq = seq + self.message = message + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + body = self.body + seq = self.seq + message = self.message + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "body": body.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + if message is not None: + dct["message"] = message + dct.update(self.kwargs) + return dct + + +@register_request("setBreakpoints") +@register +class SetBreakpointsRequest(BaseSchema): + """ + Sets multiple breakpoints for a single source and clears all previous breakpoints in that source. + + To clear all breakpoint for a source, specify an empty array. + + When a breakpoint is hit, a `stopped` event (with reason `breakpoint`) is generated. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["setBreakpoints"]}, + "arguments": {"type": "SetBreakpointsArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param SetBreakpointsArguments arguments: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "request" + self.command = "setBreakpoints" + if arguments is None: + self.arguments = SetBreakpointsArguments() + else: + self.arguments = ( + SetBreakpointsArguments( + update_ids_from_dap=update_ids_from_dap, **arguments + ) + if arguments.__class__ != SetBreakpointsArguments + else arguments + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + arguments = self.arguments + seq = self.seq + dct = { + "type": type, + "command": command, + "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register +class SetBreakpointsArguments(BaseSchema): + """ + Arguments for `setBreakpoints` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "source": { + "description": "The source location of the breakpoints; either `source.path` or `source.sourceReference` must be specified.", + "type": "Source", + }, + "breakpoints": { + "type": "array", + "items": {"$ref": "#/definitions/SourceBreakpoint"}, + "description": "The code locations of the breakpoints.", + }, + "lines": { + "type": "array", + "items": {"type": "integer"}, + "description": "Deprecated: The code locations of the breakpoints.", + }, + "sourceModified": { + "type": "boolean", + "description": "A value of True indicates that the underlying source has been modified which results in new breakpoint locations.", + }, + } + __refs__ = set(["source"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + source, + breakpoints=None, + lines=None, + sourceModified=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param Source source: The source location of the breakpoints; either `source.path` or `source.sourceReference` must be specified. + :param array breakpoints: The code locations of the breakpoints. + :param array lines: Deprecated: The code locations of the breakpoints. + :param boolean sourceModified: A value of true indicates that the underlying source has been modified which results in new breakpoint locations. + """ + if source is None: + self.source = Source() + else: + self.source = ( + Source(update_ids_from_dap=update_ids_from_dap, **source) + if source.__class__ != Source + else source + ) + self.breakpoints = breakpoints + if update_ids_from_dap and self.breakpoints: + for o in self.breakpoints: + SourceBreakpoint.update_dict_ids_from_dap(o) + self.lines = lines + self.sourceModified = sourceModified + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + source = self.source + breakpoints = self.breakpoints + if breakpoints and hasattr(breakpoints[0], "to_dict"): + breakpoints = [x.to_dict() for x in breakpoints] + lines = self.lines + if lines and hasattr(lines[0], "to_dict"): + lines = [x.to_dict() for x in lines] + sourceModified = self.sourceModified + dct = { + "source": source.to_dict(update_ids_to_dap=update_ids_to_dap), + } + if breakpoints is not None: + dct["breakpoints"] = ( + [SourceBreakpoint.update_dict_ids_to_dap(o) for o in breakpoints] + if (update_ids_to_dap and breakpoints) + else breakpoints + ) + if lines is not None: + dct["lines"] = lines + if sourceModified is not None: + dct["sourceModified"] = sourceModified + dct.update(self.kwargs) + return dct + + +@register_response("setBreakpoints") +@register +class SetBreakpointsResponse(BaseSchema): + """ + Response to `setBreakpoints` request. + + Returned is information about each breakpoint created by this request. + + This includes the actual code location and whether the breakpoint could be verified. + + The breakpoints returned are in the same order as the elements of the `breakpoints` + + (or the deprecated `lines`) array in the arguments. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": "object", + "properties": { + "breakpoints": { + "type": "array", + "items": {"$ref": "#/definitions/Breakpoint"}, + "description": "Information about the breakpoints.\nThe array elements are in the same order as the elements of the `breakpoints` (or the deprecated `lines`) array in the arguments.", + } + }, + "required": ["breakpoints"], + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + body, + seq=-1, + message=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param SetBreakpointsResponseBody body: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + if body is None: + self.body = SetBreakpointsResponseBody() + else: + self.body = ( + SetBreakpointsResponseBody( + update_ids_from_dap=update_ids_from_dap, **body + ) + if body.__class__ != SetBreakpointsResponseBody + else body + ) + self.seq = seq + self.message = message + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + body = self.body + seq = self.seq + message = self.message + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "body": body.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + if message is not None: + dct["message"] = message + dct.update(self.kwargs) + return dct + + +@register_request("setFunctionBreakpoints") +@register +class SetFunctionBreakpointsRequest(BaseSchema): + """ + Replaces all existing function breakpoints with new function breakpoints. + + To clear all function breakpoints, specify an empty array. + + When a function breakpoint is hit, a `stopped` event (with reason `function breakpoint`) is + generated. + + Clients should only call this request if the corresponding capability `supportsFunctionBreakpoints` + is true. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["setFunctionBreakpoints"]}, + "arguments": {"type": "SetFunctionBreakpointsArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param SetFunctionBreakpointsArguments arguments: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "request" + self.command = "setFunctionBreakpoints" + if arguments is None: + self.arguments = SetFunctionBreakpointsArguments() + else: + self.arguments = ( + SetFunctionBreakpointsArguments( + update_ids_from_dap=update_ids_from_dap, **arguments + ) + if arguments.__class__ != SetFunctionBreakpointsArguments + else arguments + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + arguments = self.arguments + seq = self.seq + dct = { + "type": type, + "command": command, + "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register +class SetFunctionBreakpointsArguments(BaseSchema): + """ + Arguments for `setFunctionBreakpoints` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "breakpoints": { + "type": "array", + "items": {"$ref": "#/definitions/FunctionBreakpoint"}, + "description": "The function names of the breakpoints.", + } + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, breakpoints, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param array breakpoints: The function names of the breakpoints. + """ + self.breakpoints = breakpoints + if update_ids_from_dap and self.breakpoints: + for o in self.breakpoints: + FunctionBreakpoint.update_dict_ids_from_dap(o) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + breakpoints = self.breakpoints + if breakpoints and hasattr(breakpoints[0], "to_dict"): + breakpoints = [x.to_dict() for x in breakpoints] + dct = { + "breakpoints": [ + FunctionBreakpoint.update_dict_ids_to_dap(o) for o in breakpoints + ] + if (update_ids_to_dap and breakpoints) + else breakpoints, + } + dct.update(self.kwargs) + return dct + + +@register_response("setFunctionBreakpoints") +@register +class SetFunctionBreakpointsResponse(BaseSchema): + """ + Response to `setFunctionBreakpoints` request. + + Returned is information about each breakpoint created by this request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": "object", + "properties": { + "breakpoints": { + "type": "array", + "items": {"$ref": "#/definitions/Breakpoint"}, + "description": "Information about the breakpoints. The array elements correspond to the elements of the `breakpoints` array.", + } + }, + "required": ["breakpoints"], + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + body, + seq=-1, + message=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param SetFunctionBreakpointsResponseBody body: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + if body is None: + self.body = SetFunctionBreakpointsResponseBody() + else: + self.body = ( + SetFunctionBreakpointsResponseBody( + update_ids_from_dap=update_ids_from_dap, **body + ) + if body.__class__ != SetFunctionBreakpointsResponseBody + else body + ) + self.seq = seq + self.message = message + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + body = self.body + seq = self.seq + message = self.message + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "body": body.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + if message is not None: + dct["message"] = message + dct.update(self.kwargs) + return dct + + +@register_request("setExceptionBreakpoints") +@register +class SetExceptionBreakpointsRequest(BaseSchema): + """ + The request configures the debugger's response to thrown exceptions. + + If an exception is configured to break, a `stopped` event is fired (with reason `exception`). + + Clients should only call this request if the corresponding capability `exceptionBreakpointFilters` + returns one or more filters. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["setExceptionBreakpoints"]}, + "arguments": {"type": "SetExceptionBreakpointsArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param SetExceptionBreakpointsArguments arguments: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "request" + self.command = "setExceptionBreakpoints" + if arguments is None: + self.arguments = SetExceptionBreakpointsArguments() + else: + self.arguments = ( + SetExceptionBreakpointsArguments( + update_ids_from_dap=update_ids_from_dap, **arguments + ) + if arguments.__class__ != SetExceptionBreakpointsArguments + else arguments + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + arguments = self.arguments + seq = self.seq + dct = { + "type": type, + "command": command, + "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register +class SetExceptionBreakpointsArguments(BaseSchema): + """ + Arguments for `setExceptionBreakpoints` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "filters": { + "type": "array", + "items": {"type": "string"}, + "description": "Set of exception filters specified by their ID. The set of all possible exception filters is defined by the `exceptionBreakpointFilters` capability. The `filter` and `filterOptions` sets are additive.", + }, + "filterOptions": { + "type": "array", + "items": {"$ref": "#/definitions/ExceptionFilterOptions"}, + "description": "Set of exception filters and their options. The set of all possible exception filters is defined by the `exceptionBreakpointFilters` capability. This attribute is only honored by a debug adapter if the corresponding capability `supportsExceptionFilterOptions` is True. The `filter` and `filterOptions` sets are additive.", + }, + "exceptionOptions": { + "type": "array", + "items": {"$ref": "#/definitions/ExceptionOptions"}, + "description": "Configuration options for selected exceptions.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportsExceptionOptions` is True.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + filters, + filterOptions=None, + exceptionOptions=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param array filters: Set of exception filters specified by their ID. The set of all possible exception filters is defined by the `exceptionBreakpointFilters` capability. The `filter` and `filterOptions` sets are additive. + :param array filterOptions: Set of exception filters and their options. The set of all possible exception filters is defined by the `exceptionBreakpointFilters` capability. This attribute is only honored by a debug adapter if the corresponding capability `supportsExceptionFilterOptions` is true. The `filter` and `filterOptions` sets are additive. + :param array exceptionOptions: Configuration options for selected exceptions. + The attribute is only honored by a debug adapter if the corresponding capability `supportsExceptionOptions` is true. + """ + self.filters = filters + self.filterOptions = filterOptions + if update_ids_from_dap and self.filterOptions: + for o in self.filterOptions: + ExceptionFilterOptions.update_dict_ids_from_dap(o) + self.exceptionOptions = exceptionOptions + if update_ids_from_dap and self.exceptionOptions: + for o in self.exceptionOptions: + ExceptionOptions.update_dict_ids_from_dap(o) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + filters = self.filters + if filters and hasattr(filters[0], "to_dict"): + filters = [x.to_dict() for x in filters] + filterOptions = self.filterOptions + if filterOptions and hasattr(filterOptions[0], "to_dict"): + filterOptions = [x.to_dict() for x in filterOptions] + exceptionOptions = self.exceptionOptions + if exceptionOptions and hasattr(exceptionOptions[0], "to_dict"): + exceptionOptions = [x.to_dict() for x in exceptionOptions] + dct = { + "filters": filters, + } + if filterOptions is not None: + dct["filterOptions"] = ( + [ + ExceptionFilterOptions.update_dict_ids_to_dap(o) + for o in filterOptions + ] + if (update_ids_to_dap and filterOptions) + else filterOptions + ) + if exceptionOptions is not None: + dct["exceptionOptions"] = ( + [ExceptionOptions.update_dict_ids_to_dap(o) for o in exceptionOptions] + if (update_ids_to_dap and exceptionOptions) + else exceptionOptions + ) + dct.update(self.kwargs) + return dct + + +@register_response("setExceptionBreakpoints") +@register +class SetExceptionBreakpointsResponse(BaseSchema): + """ + Response to `setExceptionBreakpoints` request. + + The response contains an array of `Breakpoint` objects with information about each exception + breakpoint or filter. The `Breakpoint` objects are in the same order as the elements of the + `filters`, `filterOptions`, `exceptionOptions` arrays given as arguments. If both `filters` and + `filterOptions` are given, the returned array must start with `filters` information first, followed + by `filterOptions` information. + + The `verified` property of a `Breakpoint` object signals whether the exception breakpoint or filter + could be successfully created and whether the condition is valid. In case of an error the `message` + property explains the problem. The `id` property can be used to introduce a unique ID for the + exception breakpoint or filter so that it can be updated subsequently by sending breakpoint events. + + For backward compatibility both the `breakpoints` array and the enclosing `body` are optional. If + these elements are missing a client is not able to show problems for individual exception + breakpoints or filters. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": "object", + "properties": { + "breakpoints": { + "type": "array", + "items": {"$ref": "#/definitions/Breakpoint"}, + "description": "Information about the exception breakpoints or filters.\nThe breakpoints returned are in the same order as the elements of the `filters`, `filterOptions`, `exceptionOptions` arrays in the arguments. If both `filters` and `filterOptions` are given, the returned array must start with `filters` information first, followed by `filterOptions` information.", + } + }, + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + seq=-1, + message=None, + body=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + :param SetExceptionBreakpointsResponseBody body: + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + self.seq = seq + self.message = message + if body is None: + self.body = SetExceptionBreakpointsResponseBody() + else: + self.body = ( + SetExceptionBreakpointsResponseBody( + update_ids_from_dap=update_ids_from_dap, **body + ) + if body.__class__ != SetExceptionBreakpointsResponseBody + else body + ) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + seq = self.seq + message = self.message + body = self.body + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "seq": seq, + } + if message is not None: + dct["message"] = message + if body is not None: + dct["body"] = body.to_dict(update_ids_to_dap=update_ids_to_dap) + dct.update(self.kwargs) + return dct + + +@register_request("dataBreakpointInfo") +@register +class DataBreakpointInfoRequest(BaseSchema): + """ + Obtains information on a possible data breakpoint that could be set on an expression or variable. + + Clients should only call this request if the corresponding capability `supportsDataBreakpoints` is + true. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["dataBreakpointInfo"]}, + "arguments": {"type": "DataBreakpointInfoArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param DataBreakpointInfoArguments arguments: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "request" + self.command = "dataBreakpointInfo" + if arguments is None: + self.arguments = DataBreakpointInfoArguments() + else: + self.arguments = ( + DataBreakpointInfoArguments( + update_ids_from_dap=update_ids_from_dap, **arguments + ) + if arguments.__class__ != DataBreakpointInfoArguments + else arguments + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + arguments = self.arguments + seq = self.seq + dct = { + "type": type, + "command": command, + "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register +class DataBreakpointInfoArguments(BaseSchema): + """ + Arguments for `dataBreakpointInfo` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "variablesReference": { + "type": "integer", + "description": "Reference to the variable container if the data breakpoint is requested for a child of the container. The `variablesReference` must have been obtained in the current suspended state. See 'Lifetime of Object References' in the Overview section for details.", + }, + "name": { + "type": "string", + "description": "The name of the variable's child to obtain data breakpoint information for.\nIf `variablesReference` isn't specified, this can be an expression.", + }, + "frameId": { + "type": "integer", + "description": "When `name` is an expression, evaluate it in the scope of this stack frame. If not specified, the expression is evaluated in the global scope. When `variablesReference` is specified, this property has no effect.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + name, + variablesReference=None, + frameId=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string name: The name of the variable's child to obtain data breakpoint information for. + If `variablesReference` isn't specified, this can be an expression. + :param integer variablesReference: Reference to the variable container if the data breakpoint is requested for a child of the container. The `variablesReference` must have been obtained in the current suspended state. See 'Lifetime of Object References' in the Overview section for details. + :param integer frameId: When `name` is an expression, evaluate it in the scope of this stack frame. If not specified, the expression is evaluated in the global scope. When `variablesReference` is specified, this property has no effect. + """ + self.name = name + self.variablesReference = variablesReference + self.frameId = frameId + if update_ids_from_dap: + self.variablesReference = self._translate_id_from_dap( + self.variablesReference + ) + self.frameId = self._translate_id_from_dap(self.frameId) + self.kwargs = kwargs + + @classmethod + def update_dict_ids_from_dap(cls, dct): + if "variablesReference" in dct: + dct["variablesReference"] = cls._translate_id_from_dap( + dct["variablesReference"] + ) + if "frameId" in dct: + dct["frameId"] = cls._translate_id_from_dap(dct["frameId"]) + return dct + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + name = self.name + variablesReference = self.variablesReference + frameId = self.frameId + if update_ids_to_dap: + if variablesReference is not None: + variablesReference = self._translate_id_to_dap(variablesReference) + if frameId is not None: + frameId = self._translate_id_to_dap(frameId) + dct = { + "name": name, + } + if variablesReference is not None: + dct["variablesReference"] = variablesReference + if frameId is not None: + dct["frameId"] = frameId + dct.update(self.kwargs) + return dct + + @classmethod + def update_dict_ids_to_dap(cls, dct): + if "variablesReference" in dct: + dct["variablesReference"] = cls._translate_id_to_dap( + dct["variablesReference"] + ) + if "frameId" in dct: + dct["frameId"] = cls._translate_id_to_dap(dct["frameId"]) + return dct + + +@register_response("dataBreakpointInfo") +@register +class DataBreakpointInfoResponse(BaseSchema): + """ + Response to `dataBreakpointInfo` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": "object", + "properties": { + "dataId": { + "type": ["string", "null"], + "description": "An identifier for the data on which a data breakpoint can be registered with the `setDataBreakpoints` request or null if no data breakpoint is available. If a `variablesReference` or `frameId` is passed, the `dataId` is valid in the current suspended state, otherwise it's valid indefinitely. See 'Lifetime of Object References' in the Overview section for details. Breakpoints set using the `dataId` in the `setDataBreakpoints` request may outlive the lifetime of the associated `dataId`.", + }, + "description": { + "type": "string", + "description": "UI string that describes on what data the breakpoint is set on or why a data breakpoint is not available.", + }, + "accessTypes": { + "type": "array", + "items": {"$ref": "#/definitions/DataBreakpointAccessType"}, + "description": "Attribute lists the available access types for a potential data breakpoint. A UI client could surface this information.", + }, + "canPersist": { + "type": "boolean", + "description": "Attribute indicates that a potential data breakpoint could be persisted across sessions.", + }, + }, + "required": ["dataId", "description"], + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + body, + seq=-1, + message=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param DataBreakpointInfoResponseBody body: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + if body is None: + self.body = DataBreakpointInfoResponseBody() + else: + self.body = ( + DataBreakpointInfoResponseBody( + update_ids_from_dap=update_ids_from_dap, **body + ) + if body.__class__ != DataBreakpointInfoResponseBody + else body + ) + self.seq = seq + self.message = message + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + body = self.body + seq = self.seq + message = self.message + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "body": body.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + if message is not None: + dct["message"] = message + dct.update(self.kwargs) + return dct + + +@register_request("setDataBreakpoints") +@register +class SetDataBreakpointsRequest(BaseSchema): + """ + Replaces all existing data breakpoints with new data breakpoints. + + To clear all data breakpoints, specify an empty array. + + When a data breakpoint is hit, a `stopped` event (with reason `data breakpoint`) is generated. + + Clients should only call this request if the corresponding capability `supportsDataBreakpoints` is + true. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["setDataBreakpoints"]}, + "arguments": {"type": "SetDataBreakpointsArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param SetDataBreakpointsArguments arguments: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "request" + self.command = "setDataBreakpoints" + if arguments is None: + self.arguments = SetDataBreakpointsArguments() + else: + self.arguments = ( + SetDataBreakpointsArguments( + update_ids_from_dap=update_ids_from_dap, **arguments + ) + if arguments.__class__ != SetDataBreakpointsArguments + else arguments + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + arguments = self.arguments + seq = self.seq + dct = { + "type": type, + "command": command, + "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register +class SetDataBreakpointsArguments(BaseSchema): + """ + Arguments for `setDataBreakpoints` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "breakpoints": { + "type": "array", + "items": {"$ref": "#/definitions/DataBreakpoint"}, + "description": "The contents of this array replaces all existing data breakpoints. An empty array clears all data breakpoints.", + } + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, breakpoints, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param array breakpoints: The contents of this array replaces all existing data breakpoints. An empty array clears all data breakpoints. + """ + self.breakpoints = breakpoints + if update_ids_from_dap and self.breakpoints: + for o in self.breakpoints: + DataBreakpoint.update_dict_ids_from_dap(o) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + breakpoints = self.breakpoints + if breakpoints and hasattr(breakpoints[0], "to_dict"): + breakpoints = [x.to_dict() for x in breakpoints] + dct = { + "breakpoints": [ + DataBreakpoint.update_dict_ids_to_dap(o) for o in breakpoints + ] + if (update_ids_to_dap and breakpoints) + else breakpoints, + } + dct.update(self.kwargs) + return dct + + +@register_response("setDataBreakpoints") +@register +class SetDataBreakpointsResponse(BaseSchema): + """ + Response to `setDataBreakpoints` request. + + Returned is information about each breakpoint created by this request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": "object", + "properties": { + "breakpoints": { + "type": "array", + "items": {"$ref": "#/definitions/Breakpoint"}, + "description": "Information about the data breakpoints. The array elements correspond to the elements of the input argument `breakpoints` array.", + } + }, + "required": ["breakpoints"], + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + body, + seq=-1, + message=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param SetDataBreakpointsResponseBody body: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + if body is None: + self.body = SetDataBreakpointsResponseBody() + else: + self.body = ( + SetDataBreakpointsResponseBody( + update_ids_from_dap=update_ids_from_dap, **body + ) + if body.__class__ != SetDataBreakpointsResponseBody + else body + ) + self.seq = seq + self.message = message + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + body = self.body + seq = self.seq + message = self.message + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "body": body.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + if message is not None: + dct["message"] = message + dct.update(self.kwargs) + return dct + + +@register_request("setInstructionBreakpoints") +@register +class SetInstructionBreakpointsRequest(BaseSchema): + """ + Replaces all existing instruction breakpoints. Typically, instruction breakpoints would be set from + a disassembly window. + + To clear all instruction breakpoints, specify an empty array. + + When an instruction breakpoint is hit, a `stopped` event (with reason `instruction breakpoint`) is + generated. + + Clients should only call this request if the corresponding capability + `supportsInstructionBreakpoints` is true. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["setInstructionBreakpoints"]}, + "arguments": {"type": "SetInstructionBreakpointsArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param SetInstructionBreakpointsArguments arguments: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "request" + self.command = "setInstructionBreakpoints" + if arguments is None: + self.arguments = SetInstructionBreakpointsArguments() + else: + self.arguments = ( + SetInstructionBreakpointsArguments( + update_ids_from_dap=update_ids_from_dap, **arguments + ) + if arguments.__class__ != SetInstructionBreakpointsArguments + else arguments + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + arguments = self.arguments + seq = self.seq + dct = { + "type": type, + "command": command, + "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register +class SetInstructionBreakpointsArguments(BaseSchema): + """ + Arguments for `setInstructionBreakpoints` request + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "breakpoints": { + "type": "array", + "items": {"$ref": "#/definitions/InstructionBreakpoint"}, + "description": "The instruction references of the breakpoints", + } + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, breakpoints, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param array breakpoints: The instruction references of the breakpoints + """ + self.breakpoints = breakpoints + if update_ids_from_dap and self.breakpoints: + for o in self.breakpoints: + InstructionBreakpoint.update_dict_ids_from_dap(o) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + breakpoints = self.breakpoints + if breakpoints and hasattr(breakpoints[0], "to_dict"): + breakpoints = [x.to_dict() for x in breakpoints] + dct = { + "breakpoints": [ + InstructionBreakpoint.update_dict_ids_to_dap(o) for o in breakpoints + ] + if (update_ids_to_dap and breakpoints) + else breakpoints, + } + dct.update(self.kwargs) + return dct + + +@register_response("setInstructionBreakpoints") +@register +class SetInstructionBreakpointsResponse(BaseSchema): + """ + Response to `setInstructionBreakpoints` request + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": "object", + "properties": { + "breakpoints": { + "type": "array", + "items": {"$ref": "#/definitions/Breakpoint"}, + "description": "Information about the breakpoints. The array elements correspond to the elements of the `breakpoints` array.", + } + }, + "required": ["breakpoints"], + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + body, + seq=-1, + message=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param SetInstructionBreakpointsResponseBody body: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + if body is None: + self.body = SetInstructionBreakpointsResponseBody() + else: + self.body = ( + SetInstructionBreakpointsResponseBody( + update_ids_from_dap=update_ids_from_dap, **body + ) + if body.__class__ != SetInstructionBreakpointsResponseBody + else body + ) + self.seq = seq + self.message = message + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + body = self.body + seq = self.seq + message = self.message + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "body": body.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + if message is not None: + dct["message"] = message + dct.update(self.kwargs) + return dct + + +@register_request("continue") +@register +class ContinueRequest(BaseSchema): + """ + The request resumes execution of all threads. If the debug adapter supports single thread execution + (see capability `supportsSingleThreadExecutionRequests`), setting the `singleThread` argument to + true resumes only the specified thread. If not all threads were resumed, the `allThreadsContinued` + attribute of the response should be set to false. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["continue"]}, + "arguments": {"type": "ContinueArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param ContinueArguments arguments: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "request" + self.command = "continue" + if arguments is None: + self.arguments = ContinueArguments() + else: + self.arguments = ( + ContinueArguments(update_ids_from_dap=update_ids_from_dap, **arguments) + if arguments.__class__ != ContinueArguments + else arguments + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + arguments = self.arguments + seq = self.seq + dct = { + "type": type, + "command": command, + "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register +class ContinueArguments(BaseSchema): + """ + Arguments for `continue` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "threadId": { + "type": "integer", + "description": "Specifies the active thread. If the debug adapter supports single thread execution (see `supportsSingleThreadExecutionRequests`) and the argument `singleThread` is True, only the thread with this ID is resumed.", + }, + "singleThread": { + "type": "boolean", + "description": "If this flag is True, execution is resumed only for the thread with given `threadId`.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, threadId, singleThread=None, update_ids_from_dap=False, **kwargs + ): # noqa (update_ids_from_dap may be unused) + """ + :param integer threadId: Specifies the active thread. If the debug adapter supports single thread execution (see `supportsSingleThreadExecutionRequests`) and the argument `singleThread` is true, only the thread with this ID is resumed. + :param boolean singleThread: If this flag is true, execution is resumed only for the thread with given `threadId`. + """ + self.threadId = threadId + self.singleThread = singleThread + if update_ids_from_dap: + self.threadId = self._translate_id_from_dap(self.threadId) + self.kwargs = kwargs + + @classmethod + def update_dict_ids_from_dap(cls, dct): + if "threadId" in dct: + dct["threadId"] = cls._translate_id_from_dap(dct["threadId"]) + return dct + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + threadId = self.threadId + singleThread = self.singleThread + if update_ids_to_dap: + if threadId is not None: + threadId = self._translate_id_to_dap(threadId) + dct = { + "threadId": threadId, + } + if singleThread is not None: + dct["singleThread"] = singleThread + dct.update(self.kwargs) + return dct + + @classmethod + def update_dict_ids_to_dap(cls, dct): + if "threadId" in dct: + dct["threadId"] = cls._translate_id_to_dap(dct["threadId"]) + return dct + + +@register_response("continue") +@register +class ContinueResponse(BaseSchema): + """ + Response to `continue` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": "object", + "properties": { + "allThreadsContinued": { + "type": "boolean", + "description": "The value True (or a missing property) signals to the client that all threads have been resumed. The value false indicates that not all threads were resumed.", + } + }, + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + body, + seq=-1, + message=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param ContinueResponseBody body: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + if body is None: + self.body = ContinueResponseBody() + else: + self.body = ( + ContinueResponseBody(update_ids_from_dap=update_ids_from_dap, **body) + if body.__class__ != ContinueResponseBody + else body + ) + self.seq = seq + self.message = message + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + body = self.body + seq = self.seq + message = self.message + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "body": body.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + if message is not None: + dct["message"] = message + dct.update(self.kwargs) + return dct + + +@register_request("next") +@register +class NextRequest(BaseSchema): + """ + The request executes one step (in the given granularity) for the specified thread and allows all + other threads to run freely by resuming them. + + If the debug adapter supports single thread execution (see capability + `supportsSingleThreadExecutionRequests`), setting the `singleThread` argument to true prevents other + suspended threads from resuming. + + The debug adapter first sends the response and then a `stopped` event (with reason `step`) after the + step has completed. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["next"]}, + "arguments": {"type": "NextArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param NextArguments arguments: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "request" + self.command = "next" + if arguments is None: + self.arguments = NextArguments() + else: + self.arguments = ( + NextArguments(update_ids_from_dap=update_ids_from_dap, **arguments) + if arguments.__class__ != NextArguments + else arguments + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + arguments = self.arguments + seq = self.seq + dct = { + "type": type, + "command": command, + "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register +class NextArguments(BaseSchema): + """ + Arguments for `next` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "threadId": { + "type": "integer", + "description": "Specifies the thread for which to resume execution for one step (of the given granularity).", + }, + "singleThread": { + "type": "boolean", + "description": "If this flag is True, all other suspended threads are not resumed.", + }, + "granularity": { + "description": "Stepping granularity. If no granularity is specified, a granularity of `statement` is assumed.", + "type": "SteppingGranularity", + }, + } + __refs__ = set(["granularity"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + threadId, + singleThread=None, + granularity=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param integer threadId: Specifies the thread for which to resume execution for one step (of the given granularity). + :param boolean singleThread: If this flag is true, all other suspended threads are not resumed. + :param SteppingGranularity granularity: Stepping granularity. If no granularity is specified, a granularity of `statement` is assumed. + """ + self.threadId = threadId + self.singleThread = singleThread + if granularity is not None: + assert granularity in SteppingGranularity.VALID_VALUES + self.granularity = granularity + if update_ids_from_dap: + self.threadId = self._translate_id_from_dap(self.threadId) + self.kwargs = kwargs + + @classmethod + def update_dict_ids_from_dap(cls, dct): + if "threadId" in dct: + dct["threadId"] = cls._translate_id_from_dap(dct["threadId"]) + return dct + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + threadId = self.threadId + singleThread = self.singleThread + granularity = self.granularity + if update_ids_to_dap: + if threadId is not None: + threadId = self._translate_id_to_dap(threadId) + dct = { + "threadId": threadId, + } + if singleThread is not None: + dct["singleThread"] = singleThread + if granularity is not None: + dct["granularity"] = granularity + dct.update(self.kwargs) + return dct + + @classmethod + def update_dict_ids_to_dap(cls, dct): + if "threadId" in dct: + dct["threadId"] = cls._translate_id_to_dap(dct["threadId"]) + return dct + + +@register_response("next") +@register +class NextResponse(BaseSchema): + """ + Response to `next` request. This is just an acknowledgement, so no body field is required. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": [ + "array", + "boolean", + "integer", + "null", + "number", + "object", + "string", + ], + "description": "Contains request result if success is True and error details if success is false.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + seq=-1, + message=None, + body=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and error details if success is false. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + self.seq = seq + self.message = message + self.body = body + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + seq = self.seq + message = self.message + body = self.body + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "seq": seq, + } + if message is not None: + dct["message"] = message + if body is not None: + dct["body"] = body + dct.update(self.kwargs) + return dct + + +@register_request("stepIn") +@register +class StepInRequest(BaseSchema): + """ + The request resumes the given thread to step into a function/method and allows all other threads to + run freely by resuming them. + + If the debug adapter supports single thread execution (see capability + `supportsSingleThreadExecutionRequests`), setting the `singleThread` argument to true prevents other + suspended threads from resuming. + + If the request cannot step into a target, `stepIn` behaves like the `next` request. + + The debug adapter first sends the response and then a `stopped` event (with reason `step`) after the + step has completed. + + If there are multiple function/method calls (or other targets) on the source line, + + the argument `targetId` can be used to control into which target the `stepIn` should occur. + + The list of possible targets for a given source line can be retrieved via the `stepInTargets` + request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["stepIn"]}, + "arguments": {"type": "StepInArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param StepInArguments arguments: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "request" + self.command = "stepIn" + if arguments is None: + self.arguments = StepInArguments() + else: + self.arguments = ( + StepInArguments(update_ids_from_dap=update_ids_from_dap, **arguments) + if arguments.__class__ != StepInArguments + else arguments + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + arguments = self.arguments + seq = self.seq + dct = { + "type": type, + "command": command, + "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register +class StepInArguments(BaseSchema): + """ + Arguments for `stepIn` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "threadId": { + "type": "integer", + "description": "Specifies the thread for which to resume execution for one step-into (of the given granularity).", + }, + "singleThread": { + "type": "boolean", + "description": "If this flag is True, all other suspended threads are not resumed.", + }, + "targetId": { + "type": "integer", + "description": "Id of the target to step into.", + }, + "granularity": { + "description": "Stepping granularity. If no granularity is specified, a granularity of `statement` is assumed.", + "type": "SteppingGranularity", + }, + } + __refs__ = set(["granularity"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + threadId, + singleThread=None, + targetId=None, + granularity=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param integer threadId: Specifies the thread for which to resume execution for one step-into (of the given granularity). + :param boolean singleThread: If this flag is true, all other suspended threads are not resumed. + :param integer targetId: Id of the target to step into. + :param SteppingGranularity granularity: Stepping granularity. If no granularity is specified, a granularity of `statement` is assumed. + """ + self.threadId = threadId + self.singleThread = singleThread + self.targetId = targetId + if granularity is not None: + assert granularity in SteppingGranularity.VALID_VALUES + self.granularity = granularity + if update_ids_from_dap: + self.threadId = self._translate_id_from_dap(self.threadId) + self.kwargs = kwargs + + @classmethod + def update_dict_ids_from_dap(cls, dct): + if "threadId" in dct: + dct["threadId"] = cls._translate_id_from_dap(dct["threadId"]) + return dct + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + threadId = self.threadId + singleThread = self.singleThread + targetId = self.targetId + granularity = self.granularity + if update_ids_to_dap: + if threadId is not None: + threadId = self._translate_id_to_dap(threadId) + dct = { + "threadId": threadId, + } + if singleThread is not None: + dct["singleThread"] = singleThread + if targetId is not None: + dct["targetId"] = targetId + if granularity is not None: + dct["granularity"] = granularity + dct.update(self.kwargs) + return dct + + @classmethod + def update_dict_ids_to_dap(cls, dct): + if "threadId" in dct: + dct["threadId"] = cls._translate_id_to_dap(dct["threadId"]) + return dct + + +@register_response("stepIn") +@register +class StepInResponse(BaseSchema): + """ + Response to `stepIn` request. This is just an acknowledgement, so no body field is required. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": [ + "array", + "boolean", + "integer", + "null", + "number", + "object", + "string", + ], + "description": "Contains request result if success is True and error details if success is false.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + seq=-1, + message=None, + body=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and error details if success is false. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + self.seq = seq + self.message = message + self.body = body + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + seq = self.seq + message = self.message + body = self.body + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "seq": seq, + } + if message is not None: + dct["message"] = message + if body is not None: + dct["body"] = body + dct.update(self.kwargs) + return dct + + +@register_request("stepOut") +@register +class StepOutRequest(BaseSchema): + """ + The request resumes the given thread to step out (return) from a function/method and allows all + other threads to run freely by resuming them. + + If the debug adapter supports single thread execution (see capability + `supportsSingleThreadExecutionRequests`), setting the `singleThread` argument to true prevents other + suspended threads from resuming. + + The debug adapter first sends the response and then a `stopped` event (with reason `step`) after the + step has completed. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["stepOut"]}, + "arguments": {"type": "StepOutArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param StepOutArguments arguments: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "request" + self.command = "stepOut" + if arguments is None: + self.arguments = StepOutArguments() + else: + self.arguments = ( + StepOutArguments(update_ids_from_dap=update_ids_from_dap, **arguments) + if arguments.__class__ != StepOutArguments + else arguments + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + arguments = self.arguments + seq = self.seq + dct = { + "type": type, + "command": command, + "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register +class StepOutArguments(BaseSchema): + """ + Arguments for `stepOut` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "threadId": { + "type": "integer", + "description": "Specifies the thread for which to resume execution for one step-out (of the given granularity).", + }, + "singleThread": { + "type": "boolean", + "description": "If this flag is True, all other suspended threads are not resumed.", + }, + "granularity": { + "description": "Stepping granularity. If no granularity is specified, a granularity of `statement` is assumed.", + "type": "SteppingGranularity", + }, + } + __refs__ = set(["granularity"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + threadId, + singleThread=None, + granularity=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param integer threadId: Specifies the thread for which to resume execution for one step-out (of the given granularity). + :param boolean singleThread: If this flag is true, all other suspended threads are not resumed. + :param SteppingGranularity granularity: Stepping granularity. If no granularity is specified, a granularity of `statement` is assumed. + """ + self.threadId = threadId + self.singleThread = singleThread + if granularity is not None: + assert granularity in SteppingGranularity.VALID_VALUES + self.granularity = granularity + if update_ids_from_dap: + self.threadId = self._translate_id_from_dap(self.threadId) + self.kwargs = kwargs + + @classmethod + def update_dict_ids_from_dap(cls, dct): + if "threadId" in dct: + dct["threadId"] = cls._translate_id_from_dap(dct["threadId"]) + return dct + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + threadId = self.threadId + singleThread = self.singleThread + granularity = self.granularity + if update_ids_to_dap: + if threadId is not None: + threadId = self._translate_id_to_dap(threadId) + dct = { + "threadId": threadId, + } + if singleThread is not None: + dct["singleThread"] = singleThread + if granularity is not None: + dct["granularity"] = granularity + dct.update(self.kwargs) + return dct + + @classmethod + def update_dict_ids_to_dap(cls, dct): + if "threadId" in dct: + dct["threadId"] = cls._translate_id_to_dap(dct["threadId"]) + return dct + + +@register_response("stepOut") +@register +class StepOutResponse(BaseSchema): + """ + Response to `stepOut` request. This is just an acknowledgement, so no body field is required. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": [ + "array", + "boolean", + "integer", + "null", + "number", + "object", + "string", + ], + "description": "Contains request result if success is True and error details if success is false.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + seq=-1, + message=None, + body=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and error details if success is false. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + self.seq = seq + self.message = message + self.body = body + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + seq = self.seq + message = self.message + body = self.body + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "seq": seq, + } + if message is not None: + dct["message"] = message + if body is not None: + dct["body"] = body + dct.update(self.kwargs) + return dct + + +@register_request("stepBack") +@register +class StepBackRequest(BaseSchema): + """ + The request executes one backward step (in the given granularity) for the specified thread and + allows all other threads to run backward freely by resuming them. + + If the debug adapter supports single thread execution (see capability + `supportsSingleThreadExecutionRequests`), setting the `singleThread` argument to true prevents other + suspended threads from resuming. + + The debug adapter first sends the response and then a `stopped` event (with reason `step`) after the + step has completed. + + Clients should only call this request if the corresponding capability `supportsStepBack` is true. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["stepBack"]}, + "arguments": {"type": "StepBackArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param StepBackArguments arguments: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "request" + self.command = "stepBack" + if arguments is None: + self.arguments = StepBackArguments() + else: + self.arguments = ( + StepBackArguments(update_ids_from_dap=update_ids_from_dap, **arguments) + if arguments.__class__ != StepBackArguments + else arguments + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + arguments = self.arguments + seq = self.seq + dct = { + "type": type, + "command": command, + "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register +class StepBackArguments(BaseSchema): + """ + Arguments for `stepBack` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "threadId": { + "type": "integer", + "description": "Specifies the thread for which to resume execution for one step backwards (of the given granularity).", + }, + "singleThread": { + "type": "boolean", + "description": "If this flag is True, all other suspended threads are not resumed.", + }, + "granularity": { + "description": "Stepping granularity to step. If no granularity is specified, a granularity of `statement` is assumed.", + "type": "SteppingGranularity", + }, + } + __refs__ = set(["granularity"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + threadId, + singleThread=None, + granularity=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param integer threadId: Specifies the thread for which to resume execution for one step backwards (of the given granularity). + :param boolean singleThread: If this flag is true, all other suspended threads are not resumed. + :param SteppingGranularity granularity: Stepping granularity to step. If no granularity is specified, a granularity of `statement` is assumed. + """ + self.threadId = threadId + self.singleThread = singleThread + if granularity is not None: + assert granularity in SteppingGranularity.VALID_VALUES + self.granularity = granularity + if update_ids_from_dap: + self.threadId = self._translate_id_from_dap(self.threadId) + self.kwargs = kwargs + + @classmethod + def update_dict_ids_from_dap(cls, dct): + if "threadId" in dct: + dct["threadId"] = cls._translate_id_from_dap(dct["threadId"]) + return dct + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + threadId = self.threadId + singleThread = self.singleThread + granularity = self.granularity + if update_ids_to_dap: + if threadId is not None: + threadId = self._translate_id_to_dap(threadId) + dct = { + "threadId": threadId, + } + if singleThread is not None: + dct["singleThread"] = singleThread + if granularity is not None: + dct["granularity"] = granularity + dct.update(self.kwargs) + return dct + + @classmethod + def update_dict_ids_to_dap(cls, dct): + if "threadId" in dct: + dct["threadId"] = cls._translate_id_to_dap(dct["threadId"]) + return dct + + +@register_response("stepBack") +@register +class StepBackResponse(BaseSchema): + """ + Response to `stepBack` request. This is just an acknowledgement, so no body field is required. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": [ + "array", + "boolean", + "integer", + "null", + "number", + "object", + "string", + ], + "description": "Contains request result if success is True and error details if success is false.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + seq=-1, + message=None, + body=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and error details if success is false. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + self.seq = seq + self.message = message + self.body = body + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + seq = self.seq + message = self.message + body = self.body + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "seq": seq, + } + if message is not None: + dct["message"] = message + if body is not None: + dct["body"] = body + dct.update(self.kwargs) + return dct + + +@register_request("reverseContinue") +@register +class ReverseContinueRequest(BaseSchema): + """ + The request resumes backward execution of all threads. If the debug adapter supports single thread + execution (see capability `supportsSingleThreadExecutionRequests`), setting the `singleThread` + argument to true resumes only the specified thread. If not all threads were resumed, the + `allThreadsContinued` attribute of the response should be set to false. + + Clients should only call this request if the corresponding capability `supportsStepBack` is true. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["reverseContinue"]}, + "arguments": {"type": "ReverseContinueArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param ReverseContinueArguments arguments: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "request" + self.command = "reverseContinue" + if arguments is None: + self.arguments = ReverseContinueArguments() + else: + self.arguments = ( + ReverseContinueArguments( + update_ids_from_dap=update_ids_from_dap, **arguments + ) + if arguments.__class__ != ReverseContinueArguments + else arguments + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + arguments = self.arguments + seq = self.seq + dct = { + "type": type, + "command": command, + "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register +class ReverseContinueArguments(BaseSchema): + """ + Arguments for `reverseContinue` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "threadId": { + "type": "integer", + "description": "Specifies the active thread. If the debug adapter supports single thread execution (see `supportsSingleThreadExecutionRequests`) and the `singleThread` argument is True, only the thread with this ID is resumed.", + }, + "singleThread": { + "type": "boolean", + "description": "If this flag is True, backward execution is resumed only for the thread with given `threadId`.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, threadId, singleThread=None, update_ids_from_dap=False, **kwargs + ): # noqa (update_ids_from_dap may be unused) + """ + :param integer threadId: Specifies the active thread. If the debug adapter supports single thread execution (see `supportsSingleThreadExecutionRequests`) and the `singleThread` argument is true, only the thread with this ID is resumed. + :param boolean singleThread: If this flag is true, backward execution is resumed only for the thread with given `threadId`. + """ + self.threadId = threadId + self.singleThread = singleThread + if update_ids_from_dap: + self.threadId = self._translate_id_from_dap(self.threadId) + self.kwargs = kwargs + + @classmethod + def update_dict_ids_from_dap(cls, dct): + if "threadId" in dct: + dct["threadId"] = cls._translate_id_from_dap(dct["threadId"]) + return dct + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + threadId = self.threadId + singleThread = self.singleThread + if update_ids_to_dap: + if threadId is not None: + threadId = self._translate_id_to_dap(threadId) + dct = { + "threadId": threadId, + } + if singleThread is not None: + dct["singleThread"] = singleThread + dct.update(self.kwargs) + return dct + + @classmethod + def update_dict_ids_to_dap(cls, dct): + if "threadId" in dct: + dct["threadId"] = cls._translate_id_to_dap(dct["threadId"]) + return dct + + +@register_response("reverseContinue") +@register +class ReverseContinueResponse(BaseSchema): + """ + Response to `reverseContinue` request. This is just an acknowledgement, so no body field is + required. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": [ + "array", + "boolean", + "integer", + "null", + "number", + "object", + "string", + ], + "description": "Contains request result if success is True and error details if success is false.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + seq=-1, + message=None, + body=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and error details if success is false. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + self.seq = seq + self.message = message + self.body = body + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + seq = self.seq + message = self.message + body = self.body + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "seq": seq, + } + if message is not None: + dct["message"] = message + if body is not None: + dct["body"] = body + dct.update(self.kwargs) + return dct + + +@register_request("restartFrame") +@register +class RestartFrameRequest(BaseSchema): + """ + The request restarts execution of the specified stack frame. + + The debug adapter first sends the response and then a `stopped` event (with reason `restart`) after + the restart has completed. + + Clients should only call this request if the corresponding capability `supportsRestartFrame` is + true. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["restartFrame"]}, + "arguments": {"type": "RestartFrameArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param RestartFrameArguments arguments: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "request" + self.command = "restartFrame" + if arguments is None: + self.arguments = RestartFrameArguments() + else: + self.arguments = ( + RestartFrameArguments( + update_ids_from_dap=update_ids_from_dap, **arguments + ) + if arguments.__class__ != RestartFrameArguments + else arguments + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + arguments = self.arguments + seq = self.seq + dct = { + "type": type, + "command": command, + "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register +class RestartFrameArguments(BaseSchema): + """ + Arguments for `restartFrame` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "frameId": { + "type": "integer", + "description": "Restart the stack frame identified by `frameId`. The `frameId` must have been obtained in the current suspended state. See 'Lifetime of Object References' in the Overview section for details.", + } + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, frameId, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param integer frameId: Restart the stack frame identified by `frameId`. The `frameId` must have been obtained in the current suspended state. See 'Lifetime of Object References' in the Overview section for details. + """ + self.frameId = frameId + if update_ids_from_dap: + self.frameId = self._translate_id_from_dap(self.frameId) + self.kwargs = kwargs + + @classmethod + def update_dict_ids_from_dap(cls, dct): + if "frameId" in dct: + dct["frameId"] = cls._translate_id_from_dap(dct["frameId"]) + return dct + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + frameId = self.frameId + if update_ids_to_dap: + if frameId is not None: + frameId = self._translate_id_to_dap(frameId) + dct = { + "frameId": frameId, + } + dct.update(self.kwargs) + return dct + + @classmethod + def update_dict_ids_to_dap(cls, dct): + if "frameId" in dct: + dct["frameId"] = cls._translate_id_to_dap(dct["frameId"]) + return dct + + +@register_response("restartFrame") +@register +class RestartFrameResponse(BaseSchema): + """ + Response to `restartFrame` request. This is just an acknowledgement, so no body field is required. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": [ + "array", + "boolean", + "integer", + "null", + "number", + "object", + "string", + ], + "description": "Contains request result if success is True and error details if success is false.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + seq=-1, + message=None, + body=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and error details if success is false. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + self.seq = seq + self.message = message + self.body = body + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + seq = self.seq + message = self.message + body = self.body + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "seq": seq, + } + if message is not None: + dct["message"] = message + if body is not None: + dct["body"] = body + dct.update(self.kwargs) + return dct + + +@register_request("goto") +@register +class GotoRequest(BaseSchema): + """ + The request sets the location where the debuggee will continue to run. + + This makes it possible to skip the execution of code or to execute code again. + + The code between the current location and the goto target is not executed but skipped. + + The debug adapter first sends the response and then a `stopped` event with reason `goto`. + + Clients should only call this request if the corresponding capability `supportsGotoTargetsRequest` + is true (because only then goto targets exist that can be passed as arguments). + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["goto"]}, + "arguments": {"type": "GotoArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param GotoArguments arguments: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "request" + self.command = "goto" + if arguments is None: + self.arguments = GotoArguments() + else: + self.arguments = ( + GotoArguments(update_ids_from_dap=update_ids_from_dap, **arguments) + if arguments.__class__ != GotoArguments + else arguments + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + arguments = self.arguments + seq = self.seq + dct = { + "type": type, + "command": command, + "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register +class GotoArguments(BaseSchema): + """ + Arguments for `goto` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "threadId": { + "type": "integer", + "description": "Set the goto target for this thread.", + }, + "targetId": { + "type": "integer", + "description": "The location where the debuggee will continue to run.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, threadId, targetId, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param integer threadId: Set the goto target for this thread. + :param integer targetId: The location where the debuggee will continue to run. + """ + self.threadId = threadId + self.targetId = targetId + if update_ids_from_dap: + self.threadId = self._translate_id_from_dap(self.threadId) + self.kwargs = kwargs + + @classmethod + def update_dict_ids_from_dap(cls, dct): + if "threadId" in dct: + dct["threadId"] = cls._translate_id_from_dap(dct["threadId"]) + return dct + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + threadId = self.threadId + targetId = self.targetId + if update_ids_to_dap: + if threadId is not None: + threadId = self._translate_id_to_dap(threadId) + dct = { + "threadId": threadId, + "targetId": targetId, + } + dct.update(self.kwargs) + return dct + + @classmethod + def update_dict_ids_to_dap(cls, dct): + if "threadId" in dct: + dct["threadId"] = cls._translate_id_to_dap(dct["threadId"]) + return dct + + +@register_response("goto") +@register +class GotoResponse(BaseSchema): + """ + Response to `goto` request. This is just an acknowledgement, so no body field is required. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": [ + "array", + "boolean", + "integer", + "null", + "number", + "object", + "string", + ], + "description": "Contains request result if success is True and error details if success is false.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + seq=-1, + message=None, + body=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and error details if success is false. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + self.seq = seq + self.message = message + self.body = body + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + seq = self.seq + message = self.message + body = self.body + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "seq": seq, + } + if message is not None: + dct["message"] = message + if body is not None: + dct["body"] = body + dct.update(self.kwargs) + return dct + + +@register_request("pause") +@register +class PauseRequest(BaseSchema): + """ + The request suspends the debuggee. + + The debug adapter first sends the response and then a `stopped` event (with reason `pause`) after + the thread has been paused successfully. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["pause"]}, + "arguments": {"type": "PauseArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param PauseArguments arguments: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "request" + self.command = "pause" + if arguments is None: + self.arguments = PauseArguments() + else: + self.arguments = ( + PauseArguments(update_ids_from_dap=update_ids_from_dap, **arguments) + if arguments.__class__ != PauseArguments + else arguments + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + arguments = self.arguments + seq = self.seq + dct = { + "type": type, + "command": command, + "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register +class PauseArguments(BaseSchema): + """ + Arguments for `pause` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "threadId": { + "type": "integer", + "description": "Pause execution for this thread.", + } + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, threadId, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param integer threadId: Pause execution for this thread. + """ + self.threadId = threadId + if update_ids_from_dap: + self.threadId = self._translate_id_from_dap(self.threadId) + self.kwargs = kwargs + + @classmethod + def update_dict_ids_from_dap(cls, dct): + if "threadId" in dct: + dct["threadId"] = cls._translate_id_from_dap(dct["threadId"]) + return dct + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + threadId = self.threadId + if update_ids_to_dap: + if threadId is not None: + threadId = self._translate_id_to_dap(threadId) + dct = { + "threadId": threadId, + } + dct.update(self.kwargs) + return dct + + @classmethod + def update_dict_ids_to_dap(cls, dct): + if "threadId" in dct: + dct["threadId"] = cls._translate_id_to_dap(dct["threadId"]) + return dct + + +@register_response("pause") +@register +class PauseResponse(BaseSchema): + """ + Response to `pause` request. This is just an acknowledgement, so no body field is required. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": [ + "array", + "boolean", + "integer", + "null", + "number", + "object", + "string", + ], + "description": "Contains request result if success is True and error details if success is false.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + seq=-1, + message=None, + body=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and error details if success is false. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + self.seq = seq + self.message = message + self.body = body + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + seq = self.seq + message = self.message + body = self.body + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "seq": seq, + } + if message is not None: + dct["message"] = message + if body is not None: + dct["body"] = body + dct.update(self.kwargs) + return dct + + +@register_request("stackTrace") +@register +class StackTraceRequest(BaseSchema): + """ + The request returns a stacktrace from the current execution state of a given thread. + + A client can request all stack frames by omitting the startFrame and levels arguments. For + performance-conscious clients and if the corresponding capability `supportsDelayedStackTraceLoading` + is true, stack frames can be retrieved in a piecemeal way with the `startFrame` and `levels` + arguments. The response of the `stackTrace` request may contain a `totalFrames` property that hints + at the total number of frames in the stack. If a client needs this total number upfront, it can + issue a request for a single (first) frame and depending on the value of `totalFrames` decide how to + proceed. In any case a client should be prepared to receive fewer frames than requested, which is an + indication that the end of the stack has been reached. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["stackTrace"]}, + "arguments": {"type": "StackTraceArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param StackTraceArguments arguments: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "request" + self.command = "stackTrace" + if arguments is None: + self.arguments = StackTraceArguments() + else: + self.arguments = ( + StackTraceArguments( + update_ids_from_dap=update_ids_from_dap, **arguments + ) + if arguments.__class__ != StackTraceArguments + else arguments + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + arguments = self.arguments + seq = self.seq + dct = { + "type": type, + "command": command, + "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register +class StackTraceArguments(BaseSchema): + """ + Arguments for `stackTrace` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "threadId": { + "type": "integer", + "description": "Retrieve the stacktrace for this thread.", + }, + "startFrame": { + "type": "integer", + "description": "The index of the first frame to return; if omitted frames start at 0.", + }, + "levels": { + "type": "integer", + "description": "The maximum number of frames to return. If levels is not specified or 0, all frames are returned.", + }, + "format": { + "description": "Specifies details on how to format the stack frames.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportsValueFormattingOptions` is True.", + "type": "StackFrameFormat", + }, + } + __refs__ = set(["format"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + threadId, + startFrame=None, + levels=None, + format=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param integer threadId: Retrieve the stacktrace for this thread. + :param integer startFrame: The index of the first frame to return; if omitted frames start at 0. + :param integer levels: The maximum number of frames to return. If levels is not specified or 0, all frames are returned. + :param StackFrameFormat format: Specifies details on how to format the stack frames. + The attribute is only honored by a debug adapter if the corresponding capability `supportsValueFormattingOptions` is true. + """ + self.threadId = threadId + self.startFrame = startFrame + self.levels = levels + if format is None: + self.format = StackFrameFormat() + else: + self.format = ( + StackFrameFormat(update_ids_from_dap=update_ids_from_dap, **format) + if format.__class__ != StackFrameFormat + else format + ) + if update_ids_from_dap: + self.threadId = self._translate_id_from_dap(self.threadId) + self.kwargs = kwargs + + @classmethod + def update_dict_ids_from_dap(cls, dct): + if "threadId" in dct: + dct["threadId"] = cls._translate_id_from_dap(dct["threadId"]) + return dct + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + threadId = self.threadId + startFrame = self.startFrame + levels = self.levels + format = self.format # noqa (assign to builtin) + if update_ids_to_dap: + if threadId is not None: + threadId = self._translate_id_to_dap(threadId) + dct = { + "threadId": threadId, + } + if startFrame is not None: + dct["startFrame"] = startFrame + if levels is not None: + dct["levels"] = levels + if format is not None: + dct["format"] = format.to_dict(update_ids_to_dap=update_ids_to_dap) + dct.update(self.kwargs) + return dct + + @classmethod + def update_dict_ids_to_dap(cls, dct): + if "threadId" in dct: + dct["threadId"] = cls._translate_id_to_dap(dct["threadId"]) + return dct + + +@register_response("stackTrace") +@register +class StackTraceResponse(BaseSchema): + """ + Response to `stackTrace` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": "object", + "properties": { + "stackFrames": { + "type": "array", + "items": {"$ref": "#/definitions/StackFrame"}, + "description": "The frames of the stack frame. If the array has length zero, there are no stack frames available.\nThis means that there is no location information available.", + }, + "totalFrames": { + "type": "integer", + "description": "The total number of frames available in the stack. If omitted or if `totalFrames` is larger than the available frames, a client is expected to request frames until a request returns less frames than requested (which indicates the end of the stack). Returning monotonically increasing `totalFrames` values for subsequent requests can be used to enforce paging in the client.", + }, + }, + "required": ["stackFrames"], + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + body, + seq=-1, + message=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param StackTraceResponseBody body: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + if body is None: + self.body = StackTraceResponseBody() + else: + self.body = ( + StackTraceResponseBody(update_ids_from_dap=update_ids_from_dap, **body) + if body.__class__ != StackTraceResponseBody + else body + ) + self.seq = seq + self.message = message + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + body = self.body + seq = self.seq + message = self.message + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "body": body.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + if message is not None: + dct["message"] = message + dct.update(self.kwargs) + return dct + + +@register_request("scopes") +@register +class ScopesRequest(BaseSchema): + """ + The request returns the variable scopes for a given stack frame ID. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["scopes"]}, + "arguments": {"type": "ScopesArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param ScopesArguments arguments: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "request" + self.command = "scopes" + if arguments is None: + self.arguments = ScopesArguments() + else: + self.arguments = ( + ScopesArguments(update_ids_from_dap=update_ids_from_dap, **arguments) + if arguments.__class__ != ScopesArguments + else arguments + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + arguments = self.arguments + seq = self.seq + dct = { + "type": type, + "command": command, + "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register +class ScopesArguments(BaseSchema): + """ + Arguments for `scopes` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "frameId": { + "type": "integer", + "description": "Retrieve the scopes for the stack frame identified by `frameId`. The `frameId` must have been obtained in the current suspended state. See 'Lifetime of Object References' in the Overview section for details.", + } + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, frameId, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param integer frameId: Retrieve the scopes for the stack frame identified by `frameId`. The `frameId` must have been obtained in the current suspended state. See 'Lifetime of Object References' in the Overview section for details. + """ + self.frameId = frameId + if update_ids_from_dap: + self.frameId = self._translate_id_from_dap(self.frameId) + self.kwargs = kwargs + + @classmethod + def update_dict_ids_from_dap(cls, dct): + if "frameId" in dct: + dct["frameId"] = cls._translate_id_from_dap(dct["frameId"]) + return dct + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + frameId = self.frameId + if update_ids_to_dap: + if frameId is not None: + frameId = self._translate_id_to_dap(frameId) + dct = { + "frameId": frameId, + } + dct.update(self.kwargs) + return dct + + @classmethod + def update_dict_ids_to_dap(cls, dct): + if "frameId" in dct: + dct["frameId"] = cls._translate_id_to_dap(dct["frameId"]) + return dct + + +@register_response("scopes") +@register +class ScopesResponse(BaseSchema): + """ + Response to `scopes` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": "object", + "properties": { + "scopes": { + "type": "array", + "items": {"$ref": "#/definitions/Scope"}, + "description": "The scopes of the stack frame. If the array has length zero, there are no scopes available.", + } + }, + "required": ["scopes"], + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + body, + seq=-1, + message=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param ScopesResponseBody body: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + if body is None: + self.body = ScopesResponseBody() + else: + self.body = ( + ScopesResponseBody(update_ids_from_dap=update_ids_from_dap, **body) + if body.__class__ != ScopesResponseBody + else body + ) + self.seq = seq + self.message = message + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + body = self.body + seq = self.seq + message = self.message + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "body": body.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + if message is not None: + dct["message"] = message + dct.update(self.kwargs) + return dct + + +@register_request("variables") +@register +class VariablesRequest(BaseSchema): + """ + Retrieves all child variables for the given variable reference. + + A filter can be used to limit the fetched children to either named or indexed children. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["variables"]}, + "arguments": {"type": "VariablesArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param VariablesArguments arguments: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "request" + self.command = "variables" + if arguments is None: + self.arguments = VariablesArguments() + else: + self.arguments = ( + VariablesArguments(update_ids_from_dap=update_ids_from_dap, **arguments) + if arguments.__class__ != VariablesArguments + else arguments + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + arguments = self.arguments + seq = self.seq + dct = { + "type": type, + "command": command, + "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register +class VariablesArguments(BaseSchema): + """ + Arguments for `variables` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "variablesReference": { + "type": "integer", + "description": "The variable for which to retrieve its children. The `variablesReference` must have been obtained in the current suspended state. See 'Lifetime of Object References' in the Overview section for details.", + }, + "filter": { + "type": "string", + "enum": ["indexed", "named"], + "description": "Filter to limit the child variables to either named or indexed. If omitted, both types are fetched.", + }, + "start": { + "type": "integer", + "description": "The index of the first variable to return; if omitted children start at 0.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportsVariablePaging` is True.", + }, + "count": { + "type": "integer", + "description": "The number of variables to return. If count is missing or 0, all variables are returned.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportsVariablePaging` is True.", + }, + "format": { + "description": "Specifies details on how to format the Variable values.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportsValueFormattingOptions` is True.", + "type": "ValueFormat", + }, + } + __refs__ = set(["format"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + variablesReference, + filter=None, + start=None, + count=None, + format=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param integer variablesReference: The variable for which to retrieve its children. The `variablesReference` must have been obtained in the current suspended state. See 'Lifetime of Object References' in the Overview section for details. + :param string filter: Filter to limit the child variables to either named or indexed. If omitted, both types are fetched. + :param integer start: The index of the first variable to return; if omitted children start at 0. + The attribute is only honored by a debug adapter if the corresponding capability `supportsVariablePaging` is true. + :param integer count: The number of variables to return. If count is missing or 0, all variables are returned. + The attribute is only honored by a debug adapter if the corresponding capability `supportsVariablePaging` is true. + :param ValueFormat format: Specifies details on how to format the Variable values. + The attribute is only honored by a debug adapter if the corresponding capability `supportsValueFormattingOptions` is true. + """ + self.variablesReference = variablesReference + self.filter = filter + self.start = start + self.count = count + if format is None: + self.format = ValueFormat() + else: + self.format = ( + ValueFormat(update_ids_from_dap=update_ids_from_dap, **format) + if format.__class__ != ValueFormat + else format + ) + if update_ids_from_dap: + self.variablesReference = self._translate_id_from_dap( + self.variablesReference + ) + self.kwargs = kwargs + + @classmethod + def update_dict_ids_from_dap(cls, dct): + if "variablesReference" in dct: + dct["variablesReference"] = cls._translate_id_from_dap( + dct["variablesReference"] + ) + return dct + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + variablesReference = self.variablesReference + filter = self.filter # noqa (assign to builtin) + start = self.start + count = self.count + format = self.format # noqa (assign to builtin) + if update_ids_to_dap: + if variablesReference is not None: + variablesReference = self._translate_id_to_dap(variablesReference) + dct = { + "variablesReference": variablesReference, + } + if filter is not None: + dct["filter"] = filter + if start is not None: + dct["start"] = start + if count is not None: + dct["count"] = count + if format is not None: + dct["format"] = format.to_dict(update_ids_to_dap=update_ids_to_dap) + dct.update(self.kwargs) + return dct + + @classmethod + def update_dict_ids_to_dap(cls, dct): + if "variablesReference" in dct: + dct["variablesReference"] = cls._translate_id_to_dap( + dct["variablesReference"] + ) + return dct + + +@register_response("variables") +@register +class VariablesResponse(BaseSchema): + """ + Response to `variables` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": "object", + "properties": { + "variables": { + "type": "array", + "items": {"$ref": "#/definitions/Variable"}, + "description": "All (or a range) of variables for the given variable reference.", + } + }, + "required": ["variables"], + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + body, + seq=-1, + message=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param VariablesResponseBody body: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + if body is None: + self.body = VariablesResponseBody() + else: + self.body = ( + VariablesResponseBody(update_ids_from_dap=update_ids_from_dap, **body) + if body.__class__ != VariablesResponseBody + else body + ) + self.seq = seq + self.message = message + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + body = self.body + seq = self.seq + message = self.message + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "body": body.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + if message is not None: + dct["message"] = message + dct.update(self.kwargs) + return dct + + +@register_request("setVariable") +@register +class SetVariableRequest(BaseSchema): + """ + Set the variable with the given name in the variable container to a new value. Clients should only + call this request if the corresponding capability `supportsSetVariable` is true. + + If a debug adapter implements both `setVariable` and `setExpression`, a client will only use + `setExpression` if the variable has an `evaluateName` property. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["setVariable"]}, + "arguments": {"type": "SetVariableArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param SetVariableArguments arguments: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "request" + self.command = "setVariable" + if arguments is None: + self.arguments = SetVariableArguments() + else: + self.arguments = ( + SetVariableArguments( + update_ids_from_dap=update_ids_from_dap, **arguments + ) + if arguments.__class__ != SetVariableArguments + else arguments + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + arguments = self.arguments + seq = self.seq + dct = { + "type": type, + "command": command, + "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register +class SetVariableArguments(BaseSchema): + """ + Arguments for `setVariable` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "variablesReference": { + "type": "integer", + "description": "The reference of the variable container. The `variablesReference` must have been obtained in the current suspended state. See 'Lifetime of Object References' in the Overview section for details.", + }, + "name": { + "type": "string", + "description": "The name of the variable in the container.", + }, + "value": {"type": "string", "description": "The value of the variable."}, + "format": { + "description": "Specifies details on how to format the response value.", + "type": "ValueFormat", + }, + } + __refs__ = set(["format"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + variablesReference, + name, + value, + format=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param integer variablesReference: The reference of the variable container. The `variablesReference` must have been obtained in the current suspended state. See 'Lifetime of Object References' in the Overview section for details. + :param string name: The name of the variable in the container. + :param string value: The value of the variable. + :param ValueFormat format: Specifies details on how to format the response value. + """ + self.variablesReference = variablesReference + self.name = name + self.value = value + if format is None: + self.format = ValueFormat() + else: + self.format = ( + ValueFormat(update_ids_from_dap=update_ids_from_dap, **format) + if format.__class__ != ValueFormat + else format + ) + if update_ids_from_dap: + self.variablesReference = self._translate_id_from_dap( + self.variablesReference + ) + self.kwargs = kwargs + + @classmethod + def update_dict_ids_from_dap(cls, dct): + if "variablesReference" in dct: + dct["variablesReference"] = cls._translate_id_from_dap( + dct["variablesReference"] + ) + return dct + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + variablesReference = self.variablesReference + name = self.name + value = self.value + format = self.format # noqa (assign to builtin) + if update_ids_to_dap: + if variablesReference is not None: + variablesReference = self._translate_id_to_dap(variablesReference) + dct = { + "variablesReference": variablesReference, + "name": name, + "value": value, + } + if format is not None: + dct["format"] = format.to_dict(update_ids_to_dap=update_ids_to_dap) + dct.update(self.kwargs) + return dct + + @classmethod + def update_dict_ids_to_dap(cls, dct): + if "variablesReference" in dct: + dct["variablesReference"] = cls._translate_id_to_dap( + dct["variablesReference"] + ) + return dct + + +@register_response("setVariable") +@register +class SetVariableResponse(BaseSchema): + """ + Response to `setVariable` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": "object", + "properties": { + "value": { + "type": "string", + "description": "The new value of the variable.", + }, + "type": { + "type": "string", + "description": "The type of the new value. Typically shown in the UI when hovering over the value.", + }, + "variablesReference": { + "type": "integer", + "description": "If `variablesReference` is > 0, the new value is structured and its children can be retrieved by passing `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details.", + }, + "namedVariables": { + "type": "integer", + "description": "The number of named child variables.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1).", + }, + "indexedVariables": { + "type": "integer", + "description": "The number of indexed child variables.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1).", + }, + "memoryReference": { + "type": "string", + "description": "A memory reference to a location appropriate for this result.\nFor pointer type eval results, this is generally a reference to the memory address contained in the pointer.\nThis attribute may be returned by a debug adapter if corresponding capability `supportsMemoryReferences` is True.", + }, + }, + "required": ["value"], + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + body, + seq=-1, + message=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param SetVariableResponseBody body: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + if body is None: + self.body = SetVariableResponseBody() + else: + self.body = ( + SetVariableResponseBody(update_ids_from_dap=update_ids_from_dap, **body) + if body.__class__ != SetVariableResponseBody + else body + ) + self.seq = seq + self.message = message + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + body = self.body + seq = self.seq + message = self.message + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "body": body.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + if message is not None: + dct["message"] = message + dct.update(self.kwargs) + return dct + + +@register_request("source") +@register +class SourceRequest(BaseSchema): + """ + The request retrieves the source code for a given source reference. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["source"]}, + "arguments": {"type": "SourceArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param SourceArguments arguments: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "request" + self.command = "source" + if arguments is None: + self.arguments = SourceArguments() + else: + self.arguments = ( + SourceArguments(update_ids_from_dap=update_ids_from_dap, **arguments) + if arguments.__class__ != SourceArguments + else arguments + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + arguments = self.arguments + seq = self.seq + dct = { + "type": type, + "command": command, + "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register +class SourceArguments(BaseSchema): + """ + Arguments for `source` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "source": { + "description": "Specifies the source content to load. Either `source.path` or `source.sourceReference` must be specified.", + "type": "Source", + }, + "sourceReference": { + "type": "integer", + "description": "The reference to the source. This is the same as `source.sourceReference`.\nThis is provided for backward compatibility since old clients do not understand the `source` attribute.", + }, + } + __refs__ = set(["source"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, sourceReference, source=None, update_ids_from_dap=False, **kwargs + ): # noqa (update_ids_from_dap may be unused) + """ + :param integer sourceReference: The reference to the source. This is the same as `source.sourceReference`. + This is provided for backward compatibility since old clients do not understand the `source` attribute. + :param Source source: Specifies the source content to load. Either `source.path` or `source.sourceReference` must be specified. + """ + self.sourceReference = sourceReference + if source is None: + self.source = Source() + else: + self.source = ( + Source(update_ids_from_dap=update_ids_from_dap, **source) + if source.__class__ != Source + else source + ) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + sourceReference = self.sourceReference + source = self.source + dct = { + "sourceReference": sourceReference, + } + if source is not None: + dct["source"] = source.to_dict(update_ids_to_dap=update_ids_to_dap) + dct.update(self.kwargs) + return dct + + +@register_response("source") +@register +class SourceResponse(BaseSchema): + """ + Response to `source` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": "object", + "properties": { + "content": { + "type": "string", + "description": "Content of the source reference.", + }, + "mimeType": { + "type": "string", + "description": "Content type (MIME type) of the source.", + }, + }, + "required": ["content"], + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + body, + seq=-1, + message=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param SourceResponseBody body: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + if body is None: + self.body = SourceResponseBody() + else: + self.body = ( + SourceResponseBody(update_ids_from_dap=update_ids_from_dap, **body) + if body.__class__ != SourceResponseBody + else body + ) + self.seq = seq + self.message = message + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + body = self.body + seq = self.seq + message = self.message + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "body": body.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + if message is not None: + dct["message"] = message + dct.update(self.kwargs) + return dct + + +@register_request("threads") +@register +class ThreadsRequest(BaseSchema): + """ + The request retrieves a list of all threads. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["threads"]}, + "arguments": { + "type": [ + "array", + "boolean", + "integer", + "null", + "number", + "object", + "string", + ], + "description": "Object containing arguments for the command.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, seq=-1, arguments=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] arguments: Object containing arguments for the command. + """ + self.type = "request" + self.command = "threads" + self.seq = seq + self.arguments = arguments + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + seq = self.seq + arguments = self.arguments + dct = { + "type": type, + "command": command, + "seq": seq, + } + if arguments is not None: + dct["arguments"] = arguments + dct.update(self.kwargs) + return dct + + +@register_response("threads") +@register +class ThreadsResponse(BaseSchema): + """ + Response to `threads` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": "object", + "properties": { + "threads": { + "type": "array", + "items": {"$ref": "#/definitions/Thread"}, + "description": "All threads.", + } + }, + "required": ["threads"], + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + body, + seq=-1, + message=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param ThreadsResponseBody body: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + if body is None: + self.body = ThreadsResponseBody() + else: + self.body = ( + ThreadsResponseBody(update_ids_from_dap=update_ids_from_dap, **body) + if body.__class__ != ThreadsResponseBody + else body + ) + self.seq = seq + self.message = message + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + body = self.body + seq = self.seq + message = self.message + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "body": body.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + if message is not None: + dct["message"] = message + dct.update(self.kwargs) + return dct + + +@register_request("terminateThreads") +@register +class TerminateThreadsRequest(BaseSchema): + """ + The request terminates the threads with the given ids. + + Clients should only call this request if the corresponding capability + `supportsTerminateThreadsRequest` is true. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["terminateThreads"]}, + "arguments": {"type": "TerminateThreadsArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param TerminateThreadsArguments arguments: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "request" + self.command = "terminateThreads" + if arguments is None: + self.arguments = TerminateThreadsArguments() + else: + self.arguments = ( + TerminateThreadsArguments( + update_ids_from_dap=update_ids_from_dap, **arguments + ) + if arguments.__class__ != TerminateThreadsArguments + else arguments + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + arguments = self.arguments + seq = self.seq + dct = { + "type": type, + "command": command, + "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register +class TerminateThreadsArguments(BaseSchema): + """ + Arguments for `terminateThreads` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "threadIds": { + "type": "array", + "items": {"type": "integer"}, + "description": "Ids of threads to be terminated.", + } + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, threadIds=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param array threadIds: Ids of threads to be terminated. + """ + self.threadIds = threadIds + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + threadIds = self.threadIds + if threadIds and hasattr(threadIds[0], "to_dict"): + threadIds = [x.to_dict() for x in threadIds] + dct = {} + if threadIds is not None: + dct["threadIds"] = threadIds + dct.update(self.kwargs) + return dct + + +@register_response("terminateThreads") +@register +class TerminateThreadsResponse(BaseSchema): + """ + Response to `terminateThreads` request. This is just an acknowledgement, no body field is required. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": [ + "array", + "boolean", + "integer", + "null", + "number", + "object", + "string", + ], + "description": "Contains request result if success is True and error details if success is false.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + seq=-1, + message=None, + body=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and error details if success is false. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + self.seq = seq + self.message = message + self.body = body + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + seq = self.seq + message = self.message + body = self.body + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "seq": seq, + } + if message is not None: + dct["message"] = message + if body is not None: + dct["body"] = body + dct.update(self.kwargs) + return dct + + +@register_request("modules") +@register +class ModulesRequest(BaseSchema): + """ + Modules can be retrieved from the debug adapter with this request which can either return all + modules or a range of modules to support paging. + + Clients should only call this request if the corresponding capability `supportsModulesRequest` is + true. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["modules"]}, + "arguments": {"type": "ModulesArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, seq=-1, arguments=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param ModulesArguments arguments: + """ + self.type = "request" + self.command = "modules" + self.seq = seq + if arguments is None: + self.arguments = ModulesArguments() + else: + self.arguments = ( + ModulesArguments(update_ids_from_dap=update_ids_from_dap, **arguments) + if arguments.__class__ != ModulesArguments + else arguments + ) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + seq = self.seq + arguments = self.arguments + dct = { + "type": type, + "command": command, + "seq": seq, + } + if arguments is not None: + dct["arguments"] = arguments.to_dict(update_ids_to_dap=update_ids_to_dap) + dct.update(self.kwargs) + return dct + + +@register +class ModulesArguments(BaseSchema): + """ + Arguments for `modules` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "startModule": { + "type": "integer", + "description": "The index of the first module to return; if omitted modules start at 0.", + }, + "moduleCount": { + "type": "integer", + "description": "The number of modules to return. If `moduleCount` is not specified or 0, all modules are returned.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, startModule=None, moduleCount=None, update_ids_from_dap=False, **kwargs + ): # noqa (update_ids_from_dap may be unused) + """ + :param integer startModule: The index of the first module to return; if omitted modules start at 0. + :param integer moduleCount: The number of modules to return. If `moduleCount` is not specified or 0, all modules are returned. + """ + self.startModule = startModule + self.moduleCount = moduleCount + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + startModule = self.startModule + moduleCount = self.moduleCount + dct = {} + if startModule is not None: + dct["startModule"] = startModule + if moduleCount is not None: + dct["moduleCount"] = moduleCount + dct.update(self.kwargs) + return dct + + +@register_response("modules") +@register +class ModulesResponse(BaseSchema): + """ + Response to `modules` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": "object", + "properties": { + "modules": { + "type": "array", + "items": {"$ref": "#/definitions/Module"}, + "description": "All modules or range of modules.", + }, + "totalModules": { + "type": "integer", + "description": "The total number of modules available.", + }, + }, + "required": ["modules"], + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + body, + seq=-1, + message=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param ModulesResponseBody body: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + if body is None: + self.body = ModulesResponseBody() + else: + self.body = ( + ModulesResponseBody(update_ids_from_dap=update_ids_from_dap, **body) + if body.__class__ != ModulesResponseBody + else body + ) + self.seq = seq + self.message = message + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + body = self.body + seq = self.seq + message = self.message + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "body": body.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + if message is not None: + dct["message"] = message + dct.update(self.kwargs) + return dct + + +@register_request("loadedSources") +@register +class LoadedSourcesRequest(BaseSchema): + """ + Retrieves the set of all sources currently loaded by the debugged process. + + Clients should only call this request if the corresponding capability `supportsLoadedSourcesRequest` + is true. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["loadedSources"]}, + "arguments": {"type": "LoadedSourcesArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, seq=-1, arguments=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param LoadedSourcesArguments arguments: + """ + self.type = "request" + self.command = "loadedSources" + self.seq = seq + if arguments is None: + self.arguments = LoadedSourcesArguments() + else: + self.arguments = ( + LoadedSourcesArguments( + update_ids_from_dap=update_ids_from_dap, **arguments + ) + if arguments.__class__ != LoadedSourcesArguments + else arguments + ) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + seq = self.seq + arguments = self.arguments + dct = { + "type": type, + "command": command, + "seq": seq, + } + if arguments is not None: + dct["arguments"] = arguments.to_dict(update_ids_to_dap=update_ids_to_dap) + dct.update(self.kwargs) + return dct + + +@register +class LoadedSourcesArguments(BaseSchema): + """ + Arguments for `loadedSources` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = {} + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ """ + + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + dct = {} + dct.update(self.kwargs) + return dct + + +@register_response("loadedSources") +@register +class LoadedSourcesResponse(BaseSchema): + """ + Response to `loadedSources` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": "object", + "properties": { + "sources": { + "type": "array", + "items": {"$ref": "#/definitions/Source"}, + "description": "Set of loaded sources.", + } + }, + "required": ["sources"], + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + body, + seq=-1, + message=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param LoadedSourcesResponseBody body: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + if body is None: + self.body = LoadedSourcesResponseBody() + else: + self.body = ( + LoadedSourcesResponseBody( + update_ids_from_dap=update_ids_from_dap, **body + ) + if body.__class__ != LoadedSourcesResponseBody + else body + ) + self.seq = seq + self.message = message + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + body = self.body + seq = self.seq + message = self.message + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "body": body.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + if message is not None: + dct["message"] = message + dct.update(self.kwargs) + return dct + + +@register_request("evaluate") +@register +class EvaluateRequest(BaseSchema): + """ + Evaluates the given expression in the context of the topmost stack frame. + + The expression has access to any variables and arguments that are in scope. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["evaluate"]}, + "arguments": {"type": "EvaluateArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param EvaluateArguments arguments: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "request" + self.command = "evaluate" + if arguments is None: + self.arguments = EvaluateArguments() + else: + self.arguments = ( + EvaluateArguments(update_ids_from_dap=update_ids_from_dap, **arguments) + if arguments.__class__ != EvaluateArguments + else arguments + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + arguments = self.arguments + seq = self.seq + dct = { + "type": type, + "command": command, + "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register +class EvaluateArguments(BaseSchema): + """ + Arguments for `evaluate` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "expression": {"type": "string", "description": "The expression to evaluate."}, + "frameId": { + "type": "integer", + "description": "Evaluate the expression in the scope of this stack frame. If not specified, the expression is evaluated in the global scope.", + }, + "context": { + "type": "string", + "_enum": ["watch", "repl", "hover", "clipboard", "variables"], + "enumDescriptions": [ + "evaluate is called from a watch view context.", + "evaluate is called from a REPL context.", + "evaluate is called to generate the debug hover contents.\nThis value should only be used if the corresponding capability `supportsEvaluateForHovers` is True.", + "evaluate is called to generate clipboard contents.\nThis value should only be used if the corresponding capability `supportsClipboardContext` is True.", + "evaluate is called from a variables view context.", + ], + "description": "The context in which the evaluate request is used.", + }, + "format": { + "description": "Specifies details on how to format the result.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportsValueFormattingOptions` is True.", + "type": "ValueFormat", + }, + } + __refs__ = set(["format"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + expression, + frameId=None, + context=None, + format=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string expression: The expression to evaluate. + :param integer frameId: Evaluate the expression in the scope of this stack frame. If not specified, the expression is evaluated in the global scope. + :param string context: The context in which the evaluate request is used. + :param ValueFormat format: Specifies details on how to format the result. + The attribute is only honored by a debug adapter if the corresponding capability `supportsValueFormattingOptions` is true. + """ + self.expression = expression + self.frameId = frameId + self.context = context + if format is None: + self.format = ValueFormat() + else: + self.format = ( + ValueFormat(update_ids_from_dap=update_ids_from_dap, **format) + if format.__class__ != ValueFormat + else format + ) + if update_ids_from_dap: + self.frameId = self._translate_id_from_dap(self.frameId) + self.kwargs = kwargs + + @classmethod + def update_dict_ids_from_dap(cls, dct): + if "frameId" in dct: + dct["frameId"] = cls._translate_id_from_dap(dct["frameId"]) + return dct + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + expression = self.expression + frameId = self.frameId + context = self.context + format = self.format # noqa (assign to builtin) + if update_ids_to_dap: + if frameId is not None: + frameId = self._translate_id_to_dap(frameId) + dct = { + "expression": expression, + } + if frameId is not None: + dct["frameId"] = frameId + if context is not None: + dct["context"] = context + if format is not None: + dct["format"] = format.to_dict(update_ids_to_dap=update_ids_to_dap) + dct.update(self.kwargs) + return dct + + @classmethod + def update_dict_ids_to_dap(cls, dct): + if "frameId" in dct: + dct["frameId"] = cls._translate_id_to_dap(dct["frameId"]) + return dct + + +@register_response("evaluate") +@register +class EvaluateResponse(BaseSchema): + """ + Response to `evaluate` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": "object", + "properties": { + "result": { + "type": "string", + "description": "The result of the evaluate request.", + }, + "type": { + "type": "string", + "description": "The type of the evaluate result.\nThis attribute should only be returned by a debug adapter if the corresponding capability `supportsVariableType` is True.", + }, + "presentationHint": { + "$ref": "#/definitions/VariablePresentationHint", + "description": "Properties of an evaluate result that can be used to determine how to render the result in the UI.", + }, + "variablesReference": { + "type": "integer", + "description": "If `variablesReference` is > 0, the evaluate result is structured and its children can be retrieved by passing `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details.", + }, + "namedVariables": { + "type": "integer", + "description": "The number of named child variables.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1).", + }, + "indexedVariables": { + "type": "integer", + "description": "The number of indexed child variables.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1).", + }, + "memoryReference": { + "type": "string", + "description": "A memory reference to a location appropriate for this result.\nFor pointer type eval results, this is generally a reference to the memory address contained in the pointer.\nThis attribute may be returned by a debug adapter if corresponding capability `supportsMemoryReferences` is True.", + }, + }, + "required": ["result", "variablesReference"], + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + body, + seq=-1, + message=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param EvaluateResponseBody body: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + if body is None: + self.body = EvaluateResponseBody() + else: + self.body = ( + EvaluateResponseBody(update_ids_from_dap=update_ids_from_dap, **body) + if body.__class__ != EvaluateResponseBody + else body + ) + self.seq = seq + self.message = message + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + body = self.body + seq = self.seq + message = self.message + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "body": body.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + if message is not None: + dct["message"] = message + dct.update(self.kwargs) + return dct + + +@register_request("setExpression") +@register +class SetExpressionRequest(BaseSchema): + """ + Evaluates the given `value` expression and assigns it to the `expression` which must be a modifiable + l-value. + + The expressions have access to any variables and arguments that are in scope of the specified frame. + + Clients should only call this request if the corresponding capability `supportsSetExpression` is + true. + + If a debug adapter implements both `setExpression` and `setVariable`, a client uses `setExpression` + if the variable has an `evaluateName` property. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["setExpression"]}, + "arguments": {"type": "SetExpressionArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param SetExpressionArguments arguments: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "request" + self.command = "setExpression" + if arguments is None: + self.arguments = SetExpressionArguments() + else: + self.arguments = ( + SetExpressionArguments( + update_ids_from_dap=update_ids_from_dap, **arguments + ) + if arguments.__class__ != SetExpressionArguments + else arguments + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + arguments = self.arguments + seq = self.seq + dct = { + "type": type, + "command": command, + "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register +class SetExpressionArguments(BaseSchema): + """ + Arguments for `setExpression` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "expression": { + "type": "string", + "description": "The l-value expression to assign to.", + }, + "value": { + "type": "string", + "description": "The value expression to assign to the l-value expression.", + }, + "frameId": { + "type": "integer", + "description": "Evaluate the expressions in the scope of this stack frame. If not specified, the expressions are evaluated in the global scope.", + }, + "format": { + "description": "Specifies how the resulting value should be formatted.", + "type": "ValueFormat", + }, + } + __refs__ = set(["format"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + expression, + value, + frameId=None, + format=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string expression: The l-value expression to assign to. + :param string value: The value expression to assign to the l-value expression. + :param integer frameId: Evaluate the expressions in the scope of this stack frame. If not specified, the expressions are evaluated in the global scope. + :param ValueFormat format: Specifies how the resulting value should be formatted. + """ + self.expression = expression + self.value = value + self.frameId = frameId + if format is None: + self.format = ValueFormat() + else: + self.format = ( + ValueFormat(update_ids_from_dap=update_ids_from_dap, **format) + if format.__class__ != ValueFormat + else format + ) + if update_ids_from_dap: + self.frameId = self._translate_id_from_dap(self.frameId) + self.kwargs = kwargs + + @classmethod + def update_dict_ids_from_dap(cls, dct): + if "frameId" in dct: + dct["frameId"] = cls._translate_id_from_dap(dct["frameId"]) + return dct + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + expression = self.expression + value = self.value + frameId = self.frameId + format = self.format # noqa (assign to builtin) + if update_ids_to_dap: + if frameId is not None: + frameId = self._translate_id_to_dap(frameId) + dct = { + "expression": expression, + "value": value, + } + if frameId is not None: + dct["frameId"] = frameId + if format is not None: + dct["format"] = format.to_dict(update_ids_to_dap=update_ids_to_dap) + dct.update(self.kwargs) + return dct + + @classmethod + def update_dict_ids_to_dap(cls, dct): + if "frameId" in dct: + dct["frameId"] = cls._translate_id_to_dap(dct["frameId"]) + return dct + + +@register_response("setExpression") +@register +class SetExpressionResponse(BaseSchema): + """ + Response to `setExpression` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": "object", + "properties": { + "value": { + "type": "string", + "description": "The new value of the expression.", + }, + "type": { + "type": "string", + "description": "The type of the value.\nThis attribute should only be returned by a debug adapter if the corresponding capability `supportsVariableType` is True.", + }, + "presentationHint": { + "$ref": "#/definitions/VariablePresentationHint", + "description": "Properties of a value that can be used to determine how to render the result in the UI.", + }, + "variablesReference": { + "type": "integer", + "description": "If `variablesReference` is > 0, the evaluate result is structured and its children can be retrieved by passing `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details.", + }, + "namedVariables": { + "type": "integer", + "description": "The number of named child variables.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1).", + }, + "indexedVariables": { + "type": "integer", + "description": "The number of indexed child variables.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1).", + }, + "memoryReference": { + "type": "string", + "description": "A memory reference to a location appropriate for this result.\nFor pointer type eval results, this is generally a reference to the memory address contained in the pointer.\nThis attribute may be returned by a debug adapter if corresponding capability `supportsMemoryReferences` is True.", + }, + }, + "required": ["value"], + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + body, + seq=-1, + message=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param SetExpressionResponseBody body: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + if body is None: + self.body = SetExpressionResponseBody() + else: + self.body = ( + SetExpressionResponseBody( + update_ids_from_dap=update_ids_from_dap, **body + ) + if body.__class__ != SetExpressionResponseBody + else body + ) + self.seq = seq + self.message = message + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + body = self.body + seq = self.seq + message = self.message + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "body": body.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + if message is not None: + dct["message"] = message + dct.update(self.kwargs) + return dct + + +@register_request("stepInTargets") +@register +class StepInTargetsRequest(BaseSchema): + """ + This request retrieves the possible step-in targets for the specified stack frame. + + These targets can be used in the `stepIn` request. + + Clients should only call this request if the corresponding capability `supportsStepInTargetsRequest` + is true. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["stepInTargets"]}, + "arguments": {"type": "StepInTargetsArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param StepInTargetsArguments arguments: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "request" + self.command = "stepInTargets" + if arguments is None: + self.arguments = StepInTargetsArguments() + else: + self.arguments = ( + StepInTargetsArguments( + update_ids_from_dap=update_ids_from_dap, **arguments + ) + if arguments.__class__ != StepInTargetsArguments + else arguments + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + arguments = self.arguments + seq = self.seq + dct = { + "type": type, + "command": command, + "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register +class StepInTargetsArguments(BaseSchema): + """ + Arguments for `stepInTargets` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "frameId": { + "type": "integer", + "description": "The stack frame for which to retrieve the possible step-in targets.", + } + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, frameId, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param integer frameId: The stack frame for which to retrieve the possible step-in targets. + """ + self.frameId = frameId + if update_ids_from_dap: + self.frameId = self._translate_id_from_dap(self.frameId) + self.kwargs = kwargs + + @classmethod + def update_dict_ids_from_dap(cls, dct): + if "frameId" in dct: + dct["frameId"] = cls._translate_id_from_dap(dct["frameId"]) + return dct + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + frameId = self.frameId + if update_ids_to_dap: + if frameId is not None: + frameId = self._translate_id_to_dap(frameId) + dct = { + "frameId": frameId, + } + dct.update(self.kwargs) + return dct + + @classmethod + def update_dict_ids_to_dap(cls, dct): + if "frameId" in dct: + dct["frameId"] = cls._translate_id_to_dap(dct["frameId"]) + return dct + + +@register_response("stepInTargets") +@register +class StepInTargetsResponse(BaseSchema): + """ + Response to `stepInTargets` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": "object", + "properties": { + "targets": { + "type": "array", + "items": {"$ref": "#/definitions/StepInTarget"}, + "description": "The possible step-in targets of the specified source location.", + } + }, + "required": ["targets"], + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + body, + seq=-1, + message=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param StepInTargetsResponseBody body: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + if body is None: + self.body = StepInTargetsResponseBody() + else: + self.body = ( + StepInTargetsResponseBody( + update_ids_from_dap=update_ids_from_dap, **body + ) + if body.__class__ != StepInTargetsResponseBody + else body + ) + self.seq = seq + self.message = message + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + body = self.body + seq = self.seq + message = self.message + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "body": body.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + if message is not None: + dct["message"] = message + dct.update(self.kwargs) + return dct + + +@register_request("gotoTargets") +@register +class GotoTargetsRequest(BaseSchema): + """ + This request retrieves the possible goto targets for the specified source location. + + These targets can be used in the `goto` request. + + Clients should only call this request if the corresponding capability `supportsGotoTargetsRequest` + is true. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["gotoTargets"]}, + "arguments": {"type": "GotoTargetsArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param GotoTargetsArguments arguments: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "request" + self.command = "gotoTargets" + if arguments is None: + self.arguments = GotoTargetsArguments() + else: + self.arguments = ( + GotoTargetsArguments( + update_ids_from_dap=update_ids_from_dap, **arguments + ) + if arguments.__class__ != GotoTargetsArguments + else arguments + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + arguments = self.arguments + seq = self.seq + dct = { + "type": type, + "command": command, + "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register +class GotoTargetsArguments(BaseSchema): + """ + Arguments for `gotoTargets` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "source": { + "description": "The source location for which the goto targets are determined.", + "type": "Source", + }, + "line": { + "type": "integer", + "description": "The line location for which the goto targets are determined.", + }, + "column": { + "type": "integer", + "description": "The position within `line` for which the goto targets are determined. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.", + }, + } + __refs__ = set(["source"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, source, line, column=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param Source source: The source location for which the goto targets are determined. + :param integer line: The line location for which the goto targets are determined. + :param integer column: The position within `line` for which the goto targets are determined. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based. + """ + if source is None: + self.source = Source() + else: + self.source = ( + Source(update_ids_from_dap=update_ids_from_dap, **source) + if source.__class__ != Source + else source + ) + self.line = line + self.column = column + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + source = self.source + line = self.line + column = self.column + dct = { + "source": source.to_dict(update_ids_to_dap=update_ids_to_dap), + "line": line, + } + if column is not None: + dct["column"] = column + dct.update(self.kwargs) + return dct + + +@register_response("gotoTargets") +@register +class GotoTargetsResponse(BaseSchema): + """ + Response to `gotoTargets` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": "object", + "properties": { + "targets": { + "type": "array", + "items": {"$ref": "#/definitions/GotoTarget"}, + "description": "The possible goto targets of the specified location.", + } + }, + "required": ["targets"], + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + body, + seq=-1, + message=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param GotoTargetsResponseBody body: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + if body is None: + self.body = GotoTargetsResponseBody() + else: + self.body = ( + GotoTargetsResponseBody(update_ids_from_dap=update_ids_from_dap, **body) + if body.__class__ != GotoTargetsResponseBody + else body + ) + self.seq = seq + self.message = message + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + body = self.body + seq = self.seq + message = self.message + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "body": body.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + if message is not None: + dct["message"] = message + dct.update(self.kwargs) + return dct + + +@register_request("completions") +@register +class CompletionsRequest(BaseSchema): + """ + Returns a list of possible completions for a given caret position and text. + + Clients should only call this request if the corresponding capability `supportsCompletionsRequest` + is true. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["completions"]}, + "arguments": {"type": "CompletionsArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param CompletionsArguments arguments: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "request" + self.command = "completions" + if arguments is None: + self.arguments = CompletionsArguments() + else: + self.arguments = ( + CompletionsArguments( + update_ids_from_dap=update_ids_from_dap, **arguments + ) + if arguments.__class__ != CompletionsArguments + else arguments + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + arguments = self.arguments + seq = self.seq + dct = { + "type": type, + "command": command, + "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register +class CompletionsArguments(BaseSchema): + """ + Arguments for `completions` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "frameId": { + "type": "integer", + "description": "Returns completions in the scope of this stack frame. If not specified, the completions are returned for the global scope.", + }, + "text": { + "type": "string", + "description": "One or more source lines. Typically this is the text users have typed into the debug console before they asked for completion.", + }, + "column": { + "type": "integer", + "description": "The position within `text` for which to determine the completion proposals. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.", + }, + "line": { + "type": "integer", + "description": "A line for which to determine the completion proposals. If missing the first line of the text is assumed.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, text, column, frameId=None, line=None, update_ids_from_dap=False, **kwargs + ): # noqa (update_ids_from_dap may be unused) + """ + :param string text: One or more source lines. Typically this is the text users have typed into the debug console before they asked for completion. + :param integer column: The position within `text` for which to determine the completion proposals. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based. + :param integer frameId: Returns completions in the scope of this stack frame. If not specified, the completions are returned for the global scope. + :param integer line: A line for which to determine the completion proposals. If missing the first line of the text is assumed. + """ + self.text = text + self.column = column + self.frameId = frameId + self.line = line + if update_ids_from_dap: + self.frameId = self._translate_id_from_dap(self.frameId) + self.kwargs = kwargs + + @classmethod + def update_dict_ids_from_dap(cls, dct): + if "frameId" in dct: + dct["frameId"] = cls._translate_id_from_dap(dct["frameId"]) + return dct + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + text = self.text + column = self.column + frameId = self.frameId + line = self.line + if update_ids_to_dap: + if frameId is not None: + frameId = self._translate_id_to_dap(frameId) + dct = { + "text": text, + "column": column, + } + if frameId is not None: + dct["frameId"] = frameId + if line is not None: + dct["line"] = line + dct.update(self.kwargs) + return dct + + @classmethod + def update_dict_ids_to_dap(cls, dct): + if "frameId" in dct: + dct["frameId"] = cls._translate_id_to_dap(dct["frameId"]) + return dct + + +@register_response("completions") +@register +class CompletionsResponse(BaseSchema): + """ + Response to `completions` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": "object", + "properties": { + "targets": { + "type": "array", + "items": {"$ref": "#/definitions/CompletionItem"}, + "description": "The possible completions for .", + } + }, + "required": ["targets"], + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + body, + seq=-1, + message=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param CompletionsResponseBody body: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + if body is None: + self.body = CompletionsResponseBody() + else: + self.body = ( + CompletionsResponseBody(update_ids_from_dap=update_ids_from_dap, **body) + if body.__class__ != CompletionsResponseBody + else body + ) + self.seq = seq + self.message = message + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + body = self.body + seq = self.seq + message = self.message + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "body": body.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + if message is not None: + dct["message"] = message + dct.update(self.kwargs) + return dct + + +@register_request("exceptionInfo") +@register +class ExceptionInfoRequest(BaseSchema): + """ + Retrieves the details of the exception that caused this event to be raised. + + Clients should only call this request if the corresponding capability `supportsExceptionInfoRequest` + is true. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["exceptionInfo"]}, + "arguments": {"type": "ExceptionInfoArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param ExceptionInfoArguments arguments: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "request" + self.command = "exceptionInfo" + if arguments is None: + self.arguments = ExceptionInfoArguments() + else: + self.arguments = ( + ExceptionInfoArguments( + update_ids_from_dap=update_ids_from_dap, **arguments + ) + if arguments.__class__ != ExceptionInfoArguments + else arguments + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + arguments = self.arguments + seq = self.seq + dct = { + "type": type, + "command": command, + "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register +class ExceptionInfoArguments(BaseSchema): + """ + Arguments for `exceptionInfo` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "threadId": { + "type": "integer", + "description": "Thread for which exception information should be retrieved.", + } + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, threadId, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param integer threadId: Thread for which exception information should be retrieved. + """ + self.threadId = threadId + if update_ids_from_dap: + self.threadId = self._translate_id_from_dap(self.threadId) + self.kwargs = kwargs + + @classmethod + def update_dict_ids_from_dap(cls, dct): + if "threadId" in dct: + dct["threadId"] = cls._translate_id_from_dap(dct["threadId"]) + return dct + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + threadId = self.threadId + if update_ids_to_dap: + if threadId is not None: + threadId = self._translate_id_to_dap(threadId) + dct = { + "threadId": threadId, + } + dct.update(self.kwargs) + return dct + + @classmethod + def update_dict_ids_to_dap(cls, dct): + if "threadId" in dct: + dct["threadId"] = cls._translate_id_to_dap(dct["threadId"]) + return dct + + +@register_response("exceptionInfo") +@register +class ExceptionInfoResponse(BaseSchema): + """ + Response to `exceptionInfo` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": "object", + "properties": { + "exceptionId": { + "type": "string", + "description": "ID of the exception that was thrown.", + }, + "description": { + "type": "string", + "description": "Descriptive text for the exception.", + }, + "breakMode": { + "$ref": "#/definitions/ExceptionBreakMode", + "description": "Mode that caused the exception notification to be raised.", + }, + "details": { + "$ref": "#/definitions/ExceptionDetails", + "description": "Detailed information about the exception.", + }, + }, + "required": ["exceptionId", "breakMode"], + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + body, + seq=-1, + message=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param ExceptionInfoResponseBody body: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + if body is None: + self.body = ExceptionInfoResponseBody() + else: + self.body = ( + ExceptionInfoResponseBody( + update_ids_from_dap=update_ids_from_dap, **body + ) + if body.__class__ != ExceptionInfoResponseBody + else body + ) + self.seq = seq + self.message = message + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + body = self.body + seq = self.seq + message = self.message + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "body": body.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + if message is not None: + dct["message"] = message + dct.update(self.kwargs) + return dct + + +@register_request("readMemory") +@register +class ReadMemoryRequest(BaseSchema): + """ + Reads bytes from memory at the provided location. + + Clients should only call this request if the corresponding capability `supportsReadMemoryRequest` is + true. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["readMemory"]}, + "arguments": {"type": "ReadMemoryArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param ReadMemoryArguments arguments: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "request" + self.command = "readMemory" + if arguments is None: + self.arguments = ReadMemoryArguments() + else: + self.arguments = ( + ReadMemoryArguments( + update_ids_from_dap=update_ids_from_dap, **arguments + ) + if arguments.__class__ != ReadMemoryArguments + else arguments + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + arguments = self.arguments + seq = self.seq + dct = { + "type": type, + "command": command, + "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register +class ReadMemoryArguments(BaseSchema): + """ + Arguments for `readMemory` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "memoryReference": { + "type": "string", + "description": "Memory reference to the base location from which data should be read.", + }, + "offset": { + "type": "integer", + "description": "Offset (in bytes) to be applied to the reference location before reading data. Can be negative.", + }, + "count": { + "type": "integer", + "description": "Number of bytes to read at the specified location and offset.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, memoryReference, count, offset=None, update_ids_from_dap=False, **kwargs + ): # noqa (update_ids_from_dap may be unused) + """ + :param string memoryReference: Memory reference to the base location from which data should be read. + :param integer count: Number of bytes to read at the specified location and offset. + :param integer offset: Offset (in bytes) to be applied to the reference location before reading data. Can be negative. + """ + self.memoryReference = memoryReference + self.count = count + self.offset = offset + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + memoryReference = self.memoryReference + count = self.count + offset = self.offset + dct = { + "memoryReference": memoryReference, + "count": count, + } + if offset is not None: + dct["offset"] = offset + dct.update(self.kwargs) + return dct + + +@register_response("readMemory") +@register +class ReadMemoryResponse(BaseSchema): + """ + Response to `readMemory` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "The address of the first byte of data returned.\nTreated as a hex value if prefixed with `0x`, or as a decimal value otherwise.", + }, + "unreadableBytes": { + "type": "integer", + "description": "The number of unreadable bytes encountered after the last successfully read byte.\nThis can be used to determine the number of bytes that should be skipped before a subsequent `readMemory` request succeeds.", + }, + "data": { + "type": "string", + "description": "The bytes read from memory, encoded using base64. If the decoded length of `data` is less than the requested `count` in the original `readMemory` request, and `unreadableBytes` is zero or omitted, then the client should assume it's reached the end of readable memory.", + }, + }, + "required": ["address"], + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + seq=-1, + message=None, + body=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + :param ReadMemoryResponseBody body: + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + self.seq = seq + self.message = message + if body is None: + self.body = ReadMemoryResponseBody() + else: + self.body = ( + ReadMemoryResponseBody(update_ids_from_dap=update_ids_from_dap, **body) + if body.__class__ != ReadMemoryResponseBody + else body + ) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + seq = self.seq + message = self.message + body = self.body + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "seq": seq, + } + if message is not None: + dct["message"] = message + if body is not None: + dct["body"] = body.to_dict(update_ids_to_dap=update_ids_to_dap) + dct.update(self.kwargs) + return dct + + +@register_request("writeMemory") +@register +class WriteMemoryRequest(BaseSchema): + """ + Writes bytes to memory at the provided location. + + Clients should only call this request if the corresponding capability `supportsWriteMemoryRequest` + is true. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["writeMemory"]}, + "arguments": {"type": "WriteMemoryArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param WriteMemoryArguments arguments: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "request" + self.command = "writeMemory" + if arguments is None: + self.arguments = WriteMemoryArguments() + else: + self.arguments = ( + WriteMemoryArguments( + update_ids_from_dap=update_ids_from_dap, **arguments + ) + if arguments.__class__ != WriteMemoryArguments + else arguments + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + arguments = self.arguments + seq = self.seq + dct = { + "type": type, + "command": command, + "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register +class WriteMemoryArguments(BaseSchema): + """ + Arguments for `writeMemory` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "memoryReference": { + "type": "string", + "description": "Memory reference to the base location to which data should be written.", + }, + "offset": { + "type": "integer", + "description": "Offset (in bytes) to be applied to the reference location before writing data. Can be negative.", + }, + "allowPartial": { + "type": "boolean", + "description": "Property to control partial writes. If True, the debug adapter should attempt to write memory even if the entire memory region is not writable. In such a case the debug adapter should stop after hitting the first byte of memory that cannot be written and return the number of bytes written in the response via the `offset` and `bytesWritten` properties.\nIf false or missing, a debug adapter should attempt to verify the region is writable before writing, and fail the response if it is not.", + }, + "data": { + "type": "string", + "description": "Bytes to write, encoded using base64.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + memoryReference, + data, + offset=None, + allowPartial=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string memoryReference: Memory reference to the base location to which data should be written. + :param string data: Bytes to write, encoded using base64. + :param integer offset: Offset (in bytes) to be applied to the reference location before writing data. Can be negative. + :param boolean allowPartial: Property to control partial writes. If true, the debug adapter should attempt to write memory even if the entire memory region is not writable. In such a case the debug adapter should stop after hitting the first byte of memory that cannot be written and return the number of bytes written in the response via the `offset` and `bytesWritten` properties. + If false or missing, a debug adapter should attempt to verify the region is writable before writing, and fail the response if it is not. + """ + self.memoryReference = memoryReference + self.data = data + self.offset = offset + self.allowPartial = allowPartial + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + memoryReference = self.memoryReference + data = self.data + offset = self.offset + allowPartial = self.allowPartial + dct = { + "memoryReference": memoryReference, + "data": data, + } + if offset is not None: + dct["offset"] = offset + if allowPartial is not None: + dct["allowPartial"] = allowPartial + dct.update(self.kwargs) + return dct + + +@register_response("writeMemory") +@register +class WriteMemoryResponse(BaseSchema): + """ + Response to `writeMemory` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": "object", + "properties": { + "offset": { + "type": "integer", + "description": "Property that should be returned when `allowPartial` is True to indicate the offset of the first byte of data successfully written. Can be negative.", + }, + "bytesWritten": { + "type": "integer", + "description": "Property that should be returned when `allowPartial` is True to indicate the number of bytes starting from address that were successfully written.", + }, + }, + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + seq=-1, + message=None, + body=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + :param WriteMemoryResponseBody body: + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + self.seq = seq + self.message = message + if body is None: + self.body = WriteMemoryResponseBody() + else: + self.body = ( + WriteMemoryResponseBody(update_ids_from_dap=update_ids_from_dap, **body) + if body.__class__ != WriteMemoryResponseBody + else body + ) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + seq = self.seq + message = self.message + body = self.body + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "seq": seq, + } + if message is not None: + dct["message"] = message + if body is not None: + dct["body"] = body.to_dict(update_ids_to_dap=update_ids_to_dap) + dct.update(self.kwargs) + return dct + + +@register_request("disassemble") +@register +class DisassembleRequest(BaseSchema): + """ + Disassembles code stored at the provided location. + + Clients should only call this request if the corresponding capability `supportsDisassembleRequest` + is true. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["disassemble"]}, + "arguments": {"type": "DisassembleArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param DisassembleArguments arguments: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "request" + self.command = "disassemble" + if arguments is None: + self.arguments = DisassembleArguments() + else: + self.arguments = ( + DisassembleArguments( + update_ids_from_dap=update_ids_from_dap, **arguments + ) + if arguments.__class__ != DisassembleArguments + else arguments + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + arguments = self.arguments + seq = self.seq + dct = { + "type": type, + "command": command, + "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register +class DisassembleArguments(BaseSchema): + """ + Arguments for `disassemble` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "memoryReference": { + "type": "string", + "description": "Memory reference to the base location containing the instructions to disassemble.", + }, + "offset": { + "type": "integer", + "description": "Offset (in bytes) to be applied to the reference location before disassembling. Can be negative.", + }, + "instructionOffset": { + "type": "integer", + "description": "Offset (in instructions) to be applied after the byte offset (if any) before disassembling. Can be negative.", + }, + "instructionCount": { + "type": "integer", + "description": "Number of instructions to disassemble starting at the specified location and offset.\nAn adapter must return exactly this number of instructions - any unavailable instructions should be replaced with an implementation-defined 'invalid instruction' value.", + }, + "resolveSymbols": { + "type": "boolean", + "description": "If True, the adapter should attempt to resolve memory addresses and other values to symbolic names.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + memoryReference, + instructionCount, + offset=None, + instructionOffset=None, + resolveSymbols=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string memoryReference: Memory reference to the base location containing the instructions to disassemble. + :param integer instructionCount: Number of instructions to disassemble starting at the specified location and offset. + An adapter must return exactly this number of instructions - any unavailable instructions should be replaced with an implementation-defined 'invalid instruction' value. + :param integer offset: Offset (in bytes) to be applied to the reference location before disassembling. Can be negative. + :param integer instructionOffset: Offset (in instructions) to be applied after the byte offset (if any) before disassembling. Can be negative. + :param boolean resolveSymbols: If true, the adapter should attempt to resolve memory addresses and other values to symbolic names. + """ + self.memoryReference = memoryReference + self.instructionCount = instructionCount + self.offset = offset + self.instructionOffset = instructionOffset + self.resolveSymbols = resolveSymbols + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + memoryReference = self.memoryReference + instructionCount = self.instructionCount + offset = self.offset + instructionOffset = self.instructionOffset + resolveSymbols = self.resolveSymbols + dct = { + "memoryReference": memoryReference, + "instructionCount": instructionCount, + } + if offset is not None: + dct["offset"] = offset + if instructionOffset is not None: + dct["instructionOffset"] = instructionOffset + if resolveSymbols is not None: + dct["resolveSymbols"] = resolveSymbols + dct.update(self.kwargs) + return dct + + +@register_response("disassemble") +@register +class DisassembleResponse(BaseSchema): + """ + Response to `disassemble` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": "object", + "properties": { + "instructions": { + "type": "array", + "items": {"$ref": "#/definitions/DisassembledInstruction"}, + "description": "The list of disassembled instructions.", + } + }, + "required": ["instructions"], + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + seq=-1, + message=None, + body=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + :param DisassembleResponseBody body: + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + self.seq = seq + self.message = message + if body is None: + self.body = DisassembleResponseBody() + else: + self.body = ( + DisassembleResponseBody(update_ids_from_dap=update_ids_from_dap, **body) + if body.__class__ != DisassembleResponseBody + else body + ) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + seq = self.seq + message = self.message + body = self.body + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "seq": seq, + } + if message is not None: + dct["message"] = message + if body is not None: + dct["body"] = body.to_dict(update_ids_to_dap=update_ids_to_dap) + dct.update(self.kwargs) + return dct + + +@register +class Capabilities(BaseSchema): + """ + Information about the capabilities of a debug adapter. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "supportsConfigurationDoneRequest": { + "type": "boolean", + "description": "The debug adapter supports the `configurationDone` request.", + }, + "supportsFunctionBreakpoints": { + "type": "boolean", + "description": "The debug adapter supports function breakpoints.", + }, + "supportsConditionalBreakpoints": { + "type": "boolean", + "description": "The debug adapter supports conditional breakpoints.", + }, + "supportsHitConditionalBreakpoints": { + "type": "boolean", + "description": "The debug adapter supports breakpoints that break execution after a specified number of hits.", + }, + "supportsEvaluateForHovers": { + "type": "boolean", + "description": "The debug adapter supports a (side effect free) `evaluate` request for data hovers.", + }, + "exceptionBreakpointFilters": { + "type": "array", + "items": {"$ref": "#/definitions/ExceptionBreakpointsFilter"}, + "description": "Available exception filter options for the `setExceptionBreakpoints` request.", + }, + "supportsStepBack": { + "type": "boolean", + "description": "The debug adapter supports stepping back via the `stepBack` and `reverseContinue` requests.", + }, + "supportsSetVariable": { + "type": "boolean", + "description": "The debug adapter supports setting a variable to a value.", + }, + "supportsRestartFrame": { + "type": "boolean", + "description": "The debug adapter supports restarting a frame.", + }, + "supportsGotoTargetsRequest": { + "type": "boolean", + "description": "The debug adapter supports the `gotoTargets` request.", + }, + "supportsStepInTargetsRequest": { + "type": "boolean", + "description": "The debug adapter supports the `stepInTargets` request.", + }, + "supportsCompletionsRequest": { + "type": "boolean", + "description": "The debug adapter supports the `completions` request.", + }, + "completionTriggerCharacters": { + "type": "array", + "items": {"type": "string"}, + "description": "The set of characters that should trigger completion in a REPL. If not specified, the UI should assume the `.` character.", + }, + "supportsModulesRequest": { + "type": "boolean", + "description": "The debug adapter supports the `modules` request.", + }, + "additionalModuleColumns": { + "type": "array", + "items": {"$ref": "#/definitions/ColumnDescriptor"}, + "description": "The set of additional module information exposed by the debug adapter.", + }, + "supportedChecksumAlgorithms": { + "type": "array", + "items": {"$ref": "#/definitions/ChecksumAlgorithm"}, + "description": "Checksum algorithms supported by the debug adapter.", + }, + "supportsRestartRequest": { + "type": "boolean", + "description": "The debug adapter supports the `restart` request. In this case a client should not implement `restart` by terminating and relaunching the adapter but by calling the `restart` request.", + }, + "supportsExceptionOptions": { + "type": "boolean", + "description": "The debug adapter supports `exceptionOptions` on the `setExceptionBreakpoints` request.", + }, + "supportsValueFormattingOptions": { + "type": "boolean", + "description": "The debug adapter supports a `format` attribute on the `stackTrace`, `variables`, and `evaluate` requests.", + }, + "supportsExceptionInfoRequest": { + "type": "boolean", + "description": "The debug adapter supports the `exceptionInfo` request.", + }, + "supportTerminateDebuggee": { + "type": "boolean", + "description": "The debug adapter supports the `terminateDebuggee` attribute on the `disconnect` request.", + }, + "supportSuspendDebuggee": { + "type": "boolean", + "description": "The debug adapter supports the `suspendDebuggee` attribute on the `disconnect` request.", + }, + "supportsDelayedStackTraceLoading": { + "type": "boolean", + "description": "The debug adapter supports the delayed loading of parts of the stack, which requires that both the `startFrame` and `levels` arguments and the `totalFrames` result of the `stackTrace` request are supported.", + }, + "supportsLoadedSourcesRequest": { + "type": "boolean", + "description": "The debug adapter supports the `loadedSources` request.", + }, + "supportsLogPoints": { + "type": "boolean", + "description": "The debug adapter supports log points by interpreting the `logMessage` attribute of the `SourceBreakpoint`.", + }, + "supportsTerminateThreadsRequest": { + "type": "boolean", + "description": "The debug adapter supports the `terminateThreads` request.", + }, + "supportsSetExpression": { + "type": "boolean", + "description": "The debug adapter supports the `setExpression` request.", + }, + "supportsTerminateRequest": { + "type": "boolean", + "description": "The debug adapter supports the `terminate` request.", + }, + "supportsDataBreakpoints": { + "type": "boolean", + "description": "The debug adapter supports data breakpoints.", + }, + "supportsReadMemoryRequest": { + "type": "boolean", + "description": "The debug adapter supports the `readMemory` request.", + }, + "supportsWriteMemoryRequest": { + "type": "boolean", + "description": "The debug adapter supports the `writeMemory` request.", + }, + "supportsDisassembleRequest": { + "type": "boolean", + "description": "The debug adapter supports the `disassemble` request.", + }, + "supportsCancelRequest": { + "type": "boolean", + "description": "The debug adapter supports the `cancel` request.", + }, + "supportsBreakpointLocationsRequest": { + "type": "boolean", + "description": "The debug adapter supports the `breakpointLocations` request.", + }, + "supportsClipboardContext": { + "type": "boolean", + "description": "The debug adapter supports the `clipboard` context value in the `evaluate` request.", + }, + "supportsSteppingGranularity": { + "type": "boolean", + "description": "The debug adapter supports stepping granularities (argument `granularity`) for the stepping requests.", + }, + "supportsInstructionBreakpoints": { + "type": "boolean", + "description": "The debug adapter supports adding breakpoints based on instruction references.", + }, + "supportsExceptionFilterOptions": { + "type": "boolean", + "description": "The debug adapter supports `filterOptions` as an argument on the `setExceptionBreakpoints` request.", + }, + "supportsSingleThreadExecutionRequests": { + "type": "boolean", + "description": "The debug adapter supports the `singleThread` property on the execution requests (`continue`, `next`, `stepIn`, `stepOut`, `reverseContinue`, `stepBack`).", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + supportsConfigurationDoneRequest=None, + supportsFunctionBreakpoints=None, + supportsConditionalBreakpoints=None, + supportsHitConditionalBreakpoints=None, + supportsEvaluateForHovers=None, + exceptionBreakpointFilters=None, + supportsStepBack=None, + supportsSetVariable=None, + supportsRestartFrame=None, + supportsGotoTargetsRequest=None, + supportsStepInTargetsRequest=None, + supportsCompletionsRequest=None, + completionTriggerCharacters=None, + supportsModulesRequest=None, + additionalModuleColumns=None, + supportedChecksumAlgorithms=None, + supportsRestartRequest=None, + supportsExceptionOptions=None, + supportsValueFormattingOptions=None, + supportsExceptionInfoRequest=None, + supportTerminateDebuggee=None, + supportSuspendDebuggee=None, + supportsDelayedStackTraceLoading=None, + supportsLoadedSourcesRequest=None, + supportsLogPoints=None, + supportsTerminateThreadsRequest=None, + supportsSetExpression=None, + supportsTerminateRequest=None, + supportsDataBreakpoints=None, + supportsReadMemoryRequest=None, + supportsWriteMemoryRequest=None, + supportsDisassembleRequest=None, + supportsCancelRequest=None, + supportsBreakpointLocationsRequest=None, + supportsClipboardContext=None, + supportsSteppingGranularity=None, + supportsInstructionBreakpoints=None, + supportsExceptionFilterOptions=None, + supportsSingleThreadExecutionRequests=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param boolean supportsConfigurationDoneRequest: The debug adapter supports the `configurationDone` request. + :param boolean supportsFunctionBreakpoints: The debug adapter supports function breakpoints. + :param boolean supportsConditionalBreakpoints: The debug adapter supports conditional breakpoints. + :param boolean supportsHitConditionalBreakpoints: The debug adapter supports breakpoints that break execution after a specified number of hits. + :param boolean supportsEvaluateForHovers: The debug adapter supports a (side effect free) `evaluate` request for data hovers. + :param array exceptionBreakpointFilters: Available exception filter options for the `setExceptionBreakpoints` request. + :param boolean supportsStepBack: The debug adapter supports stepping back via the `stepBack` and `reverseContinue` requests. + :param boolean supportsSetVariable: The debug adapter supports setting a variable to a value. + :param boolean supportsRestartFrame: The debug adapter supports restarting a frame. + :param boolean supportsGotoTargetsRequest: The debug adapter supports the `gotoTargets` request. + :param boolean supportsStepInTargetsRequest: The debug adapter supports the `stepInTargets` request. + :param boolean supportsCompletionsRequest: The debug adapter supports the `completions` request. + :param array completionTriggerCharacters: The set of characters that should trigger completion in a REPL. If not specified, the UI should assume the `.` character. + :param boolean supportsModulesRequest: The debug adapter supports the `modules` request. + :param array additionalModuleColumns: The set of additional module information exposed by the debug adapter. + :param array supportedChecksumAlgorithms: Checksum algorithms supported by the debug adapter. + :param boolean supportsRestartRequest: The debug adapter supports the `restart` request. In this case a client should not implement `restart` by terminating and relaunching the adapter but by calling the `restart` request. + :param boolean supportsExceptionOptions: The debug adapter supports `exceptionOptions` on the `setExceptionBreakpoints` request. + :param boolean supportsValueFormattingOptions: The debug adapter supports a `format` attribute on the `stackTrace`, `variables`, and `evaluate` requests. + :param boolean supportsExceptionInfoRequest: The debug adapter supports the `exceptionInfo` request. + :param boolean supportTerminateDebuggee: The debug adapter supports the `terminateDebuggee` attribute on the `disconnect` request. + :param boolean supportSuspendDebuggee: The debug adapter supports the `suspendDebuggee` attribute on the `disconnect` request. + :param boolean supportsDelayedStackTraceLoading: The debug adapter supports the delayed loading of parts of the stack, which requires that both the `startFrame` and `levels` arguments and the `totalFrames` result of the `stackTrace` request are supported. + :param boolean supportsLoadedSourcesRequest: The debug adapter supports the `loadedSources` request. + :param boolean supportsLogPoints: The debug adapter supports log points by interpreting the `logMessage` attribute of the `SourceBreakpoint`. + :param boolean supportsTerminateThreadsRequest: The debug adapter supports the `terminateThreads` request. + :param boolean supportsSetExpression: The debug adapter supports the `setExpression` request. + :param boolean supportsTerminateRequest: The debug adapter supports the `terminate` request. + :param boolean supportsDataBreakpoints: The debug adapter supports data breakpoints. + :param boolean supportsReadMemoryRequest: The debug adapter supports the `readMemory` request. + :param boolean supportsWriteMemoryRequest: The debug adapter supports the `writeMemory` request. + :param boolean supportsDisassembleRequest: The debug adapter supports the `disassemble` request. + :param boolean supportsCancelRequest: The debug adapter supports the `cancel` request. + :param boolean supportsBreakpointLocationsRequest: The debug adapter supports the `breakpointLocations` request. + :param boolean supportsClipboardContext: The debug adapter supports the `clipboard` context value in the `evaluate` request. + :param boolean supportsSteppingGranularity: The debug adapter supports stepping granularities (argument `granularity`) for the stepping requests. + :param boolean supportsInstructionBreakpoints: The debug adapter supports adding breakpoints based on instruction references. + :param boolean supportsExceptionFilterOptions: The debug adapter supports `filterOptions` as an argument on the `setExceptionBreakpoints` request. + :param boolean supportsSingleThreadExecutionRequests: The debug adapter supports the `singleThread` property on the execution requests (`continue`, `next`, `stepIn`, `stepOut`, `reverseContinue`, `stepBack`). + """ + self.supportsConfigurationDoneRequest = supportsConfigurationDoneRequest + self.supportsFunctionBreakpoints = supportsFunctionBreakpoints + self.supportsConditionalBreakpoints = supportsConditionalBreakpoints + self.supportsHitConditionalBreakpoints = supportsHitConditionalBreakpoints + self.supportsEvaluateForHovers = supportsEvaluateForHovers + self.exceptionBreakpointFilters = exceptionBreakpointFilters + if update_ids_from_dap and self.exceptionBreakpointFilters: + for o in self.exceptionBreakpointFilters: + ExceptionBreakpointsFilter.update_dict_ids_from_dap(o) + self.supportsStepBack = supportsStepBack + self.supportsSetVariable = supportsSetVariable + self.supportsRestartFrame = supportsRestartFrame + self.supportsGotoTargetsRequest = supportsGotoTargetsRequest + self.supportsStepInTargetsRequest = supportsStepInTargetsRequest + self.supportsCompletionsRequest = supportsCompletionsRequest + self.completionTriggerCharacters = completionTriggerCharacters + self.supportsModulesRequest = supportsModulesRequest + self.additionalModuleColumns = additionalModuleColumns + if update_ids_from_dap and self.additionalModuleColumns: + for o in self.additionalModuleColumns: + ColumnDescriptor.update_dict_ids_from_dap(o) + self.supportedChecksumAlgorithms = supportedChecksumAlgorithms + if update_ids_from_dap and self.supportedChecksumAlgorithms: + for o in self.supportedChecksumAlgorithms: + ChecksumAlgorithm.update_dict_ids_from_dap(o) + self.supportsRestartRequest = supportsRestartRequest + self.supportsExceptionOptions = supportsExceptionOptions + self.supportsValueFormattingOptions = supportsValueFormattingOptions + self.supportsExceptionInfoRequest = supportsExceptionInfoRequest + self.supportTerminateDebuggee = supportTerminateDebuggee + self.supportSuspendDebuggee = supportSuspendDebuggee + self.supportsDelayedStackTraceLoading = supportsDelayedStackTraceLoading + self.supportsLoadedSourcesRequest = supportsLoadedSourcesRequest + self.supportsLogPoints = supportsLogPoints + self.supportsTerminateThreadsRequest = supportsTerminateThreadsRequest + self.supportsSetExpression = supportsSetExpression + self.supportsTerminateRequest = supportsTerminateRequest + self.supportsDataBreakpoints = supportsDataBreakpoints + self.supportsReadMemoryRequest = supportsReadMemoryRequest + self.supportsWriteMemoryRequest = supportsWriteMemoryRequest + self.supportsDisassembleRequest = supportsDisassembleRequest + self.supportsCancelRequest = supportsCancelRequest + self.supportsBreakpointLocationsRequest = supportsBreakpointLocationsRequest + self.supportsClipboardContext = supportsClipboardContext + self.supportsSteppingGranularity = supportsSteppingGranularity + self.supportsInstructionBreakpoints = supportsInstructionBreakpoints + self.supportsExceptionFilterOptions = supportsExceptionFilterOptions + self.supportsSingleThreadExecutionRequests = ( + supportsSingleThreadExecutionRequests + ) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + supportsConfigurationDoneRequest = self.supportsConfigurationDoneRequest + supportsFunctionBreakpoints = self.supportsFunctionBreakpoints + supportsConditionalBreakpoints = self.supportsConditionalBreakpoints + supportsHitConditionalBreakpoints = self.supportsHitConditionalBreakpoints + supportsEvaluateForHovers = self.supportsEvaluateForHovers + exceptionBreakpointFilters = self.exceptionBreakpointFilters + if exceptionBreakpointFilters and hasattr( + exceptionBreakpointFilters[0], "to_dict" + ): + exceptionBreakpointFilters = [ + x.to_dict() for x in exceptionBreakpointFilters + ] + supportsStepBack = self.supportsStepBack + supportsSetVariable = self.supportsSetVariable + supportsRestartFrame = self.supportsRestartFrame + supportsGotoTargetsRequest = self.supportsGotoTargetsRequest + supportsStepInTargetsRequest = self.supportsStepInTargetsRequest + supportsCompletionsRequest = self.supportsCompletionsRequest + completionTriggerCharacters = self.completionTriggerCharacters + if completionTriggerCharacters and hasattr( + completionTriggerCharacters[0], "to_dict" + ): + completionTriggerCharacters = [ + x.to_dict() for x in completionTriggerCharacters + ] + supportsModulesRequest = self.supportsModulesRequest + additionalModuleColumns = self.additionalModuleColumns + if additionalModuleColumns and hasattr(additionalModuleColumns[0], "to_dict"): + additionalModuleColumns = [x.to_dict() for x in additionalModuleColumns] + supportedChecksumAlgorithms = self.supportedChecksumAlgorithms + if supportedChecksumAlgorithms and hasattr( + supportedChecksumAlgorithms[0], "to_dict" + ): + supportedChecksumAlgorithms = [ + x.to_dict() for x in supportedChecksumAlgorithms + ] + supportsRestartRequest = self.supportsRestartRequest + supportsExceptionOptions = self.supportsExceptionOptions + supportsValueFormattingOptions = self.supportsValueFormattingOptions + supportsExceptionInfoRequest = self.supportsExceptionInfoRequest + supportTerminateDebuggee = self.supportTerminateDebuggee + supportSuspendDebuggee = self.supportSuspendDebuggee + supportsDelayedStackTraceLoading = self.supportsDelayedStackTraceLoading + supportsLoadedSourcesRequest = self.supportsLoadedSourcesRequest + supportsLogPoints = self.supportsLogPoints + supportsTerminateThreadsRequest = self.supportsTerminateThreadsRequest + supportsSetExpression = self.supportsSetExpression + supportsTerminateRequest = self.supportsTerminateRequest + supportsDataBreakpoints = self.supportsDataBreakpoints + supportsReadMemoryRequest = self.supportsReadMemoryRequest + supportsWriteMemoryRequest = self.supportsWriteMemoryRequest + supportsDisassembleRequest = self.supportsDisassembleRequest + supportsCancelRequest = self.supportsCancelRequest + supportsBreakpointLocationsRequest = self.supportsBreakpointLocationsRequest + supportsClipboardContext = self.supportsClipboardContext + supportsSteppingGranularity = self.supportsSteppingGranularity + supportsInstructionBreakpoints = self.supportsInstructionBreakpoints + supportsExceptionFilterOptions = self.supportsExceptionFilterOptions + supportsSingleThreadExecutionRequests = ( + self.supportsSingleThreadExecutionRequests + ) + dct = {} + if supportsConfigurationDoneRequest is not None: + dct["supportsConfigurationDoneRequest"] = supportsConfigurationDoneRequest + if supportsFunctionBreakpoints is not None: + dct["supportsFunctionBreakpoints"] = supportsFunctionBreakpoints + if supportsConditionalBreakpoints is not None: + dct["supportsConditionalBreakpoints"] = supportsConditionalBreakpoints + if supportsHitConditionalBreakpoints is not None: + dct["supportsHitConditionalBreakpoints"] = supportsHitConditionalBreakpoints + if supportsEvaluateForHovers is not None: + dct["supportsEvaluateForHovers"] = supportsEvaluateForHovers + if exceptionBreakpointFilters is not None: + dct["exceptionBreakpointFilters"] = ( + [ + ExceptionBreakpointsFilter.update_dict_ids_to_dap(o) + for o in exceptionBreakpointFilters + ] + if (update_ids_to_dap and exceptionBreakpointFilters) + else exceptionBreakpointFilters + ) + if supportsStepBack is not None: + dct["supportsStepBack"] = supportsStepBack + if supportsSetVariable is not None: + dct["supportsSetVariable"] = supportsSetVariable + if supportsRestartFrame is not None: + dct["supportsRestartFrame"] = supportsRestartFrame + if supportsGotoTargetsRequest is not None: + dct["supportsGotoTargetsRequest"] = supportsGotoTargetsRequest + if supportsStepInTargetsRequest is not None: + dct["supportsStepInTargetsRequest"] = supportsStepInTargetsRequest + if supportsCompletionsRequest is not None: + dct["supportsCompletionsRequest"] = supportsCompletionsRequest + if completionTriggerCharacters is not None: + dct["completionTriggerCharacters"] = completionTriggerCharacters + if supportsModulesRequest is not None: + dct["supportsModulesRequest"] = supportsModulesRequest + if additionalModuleColumns is not None: + dct["additionalModuleColumns"] = ( + [ + ColumnDescriptor.update_dict_ids_to_dap(o) + for o in additionalModuleColumns + ] + if (update_ids_to_dap and additionalModuleColumns) + else additionalModuleColumns + ) + if supportedChecksumAlgorithms is not None: + dct["supportedChecksumAlgorithms"] = ( + [ + ChecksumAlgorithm.update_dict_ids_to_dap(o) + for o in supportedChecksumAlgorithms + ] + if (update_ids_to_dap and supportedChecksumAlgorithms) + else supportedChecksumAlgorithms + ) + if supportsRestartRequest is not None: + dct["supportsRestartRequest"] = supportsRestartRequest + if supportsExceptionOptions is not None: + dct["supportsExceptionOptions"] = supportsExceptionOptions + if supportsValueFormattingOptions is not None: + dct["supportsValueFormattingOptions"] = supportsValueFormattingOptions + if supportsExceptionInfoRequest is not None: + dct["supportsExceptionInfoRequest"] = supportsExceptionInfoRequest + if supportTerminateDebuggee is not None: + dct["supportTerminateDebuggee"] = supportTerminateDebuggee + if supportSuspendDebuggee is not None: + dct["supportSuspendDebuggee"] = supportSuspendDebuggee + if supportsDelayedStackTraceLoading is not None: + dct["supportsDelayedStackTraceLoading"] = supportsDelayedStackTraceLoading + if supportsLoadedSourcesRequest is not None: + dct["supportsLoadedSourcesRequest"] = supportsLoadedSourcesRequest + if supportsLogPoints is not None: + dct["supportsLogPoints"] = supportsLogPoints + if supportsTerminateThreadsRequest is not None: + dct["supportsTerminateThreadsRequest"] = supportsTerminateThreadsRequest + if supportsSetExpression is not None: + dct["supportsSetExpression"] = supportsSetExpression + if supportsTerminateRequest is not None: + dct["supportsTerminateRequest"] = supportsTerminateRequest + if supportsDataBreakpoints is not None: + dct["supportsDataBreakpoints"] = supportsDataBreakpoints + if supportsReadMemoryRequest is not None: + dct["supportsReadMemoryRequest"] = supportsReadMemoryRequest + if supportsWriteMemoryRequest is not None: + dct["supportsWriteMemoryRequest"] = supportsWriteMemoryRequest + if supportsDisassembleRequest is not None: + dct["supportsDisassembleRequest"] = supportsDisassembleRequest + if supportsCancelRequest is not None: + dct["supportsCancelRequest"] = supportsCancelRequest + if supportsBreakpointLocationsRequest is not None: + dct[ + "supportsBreakpointLocationsRequest" + ] = supportsBreakpointLocationsRequest + if supportsClipboardContext is not None: + dct["supportsClipboardContext"] = supportsClipboardContext + if supportsSteppingGranularity is not None: + dct["supportsSteppingGranularity"] = supportsSteppingGranularity + if supportsInstructionBreakpoints is not None: + dct["supportsInstructionBreakpoints"] = supportsInstructionBreakpoints + if supportsExceptionFilterOptions is not None: + dct["supportsExceptionFilterOptions"] = supportsExceptionFilterOptions + if supportsSingleThreadExecutionRequests is not None: + dct[ + "supportsSingleThreadExecutionRequests" + ] = supportsSingleThreadExecutionRequests + dct.update(self.kwargs) + return dct + + +@register +class ExceptionBreakpointsFilter(BaseSchema): + """ + An `ExceptionBreakpointsFilter` is shown in the UI as an filter option for configuring how + exceptions are dealt with. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "filter": { + "type": "string", + "description": "The internal ID of the filter option. This value is passed to the `setExceptionBreakpoints` request.", + }, + "label": { + "type": "string", + "description": "The name of the filter option. This is shown in the UI.", + }, + "description": { + "type": "string", + "description": "A help text providing additional information about the exception filter. This string is typically shown as a hover and can be translated.", + }, + "default": { + "type": "boolean", + "description": "Initial value of the filter option. If not specified a value false is assumed.", + }, + "supportsCondition": { + "type": "boolean", + "description": "Controls whether a condition can be specified for this filter option. If false or missing, a condition can not be set.", + }, + "conditionDescription": { + "type": "string", + "description": "A help text providing information about the condition. This string is shown as the placeholder text for a text box and can be translated.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + filter, + label, + description=None, + default=None, + supportsCondition=None, + conditionDescription=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string filter: The internal ID of the filter option. This value is passed to the `setExceptionBreakpoints` request. + :param string label: The name of the filter option. This is shown in the UI. + :param string description: A help text providing additional information about the exception filter. This string is typically shown as a hover and can be translated. + :param boolean default: Initial value of the filter option. If not specified a value false is assumed. + :param boolean supportsCondition: Controls whether a condition can be specified for this filter option. If false or missing, a condition can not be set. + :param string conditionDescription: A help text providing information about the condition. This string is shown as the placeholder text for a text box and can be translated. + """ + self.filter = filter + self.label = label + self.description = description + self.default = default + self.supportsCondition = supportsCondition + self.conditionDescription = conditionDescription + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + filter = self.filter # noqa (assign to builtin) + label = self.label + description = self.description + default = self.default + supportsCondition = self.supportsCondition + conditionDescription = self.conditionDescription + dct = { + "filter": filter, + "label": label, + } + if description is not None: + dct["description"] = description + if default is not None: + dct["default"] = default + if supportsCondition is not None: + dct["supportsCondition"] = supportsCondition + if conditionDescription is not None: + dct["conditionDescription"] = conditionDescription + dct.update(self.kwargs) + return dct + + +@register +class Message(BaseSchema): + """ + A structured message object. Used to return errors from requests. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "id": { + "type": "integer", + "description": "Unique (within a debug adapter implementation) identifier for the message. The purpose of these error IDs is to help extension authors that have the requirement that every user visible error message needs a corresponding error number, so that users or customer support can find information about the specific error more easily.", + }, + "format": { + "type": "string", + "description": "A format string for the message. Embedded variables have the form `{name}`.\nIf variable name starts with an underscore character, the variable does not contain user data (PII) and can be safely used for telemetry purposes.", + }, + "variables": { + "type": "object", + "description": "An object used as a dictionary for looking up the variables in the format string.", + "additionalProperties": { + "type": "string", + "description": "All dictionary values must be strings.", + }, + }, + "sendTelemetry": { + "type": "boolean", + "description": "If True send to telemetry.", + }, + "showUser": {"type": "boolean", "description": "If True show user."}, + "url": { + "type": "string", + "description": "A url where additional information about this message can be found.", + }, + "urlLabel": { + "type": "string", + "description": "A label that is presented to the user as the UI for opening the url.", + }, + } + __refs__ = set(["variables"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + id, + format, + variables=None, + sendTelemetry=None, + showUser=None, + url=None, + urlLabel=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param integer id: Unique (within a debug adapter implementation) identifier for the message. The purpose of these error IDs is to help extension authors that have the requirement that every user visible error message needs a corresponding error number, so that users or customer support can find information about the specific error more easily. + :param string format: A format string for the message. Embedded variables have the form `{name}`. + If variable name starts with an underscore character, the variable does not contain user data (PII) and can be safely used for telemetry purposes. + :param MessageVariables variables: An object used as a dictionary for looking up the variables in the format string. + :param boolean sendTelemetry: If true send to telemetry. + :param boolean showUser: If true show user. + :param string url: A url where additional information about this message can be found. + :param string urlLabel: A label that is presented to the user as the UI for opening the url. + """ + self.id = id + self.format = format + if variables is None: + self.variables = MessageVariables() + else: + self.variables = ( + MessageVariables(update_ids_from_dap=update_ids_from_dap, **variables) + if variables.__class__ != MessageVariables + else variables + ) + self.sendTelemetry = sendTelemetry + self.showUser = showUser + self.url = url + self.urlLabel = urlLabel + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + id = self.id # noqa (assign to builtin) + format = self.format # noqa (assign to builtin) + variables = self.variables + sendTelemetry = self.sendTelemetry + showUser = self.showUser + url = self.url + urlLabel = self.urlLabel + dct = { + "id": id, + "format": format, + } + if variables is not None: + dct["variables"] = variables.to_dict(update_ids_to_dap=update_ids_to_dap) + if sendTelemetry is not None: + dct["sendTelemetry"] = sendTelemetry + if showUser is not None: + dct["showUser"] = showUser + if url is not None: + dct["url"] = url + if urlLabel is not None: + dct["urlLabel"] = urlLabel + dct.update(self.kwargs) + return dct + + +@register +class Module(BaseSchema): + """ + A Module object represents a row in the modules view. + + The `id` attribute identifies a module in the modules view and is used in a `module` event for + identifying a module for adding, updating or deleting. + + The `name` attribute is used to minimally render the module in the UI. + + + Additional attributes can be added to the module. They show up in the module view if they have a + corresponding `ColumnDescriptor`. + + + To avoid an unnecessary proliferation of additional attributes with similar semantics but different + names, we recommend to re-use attributes from the 'recommended' list below first, and only introduce + new attributes if nothing appropriate could be found. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "id": { + "type": ["integer", "string"], + "description": "Unique identifier for the module.", + }, + "name": {"type": "string", "description": "A name of the module."}, + "path": { + "type": "string", + "description": "Logical full path to the module. The exact definition is implementation defined, but usually this would be a full path to the on-disk file for the module.", + }, + "isOptimized": { + "type": "boolean", + "description": "True if the module is optimized.", + }, + "isUserCode": { + "type": "boolean", + "description": "True if the module is considered 'user code' by a debugger that supports 'Just My Code'.", + }, + "version": {"type": "string", "description": "Version of Module."}, + "symbolStatus": { + "type": "string", + "description": "User-understandable description of if symbols were found for the module (ex: 'Symbols Loaded', 'Symbols not found', etc.)", + }, + "symbolFilePath": { + "type": "string", + "description": "Logical full path to the symbol file. The exact definition is implementation defined.", + }, + "dateTimeStamp": { + "type": "string", + "description": "Module created or modified, encoded as a RFC 3339 timestamp.", + }, + "addressRange": { + "type": "string", + "description": "Address range covered by this module.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + id, + name, + path=None, + isOptimized=None, + isUserCode=None, + version=None, + symbolStatus=None, + symbolFilePath=None, + dateTimeStamp=None, + addressRange=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param ['integer', 'string'] id: Unique identifier for the module. + :param string name: A name of the module. + :param string path: Logical full path to the module. The exact definition is implementation defined, but usually this would be a full path to the on-disk file for the module. + :param boolean isOptimized: True if the module is optimized. + :param boolean isUserCode: True if the module is considered 'user code' by a debugger that supports 'Just My Code'. + :param string version: Version of Module. + :param string symbolStatus: User-understandable description of if symbols were found for the module (ex: 'Symbols Loaded', 'Symbols not found', etc.) + :param string symbolFilePath: Logical full path to the symbol file. The exact definition is implementation defined. + :param string dateTimeStamp: Module created or modified, encoded as a RFC 3339 timestamp. + :param string addressRange: Address range covered by this module. + """ + self.id = id + self.name = name + self.path = path + self.isOptimized = isOptimized + self.isUserCode = isUserCode + self.version = version + self.symbolStatus = symbolStatus + self.symbolFilePath = symbolFilePath + self.dateTimeStamp = dateTimeStamp + self.addressRange = addressRange + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + id = self.id # noqa (assign to builtin) + name = self.name + path = self.path + isOptimized = self.isOptimized + isUserCode = self.isUserCode + version = self.version + symbolStatus = self.symbolStatus + symbolFilePath = self.symbolFilePath + dateTimeStamp = self.dateTimeStamp + addressRange = self.addressRange + dct = { + "id": id, + "name": name, + } + if path is not None: + dct["path"] = path + if isOptimized is not None: + dct["isOptimized"] = isOptimized + if isUserCode is not None: + dct["isUserCode"] = isUserCode + if version is not None: + dct["version"] = version + if symbolStatus is not None: + dct["symbolStatus"] = symbolStatus + if symbolFilePath is not None: + dct["symbolFilePath"] = symbolFilePath + if dateTimeStamp is not None: + dct["dateTimeStamp"] = dateTimeStamp + if addressRange is not None: + dct["addressRange"] = addressRange + dct.update(self.kwargs) + return dct + + +@register +class ColumnDescriptor(BaseSchema): + """ + A `ColumnDescriptor` specifies what module attribute to show in a column of the modules view, how to + format it, + + and what the column's label should be. + + It is only used if the underlying UI actually supports this level of customization. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "attributeName": { + "type": "string", + "description": "Name of the attribute rendered in this column.", + }, + "label": {"type": "string", "description": "Header UI label of column."}, + "format": { + "type": "string", + "description": "Format to use for the rendered values in this column. TBD how the format strings looks like.", + }, + "type": { + "type": "string", + "enum": ["string", "number", "boolean", "unixTimestampUTC"], + "description": "Datatype of values in this column. Defaults to `string` if not specified.", + }, + "width": { + "type": "integer", + "description": "Width of this column in characters (hint only).", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + attributeName, + label, + format=None, + type=None, + width=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string attributeName: Name of the attribute rendered in this column. + :param string label: Header UI label of column. + :param string format: Format to use for the rendered values in this column. TBD how the format strings looks like. + :param string type: Datatype of values in this column. Defaults to `string` if not specified. + :param integer width: Width of this column in characters (hint only). + """ + self.attributeName = attributeName + self.label = label + self.format = format + self.type = type + self.width = width + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + attributeName = self.attributeName + label = self.label + format = self.format # noqa (assign to builtin) + type = self.type # noqa (assign to builtin) + width = self.width + dct = { + "attributeName": attributeName, + "label": label, + } + if format is not None: + dct["format"] = format + if type is not None: + dct["type"] = type + if width is not None: + dct["width"] = width + dct.update(self.kwargs) + return dct + + +@register +class Thread(BaseSchema): + """ + A Thread + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "id": {"type": "integer", "description": "Unique identifier for the thread."}, + "name": {"type": "string", "description": "The name of the thread."}, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, id, name, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param integer id: Unique identifier for the thread. + :param string name: The name of the thread. + """ + self.id = id + self.name = name + if update_ids_from_dap: + self.id = self._translate_id_from_dap(self.id) + self.kwargs = kwargs + + @classmethod + def update_dict_ids_from_dap(cls, dct): + if "id" in dct: + dct["id"] = cls._translate_id_from_dap(dct["id"]) + return dct + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + id = self.id # noqa (assign to builtin) + name = self.name + if update_ids_to_dap: + if id is not None: + id = self._translate_id_to_dap(id) # noqa (assign to builtin) + dct = { + "id": id, + "name": name, + } + dct.update(self.kwargs) + return dct + + @classmethod + def update_dict_ids_to_dap(cls, dct): + if "id" in dct: + dct["id"] = cls._translate_id_to_dap(dct["id"]) + return dct + + +@register +class Source(BaseSchema): + """ + A `Source` is a descriptor for source code. + + It is returned from the debug adapter as part of a `StackFrame` and it is used by clients when + specifying breakpoints. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "name": { + "type": "string", + "description": "The short name of the source. Every source returned from the debug adapter has a name.\nWhen sending a source to the debug adapter this name is optional.", + }, + "path": { + "type": "string", + "description": "The path of the source to be shown in the UI.\nIt is only used to locate and load the content of the source if no `sourceReference` is specified (or its value is 0).", + }, + "sourceReference": { + "type": "integer", + "description": "If the value > 0 the contents of the source must be retrieved through the `source` request (even if a path is specified).\nSince a `sourceReference` is only valid for a session, it can not be used to persist a source.\nThe value should be less than or equal to 2147483647 (2^31-1).", + }, + "presentationHint": { + "type": "string", + "description": "A hint for how to present the source in the UI.\nA value of `deemphasize` can be used to indicate that the source is not available or that it is skipped on stepping.", + "enum": ["normal", "emphasize", "deemphasize"], + }, + "origin": { + "type": "string", + "description": "The origin of this source. For example, 'internal module', 'inlined content from source map', etc.", + }, + "sources": { + "type": "array", + "items": {"$ref": "#/definitions/Source"}, + "description": "A list of sources that are related to this source. These may be the source that generated this source.", + }, + "adapterData": { + "type": [ + "array", + "boolean", + "integer", + "null", + "number", + "object", + "string", + ], + "description": "Additional data that a debug adapter might want to loop through the client.\nThe client should leave the data intact and persist it across sessions. The client should not interpret the data.", + }, + "checksums": { + "type": "array", + "items": {"$ref": "#/definitions/Checksum"}, + "description": "The checksums associated with this file.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + name=None, + path=None, + sourceReference=None, + presentationHint=None, + origin=None, + sources=None, + adapterData=None, + checksums=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string name: The short name of the source. Every source returned from the debug adapter has a name. + When sending a source to the debug adapter this name is optional. + :param string path: The path of the source to be shown in the UI. + It is only used to locate and load the content of the source if no `sourceReference` is specified (or its value is 0). + :param integer sourceReference: If the value > 0 the contents of the source must be retrieved through the `source` request (even if a path is specified). + Since a `sourceReference` is only valid for a session, it can not be used to persist a source. + The value should be less than or equal to 2147483647 (2^31-1). + :param string presentationHint: A hint for how to present the source in the UI. + A value of `deemphasize` can be used to indicate that the source is not available or that it is skipped on stepping. + :param string origin: The origin of this source. For example, 'internal module', 'inlined content from source map', etc. + :param array sources: A list of sources that are related to this source. These may be the source that generated this source. + :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] adapterData: Additional data that a debug adapter might want to loop through the client. + The client should leave the data intact and persist it across sessions. The client should not interpret the data. + :param array checksums: The checksums associated with this file. + """ + self.name = name + self.path = path + self.sourceReference = sourceReference + self.presentationHint = presentationHint + self.origin = origin + self.sources = sources + if update_ids_from_dap and self.sources: + for o in self.sources: + Source.update_dict_ids_from_dap(o) + self.adapterData = adapterData + self.checksums = checksums + if update_ids_from_dap and self.checksums: + for o in self.checksums: + Checksum.update_dict_ids_from_dap(o) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + name = self.name + path = self.path + sourceReference = self.sourceReference + presentationHint = self.presentationHint + origin = self.origin + sources = self.sources + if sources and hasattr(sources[0], "to_dict"): + sources = [x.to_dict() for x in sources] + adapterData = self.adapterData + checksums = self.checksums + if checksums and hasattr(checksums[0], "to_dict"): + checksums = [x.to_dict() for x in checksums] + dct = {} + if name is not None: + dct["name"] = name + if path is not None: + dct["path"] = path + if sourceReference is not None: + dct["sourceReference"] = sourceReference + if presentationHint is not None: + dct["presentationHint"] = presentationHint + if origin is not None: + dct["origin"] = origin + if sources is not None: + dct["sources"] = ( + [Source.update_dict_ids_to_dap(o) for o in sources] + if (update_ids_to_dap and sources) + else sources + ) + if adapterData is not None: + dct["adapterData"] = adapterData + if checksums is not None: + dct["checksums"] = ( + [Checksum.update_dict_ids_to_dap(o) for o in checksums] + if (update_ids_to_dap and checksums) + else checksums + ) + dct.update(self.kwargs) + return dct + + +@register +class StackFrame(BaseSchema): + """ + A Stackframe contains the source location. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "id": { + "type": "integer", + "description": "An identifier for the stack frame. It must be unique across all threads.\nThis id can be used to retrieve the scopes of the frame with the `scopes` request or to restart the execution of a stack frame.", + }, + "name": { + "type": "string", + "description": "The name of the stack frame, typically a method name.", + }, + "source": {"description": "The source of the frame.", "type": "Source"}, + "line": { + "type": "integer", + "description": "The line within the source of the frame. If the source attribute is missing or doesn't exist, `line` is 0 and should be ignored by the client.", + }, + "column": { + "type": "integer", + "description": "Start position of the range covered by the stack frame. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based. If attribute `source` is missing or doesn't exist, `column` is 0 and should be ignored by the client.", + }, + "endLine": { + "type": "integer", + "description": "The end line of the range covered by the stack frame.", + }, + "endColumn": { + "type": "integer", + "description": "End position of the range covered by the stack frame. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.", + }, + "canRestart": { + "type": "boolean", + "description": "Indicates whether this frame can be restarted with the `restart` request. Clients should only use this if the debug adapter supports the `restart` request and the corresponding capability `supportsRestartRequest` is True. If a debug adapter has this capability, then `canRestart` defaults to `True` if the property is absent.", + }, + "instructionPointerReference": { + "type": "string", + "description": "A memory reference for the current instruction pointer in this frame.", + }, + "moduleId": { + "type": ["integer", "string"], + "description": "The module associated with this frame, if any.", + }, + "presentationHint": { + "type": "string", + "enum": ["normal", "label", "subtle"], + "description": "A hint for how to present this frame in the UI.\nA value of `label` can be used to indicate that the frame is an artificial frame that is used as a visual label or separator. A value of `subtle` can be used to change the appearance of a frame in a 'subtle' way.", + }, + } + __refs__ = set(["source"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + id, + name, + line, + column, + source=None, + endLine=None, + endColumn=None, + canRestart=None, + instructionPointerReference=None, + moduleId=None, + presentationHint=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param integer id: An identifier for the stack frame. It must be unique across all threads. + This id can be used to retrieve the scopes of the frame with the `scopes` request or to restart the execution of a stack frame. + :param string name: The name of the stack frame, typically a method name. + :param integer line: The line within the source of the frame. If the source attribute is missing or doesn't exist, `line` is 0 and should be ignored by the client. + :param integer column: Start position of the range covered by the stack frame. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based. If attribute `source` is missing or doesn't exist, `column` is 0 and should be ignored by the client. + :param Source source: The source of the frame. + :param integer endLine: The end line of the range covered by the stack frame. + :param integer endColumn: End position of the range covered by the stack frame. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based. + :param boolean canRestart: Indicates whether this frame can be restarted with the `restart` request. Clients should only use this if the debug adapter supports the `restart` request and the corresponding capability `supportsRestartRequest` is true. If a debug adapter has this capability, then `canRestart` defaults to `true` if the property is absent. + :param string instructionPointerReference: A memory reference for the current instruction pointer in this frame. + :param ['integer', 'string'] moduleId: The module associated with this frame, if any. + :param string presentationHint: A hint for how to present this frame in the UI. + A value of `label` can be used to indicate that the frame is an artificial frame that is used as a visual label or separator. A value of `subtle` can be used to change the appearance of a frame in a 'subtle' way. + """ + self.id = id + self.name = name + self.line = line + self.column = column + if source is None: + self.source = Source() + else: + self.source = ( + Source(update_ids_from_dap=update_ids_from_dap, **source) + if source.__class__ != Source + else source + ) + self.endLine = endLine + self.endColumn = endColumn + self.canRestart = canRestart + self.instructionPointerReference = instructionPointerReference + self.moduleId = moduleId + self.presentationHint = presentationHint + if update_ids_from_dap: + self.id = self._translate_id_from_dap(self.id) + self.kwargs = kwargs + + @classmethod + def update_dict_ids_from_dap(cls, dct): + if "id" in dct: + dct["id"] = cls._translate_id_from_dap(dct["id"]) + return dct + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + id = self.id # noqa (assign to builtin) + name = self.name + line = self.line + column = self.column + source = self.source + endLine = self.endLine + endColumn = self.endColumn + canRestart = self.canRestart + instructionPointerReference = self.instructionPointerReference + moduleId = self.moduleId + presentationHint = self.presentationHint + if update_ids_to_dap: + if id is not None: + id = self._translate_id_to_dap(id) # noqa (assign to builtin) + dct = { + "id": id, + "name": name, + "line": line, + "column": column, + } + if source is not None: + dct["source"] = source.to_dict(update_ids_to_dap=update_ids_to_dap) + if endLine is not None: + dct["endLine"] = endLine + if endColumn is not None: + dct["endColumn"] = endColumn + if canRestart is not None: + dct["canRestart"] = canRestart + if instructionPointerReference is not None: + dct["instructionPointerReference"] = instructionPointerReference + if moduleId is not None: + dct["moduleId"] = moduleId + if presentationHint is not None: + dct["presentationHint"] = presentationHint + dct.update(self.kwargs) + return dct + + @classmethod + def update_dict_ids_to_dap(cls, dct): + if "id" in dct: + dct["id"] = cls._translate_id_to_dap(dct["id"]) + return dct + + +@register +class Scope(BaseSchema): + """ + A `Scope` is a named container for variables. Optionally a scope can map to a source or a range + within a source. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "name": { + "type": "string", + "description": "Name of the scope such as 'Arguments', 'Locals', or 'Registers'. This string is shown in the UI as is and can be translated.", + }, + "presentationHint": { + "type": "string", + "description": "A hint for how to present this scope in the UI. If this attribute is missing, the scope is shown with a generic UI.", + "_enum": ["arguments", "locals", "registers"], + "enumDescriptions": [ + "Scope contains method arguments.", + "Scope contains local variables.", + "Scope contains registers. Only a single `registers` scope should be returned from a `scopes` request.", + ], + }, + "variablesReference": { + "type": "integer", + "description": "The variables of this scope can be retrieved by passing the value of `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details.", + }, + "namedVariables": { + "type": "integer", + "description": "The number of named variables in this scope.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks.", + }, + "indexedVariables": { + "type": "integer", + "description": "The number of indexed variables in this scope.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks.", + }, + "expensive": { + "type": "boolean", + "description": "If True, the number of variables in this scope is large or expensive to retrieve.", + }, + "source": {"description": "The source for this scope.", "type": "Source"}, + "line": { + "type": "integer", + "description": "The start line of the range covered by this scope.", + }, + "column": { + "type": "integer", + "description": "Start position of the range covered by the scope. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.", + }, + "endLine": { + "type": "integer", + "description": "The end line of the range covered by this scope.", + }, + "endColumn": { + "type": "integer", + "description": "End position of the range covered by the scope. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.", + }, + } + __refs__ = set(["source"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + name, + variablesReference, + expensive, + presentationHint=None, + namedVariables=None, + indexedVariables=None, + source=None, + line=None, + column=None, + endLine=None, + endColumn=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string name: Name of the scope such as 'Arguments', 'Locals', or 'Registers'. This string is shown in the UI as is and can be translated. + :param integer variablesReference: The variables of this scope can be retrieved by passing the value of `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details. + :param boolean expensive: If true, the number of variables in this scope is large or expensive to retrieve. + :param string presentationHint: A hint for how to present this scope in the UI. If this attribute is missing, the scope is shown with a generic UI. + :param integer namedVariables: The number of named variables in this scope. + The client can use this information to present the variables in a paged UI and fetch them in chunks. + :param integer indexedVariables: The number of indexed variables in this scope. + The client can use this information to present the variables in a paged UI and fetch them in chunks. + :param Source source: The source for this scope. + :param integer line: The start line of the range covered by this scope. + :param integer column: Start position of the range covered by the scope. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based. + :param integer endLine: The end line of the range covered by this scope. + :param integer endColumn: End position of the range covered by the scope. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based. + """ + self.name = name + self.variablesReference = variablesReference + self.expensive = expensive + self.presentationHint = presentationHint + self.namedVariables = namedVariables + self.indexedVariables = indexedVariables + if source is None: + self.source = Source() + else: + self.source = ( + Source(update_ids_from_dap=update_ids_from_dap, **source) + if source.__class__ != Source + else source + ) + self.line = line + self.column = column + self.endLine = endLine + self.endColumn = endColumn + if update_ids_from_dap: + self.variablesReference = self._translate_id_from_dap( + self.variablesReference + ) + self.kwargs = kwargs + + @classmethod + def update_dict_ids_from_dap(cls, dct): + if "variablesReference" in dct: + dct["variablesReference"] = cls._translate_id_from_dap( + dct["variablesReference"] + ) + return dct + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + name = self.name + variablesReference = self.variablesReference + expensive = self.expensive + presentationHint = self.presentationHint + namedVariables = self.namedVariables + indexedVariables = self.indexedVariables + source = self.source + line = self.line + column = self.column + endLine = self.endLine + endColumn = self.endColumn + if update_ids_to_dap: + if variablesReference is not None: + variablesReference = self._translate_id_to_dap(variablesReference) + dct = { + "name": name, + "variablesReference": variablesReference, + "expensive": expensive, + } + if presentationHint is not None: + dct["presentationHint"] = presentationHint + if namedVariables is not None: + dct["namedVariables"] = namedVariables + if indexedVariables is not None: + dct["indexedVariables"] = indexedVariables + if source is not None: + dct["source"] = source.to_dict(update_ids_to_dap=update_ids_to_dap) + if line is not None: + dct["line"] = line + if column is not None: + dct["column"] = column + if endLine is not None: + dct["endLine"] = endLine + if endColumn is not None: + dct["endColumn"] = endColumn + dct.update(self.kwargs) + return dct + + @classmethod + def update_dict_ids_to_dap(cls, dct): + if "variablesReference" in dct: + dct["variablesReference"] = cls._translate_id_to_dap( + dct["variablesReference"] + ) + return dct + + +@register +class Variable(BaseSchema): + """ + A Variable is a name/value pair. + + The `type` attribute is shown if space permits or when hovering over the variable's name. + + The `kind` attribute is used to render additional properties of the variable, e.g. different icons + can be used to indicate that a variable is public or private. + + If the value is structured (has children), a handle is provided to retrieve the children with the + `variables` request. + + If the number of named or indexed children is large, the numbers should be returned via the + `namedVariables` and `indexedVariables` attributes. + + The client can use this information to present the children in a paged UI and fetch them in chunks. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "name": {"type": "string", "description": "The variable's name."}, + "value": { + "type": "string", + "description": "The variable's value.\nThis can be a multi-line text, e.g. for a function the body of a function.\nFor structured variables (which do not have a simple value), it is recommended to provide a one-line representation of the structured object. This helps to identify the structured object in the collapsed state when its children are not yet visible.\nAn empty string can be used if no value should be shown in the UI.", + }, + "type": { + "type": "string", + "description": "The type of the variable's value. Typically shown in the UI when hovering over the value.\nThis attribute should only be returned by a debug adapter if the corresponding capability `supportsVariableType` is True.", + }, + "presentationHint": { + "description": "Properties of a variable that can be used to determine how to render the variable in the UI.", + "type": "VariablePresentationHint", + }, + "evaluateName": { + "type": "string", + "description": "The evaluatable name of this variable which can be passed to the `evaluate` request to fetch the variable's value.", + }, + "variablesReference": { + "type": "integer", + "description": "If `variablesReference` is > 0, the variable is structured and its children can be retrieved by passing `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details.", + }, + "namedVariables": { + "type": "integer", + "description": "The number of named child variables.\nThe client can use this information to present the children in a paged UI and fetch them in chunks.", + }, + "indexedVariables": { + "type": "integer", + "description": "The number of indexed child variables.\nThe client can use this information to present the children in a paged UI and fetch them in chunks.", + }, + "memoryReference": { + "type": "string", + "description": "A memory reference associated with this variable.\nFor pointer type variables, this is generally a reference to the memory address contained in the pointer.\nFor executable data, this reference may later be used in a `disassemble` request.\nThis attribute may be returned by a debug adapter if corresponding capability `supportsMemoryReferences` is True.", + }, + } + __refs__ = set(["presentationHint"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + name, + value, + variablesReference, + type=None, + presentationHint=None, + evaluateName=None, + namedVariables=None, + indexedVariables=None, + memoryReference=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string name: The variable's name. + :param string value: The variable's value. + This can be a multi-line text, e.g. for a function the body of a function. + For structured variables (which do not have a simple value), it is recommended to provide a one-line representation of the structured object. This helps to identify the structured object in the collapsed state when its children are not yet visible. + An empty string can be used if no value should be shown in the UI. + :param integer variablesReference: If `variablesReference` is > 0, the variable is structured and its children can be retrieved by passing `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details. + :param string type: The type of the variable's value. Typically shown in the UI when hovering over the value. + This attribute should only be returned by a debug adapter if the corresponding capability `supportsVariableType` is true. + :param VariablePresentationHint presentationHint: Properties of a variable that can be used to determine how to render the variable in the UI. + :param string evaluateName: The evaluatable name of this variable which can be passed to the `evaluate` request to fetch the variable's value. + :param integer namedVariables: The number of named child variables. + The client can use this information to present the children in a paged UI and fetch them in chunks. + :param integer indexedVariables: The number of indexed child variables. + The client can use this information to present the children in a paged UI and fetch them in chunks. + :param string memoryReference: A memory reference associated with this variable. + For pointer type variables, this is generally a reference to the memory address contained in the pointer. + For executable data, this reference may later be used in a `disassemble` request. + This attribute may be returned by a debug adapter if corresponding capability `supportsMemoryReferences` is true. + """ + self.name = name + self.value = value + self.variablesReference = variablesReference + self.type = type + if presentationHint is None: + self.presentationHint = VariablePresentationHint() + else: + self.presentationHint = ( + VariablePresentationHint( + update_ids_from_dap=update_ids_from_dap, **presentationHint + ) + if presentationHint.__class__ != VariablePresentationHint + else presentationHint + ) + self.evaluateName = evaluateName + self.namedVariables = namedVariables + self.indexedVariables = indexedVariables + self.memoryReference = memoryReference + if update_ids_from_dap: + self.variablesReference = self._translate_id_from_dap( + self.variablesReference + ) + self.kwargs = kwargs + + @classmethod + def update_dict_ids_from_dap(cls, dct): + if "variablesReference" in dct: + dct["variablesReference"] = cls._translate_id_from_dap( + dct["variablesReference"] + ) + return dct + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + name = self.name + value = self.value + variablesReference = self.variablesReference + type = self.type # noqa (assign to builtin) + presentationHint = self.presentationHint + evaluateName = self.evaluateName + namedVariables = self.namedVariables + indexedVariables = self.indexedVariables + memoryReference = self.memoryReference + if update_ids_to_dap: + if variablesReference is not None: + variablesReference = self._translate_id_to_dap(variablesReference) + dct = { + "name": name, + "value": value, + "variablesReference": variablesReference, + } + if type is not None: + dct["type"] = type + if presentationHint is not None: + dct["presentationHint"] = presentationHint.to_dict( + update_ids_to_dap=update_ids_to_dap + ) + if evaluateName is not None: + dct["evaluateName"] = evaluateName + if namedVariables is not None: + dct["namedVariables"] = namedVariables + if indexedVariables is not None: + dct["indexedVariables"] = indexedVariables + if memoryReference is not None: + dct["memoryReference"] = memoryReference + dct.update(self.kwargs) + return dct + + @classmethod + def update_dict_ids_to_dap(cls, dct): + if "variablesReference" in dct: + dct["variablesReference"] = cls._translate_id_to_dap( + dct["variablesReference"] + ) + return dct + + +@register +class VariablePresentationHint(BaseSchema): + """ + Properties of a variable that can be used to determine how to render the variable in the UI. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "kind": { + "description": "The kind of variable. Before introducing additional values, try to use the listed values.", + "type": "string", + "_enum": [ + "property", + "method", + "class", + "data", + "event", + "baseClass", + "innerClass", + "interface", + "mostDerivedClass", + "virtual", + "dataBreakpoint", + ], + "enumDescriptions": [ + "Indicates that the object is a property.", + "Indicates that the object is a method.", + "Indicates that the object is a class.", + "Indicates that the object is data.", + "Indicates that the object is an event.", + "Indicates that the object is a base class.", + "Indicates that the object is an inner class.", + "Indicates that the object is an interface.", + "Indicates that the object is the most derived class.", + "Indicates that the object is virtual, that means it is a synthetic object introduced by the adapter for rendering purposes, e.g. an index range for large arrays.", + "Deprecated: Indicates that a data breakpoint is registered for the object. The `hasDataBreakpoint` attribute should generally be used instead.", + ], + }, + "attributes": { + "description": "Set of attributes represented as an array of strings. Before introducing additional values, try to use the listed values.", + "type": "array", + "items": { + "type": "string", + "_enum": [ + "static", + "constant", + "readOnly", + "rawString", + "hasObjectId", + "canHaveObjectId", + "hasSideEffects", + "hasDataBreakpoint", + ], + "enumDescriptions": [ + "Indicates that the object is static.", + "Indicates that the object is a constant.", + "Indicates that the object is read only.", + "Indicates that the object is a raw string.", + "Indicates that the object can have an Object ID created for it. This is a vestigial attribute that is used by some clients; 'Object ID's are not specified in the protocol.", + "Indicates that the object has an Object ID associated with it. This is a vestigial attribute that is used by some clients; 'Object ID's are not specified in the protocol.", + "Indicates that the evaluation had side effects.", + "Indicates that the object has its value tracked by a data breakpoint.", + ], + }, + }, + "visibility": { + "description": "Visibility of variable. Before introducing additional values, try to use the listed values.", + "type": "string", + "_enum": ["public", "private", "protected", "internal", "final"], + }, + "lazy": { + "description": "If True, clients can present the variable with a UI that supports a specific gesture to trigger its evaluation.\nThis mechanism can be used for properties that require executing code when retrieving their value and where the code execution can be expensive and/or produce side-effects. A typical example are properties based on a getter function.\nPlease note that in addition to the `lazy` flag, the variable's `variablesReference` is expected to refer to a variable that will provide the value through another `variable` request.", + "type": "boolean", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + kind=None, + attributes=None, + visibility=None, + lazy=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string kind: The kind of variable. Before introducing additional values, try to use the listed values. + :param array attributes: Set of attributes represented as an array of strings. Before introducing additional values, try to use the listed values. + :param string visibility: Visibility of variable. Before introducing additional values, try to use the listed values. + :param boolean lazy: If true, clients can present the variable with a UI that supports a specific gesture to trigger its evaluation. + This mechanism can be used for properties that require executing code when retrieving their value and where the code execution can be expensive and/or produce side-effects. A typical example are properties based on a getter function. + Please note that in addition to the `lazy` flag, the variable's `variablesReference` is expected to refer to a variable that will provide the value through another `variable` request. + """ + self.kind = kind + self.attributes = attributes + self.visibility = visibility + self.lazy = lazy + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + kind = self.kind + attributes = self.attributes + if attributes and hasattr(attributes[0], "to_dict"): + attributes = [x.to_dict() for x in attributes] + visibility = self.visibility + lazy = self.lazy + dct = {} + if kind is not None: + dct["kind"] = kind + if attributes is not None: + dct["attributes"] = attributes + if visibility is not None: + dct["visibility"] = visibility + if lazy is not None: + dct["lazy"] = lazy + dct.update(self.kwargs) + return dct + + +@register +class BreakpointLocation(BaseSchema): + """ + Properties of a breakpoint location returned from the `breakpointLocations` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "line": { + "type": "integer", + "description": "Start line of breakpoint location.", + }, + "column": { + "type": "integer", + "description": "The start position of a breakpoint location. Position is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.", + }, + "endLine": { + "type": "integer", + "description": "The end line of breakpoint location if the location covers a range.", + }, + "endColumn": { + "type": "integer", + "description": "The end position of a breakpoint location (if the location covers a range). Position is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + line, + column=None, + endLine=None, + endColumn=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param integer line: Start line of breakpoint location. + :param integer column: The start position of a breakpoint location. Position is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based. + :param integer endLine: The end line of breakpoint location if the location covers a range. + :param integer endColumn: The end position of a breakpoint location (if the location covers a range). Position is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based. + """ + self.line = line + self.column = column + self.endLine = endLine + self.endColumn = endColumn + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + line = self.line + column = self.column + endLine = self.endLine + endColumn = self.endColumn + dct = { + "line": line, + } + if column is not None: + dct["column"] = column + if endLine is not None: + dct["endLine"] = endLine + if endColumn is not None: + dct["endColumn"] = endColumn + dct.update(self.kwargs) + return dct + + +@register +class SourceBreakpoint(BaseSchema): + """ + Properties of a breakpoint or logpoint passed to the `setBreakpoints` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "line": { + "type": "integer", + "description": "The source line of the breakpoint or logpoint.", + }, + "column": { + "type": "integer", + "description": "Start position within source line of the breakpoint or logpoint. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.", + }, + "condition": { + "type": "string", + "description": "The expression for conditional breakpoints.\nIt is only honored by a debug adapter if the corresponding capability `supportsConditionalBreakpoints` is True.", + }, + "hitCondition": { + "type": "string", + "description": "The expression that controls how many hits of the breakpoint are ignored.\nThe debug adapter is expected to interpret the expression as needed.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportsHitConditionalBreakpoints` is True.\nIf both this property and `condition` are specified, `hitCondition` should be evaluated only if the `condition` is met, and the debug adapter should stop only if both conditions are met.", + }, + "logMessage": { + "type": "string", + "description": "If this attribute exists and is non-empty, the debug adapter must not 'break' (stop)\nbut log the message instead. Expressions within `{}` are interpolated.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportsLogPoints` is True.\nIf either `hitCondition` or `condition` is specified, then the message should only be logged if those conditions are met.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + line, + column=None, + condition=None, + hitCondition=None, + logMessage=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param integer line: The source line of the breakpoint or logpoint. + :param integer column: Start position within source line of the breakpoint or logpoint. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based. + :param string condition: The expression for conditional breakpoints. + It is only honored by a debug adapter if the corresponding capability `supportsConditionalBreakpoints` is true. + :param string hitCondition: The expression that controls how many hits of the breakpoint are ignored. + The debug adapter is expected to interpret the expression as needed. + The attribute is only honored by a debug adapter if the corresponding capability `supportsHitConditionalBreakpoints` is true. + If both this property and `condition` are specified, `hitCondition` should be evaluated only if the `condition` is met, and the debug adapter should stop only if both conditions are met. + :param string logMessage: If this attribute exists and is non-empty, the debug adapter must not 'break' (stop) + but log the message instead. Expressions within `{}` are interpolated. + The attribute is only honored by a debug adapter if the corresponding capability `supportsLogPoints` is true. + If either `hitCondition` or `condition` is specified, then the message should only be logged if those conditions are met. + """ + self.line = line + self.column = column + self.condition = condition + self.hitCondition = hitCondition + self.logMessage = logMessage + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + line = self.line + column = self.column + condition = self.condition + hitCondition = self.hitCondition + logMessage = self.logMessage + dct = { + "line": line, + } + if column is not None: + dct["column"] = column + if condition is not None: + dct["condition"] = condition + if hitCondition is not None: + dct["hitCondition"] = hitCondition + if logMessage is not None: + dct["logMessage"] = logMessage + dct.update(self.kwargs) + return dct + + +@register +class FunctionBreakpoint(BaseSchema): + """ + Properties of a breakpoint passed to the `setFunctionBreakpoints` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "name": {"type": "string", "description": "The name of the function."}, + "condition": { + "type": "string", + "description": "An expression for conditional breakpoints.\nIt is only honored by a debug adapter if the corresponding capability `supportsConditionalBreakpoints` is True.", + }, + "hitCondition": { + "type": "string", + "description": "An expression that controls how many hits of the breakpoint are ignored.\nThe debug adapter is expected to interpret the expression as needed.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportsHitConditionalBreakpoints` is True.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + name, + condition=None, + hitCondition=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string name: The name of the function. + :param string condition: An expression for conditional breakpoints. + It is only honored by a debug adapter if the corresponding capability `supportsConditionalBreakpoints` is true. + :param string hitCondition: An expression that controls how many hits of the breakpoint are ignored. + The debug adapter is expected to interpret the expression as needed. + The attribute is only honored by a debug adapter if the corresponding capability `supportsHitConditionalBreakpoints` is true. + """ + self.name = name + self.condition = condition + self.hitCondition = hitCondition + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + name = self.name + condition = self.condition + hitCondition = self.hitCondition + dct = { + "name": name, + } + if condition is not None: + dct["condition"] = condition + if hitCondition is not None: + dct["hitCondition"] = hitCondition + dct.update(self.kwargs) + return dct + + +@register +class DataBreakpointAccessType(BaseSchema): + """ + This enumeration defines all possible access types for data breakpoints. + + Note: automatically generated code. Do not edit manually. + """ + + READ = "read" + WRITE = "write" + READWRITE = "readWrite" + + VALID_VALUES = set(["read", "write", "readWrite"]) + + __props__ = {} + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ """ + + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + dct = {} + dct.update(self.kwargs) + return dct + + +@register +class DataBreakpoint(BaseSchema): + """ + Properties of a data breakpoint passed to the `setDataBreakpoints` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "dataId": { + "type": "string", + "description": "An id representing the data. This id is returned from the `dataBreakpointInfo` request.", + }, + "accessType": { + "description": "The access type of the data.", + "type": "DataBreakpointAccessType", + }, + "condition": { + "type": "string", + "description": "An expression for conditional breakpoints.", + }, + "hitCondition": { + "type": "string", + "description": "An expression that controls how many hits of the breakpoint are ignored.\nThe debug adapter is expected to interpret the expression as needed.", + }, + } + __refs__ = set(["accessType"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + dataId, + accessType=None, + condition=None, + hitCondition=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string dataId: An id representing the data. This id is returned from the `dataBreakpointInfo` request. + :param DataBreakpointAccessType accessType: The access type of the data. + :param string condition: An expression for conditional breakpoints. + :param string hitCondition: An expression that controls how many hits of the breakpoint are ignored. + The debug adapter is expected to interpret the expression as needed. + """ + self.dataId = dataId + if accessType is not None: + assert accessType in DataBreakpointAccessType.VALID_VALUES + self.accessType = accessType + self.condition = condition + self.hitCondition = hitCondition + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + dataId = self.dataId + accessType = self.accessType + condition = self.condition + hitCondition = self.hitCondition + dct = { + "dataId": dataId, + } + if accessType is not None: + dct["accessType"] = accessType + if condition is not None: + dct["condition"] = condition + if hitCondition is not None: + dct["hitCondition"] = hitCondition + dct.update(self.kwargs) + return dct + + +@register +class InstructionBreakpoint(BaseSchema): + """ + Properties of a breakpoint passed to the `setInstructionBreakpoints` request + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "instructionReference": { + "type": "string", + "description": "The instruction reference of the breakpoint.\nThis should be a memory or instruction pointer reference from an `EvaluateResponse`, `Variable`, `StackFrame`, `GotoTarget`, or `Breakpoint`.", + }, + "offset": { + "type": "integer", + "description": "The offset from the instruction reference in bytes.\nThis can be negative.", + }, + "condition": { + "type": "string", + "description": "An expression for conditional breakpoints.\nIt is only honored by a debug adapter if the corresponding capability `supportsConditionalBreakpoints` is True.", + }, + "hitCondition": { + "type": "string", + "description": "An expression that controls how many hits of the breakpoint are ignored.\nThe debug adapter is expected to interpret the expression as needed.\nThe attribute is only honored by a debug adapter if the corresponding capability `supportsHitConditionalBreakpoints` is True.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + instructionReference, + offset=None, + condition=None, + hitCondition=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string instructionReference: The instruction reference of the breakpoint. + This should be a memory or instruction pointer reference from an `EvaluateResponse`, `Variable`, `StackFrame`, `GotoTarget`, or `Breakpoint`. + :param integer offset: The offset from the instruction reference in bytes. + This can be negative. + :param string condition: An expression for conditional breakpoints. + It is only honored by a debug adapter if the corresponding capability `supportsConditionalBreakpoints` is true. + :param string hitCondition: An expression that controls how many hits of the breakpoint are ignored. + The debug adapter is expected to interpret the expression as needed. + The attribute is only honored by a debug adapter if the corresponding capability `supportsHitConditionalBreakpoints` is true. + """ + self.instructionReference = instructionReference + self.offset = offset + self.condition = condition + self.hitCondition = hitCondition + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + instructionReference = self.instructionReference + offset = self.offset + condition = self.condition + hitCondition = self.hitCondition + dct = { + "instructionReference": instructionReference, + } + if offset is not None: + dct["offset"] = offset + if condition is not None: + dct["condition"] = condition + if hitCondition is not None: + dct["hitCondition"] = hitCondition + dct.update(self.kwargs) + return dct + + +@register +class Breakpoint(BaseSchema): + """ + Information about a breakpoint created in `setBreakpoints`, `setFunctionBreakpoints`, + `setInstructionBreakpoints`, or `setDataBreakpoints` requests. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "id": { + "type": "integer", + "description": "The identifier for the breakpoint. It is needed if breakpoint events are used to update or remove breakpoints.", + }, + "verified": { + "type": "boolean", + "description": "If True, the breakpoint could be set (but not necessarily at the desired location).", + }, + "message": { + "type": "string", + "description": "A message about the state of the breakpoint.\nThis is shown to the user and can be used to explain why a breakpoint could not be verified.", + }, + "source": { + "description": "The source where the breakpoint is located.", + "type": "Source", + }, + "line": { + "type": "integer", + "description": "The start line of the actual range covered by the breakpoint.", + }, + "column": { + "type": "integer", + "description": "Start position of the source range covered by the breakpoint. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.", + }, + "endLine": { + "type": "integer", + "description": "The end line of the actual range covered by the breakpoint.", + }, + "endColumn": { + "type": "integer", + "description": "End position of the source range covered by the breakpoint. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.\nIf no end line is given, then the end column is assumed to be in the start line.", + }, + "instructionReference": { + "type": "string", + "description": "A memory reference to where the breakpoint is set.", + }, + "offset": { + "type": "integer", + "description": "The offset from the instruction reference.\nThis can be negative.", + }, + "reason": { + "type": "string", + "description": "A machine-readable explanation of why a breakpoint may not be verified. If a breakpoint is verified or a specific reason is not known, the adapter should omit this property. Possible values include:\n\n- `pending`: Indicates a breakpoint might be verified in the future, but the adapter cannot verify it in the current state.\n - `failed`: Indicates a breakpoint was not able to be verified, and the adapter does not believe it can be verified without intervention.", + "enum": ["pending", "failed"], + }, + } + __refs__ = set(["source"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + verified, + id=None, + message=None, + source=None, + line=None, + column=None, + endLine=None, + endColumn=None, + instructionReference=None, + offset=None, + reason=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param boolean verified: If true, the breakpoint could be set (but not necessarily at the desired location). + :param integer id: The identifier for the breakpoint. It is needed if breakpoint events are used to update or remove breakpoints. + :param string message: A message about the state of the breakpoint. + This is shown to the user and can be used to explain why a breakpoint could not be verified. + :param Source source: The source where the breakpoint is located. + :param integer line: The start line of the actual range covered by the breakpoint. + :param integer column: Start position of the source range covered by the breakpoint. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based. + :param integer endLine: The end line of the actual range covered by the breakpoint. + :param integer endColumn: End position of the source range covered by the breakpoint. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based. + If no end line is given, then the end column is assumed to be in the start line. + :param string instructionReference: A memory reference to where the breakpoint is set. + :param integer offset: The offset from the instruction reference. + This can be negative. + :param string reason: A machine-readable explanation of why a breakpoint may not be verified. If a breakpoint is verified or a specific reason is not known, the adapter should omit this property. Possible values include: + + - `pending`: Indicates a breakpoint might be verified in the future, but the adapter cannot verify it in the current state. + - `failed`: Indicates a breakpoint was not able to be verified, and the adapter does not believe it can be verified without intervention. + """ + self.verified = verified + self.id = id + self.message = message + if source is None: + self.source = Source() + else: + self.source = ( + Source(update_ids_from_dap=update_ids_from_dap, **source) + if source.__class__ != Source + else source + ) + self.line = line + self.column = column + self.endLine = endLine + self.endColumn = endColumn + self.instructionReference = instructionReference + self.offset = offset + self.reason = reason + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + verified = self.verified + id = self.id # noqa (assign to builtin) + message = self.message + source = self.source + line = self.line + column = self.column + endLine = self.endLine + endColumn = self.endColumn + instructionReference = self.instructionReference + offset = self.offset + reason = self.reason + dct = { + "verified": verified, + } + if id is not None: + dct["id"] = id + if message is not None: + dct["message"] = message + if source is not None: + dct["source"] = source.to_dict(update_ids_to_dap=update_ids_to_dap) + if line is not None: + dct["line"] = line + if column is not None: + dct["column"] = column + if endLine is not None: + dct["endLine"] = endLine + if endColumn is not None: + dct["endColumn"] = endColumn + if instructionReference is not None: + dct["instructionReference"] = instructionReference + if offset is not None: + dct["offset"] = offset + if reason is not None: + dct["reason"] = reason + dct.update(self.kwargs) + return dct + + +@register +class SteppingGranularity(BaseSchema): + """ + The granularity of one 'step' in the stepping requests `next`, `stepIn`, `stepOut`, and `stepBack`. + + Note: automatically generated code. Do not edit manually. + """ + + STATEMENT = "statement" + LINE = "line" + INSTRUCTION = "instruction" + + VALID_VALUES = set(["statement", "line", "instruction"]) + + __props__ = {} + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ """ + + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + dct = {} + dct.update(self.kwargs) + return dct + + +@register +class StepInTarget(BaseSchema): + """ + A `StepInTarget` can be used in the `stepIn` request and determines into which single target the + `stepIn` request should step. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "id": { + "type": "integer", + "description": "Unique identifier for a step-in target.", + }, + "label": { + "type": "string", + "description": "The name of the step-in target (shown in the UI).", + }, + "line": {"type": "integer", "description": "The line of the step-in target."}, + "column": { + "type": "integer", + "description": "Start position of the range covered by the step in target. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.", + }, + "endLine": { + "type": "integer", + "description": "The end line of the range covered by the step-in target.", + }, + "endColumn": { + "type": "integer", + "description": "End position of the range covered by the step in target. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + id, + label, + line=None, + column=None, + endLine=None, + endColumn=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param integer id: Unique identifier for a step-in target. + :param string label: The name of the step-in target (shown in the UI). + :param integer line: The line of the step-in target. + :param integer column: Start position of the range covered by the step in target. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based. + :param integer endLine: The end line of the range covered by the step-in target. + :param integer endColumn: End position of the range covered by the step in target. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based. + """ + self.id = id + self.label = label + self.line = line + self.column = column + self.endLine = endLine + self.endColumn = endColumn + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + id = self.id # noqa (assign to builtin) + label = self.label + line = self.line + column = self.column + endLine = self.endLine + endColumn = self.endColumn + dct = { + "id": id, + "label": label, + } + if line is not None: + dct["line"] = line + if column is not None: + dct["column"] = column + if endLine is not None: + dct["endLine"] = endLine + if endColumn is not None: + dct["endColumn"] = endColumn + dct.update(self.kwargs) + return dct + + +@register +class GotoTarget(BaseSchema): + """ + A `GotoTarget` describes a code location that can be used as a target in the `goto` request. + + The possible goto targets can be determined via the `gotoTargets` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "id": { + "type": "integer", + "description": "Unique identifier for a goto target. This is used in the `goto` request.", + }, + "label": { + "type": "string", + "description": "The name of the goto target (shown in the UI).", + }, + "line": {"type": "integer", "description": "The line of the goto target."}, + "column": {"type": "integer", "description": "The column of the goto target."}, + "endLine": { + "type": "integer", + "description": "The end line of the range covered by the goto target.", + }, + "endColumn": { + "type": "integer", + "description": "The end column of the range covered by the goto target.", + }, + "instructionPointerReference": { + "type": "string", + "description": "A memory reference for the instruction pointer value represented by this target.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + id, + label, + line, + column=None, + endLine=None, + endColumn=None, + instructionPointerReference=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param integer id: Unique identifier for a goto target. This is used in the `goto` request. + :param string label: The name of the goto target (shown in the UI). + :param integer line: The line of the goto target. + :param integer column: The column of the goto target. + :param integer endLine: The end line of the range covered by the goto target. + :param integer endColumn: The end column of the range covered by the goto target. + :param string instructionPointerReference: A memory reference for the instruction pointer value represented by this target. + """ + self.id = id + self.label = label + self.line = line + self.column = column + self.endLine = endLine + self.endColumn = endColumn + self.instructionPointerReference = instructionPointerReference + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + id = self.id # noqa (assign to builtin) + label = self.label + line = self.line + column = self.column + endLine = self.endLine + endColumn = self.endColumn + instructionPointerReference = self.instructionPointerReference + dct = { + "id": id, + "label": label, + "line": line, + } + if column is not None: + dct["column"] = column + if endLine is not None: + dct["endLine"] = endLine + if endColumn is not None: + dct["endColumn"] = endColumn + if instructionPointerReference is not None: + dct["instructionPointerReference"] = instructionPointerReference + dct.update(self.kwargs) + return dct + + +@register +class CompletionItem(BaseSchema): + """ + `CompletionItems` are the suggestions returned from the `completions` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "label": { + "type": "string", + "description": "The label of this completion item. By default this is also the text that is inserted when selecting this completion.", + }, + "text": { + "type": "string", + "description": "If text is returned and not an empty string, then it is inserted instead of the label.", + }, + "sortText": { + "type": "string", + "description": "A string that should be used when comparing this item with other items. If not returned or an empty string, the `label` is used instead.", + }, + "detail": { + "type": "string", + "description": "A human-readable string with additional information about this item, like type or symbol information.", + }, + "type": { + "description": "The item's type. Typically the client uses this information to render the item in the UI with an icon.", + "type": "CompletionItemType", + }, + "start": { + "type": "integer", + "description": "Start position (within the `text` attribute of the `completions` request) where the completion text is added. The position is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based. If the start position is omitted the text is added at the location specified by the `column` attribute of the `completions` request.", + }, + "length": { + "type": "integer", + "description": "Length determines how many characters are overwritten by the completion text and it is measured in UTF-16 code units. If missing the value 0 is assumed which results in the completion text being inserted.", + }, + "selectionStart": { + "type": "integer", + "description": "Determines the start of the new selection after the text has been inserted (or replaced). `selectionStart` is measured in UTF-16 code units and must be in the range 0 and length of the completion text. If omitted the selection starts at the end of the completion text.", + }, + "selectionLength": { + "type": "integer", + "description": "Determines the length of the new selection after the text has been inserted (or replaced) and it is measured in UTF-16 code units. The selection can not extend beyond the bounds of the completion text. If omitted the length is assumed to be 0.", + }, + } + __refs__ = set(["type"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + label, + text=None, + sortText=None, + detail=None, + type=None, + start=None, + length=None, + selectionStart=None, + selectionLength=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string label: The label of this completion item. By default this is also the text that is inserted when selecting this completion. + :param string text: If text is returned and not an empty string, then it is inserted instead of the label. + :param string sortText: A string that should be used when comparing this item with other items. If not returned or an empty string, the `label` is used instead. + :param string detail: A human-readable string with additional information about this item, like type or symbol information. + :param CompletionItemType type: The item's type. Typically the client uses this information to render the item in the UI with an icon. + :param integer start: Start position (within the `text` attribute of the `completions` request) where the completion text is added. The position is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based. If the start position is omitted the text is added at the location specified by the `column` attribute of the `completions` request. + :param integer length: Length determines how many characters are overwritten by the completion text and it is measured in UTF-16 code units. If missing the value 0 is assumed which results in the completion text being inserted. + :param integer selectionStart: Determines the start of the new selection after the text has been inserted (or replaced). `selectionStart` is measured in UTF-16 code units and must be in the range 0 and length of the completion text. If omitted the selection starts at the end of the completion text. + :param integer selectionLength: Determines the length of the new selection after the text has been inserted (or replaced) and it is measured in UTF-16 code units. The selection can not extend beyond the bounds of the completion text. If omitted the length is assumed to be 0. + """ + self.label = label + self.text = text + self.sortText = sortText + self.detail = detail + if type is not None: + assert type in CompletionItemType.VALID_VALUES + self.type = type + self.start = start + self.length = length + self.selectionStart = selectionStart + self.selectionLength = selectionLength + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + label = self.label + text = self.text + sortText = self.sortText + detail = self.detail + type = self.type # noqa (assign to builtin) + start = self.start + length = self.length + selectionStart = self.selectionStart + selectionLength = self.selectionLength + dct = { + "label": label, + } + if text is not None: + dct["text"] = text + if sortText is not None: + dct["sortText"] = sortText + if detail is not None: + dct["detail"] = detail + if type is not None: + dct["type"] = type + if start is not None: + dct["start"] = start + if length is not None: + dct["length"] = length + if selectionStart is not None: + dct["selectionStart"] = selectionStart + if selectionLength is not None: + dct["selectionLength"] = selectionLength + dct.update(self.kwargs) + return dct + + +@register +class CompletionItemType(BaseSchema): + """ + Some predefined types for the CompletionItem. Please note that not all clients have specific icons + for all of them. + + Note: automatically generated code. Do not edit manually. + """ + + METHOD = "method" + FUNCTION = "function" + CONSTRUCTOR = "constructor" + FIELD = "field" + VARIABLE = "variable" + CLASS = "class" + INTERFACE = "interface" + MODULE = "module" + PROPERTY = "property" + UNIT = "unit" + VALUE = "value" + ENUM = "enum" + KEYWORD = "keyword" + SNIPPET = "snippet" + TEXT = "text" + COLOR = "color" + FILE = "file" + REFERENCE = "reference" + CUSTOMCOLOR = "customcolor" + + VALID_VALUES = set( + [ + "method", + "function", + "constructor", + "field", + "variable", + "class", + "interface", + "module", + "property", + "unit", + "value", + "enum", + "keyword", + "snippet", + "text", + "color", + "file", + "reference", + "customcolor", + ] + ) + + __props__ = {} + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ """ + + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + dct = {} + dct.update(self.kwargs) + return dct + + +@register +class ChecksumAlgorithm(BaseSchema): + """ + Names of checksum algorithms that may be supported by a debug adapter. + + Note: automatically generated code. Do not edit manually. + """ + + MD5 = "MD5" + SHA1 = "SHA1" + SHA256 = "SHA256" + TIMESTAMP = "timestamp" + + VALID_VALUES = set(["MD5", "SHA1", "SHA256", "timestamp"]) + + __props__ = {} + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ """ + + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + dct = {} + dct.update(self.kwargs) + return dct + + +@register +class Checksum(BaseSchema): + """ + The checksum of an item calculated by the specified algorithm. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "algorithm": { + "description": "The algorithm used to calculate this checksum.", + "type": "ChecksumAlgorithm", + }, + "checksum": { + "type": "string", + "description": "Value of the checksum, encoded as a hexadecimal value.", + }, + } + __refs__ = set(["algorithm"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, algorithm, checksum, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param ChecksumAlgorithm algorithm: The algorithm used to calculate this checksum. + :param string checksum: Value of the checksum, encoded as a hexadecimal value. + """ + if algorithm is not None: + assert algorithm in ChecksumAlgorithm.VALID_VALUES + self.algorithm = algorithm + self.checksum = checksum + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + algorithm = self.algorithm + checksum = self.checksum + dct = { + "algorithm": algorithm, + "checksum": checksum, + } + dct.update(self.kwargs) + return dct + + +@register +class ValueFormat(BaseSchema): + """ + Provides formatting information for a value. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = {"hex": {"type": "boolean", "description": "Display the value in hex."}} + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, hex=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param boolean hex: Display the value in hex. + """ + self.hex = hex + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + hex = self.hex # noqa (assign to builtin) + dct = {} + if hex is not None: + dct["hex"] = hex + dct.update(self.kwargs) + return dct + + +@register +class StackFrameFormat(BaseSchema): + """ + Provides formatting information for a stack frame. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "hex": {"type": "boolean", "description": "Display the value in hex."}, + "parameters": { + "type": "boolean", + "description": "Displays parameters for the stack frame.", + }, + "parameterTypes": { + "type": "boolean", + "description": "Displays the types of parameters for the stack frame.", + }, + "parameterNames": { + "type": "boolean", + "description": "Displays the names of parameters for the stack frame.", + }, + "parameterValues": { + "type": "boolean", + "description": "Displays the values of parameters for the stack frame.", + }, + "line": { + "type": "boolean", + "description": "Displays the line number of the stack frame.", + }, + "module": { + "type": "boolean", + "description": "Displays the module of the stack frame.", + }, + "includeAll": { + "type": "boolean", + "description": "Includes all stack frames, including those the debug adapter might otherwise hide.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + hex=None, + parameters=None, + parameterTypes=None, + parameterNames=None, + parameterValues=None, + line=None, + module=None, + includeAll=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param boolean hex: Display the value in hex. + :param boolean parameters: Displays parameters for the stack frame. + :param boolean parameterTypes: Displays the types of parameters for the stack frame. + :param boolean parameterNames: Displays the names of parameters for the stack frame. + :param boolean parameterValues: Displays the values of parameters for the stack frame. + :param boolean line: Displays the line number of the stack frame. + :param boolean module: Displays the module of the stack frame. + :param boolean includeAll: Includes all stack frames, including those the debug adapter might otherwise hide. + """ + self.hex = hex + self.parameters = parameters + self.parameterTypes = parameterTypes + self.parameterNames = parameterNames + self.parameterValues = parameterValues + self.line = line + self.module = module + self.includeAll = includeAll + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + hex = self.hex # noqa (assign to builtin) + parameters = self.parameters + parameterTypes = self.parameterTypes + parameterNames = self.parameterNames + parameterValues = self.parameterValues + line = self.line + module = self.module + includeAll = self.includeAll + dct = {} + if hex is not None: + dct["hex"] = hex + if parameters is not None: + dct["parameters"] = parameters + if parameterTypes is not None: + dct["parameterTypes"] = parameterTypes + if parameterNames is not None: + dct["parameterNames"] = parameterNames + if parameterValues is not None: + dct["parameterValues"] = parameterValues + if line is not None: + dct["line"] = line + if module is not None: + dct["module"] = module + if includeAll is not None: + dct["includeAll"] = includeAll + dct.update(self.kwargs) + return dct + + +@register +class ExceptionFilterOptions(BaseSchema): + """ + An `ExceptionFilterOptions` is used to specify an exception filter together with a condition for the + `setExceptionBreakpoints` request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "filterId": { + "type": "string", + "description": "ID of an exception filter returned by the `exceptionBreakpointFilters` capability.", + }, + "condition": { + "type": "string", + "description": "An expression for conditional exceptions.\nThe exception breaks into the debugger if the result of the condition is True.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, filterId, condition=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string filterId: ID of an exception filter returned by the `exceptionBreakpointFilters` capability. + :param string condition: An expression for conditional exceptions. + The exception breaks into the debugger if the result of the condition is true. + """ + self.filterId = filterId + self.condition = condition + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + filterId = self.filterId + condition = self.condition + dct = { + "filterId": filterId, + } + if condition is not None: + dct["condition"] = condition + dct.update(self.kwargs) + return dct + + +@register +class ExceptionOptions(BaseSchema): + """ + An `ExceptionOptions` assigns configuration options to a set of exceptions. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "path": { + "type": "array", + "items": {"$ref": "#/definitions/ExceptionPathSegment"}, + "description": "A path that selects a single or multiple exceptions in a tree. If `path` is missing, the whole tree is selected.\nBy convention the first segment of the path is a category that is used to group exceptions in the UI.", + }, + "breakMode": { + "description": "Condition when a thrown exception should result in a break.", + "type": "ExceptionBreakMode", + }, + } + __refs__ = set(["breakMode"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, breakMode, path=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param ExceptionBreakMode breakMode: Condition when a thrown exception should result in a break. + :param array path: A path that selects a single or multiple exceptions in a tree. If `path` is missing, the whole tree is selected. + By convention the first segment of the path is a category that is used to group exceptions in the UI. + """ + if breakMode is not None: + assert breakMode in ExceptionBreakMode.VALID_VALUES + self.breakMode = breakMode + self.path = path + if update_ids_from_dap and self.path: + for o in self.path: + ExceptionPathSegment.update_dict_ids_from_dap(o) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + breakMode = self.breakMode + path = self.path + if path and hasattr(path[0], "to_dict"): + path = [x.to_dict() for x in path] + dct = { + "breakMode": breakMode, + } + if path is not None: + dct["path"] = ( + [ExceptionPathSegment.update_dict_ids_to_dap(o) for o in path] + if (update_ids_to_dap and path) + else path + ) + dct.update(self.kwargs) + return dct + + +@register +class ExceptionBreakMode(BaseSchema): + """ + This enumeration defines all possible conditions when a thrown exception should result in a break. + + never: never breaks, + + always: always breaks, + + unhandled: breaks when exception unhandled, + + userUnhandled: breaks if the exception is not handled by user code. + + Note: automatically generated code. Do not edit manually. + """ + + NEVER = "never" + ALWAYS = "always" + UNHANDLED = "unhandled" + USERUNHANDLED = "userUnhandled" + + VALID_VALUES = set(["never", "always", "unhandled", "userUnhandled"]) + + __props__ = {} + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ """ + + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + dct = {} + dct.update(self.kwargs) + return dct + + +@register +class ExceptionPathSegment(BaseSchema): + """ + An `ExceptionPathSegment` represents a segment in a path that is used to match leafs or nodes in a + tree of exceptions. + + If a segment consists of more than one name, it matches the names provided if `negate` is false or + missing, or it matches anything except the names provided if `negate` is true. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "negate": { + "type": "boolean", + "description": "If false or missing this segment matches the names provided, otherwise it matches anything except the names provided.", + }, + "names": { + "type": "array", + "items": {"type": "string"}, + "description": "Depending on the value of `negate` the names that should match or not match.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, names, negate=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param array names: Depending on the value of `negate` the names that should match or not match. + :param boolean negate: If false or missing this segment matches the names provided, otherwise it matches anything except the names provided. + """ + self.names = names + self.negate = negate + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + names = self.names + if names and hasattr(names[0], "to_dict"): + names = [x.to_dict() for x in names] + negate = self.negate + dct = { + "names": names, + } + if negate is not None: + dct["negate"] = negate + dct.update(self.kwargs) + return dct + + +@register +class ExceptionDetails(BaseSchema): + """ + Detailed information about an exception that has occurred. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "message": { + "type": "string", + "description": "Message contained in the exception.", + }, + "typeName": { + "type": "string", + "description": "Short type name of the exception object.", + }, + "fullTypeName": { + "type": "string", + "description": "Fully-qualified type name of the exception object.", + }, + "evaluateName": { + "type": "string", + "description": "An expression that can be evaluated in the current scope to obtain the exception object.", + }, + "stackTrace": { + "type": "string", + "description": "Stack trace at the time the exception was thrown.", + }, + "innerException": { + "type": "array", + "items": {"$ref": "#/definitions/ExceptionDetails"}, + "description": "Details of the exception contained by this exception, if any.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + message=None, + typeName=None, + fullTypeName=None, + evaluateName=None, + stackTrace=None, + innerException=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string message: Message contained in the exception. + :param string typeName: Short type name of the exception object. + :param string fullTypeName: Fully-qualified type name of the exception object. + :param string evaluateName: An expression that can be evaluated in the current scope to obtain the exception object. + :param string stackTrace: Stack trace at the time the exception was thrown. + :param array innerException: Details of the exception contained by this exception, if any. + """ + self.message = message + self.typeName = typeName + self.fullTypeName = fullTypeName + self.evaluateName = evaluateName + self.stackTrace = stackTrace + self.innerException = innerException + if update_ids_from_dap and self.innerException: + for o in self.innerException: + ExceptionDetails.update_dict_ids_from_dap(o) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + message = self.message + typeName = self.typeName + fullTypeName = self.fullTypeName + evaluateName = self.evaluateName + stackTrace = self.stackTrace + innerException = self.innerException + if innerException and hasattr(innerException[0], "to_dict"): + innerException = [x.to_dict() for x in innerException] + dct = {} + if message is not None: + dct["message"] = message + if typeName is not None: + dct["typeName"] = typeName + if fullTypeName is not None: + dct["fullTypeName"] = fullTypeName + if evaluateName is not None: + dct["evaluateName"] = evaluateName + if stackTrace is not None: + dct["stackTrace"] = stackTrace + if innerException is not None: + dct["innerException"] = ( + [ExceptionDetails.update_dict_ids_to_dap(o) for o in innerException] + if (update_ids_to_dap and innerException) + else innerException + ) + dct.update(self.kwargs) + return dct + + +@register +class DisassembledInstruction(BaseSchema): + """ + Represents a single disassembled instruction. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "address": { + "type": "string", + "description": "The address of the instruction. Treated as a hex value if prefixed with `0x`, or as a decimal value otherwise.", + }, + "instructionBytes": { + "type": "string", + "description": "Raw bytes representing the instruction and its operands, in an implementation-defined format.", + }, + "instruction": { + "type": "string", + "description": "Text representing the instruction and its operands, in an implementation-defined format.", + }, + "symbol": { + "type": "string", + "description": "Name of the symbol that corresponds with the location of this instruction, if any.", + }, + "location": { + "description": "Source location that corresponds to this instruction, if any.\nShould always be set (if available) on the first instruction returned,\nbut can be omitted afterwards if this instruction maps to the same source file as the previous instruction.", + "type": "Source", + }, + "line": { + "type": "integer", + "description": "The line within the source location that corresponds to this instruction, if any.", + }, + "column": { + "type": "integer", + "description": "The column within the line that corresponds to this instruction, if any.", + }, + "endLine": { + "type": "integer", + "description": "The end line of the range that corresponds to this instruction, if any.", + }, + "endColumn": { + "type": "integer", + "description": "The end column of the range that corresponds to this instruction, if any.", + }, + "presentationHint": { + "type": "string", + "description": "A hint for how to present the instruction in the UI.\n\nA value of `invalid` may be used to indicate this instruction is 'filler' and cannot be reached by the program. For example, unreadable memory addresses may be presented is 'invalid.'", + "enum": ["normal", "invalid"], + }, + } + __refs__ = set(["location"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + address, + instruction, + instructionBytes=None, + symbol=None, + location=None, + line=None, + column=None, + endLine=None, + endColumn=None, + presentationHint=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string address: The address of the instruction. Treated as a hex value if prefixed with `0x`, or as a decimal value otherwise. + :param string instruction: Text representing the instruction and its operands, in an implementation-defined format. + :param string instructionBytes: Raw bytes representing the instruction and its operands, in an implementation-defined format. + :param string symbol: Name of the symbol that corresponds with the location of this instruction, if any. + :param Source location: Source location that corresponds to this instruction, if any. + Should always be set (if available) on the first instruction returned, + but can be omitted afterwards if this instruction maps to the same source file as the previous instruction. + :param integer line: The line within the source location that corresponds to this instruction, if any. + :param integer column: The column within the line that corresponds to this instruction, if any. + :param integer endLine: The end line of the range that corresponds to this instruction, if any. + :param integer endColumn: The end column of the range that corresponds to this instruction, if any. + :param string presentationHint: A hint for how to present the instruction in the UI. + + A value of `invalid` may be used to indicate this instruction is 'filler' and cannot be reached by the program. For example, unreadable memory addresses may be presented is 'invalid.' + """ + self.address = address + self.instruction = instruction + self.instructionBytes = instructionBytes + self.symbol = symbol + if location is None: + self.location = Source() + else: + self.location = ( + Source(update_ids_from_dap=update_ids_from_dap, **location) + if location.__class__ != Source + else location + ) + self.line = line + self.column = column + self.endLine = endLine + self.endColumn = endColumn + self.presentationHint = presentationHint + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + address = self.address + instruction = self.instruction + instructionBytes = self.instructionBytes + symbol = self.symbol + location = self.location + line = self.line + column = self.column + endLine = self.endLine + endColumn = self.endColumn + presentationHint = self.presentationHint + dct = { + "address": address, + "instruction": instruction, + } + if instructionBytes is not None: + dct["instructionBytes"] = instructionBytes + if symbol is not None: + dct["symbol"] = symbol + if location is not None: + dct["location"] = location.to_dict(update_ids_to_dap=update_ids_to_dap) + if line is not None: + dct["line"] = line + if column is not None: + dct["column"] = column + if endLine is not None: + dct["endLine"] = endLine + if endColumn is not None: + dct["endColumn"] = endColumn + if presentationHint is not None: + dct["presentationHint"] = presentationHint + dct.update(self.kwargs) + return dct + + +@register +class InvalidatedAreas(BaseSchema): + """ + Logical areas that can be invalidated by the `invalidated` event. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = {} + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ """ + + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + dct = {} + dct.update(self.kwargs) + return dct + + +@register_request("setDebuggerProperty") +@register +class SetDebuggerPropertyRequest(BaseSchema): + """ + The request can be used to enable or disable debugger features. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["setDebuggerProperty"]}, + "arguments": {"type": "SetDebuggerPropertyArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param SetDebuggerPropertyArguments arguments: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "request" + self.command = "setDebuggerProperty" + if arguments is None: + self.arguments = SetDebuggerPropertyArguments() + else: + self.arguments = ( + SetDebuggerPropertyArguments( + update_ids_from_dap=update_ids_from_dap, **arguments + ) + if arguments.__class__ != SetDebuggerPropertyArguments + else arguments + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + arguments = self.arguments + seq = self.seq + dct = { + "type": type, + "command": command, + "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register +class SetDebuggerPropertyArguments(BaseSchema): + """ + Arguments for 'setDebuggerProperty' request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "ideOS": { + "type": ["string"], + "description": "OS where the ide is running. Supported values [Windows, Linux]", + }, + "dontTraceStartPatterns": { + "type": ["array"], + "description": "Patterns to match with the start of the file paths. Matching paths will be added to a list of file where trace is ignored.", + }, + "dontTraceEndPatterns": { + "type": ["array"], + "description": "Patterns to match with the end of the file paths. Matching paths will be added to a list of file where trace is ignored.", + }, + "skipSuspendOnBreakpointException": { + "type": ["array"], + "description": "List of exceptions that should be skipped when doing condition evaluations.", + }, + "skipPrintBreakpointException": { + "type": ["array"], + "description": "List of exceptions that should skip printing to stderr when doing condition evaluations.", + }, + "multiThreadsSingleNotification": { + "type": ["boolean"], + "description": "If false then a notification is generated for each thread event. If True a single event is gnenerated, and all threads follow that behavior.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + ideOS=None, + dontTraceStartPatterns=None, + dontTraceEndPatterns=None, + skipSuspendOnBreakpointException=None, + skipPrintBreakpointException=None, + multiThreadsSingleNotification=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param ['string'] ideOS: OS where the ide is running. Supported values [Windows, Linux] + :param ['array'] dontTraceStartPatterns: Patterns to match with the start of the file paths. Matching paths will be added to a list of file where trace is ignored. + :param ['array'] dontTraceEndPatterns: Patterns to match with the end of the file paths. Matching paths will be added to a list of file where trace is ignored. + :param ['array'] skipSuspendOnBreakpointException: List of exceptions that should be skipped when doing condition evaluations. + :param ['array'] skipPrintBreakpointException: List of exceptions that should skip printing to stderr when doing condition evaluations. + :param ['boolean'] multiThreadsSingleNotification: If false then a notification is generated for each thread event. If true a single event is gnenerated, and all threads follow that behavior. + """ + self.ideOS = ideOS + self.dontTraceStartPatterns = dontTraceStartPatterns + self.dontTraceEndPatterns = dontTraceEndPatterns + self.skipSuspendOnBreakpointException = skipSuspendOnBreakpointException + self.skipPrintBreakpointException = skipPrintBreakpointException + self.multiThreadsSingleNotification = multiThreadsSingleNotification + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + ideOS = self.ideOS + dontTraceStartPatterns = self.dontTraceStartPatterns + dontTraceEndPatterns = self.dontTraceEndPatterns + skipSuspendOnBreakpointException = self.skipSuspendOnBreakpointException + skipPrintBreakpointException = self.skipPrintBreakpointException + multiThreadsSingleNotification = self.multiThreadsSingleNotification + dct = {} + if ideOS is not None: + dct["ideOS"] = ideOS + if dontTraceStartPatterns is not None: + dct["dontTraceStartPatterns"] = dontTraceStartPatterns + if dontTraceEndPatterns is not None: + dct["dontTraceEndPatterns"] = dontTraceEndPatterns + if skipSuspendOnBreakpointException is not None: + dct["skipSuspendOnBreakpointException"] = skipSuspendOnBreakpointException + if skipPrintBreakpointException is not None: + dct["skipPrintBreakpointException"] = skipPrintBreakpointException + if multiThreadsSingleNotification is not None: + dct["multiThreadsSingleNotification"] = multiThreadsSingleNotification + dct.update(self.kwargs) + return dct + + +@register_response("setDebuggerProperty") +@register +class SetDebuggerPropertyResponse(BaseSchema): + """ + Response to 'setDebuggerProperty' request. This is just an acknowledgement, so no body field is + required. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": [ + "array", + "boolean", + "integer", + "null", + "number", + "object", + "string", + ], + "description": "Contains request result if success is True and error details if success is false.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + seq=-1, + message=None, + body=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and error details if success is false. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + self.seq = seq + self.message = message + self.body = body + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + seq = self.seq + message = self.message + body = self.body + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "seq": seq, + } + if message is not None: + dct["message"] = message + if body is not None: + dct["body"] = body + dct.update(self.kwargs) + return dct + + +@register_event("pydevdInputRequested") +@register +class PydevdInputRequestedEvent(BaseSchema): + """ + The event indicates input was requested by debuggee. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["event"]}, + "event": {"type": "string", "enum": ["pydevdInputRequested"]}, + "body": { + "type": [ + "array", + "boolean", + "integer", + "null", + "number", + "object", + "string", + ], + "description": "Event-specific information.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, seq=-1, body=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string event: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Event-specific information. + """ + self.type = "event" + self.event = "pydevdInputRequested" + self.seq = seq + self.body = body + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + event = self.event + seq = self.seq + body = self.body + dct = { + "type": type, + "event": event, + "seq": seq, + } + if body is not None: + dct["body"] = body + dct.update(self.kwargs) + return dct + + +@register_request("setPydevdSourceMap") +@register +class SetPydevdSourceMapRequest(BaseSchema): + """ + Sets multiple PydevdSourceMap for a single source and clears all previous PydevdSourceMap in that + source. + + i.e.: Maps paths and lines in a 1:N mapping (use case: map a single file in the IDE to multiple + IPython cells). + + To clear all PydevdSourceMap for a source, specify an empty array. + + Interaction with breakpoints: When a new mapping is sent, breakpoints that match the source (or + previously matched a source) are reapplied. + + Interaction with launch pathMapping: both mappings are independent. This mapping is applied after + the launch pathMapping. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["setPydevdSourceMap"]}, + "arguments": {"type": "SetPydevdSourceMapArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param SetPydevdSourceMapArguments arguments: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "request" + self.command = "setPydevdSourceMap" + if arguments is None: + self.arguments = SetPydevdSourceMapArguments() + else: + self.arguments = ( + SetPydevdSourceMapArguments( + update_ids_from_dap=update_ids_from_dap, **arguments + ) + if arguments.__class__ != SetPydevdSourceMapArguments + else arguments + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + arguments = self.arguments + seq = self.seq + dct = { + "type": type, + "command": command, + "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register +class SetPydevdSourceMapArguments(BaseSchema): + """ + Arguments for 'setPydevdSourceMap' request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "source": { + "description": "The source location of the PydevdSourceMap; 'source.path' must be specified (e.g.: for an ipython notebook this could be something as /home/notebook/note.py).", + "type": "Source", + }, + "pydevdSourceMaps": { + "type": "array", + "items": {"$ref": "#/definitions/PydevdSourceMap"}, + "description": "The PydevdSourceMaps to be set to the given source (provide an empty array to clear the source mappings for a given path).", + }, + } + __refs__ = set(["source"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, source, pydevdSourceMaps=None, update_ids_from_dap=False, **kwargs + ): # noqa (update_ids_from_dap may be unused) + """ + :param Source source: The source location of the PydevdSourceMap; 'source.path' must be specified (e.g.: for an ipython notebook this could be something as /home/notebook/note.py). + :param array pydevdSourceMaps: The PydevdSourceMaps to be set to the given source (provide an empty array to clear the source mappings for a given path). + """ + if source is None: + self.source = Source() + else: + self.source = ( + Source(update_ids_from_dap=update_ids_from_dap, **source) + if source.__class__ != Source + else source + ) + self.pydevdSourceMaps = pydevdSourceMaps + if update_ids_from_dap and self.pydevdSourceMaps: + for o in self.pydevdSourceMaps: + PydevdSourceMap.update_dict_ids_from_dap(o) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + source = self.source + pydevdSourceMaps = self.pydevdSourceMaps + if pydevdSourceMaps and hasattr(pydevdSourceMaps[0], "to_dict"): + pydevdSourceMaps = [x.to_dict() for x in pydevdSourceMaps] + dct = { + "source": source.to_dict(update_ids_to_dap=update_ids_to_dap), + } + if pydevdSourceMaps is not None: + dct["pydevdSourceMaps"] = ( + [PydevdSourceMap.update_dict_ids_to_dap(o) for o in pydevdSourceMaps] + if (update_ids_to_dap and pydevdSourceMaps) + else pydevdSourceMaps + ) + dct.update(self.kwargs) + return dct + + +@register_response("setPydevdSourceMap") +@register +class SetPydevdSourceMapResponse(BaseSchema): + """ + Response to 'setPydevdSourceMap' request. This is just an acknowledgement, so no body field is + required. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": [ + "array", + "boolean", + "integer", + "null", + "number", + "object", + "string", + ], + "description": "Contains request result if success is True and error details if success is false.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + seq=-1, + message=None, + body=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] body: Contains request result if success is true and error details if success is false. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + self.seq = seq + self.message = message + self.body = body + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + seq = self.seq + message = self.message + body = self.body + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "seq": seq, + } + if message is not None: + dct["message"] = message + if body is not None: + dct["body"] = body + dct.update(self.kwargs) + return dct + + +@register +class PydevdSourceMap(BaseSchema): + """ + Information that allows mapping a local line to a remote source/line. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "line": { + "type": "integer", + "description": "The local line to which the mapping should map to (e.g.: for an ipython notebook this would be the first line of the cell in the file).", + }, + "endLine": {"type": "integer", "description": "The end line."}, + "runtimeSource": { + "description": "The path that the user has remotely -- 'source.path' must be specified (e.g.: for an ipython notebook this could be something as '')", + "type": "Source", + }, + "runtimeLine": { + "type": "integer", + "description": "The remote line to which the mapping should map to (e.g.: for an ipython notebook this would be always 1 as it'd map the start of the cell).", + }, + } + __refs__ = set(["runtimeSource"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + line, + endLine, + runtimeSource, + runtimeLine, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param integer line: The local line to which the mapping should map to (e.g.: for an ipython notebook this would be the first line of the cell in the file). + :param integer endLine: The end line. + :param Source runtimeSource: The path that the user has remotely -- 'source.path' must be specified (e.g.: for an ipython notebook this could be something as '') + :param integer runtimeLine: The remote line to which the mapping should map to (e.g.: for an ipython notebook this would be always 1 as it'd map the start of the cell). + """ + self.line = line + self.endLine = endLine + if runtimeSource is None: + self.runtimeSource = Source() + else: + self.runtimeSource = ( + Source(update_ids_from_dap=update_ids_from_dap, **runtimeSource) + if runtimeSource.__class__ != Source + else runtimeSource + ) + self.runtimeLine = runtimeLine + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + line = self.line + endLine = self.endLine + runtimeSource = self.runtimeSource + runtimeLine = self.runtimeLine + dct = { + "line": line, + "endLine": endLine, + "runtimeSource": runtimeSource.to_dict(update_ids_to_dap=update_ids_to_dap), + "runtimeLine": runtimeLine, + } + dct.update(self.kwargs) + return dct + + +@register_request("pydevdSystemInfo") +@register +class PydevdSystemInfoRequest(BaseSchema): + """ + The request can be used retrieve system information, python version, etc. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["pydevdSystemInfo"]}, + "arguments": {"type": "PydevdSystemInfoArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, seq=-1, arguments=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param PydevdSystemInfoArguments arguments: + """ + self.type = "request" + self.command = "pydevdSystemInfo" + self.seq = seq + if arguments is None: + self.arguments = PydevdSystemInfoArguments() + else: + self.arguments = ( + PydevdSystemInfoArguments( + update_ids_from_dap=update_ids_from_dap, **arguments + ) + if arguments.__class__ != PydevdSystemInfoArguments + else arguments + ) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + seq = self.seq + arguments = self.arguments + dct = { + "type": type, + "command": command, + "seq": seq, + } + if arguments is not None: + dct["arguments"] = arguments.to_dict(update_ids_to_dap=update_ids_to_dap) + dct.update(self.kwargs) + return dct + + +@register +class PydevdSystemInfoArguments(BaseSchema): + """ + Arguments for 'pydevdSystemInfo' request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = {} + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ """ + + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + dct = {} + dct.update(self.kwargs) + return dct + + +@register_response("pydevdSystemInfo") +@register +class PydevdSystemInfoResponse(BaseSchema): + """ + Response to 'pydevdSystemInfo' request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": "object", + "properties": { + "python": { + "$ref": "#/definitions/PydevdPythonInfo", + "description": "Information about the python version running in the current process.", + }, + "platform": { + "$ref": "#/definitions/PydevdPlatformInfo", + "description": "Information about the plarforn on which the current process is running.", + }, + "process": { + "$ref": "#/definitions/PydevdProcessInfo", + "description": "Information about the current process.", + }, + "pydevd": { + "$ref": "#/definitions/PydevdInfo", + "description": "Information about pydevd.", + }, + }, + "required": ["python", "platform", "process", "pydevd"], + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + body, + seq=-1, + message=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param PydevdSystemInfoResponseBody body: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + if body is None: + self.body = PydevdSystemInfoResponseBody() + else: + self.body = ( + PydevdSystemInfoResponseBody( + update_ids_from_dap=update_ids_from_dap, **body + ) + if body.__class__ != PydevdSystemInfoResponseBody + else body + ) + self.seq = seq + self.message = message + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + body = self.body + seq = self.seq + message = self.message + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "body": body.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + if message is not None: + dct["message"] = message + dct.update(self.kwargs) + return dct + + +@register +class PydevdPythonInfo(BaseSchema): + """ + This object contains python version and implementation details. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "version": { + "type": "string", + "description": "Python version as a string in semver format: ...", + }, + "implementation": { + "description": "Python version as a string in this format ...", + "type": "PydevdPythonImplementationInfo", + }, + } + __refs__ = set(["implementation"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, version=None, implementation=None, update_ids_from_dap=False, **kwargs + ): # noqa (update_ids_from_dap may be unused) + """ + :param string version: Python version as a string in semver format: ... + :param PydevdPythonImplementationInfo implementation: Python version as a string in this format ... + """ + self.version = version + if implementation is None: + self.implementation = PydevdPythonImplementationInfo() + else: + self.implementation = ( + PydevdPythonImplementationInfo( + update_ids_from_dap=update_ids_from_dap, **implementation + ) + if implementation.__class__ != PydevdPythonImplementationInfo + else implementation + ) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + version = self.version + implementation = self.implementation + dct = {} + if version is not None: + dct["version"] = version + if implementation is not None: + dct["implementation"] = implementation.to_dict( + update_ids_to_dap=update_ids_to_dap + ) + dct.update(self.kwargs) + return dct + + +@register +class PydevdPythonImplementationInfo(BaseSchema): + """ + This object contains python implementation details. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "name": {"type": "string", "description": "Python implementation name."}, + "version": { + "type": "string", + "description": "Python version as a string in semver format: ...", + }, + "description": { + "type": "string", + "description": "Optional description for this python implementation.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + name=None, + version=None, + description=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string name: Python implementation name. + :param string version: Python version as a string in semver format: ... + :param string description: Optional description for this python implementation. + """ + self.name = name + self.version = version + self.description = description + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + name = self.name + version = self.version + description = self.description + dct = {} + if name is not None: + dct["name"] = name + if version is not None: + dct["version"] = version + if description is not None: + dct["description"] = description + dct.update(self.kwargs) + return dct + + +@register +class PydevdPlatformInfo(BaseSchema): + """ + This object contains python version and implementation details. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "name": { + "type": "string", + "description": "Name of the platform as returned by 'sys.platform'.", + } + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, name=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string name: Name of the platform as returned by 'sys.platform'. + """ + self.name = name + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + name = self.name + dct = {} + if name is not None: + dct["name"] = name + dct.update(self.kwargs) + return dct + + +@register +class PydevdProcessInfo(BaseSchema): + """ + This object contains python process details. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "pid": { + "type": "integer", + "description": "Process ID for the current process.", + }, + "ppid": { + "type": "integer", + "description": "Parent Process ID for the current process.", + }, + "executable": { + "type": "string", + "description": "Path to the executable as returned by 'sys.executable'.", + }, + "bitness": { + "type": "integer", + "description": "Integer value indicating the bitness of the current process.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + pid=None, + ppid=None, + executable=None, + bitness=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param integer pid: Process ID for the current process. + :param integer ppid: Parent Process ID for the current process. + :param string executable: Path to the executable as returned by 'sys.executable'. + :param integer bitness: Integer value indicating the bitness of the current process. + """ + self.pid = pid + self.ppid = ppid + self.executable = executable + self.bitness = bitness + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + pid = self.pid + ppid = self.ppid + executable = self.executable + bitness = self.bitness + dct = {} + if pid is not None: + dct["pid"] = pid + if ppid is not None: + dct["ppid"] = ppid + if executable is not None: + dct["executable"] = executable + if bitness is not None: + dct["bitness"] = bitness + dct.update(self.kwargs) + return dct + + +@register +class PydevdInfo(BaseSchema): + """ + This object contains details on pydevd. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "usingCython": { + "type": "boolean", + "description": "Specifies whether the cython native module is being used.", + }, + "usingFrameEval": { + "type": "boolean", + "description": "Specifies whether the frame eval native module is being used.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, usingCython=None, usingFrameEval=None, update_ids_from_dap=False, **kwargs + ): # noqa (update_ids_from_dap may be unused) + """ + :param boolean usingCython: Specifies whether the cython native module is being used. + :param boolean usingFrameEval: Specifies whether the frame eval native module is being used. + """ + self.usingCython = usingCython + self.usingFrameEval = usingFrameEval + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + usingCython = self.usingCython + usingFrameEval = self.usingFrameEval + dct = {} + if usingCython is not None: + dct["usingCython"] = usingCython + if usingFrameEval is not None: + dct["usingFrameEval"] = usingFrameEval + dct.update(self.kwargs) + return dct + + +@register_request("pydevdAuthorize") +@register +class PydevdAuthorizeRequest(BaseSchema): + """ + A request to authorize the ide to start accepting commands. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["request"]}, + "command": {"type": "string", "enum": ["pydevdAuthorize"]}, + "arguments": {"type": "PydevdAuthorizeArguments"}, + } + __refs__ = set(["arguments"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, arguments, seq=-1, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param string command: + :param PydevdAuthorizeArguments arguments: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + """ + self.type = "request" + self.command = "pydevdAuthorize" + if arguments is None: + self.arguments = PydevdAuthorizeArguments() + else: + self.arguments = ( + PydevdAuthorizeArguments( + update_ids_from_dap=update_ids_from_dap, **arguments + ) + if arguments.__class__ != PydevdAuthorizeArguments + else arguments + ) + self.seq = seq + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + command = self.command + arguments = self.arguments + seq = self.seq + dct = { + "type": type, + "command": command, + "arguments": arguments.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + dct.update(self.kwargs) + return dct + + +@register +class PydevdAuthorizeArguments(BaseSchema): + """ + Arguments for 'pydevdAuthorize' request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "debugServerAccessToken": { + "type": "string", + "description": "The access token to access the debug server.", + } + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, debugServerAccessToken=None, update_ids_from_dap=False, **kwargs + ): # noqa (update_ids_from_dap may be unused) + """ + :param string debugServerAccessToken: The access token to access the debug server. + """ + self.debugServerAccessToken = debugServerAccessToken + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + debugServerAccessToken = self.debugServerAccessToken + dct = {} + if debugServerAccessToken is not None: + dct["debugServerAccessToken"] = debugServerAccessToken + dct.update(self.kwargs) + return dct + + +@register_response("pydevdAuthorize") +@register +class PydevdAuthorizeResponse(BaseSchema): + """ + Response to 'pydevdAuthorize' request. + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "seq": { + "type": "integer", + "description": "Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request.", + }, + "type": {"type": "string", "enum": ["response"]}, + "request_seq": { + "type": "integer", + "description": "Sequence number of the corresponding request.", + }, + "success": { + "type": "boolean", + "description": "Outcome of the request.\nIf True, the request was successful and the `body` attribute may contain the result of the request.\nIf the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`).", + }, + "command": {"type": "string", "description": "The command requested."}, + "message": { + "type": "string", + "description": "Contains the raw error in short form if `success` is false.\nThis raw error might be interpreted by the client and is not shown in the UI.\nSome predefined values exist.", + "_enum": ["cancelled", "notStopped"], + "enumDescriptions": [ + "the request was cancelled.", + "the request may be retried once the adapter is in a 'stopped' state.", + ], + }, + "body": { + "type": "object", + "properties": { + "clientAccessToken": { + "type": "string", + "description": "The access token to access the client (i.e.: usually the IDE).", + } + }, + "required": ["clientAccessToken"], + }, + } + __refs__ = set(["body"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + request_seq, + success, + command, + body, + seq=-1, + message=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string type: + :param integer request_seq: Sequence number of the corresponding request. + :param boolean success: Outcome of the request. + If true, the request was successful and the `body` attribute may contain the result of the request. + If the value is false, the attribute `message` contains the error in short form and the `body` may contain additional information (see `ErrorResponse.body.error`). + :param string command: The command requested. + :param PydevdAuthorizeResponseBody body: + :param integer seq: Sequence number of the message (also known as message ID). The `seq` for the first message sent by a client or debug adapter is 1, and for each subsequent message is 1 greater than the previous message sent by that actor. `seq` can be used to order requests, responses, and events, and to associate requests with their corresponding responses. For protocol messages of type `request` the sequence number can be used to cancel the request. + :param string message: Contains the raw error in short form if `success` is false. + This raw error might be interpreted by the client and is not shown in the UI. + Some predefined values exist. + """ + self.type = "response" + self.request_seq = request_seq + self.success = success + self.command = command + if body is None: + self.body = PydevdAuthorizeResponseBody() + else: + self.body = ( + PydevdAuthorizeResponseBody( + update_ids_from_dap=update_ids_from_dap, **body + ) + if body.__class__ != PydevdAuthorizeResponseBody + else body + ) + self.seq = seq + self.message = message + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + type = self.type # noqa (assign to builtin) + request_seq = self.request_seq + success = self.success + command = self.command + body = self.body + seq = self.seq + message = self.message + dct = { + "type": type, + "request_seq": request_seq, + "success": success, + "command": command, + "body": body.to_dict(update_ids_to_dap=update_ids_to_dap), + "seq": seq, + } + if message is not None: + dct["message"] = message + dct.update(self.kwargs) + return dct + + +@register +class ErrorResponseBody(BaseSchema): + """ + "body" of ErrorResponse + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "error": {"description": "A structured error message.", "type": "Message"} + } + __refs__ = set(["error"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, error=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param Message error: A structured error message. + """ + if error is None: + self.error = Message() + else: + self.error = ( + Message(update_ids_from_dap=update_ids_from_dap, **error) + if error.__class__ != Message + else error + ) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + error = self.error + dct = {} + if error is not None: + dct["error"] = error.to_dict(update_ids_to_dap=update_ids_to_dap) + dct.update(self.kwargs) + return dct + + +@register +class StoppedEventBody(BaseSchema): + """ + "body" of StoppedEvent + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "reason": { + "type": "string", + "description": "The reason for the event.\nFor backward compatibility this string is shown in the UI if the `description` attribute is missing (but it must not be translated).", + "_enum": [ + "step", + "breakpoint", + "exception", + "pause", + "entry", + "goto", + "function breakpoint", + "data breakpoint", + "instruction breakpoint", + ], + }, + "description": { + "type": "string", + "description": "The full reason for the event, e.g. 'Paused on exception'. This string is shown in the UI as is and can be translated.", + }, + "threadId": {"type": "integer", "description": "The thread which was stopped."}, + "preserveFocusHint": { + "type": "boolean", + "description": "A value of True hints to the client that this event should not change the focus.", + }, + "text": { + "type": "string", + "description": "Additional information. E.g. if reason is `exception`, text contains the exception name. This string is shown in the UI.", + }, + "allThreadsStopped": { + "type": "boolean", + "description": "If `allThreadsStopped` is True, a debug adapter can announce that all threads have stopped.\n- The client should use this information to enable that all threads can be expanded to access their stacktraces.\n- If the attribute is missing or false, only the thread with the given `threadId` can be expanded.", + }, + "hitBreakpointIds": { + "type": "array", + "items": {"type": "integer"}, + "description": "Ids of the breakpoints that triggered the event. In most cases there is only a single breakpoint but here are some examples for multiple breakpoints:\n- Different types of breakpoints map to the same location.\n- Multiple source breakpoints get collapsed to the same instruction by the compiler/runtime.\n- Multiple function breakpoints with different function names map to the same location.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + reason, + description=None, + threadId=None, + preserveFocusHint=None, + text=None, + allThreadsStopped=None, + hitBreakpointIds=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string reason: The reason for the event. + For backward compatibility this string is shown in the UI if the `description` attribute is missing (but it must not be translated). + :param string description: The full reason for the event, e.g. 'Paused on exception'. This string is shown in the UI as is and can be translated. + :param integer threadId: The thread which was stopped. + :param boolean preserveFocusHint: A value of true hints to the client that this event should not change the focus. + :param string text: Additional information. E.g. if reason is `exception`, text contains the exception name. This string is shown in the UI. + :param boolean allThreadsStopped: If `allThreadsStopped` is true, a debug adapter can announce that all threads have stopped. + - The client should use this information to enable that all threads can be expanded to access their stacktraces. + - If the attribute is missing or false, only the thread with the given `threadId` can be expanded. + :param array hitBreakpointIds: Ids of the breakpoints that triggered the event. In most cases there is only a single breakpoint but here are some examples for multiple breakpoints: + - Different types of breakpoints map to the same location. + - Multiple source breakpoints get collapsed to the same instruction by the compiler/runtime. + - Multiple function breakpoints with different function names map to the same location. + """ + self.reason = reason + self.description = description + self.threadId = threadId + self.preserveFocusHint = preserveFocusHint + self.text = text + self.allThreadsStopped = allThreadsStopped + self.hitBreakpointIds = hitBreakpointIds + if update_ids_from_dap: + self.threadId = self._translate_id_from_dap(self.threadId) + self.kwargs = kwargs + + @classmethod + def update_dict_ids_from_dap(cls, dct): + if "threadId" in dct: + dct["threadId"] = cls._translate_id_from_dap(dct["threadId"]) + return dct + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + reason = self.reason + description = self.description + threadId = self.threadId + preserveFocusHint = self.preserveFocusHint + text = self.text + allThreadsStopped = self.allThreadsStopped + hitBreakpointIds = self.hitBreakpointIds + if hitBreakpointIds and hasattr(hitBreakpointIds[0], "to_dict"): + hitBreakpointIds = [x.to_dict() for x in hitBreakpointIds] + if update_ids_to_dap: + if threadId is not None: + threadId = self._translate_id_to_dap(threadId) + dct = { + "reason": reason, + } + if description is not None: + dct["description"] = description + if threadId is not None: + dct["threadId"] = threadId + if preserveFocusHint is not None: + dct["preserveFocusHint"] = preserveFocusHint + if text is not None: + dct["text"] = text + if allThreadsStopped is not None: + dct["allThreadsStopped"] = allThreadsStopped + if hitBreakpointIds is not None: + dct["hitBreakpointIds"] = hitBreakpointIds + dct.update(self.kwargs) + return dct + + @classmethod + def update_dict_ids_to_dap(cls, dct): + if "threadId" in dct: + dct["threadId"] = cls._translate_id_to_dap(dct["threadId"]) + return dct + + +@register +class ContinuedEventBody(BaseSchema): + """ + "body" of ContinuedEvent + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "threadId": { + "type": "integer", + "description": "The thread which was continued.", + }, + "allThreadsContinued": { + "type": "boolean", + "description": "If `allThreadsContinued` is True, a debug adapter can announce that all threads have continued.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, threadId, allThreadsContinued=None, update_ids_from_dap=False, **kwargs + ): # noqa (update_ids_from_dap may be unused) + """ + :param integer threadId: The thread which was continued. + :param boolean allThreadsContinued: If `allThreadsContinued` is true, a debug adapter can announce that all threads have continued. + """ + self.threadId = threadId + self.allThreadsContinued = allThreadsContinued + if update_ids_from_dap: + self.threadId = self._translate_id_from_dap(self.threadId) + self.kwargs = kwargs + + @classmethod + def update_dict_ids_from_dap(cls, dct): + if "threadId" in dct: + dct["threadId"] = cls._translate_id_from_dap(dct["threadId"]) + return dct + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + threadId = self.threadId + allThreadsContinued = self.allThreadsContinued + if update_ids_to_dap: + if threadId is not None: + threadId = self._translate_id_to_dap(threadId) + dct = { + "threadId": threadId, + } + if allThreadsContinued is not None: + dct["allThreadsContinued"] = allThreadsContinued + dct.update(self.kwargs) + return dct + + @classmethod + def update_dict_ids_to_dap(cls, dct): + if "threadId" in dct: + dct["threadId"] = cls._translate_id_to_dap(dct["threadId"]) + return dct + + +@register +class ExitedEventBody(BaseSchema): + """ + "body" of ExitedEvent + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "exitCode": { + "type": "integer", + "description": "The exit code returned from the debuggee.", + } + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, exitCode, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param integer exitCode: The exit code returned from the debuggee. + """ + self.exitCode = exitCode + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + exitCode = self.exitCode + dct = { + "exitCode": exitCode, + } + dct.update(self.kwargs) + return dct + + +@register +class TerminatedEventBody(BaseSchema): + """ + "body" of TerminatedEvent + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "restart": { + "type": [ + "array", + "boolean", + "integer", + "null", + "number", + "object", + "string", + ], + "description": "A debug adapter may set `restart` to True (or to an arbitrary object) to request that the client restarts the session.\nThe value is not interpreted by the client and passed unmodified as an attribute `__restart` to the `launch` and `attach` requests.", + } + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, restart=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] restart: A debug adapter may set `restart` to true (or to an arbitrary object) to request that the client restarts the session. + The value is not interpreted by the client and passed unmodified as an attribute `__restart` to the `launch` and `attach` requests. + """ + self.restart = restart + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + restart = self.restart + dct = {} + if restart is not None: + dct["restart"] = restart + dct.update(self.kwargs) + return dct + + +@register +class ThreadEventBody(BaseSchema): + """ + "body" of ThreadEvent + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "reason": { + "type": "string", + "description": "The reason for the event.", + "_enum": ["started", "exited"], + }, + "threadId": {"type": "integer", "description": "The identifier of the thread."}, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, reason, threadId, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string reason: The reason for the event. + :param integer threadId: The identifier of the thread. + """ + self.reason = reason + self.threadId = threadId + if update_ids_from_dap: + self.threadId = self._translate_id_from_dap(self.threadId) + self.kwargs = kwargs + + @classmethod + def update_dict_ids_from_dap(cls, dct): + if "threadId" in dct: + dct["threadId"] = cls._translate_id_from_dap(dct["threadId"]) + return dct + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + reason = self.reason + threadId = self.threadId + if update_ids_to_dap: + if threadId is not None: + threadId = self._translate_id_to_dap(threadId) + dct = { + "reason": reason, + "threadId": threadId, + } + dct.update(self.kwargs) + return dct + + @classmethod + def update_dict_ids_to_dap(cls, dct): + if "threadId" in dct: + dct["threadId"] = cls._translate_id_to_dap(dct["threadId"]) + return dct + + +@register +class OutputEventBody(BaseSchema): + """ + "body" of OutputEvent + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "category": { + "type": "string", + "description": "The output category. If not specified or if the category is not understood by the client, `console` is assumed.", + "_enum": ["console", "important", "stdout", "stderr", "telemetry"], + "enumDescriptions": [ + "Show the output in the client's default message UI, e.g. a 'debug console'. This category should only be used for informational output from the debugger (as opposed to the debuggee).", + "A hint for the client to show the output in the client's UI for important and highly visible information, e.g. as a popup notification. This category should only be used for important messages from the debugger (as opposed to the debuggee). Since this category value is a hint, clients might ignore the hint and assume the `console` category.", + "Show the output as normal program output from the debuggee.", + "Show the output as error program output from the debuggee.", + "Send the output to telemetry instead of showing it to the user.", + ], + }, + "output": {"type": "string", "description": "The output to report."}, + "group": { + "type": "string", + "description": "Support for keeping an output log organized by grouping related messages.", + "enum": ["start", "startCollapsed", "end"], + "enumDescriptions": [ + "Start a new group in expanded mode. Subsequent output events are members of the group and should be shown indented.\nThe `output` attribute becomes the name of the group and is not indented.", + "Start a new group in collapsed mode. Subsequent output events are members of the group and should be shown indented (as soon as the group is expanded).\nThe `output` attribute becomes the name of the group and is not indented.", + "End the current group and decrease the indentation of subsequent output events.\nA non-empty `output` attribute is shown as the unindented end of the group.", + ], + }, + "variablesReference": { + "type": "integer", + "description": "If an attribute `variablesReference` exists and its value is > 0, the output contains objects which can be retrieved by passing `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details.", + }, + "source": { + "description": "The source location where the output was produced.", + "type": "Source", + }, + "line": { + "type": "integer", + "description": "The source location's line where the output was produced.", + }, + "column": { + "type": "integer", + "description": "The position in `line` where the output was produced. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based.", + }, + "data": { + "type": [ + "array", + "boolean", + "integer", + "null", + "number", + "object", + "string", + ], + "description": "Additional data to report. For the `telemetry` category the data is sent to telemetry, for the other categories the data is shown in JSON format.", + }, + } + __refs__ = set(["source"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + output, + category=None, + group=None, + variablesReference=None, + source=None, + line=None, + column=None, + data=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string output: The output to report. + :param string category: The output category. If not specified or if the category is not understood by the client, `console` is assumed. + :param string group: Support for keeping an output log organized by grouping related messages. + :param integer variablesReference: If an attribute `variablesReference` exists and its value is > 0, the output contains objects which can be retrieved by passing `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details. + :param Source source: The source location where the output was produced. + :param integer line: The source location's line where the output was produced. + :param integer column: The position in `line` where the output was produced. It is measured in UTF-16 code units and the client capability `columnsStartAt1` determines whether it is 0- or 1-based. + :param ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'] data: Additional data to report. For the `telemetry` category the data is sent to telemetry, for the other categories the data is shown in JSON format. + """ + self.output = output + self.category = category + self.group = group + self.variablesReference = variablesReference + if source is None: + self.source = Source() + else: + self.source = ( + Source(update_ids_from_dap=update_ids_from_dap, **source) + if source.__class__ != Source + else source + ) + self.line = line + self.column = column + self.data = data + if update_ids_from_dap: + self.variablesReference = self._translate_id_from_dap( + self.variablesReference + ) + self.kwargs = kwargs + + @classmethod + def update_dict_ids_from_dap(cls, dct): + if "variablesReference" in dct: + dct["variablesReference"] = cls._translate_id_from_dap( + dct["variablesReference"] + ) + return dct + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + output = self.output + category = self.category + group = self.group + variablesReference = self.variablesReference + source = self.source + line = self.line + column = self.column + data = self.data + if update_ids_to_dap: + if variablesReference is not None: + variablesReference = self._translate_id_to_dap(variablesReference) + dct = { + "output": output, + } + if category is not None: + dct["category"] = category + if group is not None: + dct["group"] = group + if variablesReference is not None: + dct["variablesReference"] = variablesReference + if source is not None: + dct["source"] = source.to_dict(update_ids_to_dap=update_ids_to_dap) + if line is not None: + dct["line"] = line + if column is not None: + dct["column"] = column + if data is not None: + dct["data"] = data + dct.update(self.kwargs) + return dct + + @classmethod + def update_dict_ids_to_dap(cls, dct): + if "variablesReference" in dct: + dct["variablesReference"] = cls._translate_id_to_dap( + dct["variablesReference"] + ) + return dct + + +@register +class BreakpointEventBody(BaseSchema): + """ + "body" of BreakpointEvent + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "reason": { + "type": "string", + "description": "The reason for the event.", + "_enum": ["changed", "new", "removed"], + }, + "breakpoint": { + "description": "The `id` attribute is used to find the target breakpoint, the other attributes are used as the new values.", + "type": "Breakpoint", + }, + } + __refs__ = set(["breakpoint"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, reason, breakpoint, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string reason: The reason for the event. + :param Breakpoint breakpoint: The `id` attribute is used to find the target breakpoint, the other attributes are used as the new values. + """ + self.reason = reason + if breakpoint is None: + self.breakpoint = Breakpoint() + else: + self.breakpoint = ( + Breakpoint(update_ids_from_dap=update_ids_from_dap, **breakpoint) + if breakpoint.__class__ != Breakpoint + else breakpoint + ) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + reason = self.reason + breakpoint = self.breakpoint # noqa (assign to builtin) + dct = { + "reason": reason, + "breakpoint": breakpoint.to_dict(update_ids_to_dap=update_ids_to_dap), + } + dct.update(self.kwargs) + return dct + + +@register +class ModuleEventBody(BaseSchema): + """ + "body" of ModuleEvent + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "reason": { + "type": "string", + "description": "The reason for the event.", + "enum": ["new", "changed", "removed"], + }, + "module": { + "description": "The new, changed, or removed module. In case of `removed` only the module id is used.", + "type": "Module", + }, + } + __refs__ = set(["module"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, reason, module, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string reason: The reason for the event. + :param Module module: The new, changed, or removed module. In case of `removed` only the module id is used. + """ + self.reason = reason + if module is None: + self.module = Module() + else: + self.module = ( + Module(update_ids_from_dap=update_ids_from_dap, **module) + if module.__class__ != Module + else module + ) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + reason = self.reason + module = self.module + dct = { + "reason": reason, + "module": module.to_dict(update_ids_to_dap=update_ids_to_dap), + } + dct.update(self.kwargs) + return dct + + +@register +class LoadedSourceEventBody(BaseSchema): + """ + "body" of LoadedSourceEvent + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "reason": { + "type": "string", + "description": "The reason for the event.", + "enum": ["new", "changed", "removed"], + }, + "source": { + "description": "The new, changed, or removed source.", + "type": "Source", + }, + } + __refs__ = set(["source"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, reason, source, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string reason: The reason for the event. + :param Source source: The new, changed, or removed source. + """ + self.reason = reason + if source is None: + self.source = Source() + else: + self.source = ( + Source(update_ids_from_dap=update_ids_from_dap, **source) + if source.__class__ != Source + else source + ) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + reason = self.reason + source = self.source + dct = { + "reason": reason, + "source": source.to_dict(update_ids_to_dap=update_ids_to_dap), + } + dct.update(self.kwargs) + return dct + + +@register +class ProcessEventBody(BaseSchema): + """ + "body" of ProcessEvent + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "name": { + "type": "string", + "description": "The logical name of the process. This is usually the full path to process's executable file. Example: /home/example/myproj/program.js.", + }, + "systemProcessId": { + "type": "integer", + "description": "The system process id of the debugged process. This property is missing for non-system processes.", + }, + "isLocalProcess": { + "type": "boolean", + "description": "If True, the process is running on the same computer as the debug adapter.", + }, + "startMethod": { + "type": "string", + "enum": ["launch", "attach", "attachForSuspendedLaunch"], + "description": "Describes how the debug engine started debugging this process.", + "enumDescriptions": [ + "Process was launched under the debugger.", + "Debugger attached to an existing process.", + "A project launcher component has launched a new process in a suspended state and then asked the debugger to attach.", + ], + }, + "pointerSize": { + "type": "integer", + "description": "The size of a pointer or address for this process, in bits. This value may be used by clients when formatting addresses for display.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + name, + systemProcessId=None, + isLocalProcess=None, + startMethod=None, + pointerSize=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string name: The logical name of the process. This is usually the full path to process's executable file. Example: /home/example/myproj/program.js. + :param integer systemProcessId: The system process id of the debugged process. This property is missing for non-system processes. + :param boolean isLocalProcess: If true, the process is running on the same computer as the debug adapter. + :param string startMethod: Describes how the debug engine started debugging this process. + :param integer pointerSize: The size of a pointer or address for this process, in bits. This value may be used by clients when formatting addresses for display. + """ + self.name = name + self.systemProcessId = systemProcessId + self.isLocalProcess = isLocalProcess + self.startMethod = startMethod + self.pointerSize = pointerSize + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + name = self.name + systemProcessId = self.systemProcessId + isLocalProcess = self.isLocalProcess + startMethod = self.startMethod + pointerSize = self.pointerSize + dct = { + "name": name, + } + if systemProcessId is not None: + dct["systemProcessId"] = systemProcessId + if isLocalProcess is not None: + dct["isLocalProcess"] = isLocalProcess + if startMethod is not None: + dct["startMethod"] = startMethod + if pointerSize is not None: + dct["pointerSize"] = pointerSize + dct.update(self.kwargs) + return dct + + +@register +class CapabilitiesEventBody(BaseSchema): + """ + "body" of CapabilitiesEvent + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "capabilities": { + "description": "The set of updated capabilities.", + "type": "Capabilities", + } + } + __refs__ = set(["capabilities"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, capabilities, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param Capabilities capabilities: The set of updated capabilities. + """ + if capabilities is None: + self.capabilities = Capabilities() + else: + self.capabilities = ( + Capabilities(update_ids_from_dap=update_ids_from_dap, **capabilities) + if capabilities.__class__ != Capabilities + else capabilities + ) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + capabilities = self.capabilities + dct = { + "capabilities": capabilities.to_dict(update_ids_to_dap=update_ids_to_dap), + } + dct.update(self.kwargs) + return dct + + +@register +class ProgressStartEventBody(BaseSchema): + """ + "body" of ProgressStartEvent + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "progressId": { + "type": "string", + "description": "An ID that can be used in subsequent `progressUpdate` and `progressEnd` events to make them refer to the same progress reporting.\nIDs must be unique within a debug session.", + }, + "title": { + "type": "string", + "description": "Short title of the progress reporting. Shown in the UI to describe the long running operation.", + }, + "requestId": { + "type": "integer", + "description": "The request ID that this progress report is related to. If specified a debug adapter is expected to emit progress events for the long running request until the request has been either completed or cancelled.\nIf the request ID is omitted, the progress report is assumed to be related to some general activity of the debug adapter.", + }, + "cancellable": { + "type": "boolean", + "description": "If True, the request that reports progress may be cancelled with a `cancel` request.\nSo this property basically controls whether the client should use UX that supports cancellation.\nClients that don't support cancellation are allowed to ignore the setting.", + }, + "message": {"type": "string", "description": "More detailed progress message."}, + "percentage": { + "type": "number", + "description": "Progress percentage to display (value range: 0 to 100). If omitted no percentage is shown.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + progressId, + title, + requestId=None, + cancellable=None, + message=None, + percentage=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string progressId: An ID that can be used in subsequent `progressUpdate` and `progressEnd` events to make them refer to the same progress reporting. + IDs must be unique within a debug session. + :param string title: Short title of the progress reporting. Shown in the UI to describe the long running operation. + :param integer requestId: The request ID that this progress report is related to. If specified a debug adapter is expected to emit progress events for the long running request until the request has been either completed or cancelled. + If the request ID is omitted, the progress report is assumed to be related to some general activity of the debug adapter. + :param boolean cancellable: If true, the request that reports progress may be cancelled with a `cancel` request. + So this property basically controls whether the client should use UX that supports cancellation. + Clients that don't support cancellation are allowed to ignore the setting. + :param string message: More detailed progress message. + :param number percentage: Progress percentage to display (value range: 0 to 100). If omitted no percentage is shown. + """ + self.progressId = progressId + self.title = title + self.requestId = requestId + self.cancellable = cancellable + self.message = message + self.percentage = percentage + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + progressId = self.progressId + title = self.title + requestId = self.requestId + cancellable = self.cancellable + message = self.message + percentage = self.percentage + dct = { + "progressId": progressId, + "title": title, + } + if requestId is not None: + dct["requestId"] = requestId + if cancellable is not None: + dct["cancellable"] = cancellable + if message is not None: + dct["message"] = message + if percentage is not None: + dct["percentage"] = percentage + dct.update(self.kwargs) + return dct + + +@register +class ProgressUpdateEventBody(BaseSchema): + """ + "body" of ProgressUpdateEvent + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "progressId": { + "type": "string", + "description": "The ID that was introduced in the initial `progressStart` event.", + }, + "message": { + "type": "string", + "description": "More detailed progress message. If omitted, the previous message (if any) is used.", + }, + "percentage": { + "type": "number", + "description": "Progress percentage to display (value range: 0 to 100). If omitted no percentage is shown.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + progressId, + message=None, + percentage=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string progressId: The ID that was introduced in the initial `progressStart` event. + :param string message: More detailed progress message. If omitted, the previous message (if any) is used. + :param number percentage: Progress percentage to display (value range: 0 to 100). If omitted no percentage is shown. + """ + self.progressId = progressId + self.message = message + self.percentage = percentage + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + progressId = self.progressId + message = self.message + percentage = self.percentage + dct = { + "progressId": progressId, + } + if message is not None: + dct["message"] = message + if percentage is not None: + dct["percentage"] = percentage + dct.update(self.kwargs) + return dct + + +@register +class ProgressEndEventBody(BaseSchema): + """ + "body" of ProgressEndEvent + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "progressId": { + "type": "string", + "description": "The ID that was introduced in the initial `ProgressStartEvent`.", + }, + "message": { + "type": "string", + "description": "More detailed progress message. If omitted, the previous message (if any) is used.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, progressId, message=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string progressId: The ID that was introduced in the initial `ProgressStartEvent`. + :param string message: More detailed progress message. If omitted, the previous message (if any) is used. + """ + self.progressId = progressId + self.message = message + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + progressId = self.progressId + message = self.message + dct = { + "progressId": progressId, + } + if message is not None: + dct["message"] = message + dct.update(self.kwargs) + return dct + + +@register +class InvalidatedEventBody(BaseSchema): + """ + "body" of InvalidatedEvent + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "areas": { + "type": "array", + "description": "Set of logical areas that got invalidated. This property has a hint characteristic: a client can only be expected to make a 'best effort' in honoring the areas but there are no guarantees. If this property is missing, empty, or if values are not understood, the client should assume a single value `all`.", + "items": {"$ref": "#/definitions/InvalidatedAreas"}, + }, + "threadId": { + "type": "integer", + "description": "If specified, the client only needs to refetch data related to this thread.", + }, + "stackFrameId": { + "type": "integer", + "description": "If specified, the client only needs to refetch data related to this stack frame (and the `threadId` is ignored).", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + areas=None, + threadId=None, + stackFrameId=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param array areas: Set of logical areas that got invalidated. This property has a hint characteristic: a client can only be expected to make a 'best effort' in honoring the areas but there are no guarantees. If this property is missing, empty, or if values are not understood, the client should assume a single value `all`. + :param integer threadId: If specified, the client only needs to refetch data related to this thread. + :param integer stackFrameId: If specified, the client only needs to refetch data related to this stack frame (and the `threadId` is ignored). + """ + self.areas = areas + if update_ids_from_dap and self.areas: + for o in self.areas: + InvalidatedAreas.update_dict_ids_from_dap(o) + self.threadId = threadId + self.stackFrameId = stackFrameId + if update_ids_from_dap: + self.threadId = self._translate_id_from_dap(self.threadId) + self.kwargs = kwargs + + @classmethod + def update_dict_ids_from_dap(cls, dct): + if "threadId" in dct: + dct["threadId"] = cls._translate_id_from_dap(dct["threadId"]) + return dct + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + areas = self.areas + if areas and hasattr(areas[0], "to_dict"): + areas = [x.to_dict() for x in areas] + threadId = self.threadId + stackFrameId = self.stackFrameId + if update_ids_to_dap: + if threadId is not None: + threadId = self._translate_id_to_dap(threadId) + dct = {} + if areas is not None: + dct["areas"] = ( + [InvalidatedAreas.update_dict_ids_to_dap(o) for o in areas] + if (update_ids_to_dap and areas) + else areas + ) + if threadId is not None: + dct["threadId"] = threadId + if stackFrameId is not None: + dct["stackFrameId"] = stackFrameId + dct.update(self.kwargs) + return dct + + @classmethod + def update_dict_ids_to_dap(cls, dct): + if "threadId" in dct: + dct["threadId"] = cls._translate_id_to_dap(dct["threadId"]) + return dct + + +@register +class MemoryEventBody(BaseSchema): + """ + "body" of MemoryEvent + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "memoryReference": { + "type": "string", + "description": "Memory reference of a memory range that has been updated.", + }, + "offset": { + "type": "integer", + "description": "Starting offset in bytes where memory has been updated. Can be negative.", + }, + "count": {"type": "integer", "description": "Number of bytes updated."}, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, memoryReference, offset, count, update_ids_from_dap=False, **kwargs + ): # noqa (update_ids_from_dap may be unused) + """ + :param string memoryReference: Memory reference of a memory range that has been updated. + :param integer offset: Starting offset in bytes where memory has been updated. Can be negative. + :param integer count: Number of bytes updated. + """ + self.memoryReference = memoryReference + self.offset = offset + self.count = count + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + memoryReference = self.memoryReference + offset = self.offset + count = self.count + dct = { + "memoryReference": memoryReference, + "offset": offset, + "count": count, + } + dct.update(self.kwargs) + return dct + + +@register +class RunInTerminalRequestArgumentsEnv(BaseSchema): + """ + "env" of RunInTerminalRequestArguments + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = {} + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ """ + + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + dct = {} + dct.update(self.kwargs) + return dct + + +@register +class RunInTerminalResponseBody(BaseSchema): + """ + "body" of RunInTerminalResponse + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "processId": { + "type": "integer", + "description": "The process ID. The value should be less than or equal to 2147483647 (2^31-1).", + }, + "shellProcessId": { + "type": "integer", + "description": "The process ID of the terminal shell. The value should be less than or equal to 2147483647 (2^31-1).", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, processId=None, shellProcessId=None, update_ids_from_dap=False, **kwargs + ): # noqa (update_ids_from_dap may be unused) + """ + :param integer processId: The process ID. The value should be less than or equal to 2147483647 (2^31-1). + :param integer shellProcessId: The process ID of the terminal shell. The value should be less than or equal to 2147483647 (2^31-1). + """ + self.processId = processId + self.shellProcessId = shellProcessId + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + processId = self.processId + shellProcessId = self.shellProcessId + dct = {} + if processId is not None: + dct["processId"] = processId + if shellProcessId is not None: + dct["shellProcessId"] = shellProcessId + dct.update(self.kwargs) + return dct + + +@register +class StartDebuggingRequestArgumentsConfiguration(BaseSchema): + """ + "configuration" of StartDebuggingRequestArguments + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = {} + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ """ + + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + dct = {} + dct.update(self.kwargs) + return dct + + +@register +class BreakpointLocationsResponseBody(BaseSchema): + """ + "body" of BreakpointLocationsResponse + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "breakpoints": { + "type": "array", + "items": {"$ref": "#/definitions/BreakpointLocation"}, + "description": "Sorted set of possible breakpoint locations.", + } + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, breakpoints, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param array breakpoints: Sorted set of possible breakpoint locations. + """ + self.breakpoints = breakpoints + if update_ids_from_dap and self.breakpoints: + for o in self.breakpoints: + BreakpointLocation.update_dict_ids_from_dap(o) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + breakpoints = self.breakpoints + if breakpoints and hasattr(breakpoints[0], "to_dict"): + breakpoints = [x.to_dict() for x in breakpoints] + dct = { + "breakpoints": [ + BreakpointLocation.update_dict_ids_to_dap(o) for o in breakpoints + ] + if (update_ids_to_dap and breakpoints) + else breakpoints, + } + dct.update(self.kwargs) + return dct + + +@register +class SetBreakpointsResponseBody(BaseSchema): + """ + "body" of SetBreakpointsResponse + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "breakpoints": { + "type": "array", + "items": {"$ref": "#/definitions/Breakpoint"}, + "description": "Information about the breakpoints.\nThe array elements are in the same order as the elements of the `breakpoints` (or the deprecated `lines`) array in the arguments.", + } + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, breakpoints, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param array breakpoints: Information about the breakpoints. + The array elements are in the same order as the elements of the `breakpoints` (or the deprecated `lines`) array in the arguments. + """ + self.breakpoints = breakpoints + if update_ids_from_dap and self.breakpoints: + for o in self.breakpoints: + Breakpoint.update_dict_ids_from_dap(o) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + breakpoints = self.breakpoints + if breakpoints and hasattr(breakpoints[0], "to_dict"): + breakpoints = [x.to_dict() for x in breakpoints] + dct = { + "breakpoints": [Breakpoint.update_dict_ids_to_dap(o) for o in breakpoints] + if (update_ids_to_dap and breakpoints) + else breakpoints, + } + dct.update(self.kwargs) + return dct + + +@register +class SetFunctionBreakpointsResponseBody(BaseSchema): + """ + "body" of SetFunctionBreakpointsResponse + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "breakpoints": { + "type": "array", + "items": {"$ref": "#/definitions/Breakpoint"}, + "description": "Information about the breakpoints. The array elements correspond to the elements of the `breakpoints` array.", + } + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, breakpoints, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param array breakpoints: Information about the breakpoints. The array elements correspond to the elements of the `breakpoints` array. + """ + self.breakpoints = breakpoints + if update_ids_from_dap and self.breakpoints: + for o in self.breakpoints: + Breakpoint.update_dict_ids_from_dap(o) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + breakpoints = self.breakpoints + if breakpoints and hasattr(breakpoints[0], "to_dict"): + breakpoints = [x.to_dict() for x in breakpoints] + dct = { + "breakpoints": [Breakpoint.update_dict_ids_to_dap(o) for o in breakpoints] + if (update_ids_to_dap and breakpoints) + else breakpoints, + } + dct.update(self.kwargs) + return dct + + +@register +class SetExceptionBreakpointsResponseBody(BaseSchema): + """ + "body" of SetExceptionBreakpointsResponse + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "breakpoints": { + "type": "array", + "items": {"$ref": "#/definitions/Breakpoint"}, + "description": "Information about the exception breakpoints or filters.\nThe breakpoints returned are in the same order as the elements of the `filters`, `filterOptions`, `exceptionOptions` arrays in the arguments. If both `filters` and `filterOptions` are given, the returned array must start with `filters` information first, followed by `filterOptions` information.", + } + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, breakpoints=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param array breakpoints: Information about the exception breakpoints or filters. + The breakpoints returned are in the same order as the elements of the `filters`, `filterOptions`, `exceptionOptions` arrays in the arguments. If both `filters` and `filterOptions` are given, the returned array must start with `filters` information first, followed by `filterOptions` information. + """ + self.breakpoints = breakpoints + if update_ids_from_dap and self.breakpoints: + for o in self.breakpoints: + Breakpoint.update_dict_ids_from_dap(o) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + breakpoints = self.breakpoints + if breakpoints and hasattr(breakpoints[0], "to_dict"): + breakpoints = [x.to_dict() for x in breakpoints] + dct = {} + if breakpoints is not None: + dct["breakpoints"] = ( + [Breakpoint.update_dict_ids_to_dap(o) for o in breakpoints] + if (update_ids_to_dap and breakpoints) + else breakpoints + ) + dct.update(self.kwargs) + return dct + + +@register +class DataBreakpointInfoResponseBody(BaseSchema): + """ + "body" of DataBreakpointInfoResponse + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "dataId": { + "type": ["string", "null"], + "description": "An identifier for the data on which a data breakpoint can be registered with the `setDataBreakpoints` request or null if no data breakpoint is available. If a `variablesReference` or `frameId` is passed, the `dataId` is valid in the current suspended state, otherwise it's valid indefinitely. See 'Lifetime of Object References' in the Overview section for details. Breakpoints set using the `dataId` in the `setDataBreakpoints` request may outlive the lifetime of the associated `dataId`.", + }, + "description": { + "type": "string", + "description": "UI string that describes on what data the breakpoint is set on or why a data breakpoint is not available.", + }, + "accessTypes": { + "type": "array", + "items": {"$ref": "#/definitions/DataBreakpointAccessType"}, + "description": "Attribute lists the available access types for a potential data breakpoint. A UI client could surface this information.", + }, + "canPersist": { + "type": "boolean", + "description": "Attribute indicates that a potential data breakpoint could be persisted across sessions.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + dataId, + description, + accessTypes=None, + canPersist=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param ['string', 'null'] dataId: An identifier for the data on which a data breakpoint can be registered with the `setDataBreakpoints` request or null if no data breakpoint is available. If a `variablesReference` or `frameId` is passed, the `dataId` is valid in the current suspended state, otherwise it's valid indefinitely. See 'Lifetime of Object References' in the Overview section for details. Breakpoints set using the `dataId` in the `setDataBreakpoints` request may outlive the lifetime of the associated `dataId`. + :param string description: UI string that describes on what data the breakpoint is set on or why a data breakpoint is not available. + :param array accessTypes: Attribute lists the available access types for a potential data breakpoint. A UI client could surface this information. + :param boolean canPersist: Attribute indicates that a potential data breakpoint could be persisted across sessions. + """ + self.dataId = dataId + self.description = description + self.accessTypes = accessTypes + if update_ids_from_dap and self.accessTypes: + for o in self.accessTypes: + DataBreakpointAccessType.update_dict_ids_from_dap(o) + self.canPersist = canPersist + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + dataId = self.dataId + description = self.description + accessTypes = self.accessTypes + if accessTypes and hasattr(accessTypes[0], "to_dict"): + accessTypes = [x.to_dict() for x in accessTypes] + canPersist = self.canPersist + dct = { + "dataId": dataId, + "description": description, + } + if accessTypes is not None: + dct["accessTypes"] = ( + [ + DataBreakpointAccessType.update_dict_ids_to_dap(o) + for o in accessTypes + ] + if (update_ids_to_dap and accessTypes) + else accessTypes + ) + if canPersist is not None: + dct["canPersist"] = canPersist + dct.update(self.kwargs) + return dct + + +@register +class SetDataBreakpointsResponseBody(BaseSchema): + """ + "body" of SetDataBreakpointsResponse + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "breakpoints": { + "type": "array", + "items": {"$ref": "#/definitions/Breakpoint"}, + "description": "Information about the data breakpoints. The array elements correspond to the elements of the input argument `breakpoints` array.", + } + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, breakpoints, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param array breakpoints: Information about the data breakpoints. The array elements correspond to the elements of the input argument `breakpoints` array. + """ + self.breakpoints = breakpoints + if update_ids_from_dap and self.breakpoints: + for o in self.breakpoints: + Breakpoint.update_dict_ids_from_dap(o) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + breakpoints = self.breakpoints + if breakpoints and hasattr(breakpoints[0], "to_dict"): + breakpoints = [x.to_dict() for x in breakpoints] + dct = { + "breakpoints": [Breakpoint.update_dict_ids_to_dap(o) for o in breakpoints] + if (update_ids_to_dap and breakpoints) + else breakpoints, + } + dct.update(self.kwargs) + return dct + + +@register +class SetInstructionBreakpointsResponseBody(BaseSchema): + """ + "body" of SetInstructionBreakpointsResponse + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "breakpoints": { + "type": "array", + "items": {"$ref": "#/definitions/Breakpoint"}, + "description": "Information about the breakpoints. The array elements correspond to the elements of the `breakpoints` array.", + } + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, breakpoints, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param array breakpoints: Information about the breakpoints. The array elements correspond to the elements of the `breakpoints` array. + """ + self.breakpoints = breakpoints + if update_ids_from_dap and self.breakpoints: + for o in self.breakpoints: + Breakpoint.update_dict_ids_from_dap(o) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + breakpoints = self.breakpoints + if breakpoints and hasattr(breakpoints[0], "to_dict"): + breakpoints = [x.to_dict() for x in breakpoints] + dct = { + "breakpoints": [Breakpoint.update_dict_ids_to_dap(o) for o in breakpoints] + if (update_ids_to_dap and breakpoints) + else breakpoints, + } + dct.update(self.kwargs) + return dct + + +@register +class ContinueResponseBody(BaseSchema): + """ + "body" of ContinueResponse + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "allThreadsContinued": { + "type": "boolean", + "description": "The value True (or a missing property) signals to the client that all threads have been resumed. The value false indicates that not all threads were resumed.", + } + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, allThreadsContinued=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param boolean allThreadsContinued: The value true (or a missing property) signals to the client that all threads have been resumed. The value false indicates that not all threads were resumed. + """ + self.allThreadsContinued = allThreadsContinued + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + allThreadsContinued = self.allThreadsContinued + dct = {} + if allThreadsContinued is not None: + dct["allThreadsContinued"] = allThreadsContinued + dct.update(self.kwargs) + return dct + + +@register +class StackTraceResponseBody(BaseSchema): + """ + "body" of StackTraceResponse + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "stackFrames": { + "type": "array", + "items": {"$ref": "#/definitions/StackFrame"}, + "description": "The frames of the stack frame. If the array has length zero, there are no stack frames available.\nThis means that there is no location information available.", + }, + "totalFrames": { + "type": "integer", + "description": "The total number of frames available in the stack. If omitted or if `totalFrames` is larger than the available frames, a client is expected to request frames until a request returns less frames than requested (which indicates the end of the stack). Returning monotonically increasing `totalFrames` values for subsequent requests can be used to enforce paging in the client.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, stackFrames, totalFrames=None, update_ids_from_dap=False, **kwargs + ): # noqa (update_ids_from_dap may be unused) + """ + :param array stackFrames: The frames of the stack frame. If the array has length zero, there are no stack frames available. + This means that there is no location information available. + :param integer totalFrames: The total number of frames available in the stack. If omitted or if `totalFrames` is larger than the available frames, a client is expected to request frames until a request returns less frames than requested (which indicates the end of the stack). Returning monotonically increasing `totalFrames` values for subsequent requests can be used to enforce paging in the client. + """ + self.stackFrames = stackFrames + if update_ids_from_dap and self.stackFrames: + for o in self.stackFrames: + StackFrame.update_dict_ids_from_dap(o) + self.totalFrames = totalFrames + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + stackFrames = self.stackFrames + if stackFrames and hasattr(stackFrames[0], "to_dict"): + stackFrames = [x.to_dict() for x in stackFrames] + totalFrames = self.totalFrames + dct = { + "stackFrames": [StackFrame.update_dict_ids_to_dap(o) for o in stackFrames] + if (update_ids_to_dap and stackFrames) + else stackFrames, + } + if totalFrames is not None: + dct["totalFrames"] = totalFrames + dct.update(self.kwargs) + return dct + + +@register +class ScopesResponseBody(BaseSchema): + """ + "body" of ScopesResponse + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "scopes": { + "type": "array", + "items": {"$ref": "#/definitions/Scope"}, + "description": "The scopes of the stack frame. If the array has length zero, there are no scopes available.", + } + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, scopes, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param array scopes: The scopes of the stack frame. If the array has length zero, there are no scopes available. + """ + self.scopes = scopes + if update_ids_from_dap and self.scopes: + for o in self.scopes: + Scope.update_dict_ids_from_dap(o) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + scopes = self.scopes + if scopes and hasattr(scopes[0], "to_dict"): + scopes = [x.to_dict() for x in scopes] + dct = { + "scopes": [Scope.update_dict_ids_to_dap(o) for o in scopes] + if (update_ids_to_dap and scopes) + else scopes, + } + dct.update(self.kwargs) + return dct + + +@register +class VariablesResponseBody(BaseSchema): + """ + "body" of VariablesResponse + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "variables": { + "type": "array", + "items": {"$ref": "#/definitions/Variable"}, + "description": "All (or a range) of variables for the given variable reference.", + } + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, variables, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param array variables: All (or a range) of variables for the given variable reference. + """ + self.variables = variables + if update_ids_from_dap and self.variables: + for o in self.variables: + Variable.update_dict_ids_from_dap(o) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + variables = self.variables + if variables and hasattr(variables[0], "to_dict"): + variables = [x.to_dict() for x in variables] + dct = { + "variables": [Variable.update_dict_ids_to_dap(o) for o in variables] + if (update_ids_to_dap and variables) + else variables, + } + dct.update(self.kwargs) + return dct + + +@register +class SetVariableResponseBody(BaseSchema): + """ + "body" of SetVariableResponse + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "value": {"type": "string", "description": "The new value of the variable."}, + "type": { + "type": "string", + "description": "The type of the new value. Typically shown in the UI when hovering over the value.", + }, + "variablesReference": { + "type": "integer", + "description": "If `variablesReference` is > 0, the new value is structured and its children can be retrieved by passing `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details.", + }, + "namedVariables": { + "type": "integer", + "description": "The number of named child variables.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1).", + }, + "indexedVariables": { + "type": "integer", + "description": "The number of indexed child variables.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1).", + }, + "memoryReference": { + "type": "string", + "description": "A memory reference to a location appropriate for this result.\nFor pointer type eval results, this is generally a reference to the memory address contained in the pointer.\nThis attribute may be returned by a debug adapter if corresponding capability `supportsMemoryReferences` is True.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + value, + type=None, + variablesReference=None, + namedVariables=None, + indexedVariables=None, + memoryReference=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string value: The new value of the variable. + :param string type: The type of the new value. Typically shown in the UI when hovering over the value. + :param integer variablesReference: If `variablesReference` is > 0, the new value is structured and its children can be retrieved by passing `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details. + :param integer namedVariables: The number of named child variables. + The client can use this information to present the variables in a paged UI and fetch them in chunks. + The value should be less than or equal to 2147483647 (2^31-1). + :param integer indexedVariables: The number of indexed child variables. + The client can use this information to present the variables in a paged UI and fetch them in chunks. + The value should be less than or equal to 2147483647 (2^31-1). + :param string memoryReference: A memory reference to a location appropriate for this result. + For pointer type eval results, this is generally a reference to the memory address contained in the pointer. + This attribute may be returned by a debug adapter if corresponding capability `supportsMemoryReferences` is true. + """ + self.value = value + self.type = type + self.variablesReference = variablesReference + self.namedVariables = namedVariables + self.indexedVariables = indexedVariables + self.memoryReference = memoryReference + if update_ids_from_dap: + self.variablesReference = self._translate_id_from_dap( + self.variablesReference + ) + self.kwargs = kwargs + + @classmethod + def update_dict_ids_from_dap(cls, dct): + if "variablesReference" in dct: + dct["variablesReference"] = cls._translate_id_from_dap( + dct["variablesReference"] + ) + return dct + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + value = self.value + type = self.type # noqa (assign to builtin) + variablesReference = self.variablesReference + namedVariables = self.namedVariables + indexedVariables = self.indexedVariables + memoryReference = self.memoryReference + if update_ids_to_dap: + if variablesReference is not None: + variablesReference = self._translate_id_to_dap(variablesReference) + dct = { + "value": value, + } + if type is not None: + dct["type"] = type + if variablesReference is not None: + dct["variablesReference"] = variablesReference + if namedVariables is not None: + dct["namedVariables"] = namedVariables + if indexedVariables is not None: + dct["indexedVariables"] = indexedVariables + if memoryReference is not None: + dct["memoryReference"] = memoryReference + dct.update(self.kwargs) + return dct + + @classmethod + def update_dict_ids_to_dap(cls, dct): + if "variablesReference" in dct: + dct["variablesReference"] = cls._translate_id_to_dap( + dct["variablesReference"] + ) + return dct + + +@register +class SourceResponseBody(BaseSchema): + """ + "body" of SourceResponse + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "content": { + "type": "string", + "description": "Content of the source reference.", + }, + "mimeType": { + "type": "string", + "description": "Content type (MIME type) of the source.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, content, mimeType=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string content: Content of the source reference. + :param string mimeType: Content type (MIME type) of the source. + """ + self.content = content + self.mimeType = mimeType + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + content = self.content + mimeType = self.mimeType + dct = { + "content": content, + } + if mimeType is not None: + dct["mimeType"] = mimeType + dct.update(self.kwargs) + return dct + + +@register +class ThreadsResponseBody(BaseSchema): + """ + "body" of ThreadsResponse + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "threads": { + "type": "array", + "items": {"$ref": "#/definitions/Thread"}, + "description": "All threads.", + } + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, threads, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param array threads: All threads. + """ + self.threads = threads + if update_ids_from_dap and self.threads: + for o in self.threads: + Thread.update_dict_ids_from_dap(o) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + threads = self.threads + if threads and hasattr(threads[0], "to_dict"): + threads = [x.to_dict() for x in threads] + dct = { + "threads": [Thread.update_dict_ids_to_dap(o) for o in threads] + if (update_ids_to_dap and threads) + else threads, + } + dct.update(self.kwargs) + return dct + + +@register +class ModulesResponseBody(BaseSchema): + """ + "body" of ModulesResponse + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "modules": { + "type": "array", + "items": {"$ref": "#/definitions/Module"}, + "description": "All modules or range of modules.", + }, + "totalModules": { + "type": "integer", + "description": "The total number of modules available.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, modules, totalModules=None, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param array modules: All modules or range of modules. + :param integer totalModules: The total number of modules available. + """ + self.modules = modules + if update_ids_from_dap and self.modules: + for o in self.modules: + Module.update_dict_ids_from_dap(o) + self.totalModules = totalModules + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + modules = self.modules + if modules and hasattr(modules[0], "to_dict"): + modules = [x.to_dict() for x in modules] + totalModules = self.totalModules + dct = { + "modules": [Module.update_dict_ids_to_dap(o) for o in modules] + if (update_ids_to_dap and modules) + else modules, + } + if totalModules is not None: + dct["totalModules"] = totalModules + dct.update(self.kwargs) + return dct + + +@register +class LoadedSourcesResponseBody(BaseSchema): + """ + "body" of LoadedSourcesResponse + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "sources": { + "type": "array", + "items": {"$ref": "#/definitions/Source"}, + "description": "Set of loaded sources.", + } + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, sources, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param array sources: Set of loaded sources. + """ + self.sources = sources + if update_ids_from_dap and self.sources: + for o in self.sources: + Source.update_dict_ids_from_dap(o) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + sources = self.sources + if sources and hasattr(sources[0], "to_dict"): + sources = [x.to_dict() for x in sources] + dct = { + "sources": [Source.update_dict_ids_to_dap(o) for o in sources] + if (update_ids_to_dap and sources) + else sources, + } + dct.update(self.kwargs) + return dct + + +@register +class EvaluateResponseBody(BaseSchema): + """ + "body" of EvaluateResponse + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "result": { + "type": "string", + "description": "The result of the evaluate request.", + }, + "type": { + "type": "string", + "description": "The type of the evaluate result.\nThis attribute should only be returned by a debug adapter if the corresponding capability `supportsVariableType` is True.", + }, + "presentationHint": { + "description": "Properties of an evaluate result that can be used to determine how to render the result in the UI.", + "type": "VariablePresentationHint", + }, + "variablesReference": { + "type": "integer", + "description": "If `variablesReference` is > 0, the evaluate result is structured and its children can be retrieved by passing `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details.", + }, + "namedVariables": { + "type": "integer", + "description": "The number of named child variables.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1).", + }, + "indexedVariables": { + "type": "integer", + "description": "The number of indexed child variables.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1).", + }, + "memoryReference": { + "type": "string", + "description": "A memory reference to a location appropriate for this result.\nFor pointer type eval results, this is generally a reference to the memory address contained in the pointer.\nThis attribute may be returned by a debug adapter if corresponding capability `supportsMemoryReferences` is True.", + }, + } + __refs__ = set(["presentationHint"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + result, + variablesReference, + type=None, + presentationHint=None, + namedVariables=None, + indexedVariables=None, + memoryReference=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string result: The result of the evaluate request. + :param integer variablesReference: If `variablesReference` is > 0, the evaluate result is structured and its children can be retrieved by passing `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details. + :param string type: The type of the evaluate result. + This attribute should only be returned by a debug adapter if the corresponding capability `supportsVariableType` is true. + :param VariablePresentationHint presentationHint: Properties of an evaluate result that can be used to determine how to render the result in the UI. + :param integer namedVariables: The number of named child variables. + The client can use this information to present the variables in a paged UI and fetch them in chunks. + The value should be less than or equal to 2147483647 (2^31-1). + :param integer indexedVariables: The number of indexed child variables. + The client can use this information to present the variables in a paged UI and fetch them in chunks. + The value should be less than or equal to 2147483647 (2^31-1). + :param string memoryReference: A memory reference to a location appropriate for this result. + For pointer type eval results, this is generally a reference to the memory address contained in the pointer. + This attribute may be returned by a debug adapter if corresponding capability `supportsMemoryReferences` is true. + """ + self.result = result + self.variablesReference = variablesReference + self.type = type + if presentationHint is None: + self.presentationHint = VariablePresentationHint() + else: + self.presentationHint = ( + VariablePresentationHint( + update_ids_from_dap=update_ids_from_dap, **presentationHint + ) + if presentationHint.__class__ != VariablePresentationHint + else presentationHint + ) + self.namedVariables = namedVariables + self.indexedVariables = indexedVariables + self.memoryReference = memoryReference + if update_ids_from_dap: + self.variablesReference = self._translate_id_from_dap( + self.variablesReference + ) + self.kwargs = kwargs + + @classmethod + def update_dict_ids_from_dap(cls, dct): + if "variablesReference" in dct: + dct["variablesReference"] = cls._translate_id_from_dap( + dct["variablesReference"] + ) + return dct + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + result = self.result + variablesReference = self.variablesReference + type = self.type # noqa (assign to builtin) + presentationHint = self.presentationHint + namedVariables = self.namedVariables + indexedVariables = self.indexedVariables + memoryReference = self.memoryReference + if update_ids_to_dap: + if variablesReference is not None: + variablesReference = self._translate_id_to_dap(variablesReference) + dct = { + "result": result, + "variablesReference": variablesReference, + } + if type is not None: + dct["type"] = type + if presentationHint is not None: + dct["presentationHint"] = presentationHint.to_dict( + update_ids_to_dap=update_ids_to_dap + ) + if namedVariables is not None: + dct["namedVariables"] = namedVariables + if indexedVariables is not None: + dct["indexedVariables"] = indexedVariables + if memoryReference is not None: + dct["memoryReference"] = memoryReference + dct.update(self.kwargs) + return dct + + @classmethod + def update_dict_ids_to_dap(cls, dct): + if "variablesReference" in dct: + dct["variablesReference"] = cls._translate_id_to_dap( + dct["variablesReference"] + ) + return dct + + +@register +class SetExpressionResponseBody(BaseSchema): + """ + "body" of SetExpressionResponse + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "value": {"type": "string", "description": "The new value of the expression."}, + "type": { + "type": "string", + "description": "The type of the value.\nThis attribute should only be returned by a debug adapter if the corresponding capability `supportsVariableType` is True.", + }, + "presentationHint": { + "description": "Properties of a value that can be used to determine how to render the result in the UI.", + "type": "VariablePresentationHint", + }, + "variablesReference": { + "type": "integer", + "description": "If `variablesReference` is > 0, the evaluate result is structured and its children can be retrieved by passing `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details.", + }, + "namedVariables": { + "type": "integer", + "description": "The number of named child variables.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1).", + }, + "indexedVariables": { + "type": "integer", + "description": "The number of indexed child variables.\nThe client can use this information to present the variables in a paged UI and fetch them in chunks.\nThe value should be less than or equal to 2147483647 (2^31-1).", + }, + "memoryReference": { + "type": "string", + "description": "A memory reference to a location appropriate for this result.\nFor pointer type eval results, this is generally a reference to the memory address contained in the pointer.\nThis attribute may be returned by a debug adapter if corresponding capability `supportsMemoryReferences` is True.", + }, + } + __refs__ = set(["presentationHint"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + value, + type=None, + presentationHint=None, + variablesReference=None, + namedVariables=None, + indexedVariables=None, + memoryReference=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string value: The new value of the expression. + :param string type: The type of the value. + This attribute should only be returned by a debug adapter if the corresponding capability `supportsVariableType` is true. + :param VariablePresentationHint presentationHint: Properties of a value that can be used to determine how to render the result in the UI. + :param integer variablesReference: If `variablesReference` is > 0, the evaluate result is structured and its children can be retrieved by passing `variablesReference` to the `variables` request as long as execution remains suspended. See 'Lifetime of Object References' in the Overview section for details. + :param integer namedVariables: The number of named child variables. + The client can use this information to present the variables in a paged UI and fetch them in chunks. + The value should be less than or equal to 2147483647 (2^31-1). + :param integer indexedVariables: The number of indexed child variables. + The client can use this information to present the variables in a paged UI and fetch them in chunks. + The value should be less than or equal to 2147483647 (2^31-1). + :param string memoryReference: A memory reference to a location appropriate for this result. + For pointer type eval results, this is generally a reference to the memory address contained in the pointer. + This attribute may be returned by a debug adapter if corresponding capability `supportsMemoryReferences` is true. + """ + self.value = value + self.type = type + if presentationHint is None: + self.presentationHint = VariablePresentationHint() + else: + self.presentationHint = ( + VariablePresentationHint( + update_ids_from_dap=update_ids_from_dap, **presentationHint + ) + if presentationHint.__class__ != VariablePresentationHint + else presentationHint + ) + self.variablesReference = variablesReference + self.namedVariables = namedVariables + self.indexedVariables = indexedVariables + self.memoryReference = memoryReference + if update_ids_from_dap: + self.variablesReference = self._translate_id_from_dap( + self.variablesReference + ) + self.kwargs = kwargs + + @classmethod + def update_dict_ids_from_dap(cls, dct): + if "variablesReference" in dct: + dct["variablesReference"] = cls._translate_id_from_dap( + dct["variablesReference"] + ) + return dct + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + value = self.value + type = self.type # noqa (assign to builtin) + presentationHint = self.presentationHint + variablesReference = self.variablesReference + namedVariables = self.namedVariables + indexedVariables = self.indexedVariables + memoryReference = self.memoryReference + if update_ids_to_dap: + if variablesReference is not None: + variablesReference = self._translate_id_to_dap(variablesReference) + dct = { + "value": value, + } + if type is not None: + dct["type"] = type + if presentationHint is not None: + dct["presentationHint"] = presentationHint.to_dict( + update_ids_to_dap=update_ids_to_dap + ) + if variablesReference is not None: + dct["variablesReference"] = variablesReference + if namedVariables is not None: + dct["namedVariables"] = namedVariables + if indexedVariables is not None: + dct["indexedVariables"] = indexedVariables + if memoryReference is not None: + dct["memoryReference"] = memoryReference + dct.update(self.kwargs) + return dct + + @classmethod + def update_dict_ids_to_dap(cls, dct): + if "variablesReference" in dct: + dct["variablesReference"] = cls._translate_id_to_dap( + dct["variablesReference"] + ) + return dct + + +@register +class StepInTargetsResponseBody(BaseSchema): + """ + "body" of StepInTargetsResponse + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "targets": { + "type": "array", + "items": {"$ref": "#/definitions/StepInTarget"}, + "description": "The possible step-in targets of the specified source location.", + } + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, targets, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param array targets: The possible step-in targets of the specified source location. + """ + self.targets = targets + if update_ids_from_dap and self.targets: + for o in self.targets: + StepInTarget.update_dict_ids_from_dap(o) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + targets = self.targets + if targets and hasattr(targets[0], "to_dict"): + targets = [x.to_dict() for x in targets] + dct = { + "targets": [StepInTarget.update_dict_ids_to_dap(o) for o in targets] + if (update_ids_to_dap and targets) + else targets, + } + dct.update(self.kwargs) + return dct + + +@register +class GotoTargetsResponseBody(BaseSchema): + """ + "body" of GotoTargetsResponse + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "targets": { + "type": "array", + "items": {"$ref": "#/definitions/GotoTarget"}, + "description": "The possible goto targets of the specified location.", + } + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, targets, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param array targets: The possible goto targets of the specified location. + """ + self.targets = targets + if update_ids_from_dap and self.targets: + for o in self.targets: + GotoTarget.update_dict_ids_from_dap(o) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + targets = self.targets + if targets and hasattr(targets[0], "to_dict"): + targets = [x.to_dict() for x in targets] + dct = { + "targets": [GotoTarget.update_dict_ids_to_dap(o) for o in targets] + if (update_ids_to_dap and targets) + else targets, + } + dct.update(self.kwargs) + return dct + + +@register +class CompletionsResponseBody(BaseSchema): + """ + "body" of CompletionsResponse + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "targets": { + "type": "array", + "items": {"$ref": "#/definitions/CompletionItem"}, + "description": "The possible completions for .", + } + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, targets, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param array targets: The possible completions for . + """ + self.targets = targets + if update_ids_from_dap and self.targets: + for o in self.targets: + CompletionItem.update_dict_ids_from_dap(o) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + targets = self.targets + if targets and hasattr(targets[0], "to_dict"): + targets = [x.to_dict() for x in targets] + dct = { + "targets": [CompletionItem.update_dict_ids_to_dap(o) for o in targets] + if (update_ids_to_dap and targets) + else targets, + } + dct.update(self.kwargs) + return dct + + +@register +class ExceptionInfoResponseBody(BaseSchema): + """ + "body" of ExceptionInfoResponse + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "exceptionId": { + "type": "string", + "description": "ID of the exception that was thrown.", + }, + "description": { + "type": "string", + "description": "Descriptive text for the exception.", + }, + "breakMode": { + "description": "Mode that caused the exception notification to be raised.", + "type": "ExceptionBreakMode", + }, + "details": { + "description": "Detailed information about the exception.", + "type": "ExceptionDetails", + }, + } + __refs__ = set(["breakMode", "details"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + exceptionId, + breakMode, + description=None, + details=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string exceptionId: ID of the exception that was thrown. + :param ExceptionBreakMode breakMode: Mode that caused the exception notification to be raised. + :param string description: Descriptive text for the exception. + :param ExceptionDetails details: Detailed information about the exception. + """ + self.exceptionId = exceptionId + if breakMode is not None: + assert breakMode in ExceptionBreakMode.VALID_VALUES + self.breakMode = breakMode + self.description = description + if details is None: + self.details = ExceptionDetails() + else: + self.details = ( + ExceptionDetails(update_ids_from_dap=update_ids_from_dap, **details) + if details.__class__ != ExceptionDetails + else details + ) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + exceptionId = self.exceptionId + breakMode = self.breakMode + description = self.description + details = self.details + dct = { + "exceptionId": exceptionId, + "breakMode": breakMode, + } + if description is not None: + dct["description"] = description + if details is not None: + dct["details"] = details.to_dict(update_ids_to_dap=update_ids_to_dap) + dct.update(self.kwargs) + return dct + + +@register +class ReadMemoryResponseBody(BaseSchema): + """ + "body" of ReadMemoryResponse + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "address": { + "type": "string", + "description": "The address of the first byte of data returned.\nTreated as a hex value if prefixed with `0x`, or as a decimal value otherwise.", + }, + "unreadableBytes": { + "type": "integer", + "description": "The number of unreadable bytes encountered after the last successfully read byte.\nThis can be used to determine the number of bytes that should be skipped before a subsequent `readMemory` request succeeds.", + }, + "data": { + "type": "string", + "description": "The bytes read from memory, encoded using base64. If the decoded length of `data` is less than the requested `count` in the original `readMemory` request, and `unreadableBytes` is zero or omitted, then the client should assume it's reached the end of readable memory.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, + address, + unreadableBytes=None, + data=None, + update_ids_from_dap=False, + **kwargs, + ): # noqa (update_ids_from_dap may be unused) + """ + :param string address: The address of the first byte of data returned. + Treated as a hex value if prefixed with `0x`, or as a decimal value otherwise. + :param integer unreadableBytes: The number of unreadable bytes encountered after the last successfully read byte. + This can be used to determine the number of bytes that should be skipped before a subsequent `readMemory` request succeeds. + :param string data: The bytes read from memory, encoded using base64. If the decoded length of `data` is less than the requested `count` in the original `readMemory` request, and `unreadableBytes` is zero or omitted, then the client should assume it's reached the end of readable memory. + """ + self.address = address + self.unreadableBytes = unreadableBytes + self.data = data + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + address = self.address + unreadableBytes = self.unreadableBytes + data = self.data + dct = { + "address": address, + } + if unreadableBytes is not None: + dct["unreadableBytes"] = unreadableBytes + if data is not None: + dct["data"] = data + dct.update(self.kwargs) + return dct + + +@register +class WriteMemoryResponseBody(BaseSchema): + """ + "body" of WriteMemoryResponse + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "offset": { + "type": "integer", + "description": "Property that should be returned when `allowPartial` is True to indicate the offset of the first byte of data successfully written. Can be negative.", + }, + "bytesWritten": { + "type": "integer", + "description": "Property that should be returned when `allowPartial` is True to indicate the number of bytes starting from address that were successfully written.", + }, + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, offset=None, bytesWritten=None, update_ids_from_dap=False, **kwargs + ): # noqa (update_ids_from_dap may be unused) + """ + :param integer offset: Property that should be returned when `allowPartial` is true to indicate the offset of the first byte of data successfully written. Can be negative. + :param integer bytesWritten: Property that should be returned when `allowPartial` is true to indicate the number of bytes starting from address that were successfully written. + """ + self.offset = offset + self.bytesWritten = bytesWritten + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + offset = self.offset + bytesWritten = self.bytesWritten + dct = {} + if offset is not None: + dct["offset"] = offset + if bytesWritten is not None: + dct["bytesWritten"] = bytesWritten + dct.update(self.kwargs) + return dct + + +@register +class DisassembleResponseBody(BaseSchema): + """ + "body" of DisassembleResponse + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "instructions": { + "type": "array", + "items": {"$ref": "#/definitions/DisassembledInstruction"}, + "description": "The list of disassembled instructions.", + } + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, instructions, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param array instructions: The list of disassembled instructions. + """ + self.instructions = instructions + if update_ids_from_dap and self.instructions: + for o in self.instructions: + DisassembledInstruction.update_dict_ids_from_dap(o) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + instructions = self.instructions + if instructions and hasattr(instructions[0], "to_dict"): + instructions = [x.to_dict() for x in instructions] + dct = { + "instructions": [ + DisassembledInstruction.update_dict_ids_to_dap(o) for o in instructions + ] + if (update_ids_to_dap and instructions) + else instructions, + } + dct.update(self.kwargs) + return dct + + +@register +class MessageVariables(BaseSchema): + """ + "variables" of Message + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = {} + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ """ + + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + dct = {} + dct.update(self.kwargs) + return dct + + +@register +class PydevdSystemInfoResponseBody(BaseSchema): + """ + "body" of PydevdSystemInfoResponse + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "python": { + "description": "Information about the python version running in the current process.", + "type": "PydevdPythonInfo", + }, + "platform": { + "description": "Information about the plarforn on which the current process is running.", + "type": "PydevdPlatformInfo", + }, + "process": { + "description": "Information about the current process.", + "type": "PydevdProcessInfo", + }, + "pydevd": {"description": "Information about pydevd.", "type": "PydevdInfo"}, + } + __refs__ = set(["python", "platform", "process", "pydevd"]) + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__( + self, python, platform, process, pydevd, update_ids_from_dap=False, **kwargs + ): # noqa (update_ids_from_dap may be unused) + """ + :param PydevdPythonInfo python: Information about the python version running in the current process. + :param PydevdPlatformInfo platform: Information about the plarforn on which the current process is running. + :param PydevdProcessInfo process: Information about the current process. + :param PydevdInfo pydevd: Information about pydevd. + """ + if python is None: + self.python = PydevdPythonInfo() + else: + self.python = ( + PydevdPythonInfo(update_ids_from_dap=update_ids_from_dap, **python) + if python.__class__ != PydevdPythonInfo + else python + ) + if platform is None: + self.platform = PydevdPlatformInfo() + else: + self.platform = ( + PydevdPlatformInfo(update_ids_from_dap=update_ids_from_dap, **platform) + if platform.__class__ != PydevdPlatformInfo + else platform + ) + if process is None: + self.process = PydevdProcessInfo() + else: + self.process = ( + PydevdProcessInfo(update_ids_from_dap=update_ids_from_dap, **process) + if process.__class__ != PydevdProcessInfo + else process + ) + if pydevd is None: + self.pydevd = PydevdInfo() + else: + self.pydevd = ( + PydevdInfo(update_ids_from_dap=update_ids_from_dap, **pydevd) + if pydevd.__class__ != PydevdInfo + else pydevd + ) + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + python = self.python + platform = self.platform + process = self.process + pydevd = self.pydevd + dct = { + "python": python.to_dict(update_ids_to_dap=update_ids_to_dap), + "platform": platform.to_dict(update_ids_to_dap=update_ids_to_dap), + "process": process.to_dict(update_ids_to_dap=update_ids_to_dap), + "pydevd": pydevd.to_dict(update_ids_to_dap=update_ids_to_dap), + } + dct.update(self.kwargs) + return dct + + +@register +class PydevdAuthorizeResponseBody(BaseSchema): + """ + "body" of PydevdAuthorizeResponse + + Note: automatically generated code. Do not edit manually. + """ + + __props__ = { + "clientAccessToken": { + "type": "string", + "description": "The access token to access the client (i.e.: usually the IDE).", + } + } + __refs__ = set() + + __slots__ = list(__props__.keys()) + ["kwargs"] + + def __init__(self, clientAccessToken, update_ids_from_dap=False, **kwargs): # noqa (update_ids_from_dap may be unused) + """ + :param string clientAccessToken: The access token to access the client (i.e.: usually the IDE). + """ + self.clientAccessToken = clientAccessToken + self.kwargs = kwargs + + def to_dict(self, update_ids_to_dap=False): # noqa (update_ids_to_dap may be unused) + clientAccessToken = self.clientAccessToken + dct = { + "clientAccessToken": clientAccessToken, + } + dct.update(self.kwargs) + return dct diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema_log.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema_log.py new file mode 100644 index 000000000..d48dd700e --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema_log.py @@ -0,0 +1,46 @@ +import os +import traceback + +from _pydevd_bundle.pydevd_constants import ForkSafeLock + +_pid = os.getpid() +_pid_msg = "%s: " % (_pid,) + +_debug_lock = ForkSafeLock() + +DEBUG = False +DEBUG_FILE = os.path.join(os.path.dirname(__file__), "__debug_output__.txt") + + +def debug(msg): + if DEBUG: + with _debug_lock: + _pid_prefix = _pid_msg + if isinstance(msg, bytes): + _pid_prefix = _pid_prefix.encode("utf-8") + + if not msg.endswith(b"\r") and not msg.endswith(b"\n"): + msg += b"\n" + mode = "a+b" + else: + if not msg.endswith("\r") and not msg.endswith("\n"): + msg += "\n" + mode = "a+" + with open(DEBUG_FILE, mode) as stream: + stream.write(_pid_prefix) + stream.write(msg) + + +def debug_exception(msg=None): + if DEBUG: + if msg: + debug(msg) + + with _debug_lock: + with open(DEBUG_FILE, "a+") as stream: + _pid_prefix = _pid_msg + if isinstance(msg, bytes): + _pid_prefix = _pid_prefix.encode("utf-8") + stream.write(_pid_prefix) + + traceback.print_exc(file=stream) diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevconsole_code.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevconsole_code.py new file mode 100644 index 000000000..9b871b0da --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevconsole_code.py @@ -0,0 +1,565 @@ +""" +A copy of the code module in the standard library with some changes to work with +async evaluation. + +Utilities needed to emulate Python's interactive interpreter. +""" + +# Inspired by similar code by Jeff Epler and Fredrik Lundh. + +import inspect +import sys +import traceback + +# START --------------------------- from codeop import CommandCompiler, compile_command +# START --------------------------- from codeop import CommandCompiler, compile_command +# START --------------------------- from codeop import CommandCompiler, compile_command +# START --------------------------- from codeop import CommandCompiler, compile_command +# START --------------------------- from codeop import CommandCompiler, compile_command +r"""Utilities to compile possibly incomplete Python source code. + +This module provides two interfaces, broadly similar to the builtin +function compile(), which take program text, a filename and a 'mode' +and: + +- Return code object if the command is complete and valid +- Return None if the command is incomplete +- Raise SyntaxError, ValueError or OverflowError if the command is a + syntax error (OverflowError and ValueError can be produced by + malformed literals). + +Approach: + +First, check if the source consists entirely of blank lines and +comments; if so, replace it with 'pass', because the built-in +parser doesn't always do the right thing for these. + +Compile three times: as is, with \n, and with \n\n appended. If it +compiles as is, it's complete. If it compiles with one \n appended, +we expect more. If it doesn't compile either way, we compare the +error we get when compiling with \n or \n\n appended. If the errors +are the same, the code is broken. But if the errors are different, we +expect more. Not intuitive; not even guaranteed to hold in future +releases; but this matches the compiler's behavior from Python 1.4 +through 2.2, at least. + +Caveat: + +It is possible (but not likely) that the parser stops parsing with a +successful outcome before reaching the end of the source; in this +case, trailing symbols may be ignored instead of causing an error. +For example, a backslash followed by two newlines may be followed by +arbitrary garbage. This will be fixed once the API for the parser is +better. + +The two interfaces are: + +compile_command(source, filename, symbol): + + Compiles a single command in the manner described above. + +CommandCompiler(): + + Instances of this class have __call__ methods identical in + signature to compile_command; the difference is that if the + instance compiles program text containing a __future__ statement, + the instance 'remembers' and compiles all subsequent program texts + with the statement in force. + +The module also provides another class: + +Compile(): + + Instances of this class act like the built-in function compile, + but with 'memory' in the sense described above. +""" + +import __future__ + +_features = [getattr(__future__, fname) for fname in __future__.all_feature_names] + +__all__ = ["compile_command", "Compile", "CommandCompiler"] + +PyCF_DONT_IMPLY_DEDENT = 0x200 # Matches pythonrun.h + + +def _maybe_compile(compiler, source, filename, symbol): + # Check for source consisting of only blank lines and comments + for line in source.split("\n"): + line = line.strip() + if line and line[0] != "#": + break # Leave it alone + else: + if symbol != "eval": + source = "pass" # Replace it with a 'pass' statement + + err = err1 = err2 = None + code = code1 = code2 = None + + try: + code = compiler(source, filename, symbol) + except SyntaxError: + pass + + try: + code1 = compiler(source + "\n", filename, symbol) + except SyntaxError as e: + err1 = e + + try: + code2 = compiler(source + "\n\n", filename, symbol) + except SyntaxError as e: + err2 = e + + try: + if code: + return code + if not code1 and repr(err1) == repr(err2): + raise err1 + finally: + err1 = err2 = None + + +def _compile(source, filename, symbol): + return compile(source, filename, symbol, PyCF_DONT_IMPLY_DEDENT) + + +def compile_command(source, filename="", symbol="single"): + r"""Compile a command and determine whether it is incomplete. + + Arguments: + + source -- the source string; may contain \n characters + filename -- optional filename from which source was read; default + "" + symbol -- optional grammar start symbol; "single" (default) or "eval" + + Return value / exceptions raised: + + - Return a code object if the command is complete and valid + - Return None if the command is incomplete + - Raise SyntaxError, ValueError or OverflowError if the command is a + syntax error (OverflowError and ValueError can be produced by + malformed literals). + """ + return _maybe_compile(_compile, source, filename, symbol) + + +class Compile: + """Instances of this class behave much like the built-in compile + function, but if one is used to compile text containing a future + statement, it "remembers" and compiles all subsequent program texts + with the statement in force. + """ + + def __init__(self): + self.flags = PyCF_DONT_IMPLY_DEDENT + + try: + from ast import PyCF_ALLOW_TOP_LEVEL_AWAIT + + self.flags |= PyCF_ALLOW_TOP_LEVEL_AWAIT + except: + pass + + def __call__(self, source, filename, symbol): + codeob = compile(source, filename, symbol, self.flags, 1) + for feature in _features: + if codeob.co_flags & feature.compiler_flag: + self.flags |= feature.compiler_flag + return codeob + + +class CommandCompiler: + """Instances of this class have __call__ methods identical in + signature to compile_command; the difference is that if the + instance compiles program text containing a __future__ statement, + the instance 'remembers' and compiles all subsequent program texts + with the statement in force. + """ + + def __init__( + self, + ): + self.compiler = Compile() + + def __call__(self, source, filename="", symbol="single"): + r"""Compile a command and determine whether it is incomplete. + + Arguments: + + source -- the source string; may contain \n characters + filename -- optional filename from which source was read; + default "" + symbol -- optional grammar start symbol; "single" (default) or + "eval" + + Return value / exceptions raised: + + - Return a code object if the command is complete and valid + - Return None if the command is incomplete + - Raise SyntaxError, ValueError or OverflowError if the command is a + syntax error (OverflowError and ValueError can be produced by + malformed literals). + """ + return _maybe_compile(self.compiler, source, filename, symbol) + + +# END --------------------------- from codeop import CommandCompiler, compile_command +# END --------------------------- from codeop import CommandCompiler, compile_command +# END --------------------------- from codeop import CommandCompiler, compile_command +# END --------------------------- from codeop import CommandCompiler, compile_command +# END --------------------------- from codeop import CommandCompiler, compile_command + + +__all__ = [ + "InteractiveInterpreter", + "InteractiveConsole", + "interact", + "compile_command", +] + +from _pydev_bundle._pydev_saved_modules import threading + + +class _EvalAwaitInNewEventLoop(threading.Thread): + def __init__(self, compiled, updated_globals, updated_locals): + threading.Thread.__init__(self) + self.daemon = True + self._compiled = compiled + self._updated_globals = updated_globals + self._updated_locals = updated_locals + + # Output + self.evaluated_value = None + self.exc = None + + async def _async_func(self): + return await eval(self._compiled, self._updated_locals, self._updated_globals) + + def run(self): + try: + import asyncio + + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) + self.evaluated_value = asyncio.run(self._async_func()) + except: + self.exc = sys.exc_info() + + +class InteractiveInterpreter: + """Base class for InteractiveConsole. + + This class deals with parsing and interpreter state (the user's + namespace); it doesn't deal with input buffering or prompting or + input file naming (the filename is always passed in explicitly). + + """ + + def __init__(self, locals=None): + """Constructor. + + The optional 'locals' argument specifies the dictionary in + which code will be executed; it defaults to a newly created + dictionary with key "__name__" set to "__console__" and key + "__doc__" set to None. + + """ + if locals is None: + locals = {"__name__": "__console__", "__doc__": None} + self.locals = locals + self.compile = CommandCompiler() + + def runsource(self, source, filename="", symbol="single"): + """Compile and run some source in the interpreter. + + Arguments are as for compile_command(). + + One of several things can happen: + + 1) The input is incorrect; compile_command() raised an + exception (SyntaxError or OverflowError). A syntax traceback + will be printed by calling the showsyntaxerror() method. + + 2) The input is incomplete, and more input is required; + compile_command() returned None. Nothing happens. + + 3) The input is complete; compile_command() returned a code + object. The code is executed by calling self.runcode() (which + also handles run-time exceptions, except for SystemExit). + + The return value is True in case 2, False in the other cases (unless + an exception is raised). The return value can be used to + decide whether to use sys.ps1 or sys.ps2 to prompt the next + line. + + """ + try: + code = self.compile(source, filename, symbol) + except (OverflowError, SyntaxError, ValueError): + # Case 1 + self.showsyntaxerror(filename) + return False + + if code is None: + # Case 2 + return True + + # Case 3 + self.runcode(code) + return False + + def runcode(self, code): + """Execute a code object. + + When an exception occurs, self.showtraceback() is called to + display a traceback. All exceptions are caught except + SystemExit, which is reraised. + + A note about KeyboardInterrupt: this exception may occur + elsewhere in this code, and may not always be caught. The + caller should be prepared to deal with it. + + """ + try: + is_async = False + if hasattr(inspect, "CO_COROUTINE"): + is_async = inspect.CO_COROUTINE & code.co_flags == inspect.CO_COROUTINE + + if is_async: + t = _EvalAwaitInNewEventLoop(code, self.locals, None) + t.start() + t.join() + + if t.exc: + raise t.exc[1].with_traceback(t.exc[2]) + + else: + exec(code, self.locals) + except SystemExit: + raise + except: + self.showtraceback() + + def showsyntaxerror(self, filename=None): + """Display the syntax error that just occurred. + + This doesn't display a stack trace because there isn't one. + + If a filename is given, it is stuffed in the exception instead + of what was there before (because Python's parser always uses + "" when reading from a string). + + The output is written by self.write(), below. + + """ + type, value, tb = sys.exc_info() + sys.last_type = type + sys.last_value = value + sys.last_traceback = tb + if filename and type is SyntaxError: + # Work hard to stuff the correct filename in the exception + try: + msg, (dummy_filename, lineno, offset, line) = value.args + except ValueError: + # Not the format we expect; leave it alone + pass + else: + # Stuff in the right filename + value = SyntaxError(msg, (filename, lineno, offset, line)) + sys.last_value = value + if sys.excepthook is sys.__excepthook__: + lines = traceback.format_exception_only(type, value) + self.write("".join(lines)) + else: + # If someone has set sys.excepthook, we let that take precedence + # over self.write + sys.excepthook(type, value, tb) + + def showtraceback(self): + """Display the exception that just occurred. + + We remove the first stack item because it is our own code. + + The output is written by self.write(), below. + + """ + sys.last_type, sys.last_value, last_tb = ei = sys.exc_info() + sys.last_traceback = last_tb + try: + lines = traceback.format_exception(ei[0], ei[1], last_tb.tb_next) + if sys.excepthook is sys.__excepthook__: + self.write("".join(lines)) + else: + # If someone has set sys.excepthook, we let that take precedence + # over self.write + sys.excepthook(ei[0], ei[1], last_tb) + finally: + last_tb = ei = None + + def write(self, data): + """Write a string. + + The base implementation writes to sys.stderr; a subclass may + replace this with a different implementation. + + """ + sys.stderr.write(data) + + +class InteractiveConsole(InteractiveInterpreter): + """Closely emulate the behavior of the interactive Python interpreter. + + This class builds on InteractiveInterpreter and adds prompting + using the familiar sys.ps1 and sys.ps2, and input buffering. + + """ + + def __init__(self, locals=None, filename=""): + """Constructor. + + The optional locals argument will be passed to the + InteractiveInterpreter base class. + + The optional filename argument should specify the (file)name + of the input stream; it will show up in tracebacks. + + """ + InteractiveInterpreter.__init__(self, locals) + self.filename = filename + self.resetbuffer() + + def resetbuffer(self): + """Reset the input buffer.""" + self.buffer = [] + + def interact(self, banner=None, exitmsg=None): + """Closely emulate the interactive Python console. + + The optional banner argument specifies the banner to print + before the first interaction; by default it prints a banner + similar to the one printed by the real Python interpreter, + followed by the current class name in parentheses (so as not + to confuse this with the real interpreter -- since it's so + close!). + + The optional exitmsg argument specifies the exit message + printed when exiting. Pass the empty string to suppress + printing an exit message. If exitmsg is not given or None, + a default message is printed. + + """ + try: + sys.ps1 + except AttributeError: + sys.ps1 = ">>> " + try: + sys.ps2 + except AttributeError: + sys.ps2 = "... " + cprt = 'Type "help", "copyright", "credits" or "license" for more information.' + if banner is None: + self.write( + "Python %s on %s\n%s\n(%s)\n" + % (sys.version, sys.platform, cprt, self.__class__.__name__) + ) + elif banner: + self.write("%s\n" % str(banner)) + more = 0 + while 1: + try: + if more: + prompt = sys.ps2 + else: + prompt = sys.ps1 + try: + line = self.raw_input(prompt) + except EOFError: + self.write("\n") + break + else: + more = self.push(line) + except KeyboardInterrupt: + self.write("\nKeyboardInterrupt\n") + self.resetbuffer() + more = 0 + if exitmsg is None: + self.write("now exiting %s...\n" % self.__class__.__name__) + elif exitmsg != "": + self.write("%s\n" % exitmsg) + + def push(self, line): + """Push a line to the interpreter. + + The line should not have a trailing newline; it may have + internal newlines. The line is appended to a buffer and the + interpreter's runsource() method is called with the + concatenated contents of the buffer as source. If this + indicates that the command was executed or invalid, the buffer + is reset; otherwise, the command is incomplete, and the buffer + is left as it was after the line was appended. The return + value is 1 if more input is required, 0 if the line was dealt + with in some way (this is the same as runsource()). + + """ + self.buffer.append(line) + source = "\n".join(self.buffer) + more = self.runsource(source, self.filename) + if not more: + self.resetbuffer() + return more + + def raw_input(self, prompt=""): + """Write a prompt and read a line. + + The returned line does not include the trailing newline. + When the user enters the EOF key sequence, EOFError is raised. + + The base implementation uses the built-in function + input(); a subclass may replace this with a different + implementation. + + """ + return input(prompt) + + +def interact(banner=None, readfunc=None, local=None, exitmsg=None): + """Closely emulate the interactive Python interpreter. + + This is a backwards compatible interface to the InteractiveConsole + class. When readfunc is not specified, it attempts to import the + readline module to enable GNU readline if it is available. + + Arguments (all optional, all default to None): + + banner -- passed to InteractiveConsole.interact() + readfunc -- if not None, replaces InteractiveConsole.raw_input() + local -- passed to InteractiveInterpreter.__init__() + exitmsg -- passed to InteractiveConsole.interact() + + """ + console = InteractiveConsole(local) + if readfunc is not None: + console.raw_input = readfunc + else: + try: + import readline + except ImportError: + pass + console.interact(banner, exitmsg) + + +if __name__ == "__main__": + import argparse + + parser = argparse.ArgumentParser() + parser.add_argument( + "-q", action="store_true", help="don't print version and copyright messages" + ) + args = parser.parse_args() + if args.q or sys.flags.quiet: + banner = "" + else: + banner = None + interact(banner) diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info.py new file mode 100644 index 000000000..bb223b217 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info.py @@ -0,0 +1,39 @@ +# Defines which version of the PyDBAdditionalThreadInfo we'll use. +from _pydevd_bundle.pydevd_constants import ( + ENV_FALSE_LOWER_VALUES, + ENV_TRUE_LOWER_VALUES, + USE_CYTHON_FLAG, +) + +if USE_CYTHON_FLAG in ENV_TRUE_LOWER_VALUES: + # We must import the cython version if forcing cython + from _pydevd_bundle.pydevd_cython_wrapper import ( + PyDBAdditionalThreadInfo, + _set_additional_thread_info_lock, # @UnusedImport + any_thread_stepping, + remove_additional_info, + set_additional_thread_info, + ) + +elif USE_CYTHON_FLAG in ENV_FALSE_LOWER_VALUES: + # Use the regular version if not forcing cython + from _pydevd_bundle.pydevd_additional_thread_info_regular import ( + PyDBAdditionalThreadInfo, + _set_additional_thread_info_lock, # @UnusedImport @Reimport + any_thread_stepping, + remove_additional_info, + set_additional_thread_info, + ) + +else: + # Regular: use fallback if not found (message is already given elsewhere). + try: + from _pydevd_bundle.pydevd_cython_wrapper import ( + PyDBAdditionalThreadInfo, + _set_additional_thread_info_lock, + any_thread_stepping, + remove_additional_info, + set_additional_thread_info, + ) + except ImportError: + pass diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info_regular.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info_regular.py new file mode 100644 index 000000000..2690aee01 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info_regular.py @@ -0,0 +1,330 @@ +import weakref + +from _pydev_bundle import pydev_log +from _pydev_bundle._pydev_saved_modules import threading +from _pydev_bundle.pydev_is_thread_alive import is_thread_alive + +from _pydevd_bundle.pydevd_constants import ( + PYTHON_SUSPEND, + STATE_RUN, + STATE_SUSPEND, + SUPPORT_GEVENT, + ForkSafeLock, + _current_frames, + get_global_debugger, + get_thread_id, +) + +version = 11 + + +# ======================================================================================================================= +# PyDBAdditionalThreadInfo +# ======================================================================================================================= +# fmt: off +# IFDEF CYTHON +# cdef class PyDBAdditionalThreadInfo: +# ELSE +class PyDBAdditionalThreadInfo: +# ENDIF +# fmt: on + + # Note: the params in cython are declared in pydevd_cython.pxd. + # fmt: off + # IFDEF CYTHON + # ELSE + __slots__ = [ + "pydev_state", + "pydev_step_stop", + "pydev_original_step_cmd", + "pydev_step_cmd", + "pydev_notify_kill", + "pydev_django_resolve_frame", + "pydev_call_from_jinja2", + "pydev_call_inside_jinja2", + "is_tracing", + "conditional_breakpoint_exception", + "pydev_message", + "suspend_type", + "pydev_next_line", + "pydev_func_name", + "suspended_at_unhandled", + "trace_suspend_type", + "top_level_thread_tracer_no_back_frames", + "top_level_thread_tracer_unhandled", + "thread_tracer", + "step_in_initial_location", + # Used for CMD_SMART_STEP_INTO (to know which smart step into variant to use) + "pydev_smart_parent_offset", + "pydev_smart_child_offset", + # Used for CMD_SMART_STEP_INTO (list[_pydevd_bundle.pydevd_bytecode_utils.Variant]) + # Filled when the cmd_get_smart_step_into_variants is requested (so, this is a copy + # of the last request for a given thread and pydev_smart_parent_offset/pydev_smart_child_offset relies on it). + "pydev_smart_step_into_variants", + "target_id_to_smart_step_into_variant", + "pydev_use_scoped_step_frame", + "weak_thread", + "is_in_wait_loop", + ] + # ENDIF + # fmt: on + + def __init__(self): + self.pydev_state = STATE_RUN # STATE_RUN or STATE_SUSPEND + self.pydev_step_stop = None + + # Note: we have `pydev_original_step_cmd` and `pydev_step_cmd` because the original is to + # say the action that started it and the other is to say what's the current tracing behavior + # (because it's possible that we start with a step over but may have to switch to a + # different step strategy -- for instance, if a step over is done and we return the current + # method the strategy is changed to a step in). + + self.pydev_original_step_cmd = -1 # Something as CMD_STEP_INTO, CMD_STEP_OVER, etc. + self.pydev_step_cmd = -1 # Something as CMD_STEP_INTO, CMD_STEP_OVER, etc. + + self.pydev_notify_kill = False + self.pydev_django_resolve_frame = False + self.pydev_call_from_jinja2 = None + self.pydev_call_inside_jinja2 = None + self.is_tracing = 0 + self.conditional_breakpoint_exception = None + self.pydev_message = "" + self.suspend_type = PYTHON_SUSPEND + self.pydev_next_line = -1 + self.pydev_func_name = ".invalid." # Must match the type in cython + self.suspended_at_unhandled = False + self.trace_suspend_type = "trace" # 'trace' or 'frame_eval' + self.top_level_thread_tracer_no_back_frames = [] + self.top_level_thread_tracer_unhandled = None + self.thread_tracer = None + self.step_in_initial_location = None + self.pydev_smart_parent_offset = -1 + self.pydev_smart_child_offset = -1 + self.pydev_smart_step_into_variants = () + self.target_id_to_smart_step_into_variant = {} + + # Flag to indicate ipython use-case where each line will be executed as a call/line/return + # in a new new frame but in practice we want to consider each new frame as if it was all + # part of the same frame. + # + # In practice this means that a step over shouldn't revert to a step in and we need some + # special logic to know when we should stop in a step over as we need to consider 2 + # different frames as being equal if they're logically the continuation of a frame + # being executed by ipython line by line. + # + # See: https://github.com/microsoft/debugpy/issues/869#issuecomment-1132141003 + self.pydev_use_scoped_step_frame = False + self.weak_thread = None + + # Purpose: detect if this thread is suspended and actually in the wait loop + # at this time (otherwise it may be suspended but still didn't reach a point. + # to pause). + self.is_in_wait_loop = False + + # fmt: off + # IFDEF CYTHON + # cpdef object _get_related_thread(self): + # ELSE + def _get_related_thread(self): + # ENDIF + # fmt: on + if self.pydev_notify_kill: # Already killed + return None + + if self.weak_thread is None: + return None + + thread = self.weak_thread() + if thread is None: + return False + + if not is_thread_alive(thread): + return None + + if thread._ident is None: # Can this happen? + pydev_log.critical("thread._ident is None in _get_related_thread!") + return None + + if threading._active.get(thread._ident) is not thread: + return None + + return thread + + # fmt: off + # IFDEF CYTHON + # cpdef bint _is_stepping(self): + # ELSE + def _is_stepping(self): + # ENDIF + # fmt: on + if self.pydev_state == STATE_RUN and self.pydev_step_cmd != -1: + # This means actually stepping in a step operation. + return True + + if self.pydev_state == STATE_SUSPEND and self.is_in_wait_loop: + # This means stepping because it was suspended but still didn't + # reach a suspension point. + return True + + return False + + # fmt: off + # IFDEF CYTHON + # cpdef get_topmost_frame(self, thread): + # ELSE + def get_topmost_frame(self, thread): + # ENDIF + # fmt: on + """ + Gets the topmost frame for the given thread. Note that it may be None + and callers should remove the reference to the frame as soon as possible + to avoid disturbing user code. + """ + # sys._current_frames(): dictionary with thread id -> topmost frame + current_frames = _current_frames() + topmost_frame = current_frames.get(thread._ident) + if topmost_frame is None: + # Note: this is expected for dummy threads (so, getting the topmost frame should be + # treated as optional). + pydev_log.info( + "Unable to get topmost frame for thread: %s, thread.ident: %s, id(thread): %s\nCurrent frames: %s.\n" "GEVENT_SUPPORT: %s", + thread, + thread.ident, + id(thread), + current_frames, + SUPPORT_GEVENT, + ) + + return topmost_frame + + # fmt: off + # IFDEF CYTHON + # cpdef update_stepping_info(self): + # ELSE + def update_stepping_info(self): + # ENDIF + # fmt: on + _update_stepping_info(self) + + def __str__(self): + return "State:%s Stop:%s Cmd: %s Kill:%s" % (self.pydev_state, self.pydev_step_stop, self.pydev_step_cmd, self.pydev_notify_kill) + + +_set_additional_thread_info_lock = ForkSafeLock() +_next_additional_info = [PyDBAdditionalThreadInfo()] + + +# fmt: off +# IFDEF CYTHON +# cpdef set_additional_thread_info(thread): +# ELSE +def set_additional_thread_info(thread): +# ENDIF +# fmt: on + try: + additional_info = thread.additional_info + if additional_info is None: + raise AttributeError() + except: + with _set_additional_thread_info_lock: + # If it's not there, set it within a lock to avoid any racing + # conditions. + try: + additional_info = thread.additional_info + except: + additional_info = None + + if additional_info is None: + # Note: don't call PyDBAdditionalThreadInfo constructor at this + # point as it can piggy-back into the debugger which could + # get here again, rather get the global ref which was pre-created + # and add a new entry only after we set thread.additional_info. + additional_info = _next_additional_info[0] + thread.additional_info = additional_info + additional_info.weak_thread = weakref.ref(thread) + add_additional_info(additional_info) + del _next_additional_info[:] + _next_additional_info.append(PyDBAdditionalThreadInfo()) + + return additional_info + + +# fmt: off +# IFDEF CYTHON +# cdef set _all_infos +# cdef set _infos_stepping +# cdef object _update_infos_lock +# ELSE +# ENDIF +# fmt: on + +_all_infos = set() +_infos_stepping = set() +_update_infos_lock = ForkSafeLock() + + +# fmt: off +# IFDEF CYTHON +# cdef _update_stepping_info(PyDBAdditionalThreadInfo info): +# ELSE +def _update_stepping_info(info): +# ENDIF +# fmt: on + + global _infos_stepping + global _all_infos + + with _update_infos_lock: + # Removes entries that are no longer valid. + new_all_infos = set() + for info in _all_infos: + if info._get_related_thread() is not None: + new_all_infos.add(info) + _all_infos = new_all_infos + + new_stepping = set() + for info in _all_infos: + if info._is_stepping(): + new_stepping.add(info) + _infos_stepping = new_stepping + + py_db = get_global_debugger() + if py_db is not None and not py_db.pydb_disposed: + thread = info.weak_thread() + if thread is not None: + thread_id = get_thread_id(thread) + _queue, event = py_db.get_internal_queue_and_event(thread_id) + event.set() + +# fmt: off +# IFDEF CYTHON +# cpdef add_additional_info(PyDBAdditionalThreadInfo info): +# ELSE +def add_additional_info(info): +# ENDIF +# fmt: on + with _update_infos_lock: + _all_infos.add(info) + if info._is_stepping(): + _infos_stepping.add(info) + +# fmt: off +# IFDEF CYTHON +# cpdef remove_additional_info(PyDBAdditionalThreadInfo info): +# ELSE +def remove_additional_info(info): +# ENDIF +# fmt: on + with _update_infos_lock: + _all_infos.discard(info) + _infos_stepping.discard(info) + + +# fmt: off +# IFDEF CYTHON +# cpdef bint any_thread_stepping(): +# ELSE +def any_thread_stepping(): +# ENDIF +# fmt: on + return bool(_infos_stepping) diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_api.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_api.py new file mode 100644 index 000000000..61a3710f0 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_api.py @@ -0,0 +1,1501 @@ +import bisect +import ctypes +import itertools +import linecache +import os +import subprocess +import sys +import tokenize +import types + +import pydevd_file_utils +from _pydev_bundle import pydev_log +from _pydev_bundle._pydev_saved_modules import threading +from _pydevd_sys_monitoring import pydevd_sys_monitoring +from pydevd_tracing import get_exception_traceback_str + +from _pydevd_bundle import pydevd_source_mapping, pydevd_utils +from _pydevd_bundle.pydevd_additional_thread_info import set_additional_thread_info +from _pydevd_bundle.pydevd_breakpoints import LineBreakpoint +from _pydevd_bundle.pydevd_collect_bytecode_info import code_to_bytecode_representation +from _pydevd_bundle.pydevd_comm import ( + InternalConsoleExec, + InternalGetArray, + InternalGetThreadStack, + InternalGetVariable, + InternalLoadFullValue, + InternalSetNextStatementThread, + internal_change_variable, + internal_change_variable_json, + internal_evaluate_expression, + internal_evaluate_expression_json, + internal_get_completions, + internal_get_description, + internal_get_exception_details_json, + internal_get_frame, + internal_get_variable_json, + internal_reload_code, + internal_set_expression_json, + internal_smart_step_into, + internal_step_in_thread, +) +from _pydevd_bundle.pydevd_comm_constants import ( + CMD_SMART_STEP_INTO, + CMD_STEP_INTO_MY_CODE, + CMD_STOP_ON_START, + CMD_THREAD_SUSPEND, +) +from _pydevd_bundle.pydevd_constants import ( + HTTP_JSON_PROTOCOL, + IS_WINDOWS, + JSON_PROTOCOL, + PYDEVD_USE_SYS_MONITORING, + DebugInfoHolder, + get_current_thread_id, + get_protocol, + set_protocol, +) +from _pydevd_bundle.pydevd_daemon_thread import run_as_pydevd_daemon_thread +from _pydevd_bundle.pydevd_net_command_factory_json import NetCommandFactoryJson +from _pydevd_bundle.pydevd_net_command_factory_xml import NetCommandFactory +from _pydevd_bundle.pydevd_thread_lifecycle import ( + pydevd_find_thread_by_id, + resume_threads, +) +from _pydevd_bundle.pydevd_utils import DAPGrouper, interrupt_main_thread + +try: + import dis +except ImportError: + + def _get_code_lines(code): + raise NotImplementedError + +else: + + def _get_code_lines(code): + if not isinstance(code, types.CodeType): + path = code + with tokenize.open(path) as f: + src = f.read() + code = compile(src, path, "exec", 0, dont_inherit=True) + return _get_code_lines(code) + + def iterate(): + # First, get all line starts for this code object. This does not include + # bodies of nested class and function definitions, as they have their + # own objects. + for _, lineno in dis.findlinestarts(code): + if lineno is not None: + yield lineno + + # For nested class and function definitions, their respective code objects + # are constants referenced by this object. + for const in code.co_consts: + if ( + isinstance(const, types.CodeType) + and const.co_filename == code.co_filename + ): + for lineno in _get_code_lines(const): + yield lineno + + return iterate() + + +class PyDevdAPI: + class VariablePresentation: + def __init__( + self, special="group", function="group", class_="group", protected="inline" + ): + self._presentation = { + DAPGrouper.SCOPE_SPECIAL_VARS: special, + DAPGrouper.SCOPE_FUNCTION_VARS: function, + DAPGrouper.SCOPE_CLASS_VARS: class_, + DAPGrouper.SCOPE_PROTECTED_VARS: protected, + } + + def get_presentation(self, scope): + return self._presentation[scope] + + def run(self, py_db): + py_db.ready_to_run = True + + def notify_initialize(self, py_db): + py_db.on_initialize() + + def notify_configuration_done(self, py_db): + py_db.on_configuration_done() + + def notify_disconnect(self, py_db): + py_db.on_disconnect() + + def set_protocol(self, py_db, seq, protocol): + set_protocol(protocol.strip()) + if get_protocol() in (HTTP_JSON_PROTOCOL, JSON_PROTOCOL): + cmd_factory_class = NetCommandFactoryJson + else: + cmd_factory_class = NetCommandFactory + + if not isinstance(py_db.cmd_factory, cmd_factory_class): + py_db.cmd_factory = cmd_factory_class() + + return py_db.cmd_factory.make_protocol_set_message(seq) + + def set_ide_os_and_breakpoints_by(self, py_db, seq, ide_os, breakpoints_by): + """ + :param ide_os: 'WINDOWS' or 'UNIX' + :param breakpoints_by: 'ID' or 'LINE' + """ + if breakpoints_by == "ID": + py_db._set_breakpoints_with_id = True + else: + py_db._set_breakpoints_with_id = False + + self.set_ide_os(ide_os) + + return py_db.cmd_factory.make_version_message(seq) + + def set_ide_os(self, ide_os): + """ + :param ide_os: 'WINDOWS' or 'UNIX' + """ + pydevd_file_utils.set_ide_os(ide_os) + + def set_gui_event_loop(self, py_db, gui_event_loop): + py_db._gui_event_loop = gui_event_loop + + def send_error_message(self, py_db, msg): + cmd = py_db.cmd_factory.make_warning_message("pydevd: %s\n" % (msg,)) + py_db.writer.add_command(cmd) + + def set_show_return_values(self, py_db, show_return_values): + if show_return_values: + py_db.show_return_values = True + else: + if py_db.show_return_values: + # We should remove saved return values + py_db.remove_return_values_flag = True + py_db.show_return_values = False + pydev_log.debug("Show return values: %s", py_db.show_return_values) + + def list_threads(self, py_db, seq): + # Response is the command with the list of threads to be added to the writer thread. + return py_db.cmd_factory.make_list_threads_message(py_db, seq) + + def request_suspend_thread(self, py_db, thread_id="*"): + # Yes, thread suspend is done at this point, not through an internal command. + threads = [] + suspend_all = thread_id.strip() == "*" + if suspend_all: + threads = pydevd_utils.get_non_pydevd_threads() + + elif thread_id.startswith("__frame__:"): + sys.stderr.write("Can't suspend tasklet: %s\n" % (thread_id,)) + + else: + threads = [pydevd_find_thread_by_id(thread_id)] + + for t in threads: + if t is None: + continue + py_db.set_suspend( + t, + CMD_THREAD_SUSPEND, + suspend_other_threads=suspend_all, + is_pause=True, + ) + # Break here (even if it's suspend all) as py_db.set_suspend will + # take care of suspending other threads. + break + + def set_enable_thread_notifications(self, py_db, enable): + """ + When disabled, no thread notifications (for creation/removal) will be + issued until it's re-enabled. + + Note that when it's re-enabled, a creation notification will be sent for + all existing threads even if it was previously sent (this is meant to + be used on disconnect/reconnect). + """ + py_db.set_enable_thread_notifications(enable) + + def request_disconnect(self, py_db, resume_threads): + self.set_enable_thread_notifications(py_db, False) + self.remove_all_breakpoints(py_db, "*") + self.remove_all_exception_breakpoints(py_db) + self.notify_disconnect(py_db) + + if resume_threads: + self.request_resume_thread(thread_id="*") + + def request_resume_thread(self, thread_id): + resume_threads(thread_id) + + def request_completions( + self, py_db, seq, thread_id, frame_id, act_tok, line=-1, column=-1 + ): + py_db.post_method_as_internal_command( + thread_id, + internal_get_completions, + seq, + thread_id, + frame_id, + act_tok, + line=line, + column=column, + ) + + def request_stack( + self, py_db, seq, thread_id, fmt=None, timeout=0.5, start_frame=0, levels=0 + ): + # If it's already suspended, get it right away. + internal_get_thread_stack = InternalGetThreadStack( + seq, + thread_id, + py_db, + set_additional_thread_info, + fmt=fmt, + timeout=timeout, + start_frame=start_frame, + levels=levels, + ) + if internal_get_thread_stack.can_be_executed_by( + get_current_thread_id(threading.current_thread()) + ): + internal_get_thread_stack.do_it(py_db) + else: + py_db.post_internal_command(internal_get_thread_stack, "*") + + def request_exception_info_json( + self, py_db, request, thread_id, thread, max_frames + ): + py_db.post_method_as_internal_command( + thread_id, + internal_get_exception_details_json, + request, + thread_id, + thread, + max_frames, + set_additional_thread_info=set_additional_thread_info, + iter_visible_frames_info=py_db.cmd_factory._iter_visible_frames_info, + ) + + def request_step(self, py_db, thread_id, step_cmd_id): + t = pydevd_find_thread_by_id(thread_id) + if t: + py_db.post_method_as_internal_command( + thread_id, + internal_step_in_thread, + thread_id, + step_cmd_id, + set_additional_thread_info=set_additional_thread_info, + ) + elif thread_id.startswith("__frame__:"): + sys.stderr.write("Can't make tasklet step command: %s\n" % (thread_id,)) + + def request_smart_step_into(self, py_db, seq, thread_id, offset, child_offset): + t = pydevd_find_thread_by_id(thread_id) + if t: + py_db.post_method_as_internal_command( + thread_id, + internal_smart_step_into, + thread_id, + offset, + child_offset, + set_additional_thread_info=set_additional_thread_info, + ) + elif thread_id.startswith("__frame__:"): + sys.stderr.write("Can't set next statement in tasklet: %s\n" % (thread_id,)) + + def request_smart_step_into_by_func_name( + self, py_db, seq, thread_id, line, func_name + ): + # Same thing as set next, just with a different cmd id. + self.request_set_next( + py_db, seq, thread_id, CMD_SMART_STEP_INTO, None, line, func_name + ) + + def request_set_next( + self, py_db, seq, thread_id, set_next_cmd_id, original_filename, line, func_name + ): + """ + set_next_cmd_id may actually be one of: + + CMD_RUN_TO_LINE + CMD_SET_NEXT_STATEMENT + + CMD_SMART_STEP_INTO -- note: request_smart_step_into is preferred if it's possible + to work with bytecode offset. + + :param Optional[str] original_filename: + If available, the filename may be source translated, otherwise no translation will take + place (the set next just needs the line afterwards as it executes locally, but for + the Jupyter integration, the source mapping may change the actual lines and not only + the filename). + """ + t = pydevd_find_thread_by_id(thread_id) + if t: + if original_filename is not None: + translated_filename = self.filename_to_server( + original_filename + ) # Apply user path mapping. + pydev_log.debug( + "Set next (after path translation) in: %s line: %s", + translated_filename, + line, + ) + func_name = self.to_str(func_name) + + assert ( + translated_filename.__class__ == str + ) # i.e.: bytes on py2 and str on py3 + assert func_name.__class__ == str # i.e.: bytes on py2 and str on py3 + + # Apply source mapping (i.e.: ipython). + ( + _source_mapped_filename, + new_line, + multi_mapping_applied, + ) = py_db.source_mapping.map_to_server(translated_filename, line) + if multi_mapping_applied: + pydev_log.debug( + "Set next (after source mapping) in: %s line: %s", + translated_filename, + line, + ) + line = new_line + + int_cmd = InternalSetNextStatementThread( + thread_id, set_next_cmd_id, line, func_name, seq=seq + ) + py_db.post_internal_command(int_cmd, thread_id) + elif thread_id.startswith("__frame__:"): + sys.stderr.write("Can't set next statement in tasklet: %s\n" % (thread_id,)) + + def request_reload_code(self, py_db, seq, module_name, filename): + """ + :param seq: if -1 no message will be sent back when the reload is done. + + Note: either module_name or filename may be None (but not both at the same time). + """ + thread_id = "*" # Any thread + # Note: not going for the main thread because in this case it'd only do the load + # when we stopped on a breakpoint. + py_db.post_method_as_internal_command( + thread_id, internal_reload_code, seq, module_name, filename + ) + + def request_change_variable( + self, py_db, seq, thread_id, frame_id, scope, attr, value + ): + """ + :param scope: 'FRAME' or 'GLOBAL' + """ + py_db.post_method_as_internal_command( + thread_id, + internal_change_variable, + seq, + thread_id, + frame_id, + scope, + attr, + value, + ) + + def request_get_variable(self, py_db, seq, thread_id, frame_id, scope, attrs): + """ + :param scope: 'FRAME' or 'GLOBAL' + """ + int_cmd = InternalGetVariable(seq, thread_id, frame_id, scope, attrs) + py_db.post_internal_command(int_cmd, thread_id) + + def request_get_array( + self, + py_db, + seq, + roffset, + coffset, + rows, + cols, + fmt, + thread_id, + frame_id, + scope, + attrs, + ): + int_cmd = InternalGetArray( + seq, roffset, coffset, rows, cols, fmt, thread_id, frame_id, scope, attrs + ) + py_db.post_internal_command(int_cmd, thread_id) + + def request_load_full_value(self, py_db, seq, thread_id, frame_id, vars): + int_cmd = InternalLoadFullValue(seq, thread_id, frame_id, vars) + py_db.post_internal_command(int_cmd, thread_id) + + def request_get_description(self, py_db, seq, thread_id, frame_id, expression): + py_db.post_method_as_internal_command( + thread_id, internal_get_description, seq, thread_id, frame_id, expression + ) + + def request_get_frame(self, py_db, seq, thread_id, frame_id): + py_db.post_method_as_internal_command( + thread_id, internal_get_frame, seq, thread_id, frame_id + ) + + def to_str(self, s): + """ + -- in py3 raises an error if it's not str already. + """ + if s.__class__ != str: + raise AssertionError( + "Expected to have str on Python 3. Found: %s (%s)" % (s, s.__class__) + ) + return s + + def filename_to_str(self, filename): + """ + -- in py3 raises an error if it's not str already. + """ + if filename.__class__ != str: + raise AssertionError( + "Expected to have str on Python 3. Found: %s (%s)" + % (filename, filename.__class__) + ) + return filename + + def filename_to_server(self, filename): + filename = self.filename_to_str(filename) + filename = pydevd_file_utils.map_file_to_server(filename) + return filename + + class _DummyFrame: + """ + Dummy frame to be used with PyDB.apply_files_filter (as we don't really have the + related frame as breakpoints are added before execution). + """ + + class _DummyCode: + def __init__(self, filename): + self.co_firstlineno = 1 + self.co_filename = filename + self.co_name = "invalid func name " + + def __init__(self, filename): + self.f_code = self._DummyCode(filename) + self.f_globals = {} + + ADD_BREAKPOINT_NO_ERROR = 0 + ADD_BREAKPOINT_FILE_NOT_FOUND = 1 + ADD_BREAKPOINT_FILE_EXCLUDED_BY_FILTERS = 2 + + # This means that the breakpoint couldn't be fully validated (more runtime + # information may be needed). + ADD_BREAKPOINT_LAZY_VALIDATION = 3 + ADD_BREAKPOINT_INVALID_LINE = 4 + + class _AddBreakpointResult: + # :see: ADD_BREAKPOINT_NO_ERROR = 0 + # :see: ADD_BREAKPOINT_FILE_NOT_FOUND = 1 + # :see: ADD_BREAKPOINT_FILE_EXCLUDED_BY_FILTERS = 2 + # :see: ADD_BREAKPOINT_LAZY_VALIDATION = 3 + # :see: ADD_BREAKPOINT_INVALID_LINE = 4 + + __slots__ = [ + "error_code", + "breakpoint_id", + "translated_filename", + "translated_line", + "original_line", + ] + + def __init__( + self, breakpoint_id, translated_filename, translated_line, original_line + ): + self.error_code = PyDevdAPI.ADD_BREAKPOINT_NO_ERROR + self.breakpoint_id = breakpoint_id + self.translated_filename = translated_filename + self.translated_line = translated_line + self.original_line = original_line + + def add_breakpoint( + self, + py_db, + original_filename, + breakpoint_type, + breakpoint_id, + line, + condition, + func_name, + expression, + suspend_policy, + hit_condition, + is_logpoint, + adjust_line=False, + on_changed_breakpoint_state=None, + ): + """ + :param str original_filename: + Note: must be sent as it was received in the protocol. It may be translated in this + function and its final value will be available in the returned _AddBreakpointResult. + + :param str breakpoint_type: + One of: 'python-line', 'django-line', 'jinja2-line'. + + :param int breakpoint_id: + + :param int line: + Note: it's possible that a new line was actually used. If that's the case its + final value will be available in the returned _AddBreakpointResult. + + :param condition: + Either None or the condition to activate the breakpoint. + + :param str func_name: + If "None" (str), may hit in any context. + Empty string will hit only top level. + Any other value must match the scope of the method to be matched. + + :param str expression: + None or the expression to be evaluated. + + :param suspend_policy: + Either "NONE" (to suspend only the current thread when the breakpoint is hit) or + "ALL" (to suspend all threads when a breakpoint is hit). + + :param str hit_condition: + An expression where `@HIT@` will be replaced by the number of hits. + i.e.: `@HIT@ == x` or `@HIT@ >= x` + + :param bool is_logpoint: + If True and an expression is passed, pydevd will create an io message command with the + result of the evaluation. + + :param bool adjust_line: + If True, the breakpoint line should be adjusted if the current line doesn't really + match an executable line (if possible). + + :param callable on_changed_breakpoint_state: + This is called when something changed internally on the breakpoint after it was initially + added (for instance, template file_to_line_to_breakpoints could be signaled as invalid initially and later + when the related template is loaded, if the line is valid it could be marked as valid). + + The signature for the callback should be: + on_changed_breakpoint_state(breakpoint_id: int, add_breakpoint_result: _AddBreakpointResult) + + Note that the add_breakpoint_result should not be modified by the callback (the + implementation may internally reuse the same instance multiple times). + + :return _AddBreakpointResult: + """ + assert original_filename.__class__ == str, "Expected str, found: %s" % ( + original_filename.__class__, + ) # i.e.: bytes on py2 and str on py3 + + original_filename_normalized = pydevd_file_utils.normcase_from_client( + original_filename + ) + + pydev_log.debug( + "Request for breakpoint in: %s line: %s", original_filename, line + ) + original_line = line + # Parameters to reapply breakpoint. + api_add_breakpoint_params = ( + original_filename, + breakpoint_type, + breakpoint_id, + line, + condition, + func_name, + expression, + suspend_policy, + hit_condition, + is_logpoint, + ) + + translated_filename = self.filename_to_server( + original_filename + ) # Apply user path mapping. + pydev_log.debug( + "Breakpoint (after path translation) in: %s line: %s", + translated_filename, + line, + ) + func_name = self.to_str(func_name) + + assert translated_filename.__class__ == str # i.e.: bytes on py2 and str on py3 + assert func_name.__class__ == str # i.e.: bytes on py2 and str on py3 + + # Apply source mapping (i.e.: ipython). + ( + source_mapped_filename, + new_line, + multi_mapping_applied, + ) = py_db.source_mapping.map_to_server(translated_filename, line) + + if multi_mapping_applied: + pydev_log.debug( + "Breakpoint (after source mapping) in: %s line: %s", + source_mapped_filename, + new_line, + ) + # Note that source mapping is internal and does not change the resulting filename nor line + # (we want the outside world to see the line in the original file and not in the ipython + # cell, otherwise the editor wouldn't be correct as the returned line is the line to + # which the breakpoint will be moved in the editor). + result = self._AddBreakpointResult( + breakpoint_id, original_filename, line, original_line + ) + + # If a multi-mapping was applied, consider it the canonical / source mapped version (translated to ipython cell). + translated_absolute_filename = source_mapped_filename + canonical_normalized_filename = pydevd_file_utils.normcase( + source_mapped_filename + ) + line = new_line + + else: + translated_absolute_filename = pydevd_file_utils.absolute_path( + translated_filename + ) + canonical_normalized_filename = pydevd_file_utils.canonical_normalized_path( + translated_filename + ) + + if adjust_line and not translated_absolute_filename.startswith("<"): + # Validate file_to_line_to_breakpoints and adjust their positions. + try: + lines = sorted(_get_code_lines(translated_absolute_filename)) + except Exception: + pass + else: + if line not in lines: + # Adjust to the first preceding valid line. + idx = bisect.bisect_left(lines, line) + if idx > 0: + line = lines[idx - 1] + + result = self._AddBreakpointResult( + breakpoint_id, original_filename, line, original_line + ) + + py_db.api_received_breakpoints[ + (original_filename_normalized, breakpoint_id) + ] = ( + canonical_normalized_filename, + api_add_breakpoint_params, + ) + + if not translated_absolute_filename.startswith("<"): + # Note: if a mapping pointed to a file starting with '<', don't validate. + + if not pydevd_file_utils.exists(translated_absolute_filename): + result.error_code = self.ADD_BREAKPOINT_FILE_NOT_FOUND + return result + + if ( + py_db.is_files_filter_enabled + and not py_db.get_require_module_for_filters() + and py_db.apply_files_filter( + self._DummyFrame(translated_absolute_filename), + translated_absolute_filename, + False, + ) + ): + # Note that if `get_require_module_for_filters()` returns False, we don't do this check. + # This is because we don't have the module name given a file at this point (in + # runtime it's gotten from the frame.f_globals). + # An option could be calculate it based on the filename and current sys.path, + # but on some occasions that may be wrong (for instance with `__main__` or if + # the user dynamically changes the PYTHONPATH). + + # Note: depending on the use-case, filters may be changed, so, keep on going and add the + # breakpoint even with the error code. + result.error_code = self.ADD_BREAKPOINT_FILE_EXCLUDED_BY_FILTERS + + if breakpoint_type == "python-line": + added_breakpoint = LineBreakpoint( + breakpoint_id, + line, + condition, + func_name, + expression, + suspend_policy, + hit_condition=hit_condition, + is_logpoint=is_logpoint, + ) + + file_to_line_to_breakpoints = py_db.breakpoints + file_to_id_to_breakpoint = py_db.file_to_id_to_line_breakpoint + supported_type = True + + else: + add_plugin_breakpoint_result = None + plugin = py_db.get_plugin_lazy_init() + if plugin is not None: + add_plugin_breakpoint_result = plugin.add_breakpoint( + "add_line_breakpoint", + py_db, + breakpoint_type, + canonical_normalized_filename, + breakpoint_id, + line, + condition, + expression, + func_name, + hit_condition=hit_condition, + is_logpoint=is_logpoint, + add_breakpoint_result=result, + on_changed_breakpoint_state=on_changed_breakpoint_state, + ) + + if add_plugin_breakpoint_result is not None: + supported_type = True + ( + added_breakpoint, + file_to_line_to_breakpoints, + ) = add_plugin_breakpoint_result + file_to_id_to_breakpoint = py_db.file_to_id_to_plugin_breakpoint + else: + supported_type = False + + if not supported_type: + raise NameError(breakpoint_type) + + pydev_log.debug( + "Added breakpoint:%s - line:%s - func_name:%s\n", + canonical_normalized_filename, + line, + func_name, + ) + + if canonical_normalized_filename in file_to_id_to_breakpoint: + id_to_pybreakpoint = file_to_id_to_breakpoint[canonical_normalized_filename] + else: + id_to_pybreakpoint = file_to_id_to_breakpoint[ + canonical_normalized_filename + ] = {} + + id_to_pybreakpoint[breakpoint_id] = added_breakpoint + py_db.consolidate_breakpoints( + canonical_normalized_filename, + id_to_pybreakpoint, + file_to_line_to_breakpoints, + ) + if py_db.plugin is not None: + py_db.has_plugin_line_breaks = py_db.plugin.has_line_breaks(py_db) + py_db.plugin.after_breakpoints_consolidated( + py_db, + canonical_normalized_filename, + id_to_pybreakpoint, + file_to_line_to_breakpoints, + ) + + py_db.on_breakpoints_changed() + return result + + def reapply_breakpoints(self, py_db): + """ + Reapplies all the received breakpoints as they were received by the API (so, new + translations are applied). + """ + pydev_log.debug("Reapplying breakpoints.") + values = list( + py_db.api_received_breakpoints.values() + ) # Create a copy with items to reapply. + self.remove_all_breakpoints(py_db, "*") + for val in values: + _new_filename, api_add_breakpoint_params = val + self.add_breakpoint(py_db, *api_add_breakpoint_params) + + def remove_all_breakpoints(self, py_db, received_filename): + """ + Removes all the breakpoints from a given file or from all files if received_filename == '*'. + + :param str received_filename: + Note: must be sent as it was received in the protocol. It may be translated in this + function. + """ + assert received_filename.__class__ == str # i.e.: bytes on py2 and str on py3 + changed = False + lst = [ + py_db.file_to_id_to_line_breakpoint, + py_db.file_to_id_to_plugin_breakpoint, + py_db.breakpoints, + ] + if hasattr(py_db, "django_breakpoints"): + lst.append(py_db.django_breakpoints) + + if hasattr(py_db, "jinja2_breakpoints"): + lst.append(py_db.jinja2_breakpoints) + + if received_filename == "*": + py_db.api_received_breakpoints.clear() + + for file_to_id_to_breakpoint in lst: + if file_to_id_to_breakpoint: + file_to_id_to_breakpoint.clear() + changed = True + + else: + received_filename_normalized = pydevd_file_utils.normcase_from_client( + received_filename + ) + items = list( + py_db.api_received_breakpoints.items() + ) # Create a copy to remove items. + translated_filenames = [] + for key, val in items: + original_filename_normalized, _breakpoint_id = key + if original_filename_normalized == received_filename_normalized: + canonical_normalized_filename, _api_add_breakpoint_params = val + # Note: there can be actually 1:N mappings due to source mapping (i.e.: ipython). + translated_filenames.append(canonical_normalized_filename) + del py_db.api_received_breakpoints[key] + + for canonical_normalized_filename in translated_filenames: + for file_to_id_to_breakpoint in lst: + if canonical_normalized_filename in file_to_id_to_breakpoint: + file_to_id_to_breakpoint.pop( + canonical_normalized_filename, None + ) + changed = True + + if changed: + py_db.on_breakpoints_changed(removed=True) + + def remove_breakpoint( + self, py_db, received_filename, breakpoint_type, breakpoint_id + ): + """ + :param str received_filename: + Note: must be sent as it was received in the protocol. It may be translated in this + function. + + :param str breakpoint_type: + One of: 'python-line', 'django-line', 'jinja2-line'. + + :param int breakpoint_id: + """ + received_filename_normalized = pydevd_file_utils.normcase_from_client( + received_filename + ) + for key, val in list(py_db.api_received_breakpoints.items()): + original_filename_normalized, existing_breakpoint_id = key + _new_filename, _api_add_breakpoint_params = val + if ( + received_filename_normalized == original_filename_normalized + and existing_breakpoint_id == breakpoint_id + ): + del py_db.api_received_breakpoints[key] + break + else: + pydev_log.info( + "Did not find breakpoint to remove: %s (breakpoint id: %s)", + received_filename, + breakpoint_id, + ) + + file_to_id_to_breakpoint = None + received_filename = self.filename_to_server(received_filename) + canonical_normalized_filename = pydevd_file_utils.canonical_normalized_path( + received_filename + ) + + if breakpoint_type == "python-line": + file_to_line_to_breakpoints = py_db.breakpoints + file_to_id_to_breakpoint = py_db.file_to_id_to_line_breakpoint + + elif py_db.plugin is not None: + result = py_db.plugin.get_breakpoints(py_db, breakpoint_type) + if result is not None: + file_to_id_to_breakpoint = py_db.file_to_id_to_plugin_breakpoint + file_to_line_to_breakpoints = result + + if file_to_id_to_breakpoint is None: + pydev_log.critical( + "Error removing breakpoint. Cannot handle breakpoint of type %s", + breakpoint_type, + ) + + else: + try: + id_to_pybreakpoint = file_to_id_to_breakpoint.get( + canonical_normalized_filename, {} + ) + if DebugInfoHolder.DEBUG_TRACE_LEVEL >= 1: + existing = id_to_pybreakpoint[breakpoint_id] + pydev_log.info( + "Removed breakpoint:%s - line:%s - func_name:%s (id: %s)\n" + % ( + canonical_normalized_filename, + existing.line, + existing.func_name, + breakpoint_id, + ) + ) + + del id_to_pybreakpoint[breakpoint_id] + py_db.consolidate_breakpoints( + canonical_normalized_filename, + id_to_pybreakpoint, + file_to_line_to_breakpoints, + ) + if py_db.plugin is not None: + py_db.has_plugin_line_breaks = py_db.plugin.has_line_breaks(py_db) + py_db.plugin.after_breakpoints_consolidated( + py_db, + canonical_normalized_filename, + id_to_pybreakpoint, + file_to_line_to_breakpoints, + ) + + except KeyError: + pydev_log.info( + "Error removing breakpoint: Breakpoint id not found: %s id: %s. Available ids: %s\n", + canonical_normalized_filename, + breakpoint_id, + list(id_to_pybreakpoint), + ) + + py_db.on_breakpoints_changed(removed=True) + + def set_function_breakpoints(self, py_db, function_breakpoints): + function_breakpoint_name_to_breakpoint = {} + for function_breakpoint in function_breakpoints: + function_breakpoint_name_to_breakpoint[ + function_breakpoint.func_name + ] = function_breakpoint + + py_db.function_breakpoint_name_to_breakpoint = ( + function_breakpoint_name_to_breakpoint + ) + py_db.on_breakpoints_changed() + + def request_exec_or_evaluate( + self, + py_db, + seq, + thread_id, + frame_id, + expression, + is_exec, + trim_if_too_big, + attr_to_set_result, + ): + py_db.post_method_as_internal_command( + thread_id, + internal_evaluate_expression, + seq, + thread_id, + frame_id, + expression, + is_exec, + trim_if_too_big, + attr_to_set_result, + ) + + def request_exec_or_evaluate_json(self, py_db, request, thread_id): + py_db.post_method_as_internal_command( + thread_id, internal_evaluate_expression_json, request, thread_id + ) + + def request_set_expression_json(self, py_db, request, thread_id): + py_db.post_method_as_internal_command( + thread_id, internal_set_expression_json, request, thread_id + ) + + def request_console_exec(self, py_db, seq, thread_id, frame_id, expression): + int_cmd = InternalConsoleExec(seq, thread_id, frame_id, expression) + py_db.post_internal_command(int_cmd, thread_id) + + def request_load_source(self, py_db, seq, filename): + """ + :param str filename: + Note: must be sent as it was received in the protocol. It may be translated in this + function. + """ + try: + filename = self.filename_to_server(filename) + assert filename.__class__ == str # i.e.: bytes on py2 and str on py3 + + with tokenize.open(filename) as stream: + source = stream.read() + cmd = py_db.cmd_factory.make_load_source_message(seq, source) + except: + cmd = py_db.cmd_factory.make_error_message( + seq, get_exception_traceback_str() + ) + + py_db.writer.add_command(cmd) + + def get_decompiled_source_from_frame_id(self, py_db, frame_id): + """ + :param py_db: + :param frame_id: + :throws Exception: + If unable to get the frame in the currently paused frames or if some error happened + when decompiling. + """ + variable = py_db.suspended_frames_manager.get_variable(int(frame_id)) + frame = variable.value + + # Check if it's in the linecache first. + lines = ( + linecache.getline(frame.f_code.co_filename, i) for i in itertools.count(1) + ) + lines = itertools.takewhile(bool, lines) # empty lines are '\n', EOF is '' + + source = "".join(lines) + if not source: + source = code_to_bytecode_representation(frame.f_code) + + return source + + def request_load_source_from_frame_id(self, py_db, seq, frame_id): + try: + source = self.get_decompiled_source_from_frame_id(py_db, frame_id) + cmd = py_db.cmd_factory.make_load_source_from_frame_id_message(seq, source) + except: + cmd = py_db.cmd_factory.make_error_message( + seq, get_exception_traceback_str() + ) + + py_db.writer.add_command(cmd) + + def add_python_exception_breakpoint( + self, + py_db, + exception, + condition, + expression, + notify_on_handled_exceptions, + notify_on_unhandled_exceptions, + notify_on_user_unhandled_exceptions, + notify_on_first_raise_only, + ignore_libraries, + ): + exception_breakpoint = py_db.add_break_on_exception( + exception, + condition=condition, + expression=expression, + notify_on_handled_exceptions=notify_on_handled_exceptions, + notify_on_unhandled_exceptions=notify_on_unhandled_exceptions, + notify_on_user_unhandled_exceptions=notify_on_user_unhandled_exceptions, + notify_on_first_raise_only=notify_on_first_raise_only, + ignore_libraries=ignore_libraries, + ) + + if exception_breakpoint is not None: + py_db.on_breakpoints_changed() + + def add_plugins_exception_breakpoint(self, py_db, breakpoint_type, exception): + supported_type = False + plugin = py_db.get_plugin_lazy_init() + if plugin is not None: + supported_type = plugin.add_breakpoint( + "add_exception_breakpoint", py_db, breakpoint_type, exception + ) + + if supported_type: + py_db.has_plugin_exception_breaks = py_db.plugin.has_exception_breaks(py_db) + py_db.on_breakpoints_changed() + else: + raise NameError(breakpoint_type) + + def remove_python_exception_breakpoint(self, py_db, exception): + try: + cp = py_db.break_on_uncaught_exceptions.copy() + cp.pop(exception, None) + py_db.break_on_uncaught_exceptions = cp + + cp = py_db.break_on_caught_exceptions.copy() + cp.pop(exception, None) + py_db.break_on_caught_exceptions = cp + + cp = py_db.break_on_user_uncaught_exceptions.copy() + cp.pop(exception, None) + py_db.break_on_user_uncaught_exceptions = cp + except: + pydev_log.exception("Error while removing exception %s", sys.exc_info()[0]) + + py_db.on_breakpoints_changed(removed=True) + + def remove_plugins_exception_breakpoint(self, py_db, exception_type, exception): + # I.e.: no need to initialize lazy (if we didn't have it in the first place, we can't remove + # anything from it anyways). + plugin = py_db.plugin + if plugin is None: + return + + supported_type = plugin.remove_exception_breakpoint( + py_db, exception_type, exception + ) + + if supported_type: + py_db.has_plugin_exception_breaks = py_db.plugin.has_exception_breaks(py_db) + else: + pydev_log.info( + "No exception of type: %s was previously registered.", exception_type + ) + + py_db.on_breakpoints_changed(removed=True) + + def remove_all_exception_breakpoints(self, py_db): + py_db.break_on_uncaught_exceptions = {} + py_db.break_on_caught_exceptions = {} + py_db.break_on_user_uncaught_exceptions = {} + + plugin = py_db.plugin + if plugin is not None: + plugin.remove_all_exception_breakpoints(py_db) + py_db.on_breakpoints_changed(removed=True) + + def set_project_roots(self, py_db, project_roots): + """ + :param str project_roots: + """ + py_db.set_project_roots(project_roots) + + def set_stepping_resumes_all_threads(self, py_db, stepping_resumes_all_threads): + py_db.stepping_resumes_all_threads = stepping_resumes_all_threads + + # Add it to the namespace so that it's available as PyDevdAPI.ExcludeFilter + from _pydevd_bundle.pydevd_filtering import ExcludeFilter # noqa + + def set_exclude_filters(self, py_db, exclude_filters): + """ + :param list(PyDevdAPI.ExcludeFilter) exclude_filters: + """ + py_db.set_exclude_filters(exclude_filters) + + def set_use_libraries_filter(self, py_db, use_libraries_filter): + py_db.set_use_libraries_filter(use_libraries_filter) + + def request_get_variable_json(self, py_db, request, thread_id): + """ + :param VariablesRequest request: + """ + py_db.post_method_as_internal_command( + thread_id, internal_get_variable_json, request + ) + + def request_change_variable_json(self, py_db, request, thread_id): + """ + :param SetVariableRequest request: + """ + py_db.post_method_as_internal_command( + thread_id, internal_change_variable_json, request + ) + + def set_dont_trace_start_end_patterns(self, py_db, start_patterns, end_patterns): + # Note: start/end patterns normalized internally. + start_patterns = tuple(pydevd_file_utils.normcase(x) for x in start_patterns) + end_patterns = tuple(pydevd_file_utils.normcase(x) for x in end_patterns) + + # After it's set the first time, we can still change it, but we need to reset the + # related caches. + reset_caches = False + dont_trace_start_end_patterns_previously_set = ( + py_db.dont_trace_external_files.__name__ + == "custom_dont_trace_external_files" + ) + + if ( + not dont_trace_start_end_patterns_previously_set + and not start_patterns + and not end_patterns + ): + # If it wasn't set previously and start and end patterns are empty we don't need to do anything. + return + + if not py_db.is_cache_file_type_empty(): + # i.e.: custom function set in set_dont_trace_start_end_patterns. + if dont_trace_start_end_patterns_previously_set: + reset_caches = ( + py_db.dont_trace_external_files.start_patterns != start_patterns + or py_db.dont_trace_external_files.end_patterns != end_patterns + ) + + else: + reset_caches = True + + def custom_dont_trace_external_files(abs_path): + normalized_abs_path = pydevd_file_utils.normcase(abs_path) + return normalized_abs_path.startswith( + start_patterns + ) or normalized_abs_path.endswith(end_patterns) + + custom_dont_trace_external_files.start_patterns = start_patterns + custom_dont_trace_external_files.end_patterns = end_patterns + py_db.dont_trace_external_files = custom_dont_trace_external_files + + if reset_caches: + py_db.clear_dont_trace_start_end_patterns_caches() + + def stop_on_entry(self): + main_thread = pydevd_utils.get_main_thread() + if main_thread is None: + pydev_log.critical( + "Could not find main thread while setting Stop on Entry." + ) + else: + info = set_additional_thread_info(main_thread) + info.pydev_original_step_cmd = CMD_STOP_ON_START + info.pydev_step_cmd = CMD_STEP_INTO_MY_CODE + info.update_stepping_info() + if PYDEVD_USE_SYS_MONITORING: + pydevd_sys_monitoring.update_monitor_events(suspend_requested=True) + pydevd_sys_monitoring.restart_events() + + def set_ignore_system_exit_codes(self, py_db, ignore_system_exit_codes): + py_db.set_ignore_system_exit_codes(ignore_system_exit_codes) + + SourceMappingEntry = pydevd_source_mapping.SourceMappingEntry + + def set_source_mapping(self, py_db, source_filename, mapping): + """ + :param str source_filename: + The filename for the source mapping (bytes on py2 and str on py3). + This filename will be made absolute in this function. + + :param list(SourceMappingEntry) mapping: + A list with the source mapping entries to be applied to the given filename. + + :return str: + An error message if it was not possible to set the mapping or an empty string if + everything is ok. + """ + source_filename = self.filename_to_server(source_filename) + absolute_source_filename = pydevd_file_utils.absolute_path(source_filename) + for map_entry in mapping: + map_entry.source_filename = absolute_source_filename + error_msg = py_db.source_mapping.set_source_mapping( + absolute_source_filename, mapping + ) + if error_msg: + return error_msg + + self.reapply_breakpoints(py_db) + return "" + + def set_variable_presentation(self, py_db, variable_presentation): + assert isinstance(variable_presentation, self.VariablePresentation) + py_db.variable_presentation = variable_presentation + + def get_ppid(self): + """ + Provides the parent pid (even for older versions of Python on Windows). + """ + ppid = None + + try: + ppid = os.getppid() + except AttributeError: + pass + + if ppid is None and IS_WINDOWS: + ppid = self._get_windows_ppid() + + return ppid + + def _get_windows_ppid(self): + this_pid = os.getpid() + for ppid, pid in _list_ppid_and_pid(): + if pid == this_pid: + return ppid + + return None + + def _terminate_child_processes_windows(self, dont_terminate_child_pids): + this_pid = os.getpid() + for _ in range(50): # Try this at most 50 times before giving up. + # Note: we can't kill the process itself with taskkill, so, we + # list immediate children, kill that tree and then exit this process. + + children_pids = [] + for ppid, pid in _list_ppid_and_pid(): + if ppid == this_pid: + if pid not in dont_terminate_child_pids: + children_pids.append(pid) + + if not children_pids: + break + else: + for pid in children_pids: + self._call( + ["taskkill", "/F", "/PID", str(pid), "/T"], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + ) + + del children_pids[:] + + def _terminate_child_processes_linux_and_mac(self, dont_terminate_child_pids): + this_pid = os.getpid() + + def list_children_and_stop_forking(initial_pid, stop=True): + children_pids = [] + if stop: + # Ask to stop forking (shouldn't be called for this process, only subprocesses). + self._call( + ["kill", "-STOP", str(initial_pid)], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + ) + + list_popen = self._popen( + ["pgrep", "-P", str(initial_pid)], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + ) + + if list_popen is not None: + stdout, _ = list_popen.communicate() + for line in stdout.splitlines(): + line = line.decode("ascii").strip() + if line: + pid = str(line) + if pid in dont_terminate_child_pids: + continue + children_pids.append(pid) + # Recursively get children. + children_pids.extend(list_children_and_stop_forking(pid)) + return children_pids + + previously_found = set() + + for _ in range(50): # Try this at most 50 times before giving up. + children_pids = list_children_and_stop_forking(this_pid, stop=False) + found_new = False + + for pid in children_pids: + if pid not in previously_found: + found_new = True + previously_found.add(pid) + self._call( + ["kill", "-KILL", str(pid)], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + ) + + if not found_new: + break + + def _popen(self, cmdline, **kwargs): + try: + return subprocess.Popen(cmdline, **kwargs) + except: + if DebugInfoHolder.DEBUG_TRACE_LEVEL >= 1: + pydev_log.exception("Error running: %s" % (" ".join(cmdline))) + return None + + def _call(self, cmdline, **kwargs): + try: + subprocess.check_call(cmdline, **kwargs) + except: + if DebugInfoHolder.DEBUG_TRACE_LEVEL >= 1: + pydev_log.exception("Error running: %s" % (" ".join(cmdline))) + + def set_terminate_child_processes(self, py_db, terminate_child_processes): + py_db.terminate_child_processes = terminate_child_processes + + def set_terminate_keyboard_interrupt(self, py_db, terminate_keyboard_interrupt): + py_db.terminate_keyboard_interrupt = terminate_keyboard_interrupt + + def terminate_process(self, py_db): + """ + Terminates the current process (and child processes if the option to also terminate + child processes is enabled). + """ + try: + if py_db.terminate_child_processes: + pydev_log.debug("Terminating child processes.") + if IS_WINDOWS: + self._terminate_child_processes_windows( + py_db.dont_terminate_child_pids + ) + else: + self._terminate_child_processes_linux_and_mac( + py_db.dont_terminate_child_pids + ) + finally: + pydev_log.debug("Exiting process (os._exit(0)).") + os._exit(0) + + def _terminate_if_commands_processed(self, py_db): + py_db.dispose_and_kill_all_pydevd_threads() + self.terminate_process(py_db) + + def request_terminate_process(self, py_db): + if py_db.terminate_keyboard_interrupt: + if not py_db.keyboard_interrupt_requested: + py_db.keyboard_interrupt_requested = True + interrupt_main_thread() + return + + # We mark with a terminate_requested to avoid that paused threads start running + # (we should terminate as is without letting any paused thread run). + py_db.terminate_requested = True + run_as_pydevd_daemon_thread(py_db, self._terminate_if_commands_processed, py_db) + + def setup_auto_reload_watcher( + self, + py_db, + enable_auto_reload, + watch_dirs, + poll_target_time, + exclude_patterns, + include_patterns, + ): + py_db.setup_auto_reload_watcher( + enable_auto_reload, + watch_dirs, + poll_target_time, + exclude_patterns, + include_patterns, + ) + + +def _list_ppid_and_pid(): + _TH32CS_SNAPPROCESS = 0x00000002 + + class PROCESSENTRY32(ctypes.Structure): + _fields_ = [ + ("dwSize", ctypes.c_uint32), + ("cntUsage", ctypes.c_uint32), + ("th32ProcessID", ctypes.c_uint32), + ("th32DefaultHeapID", ctypes.c_size_t), + ("th32ModuleID", ctypes.c_uint32), + ("cntThreads", ctypes.c_uint32), + ("th32ParentProcessID", ctypes.c_uint32), + ("pcPriClassBase", ctypes.c_long), + ("dwFlags", ctypes.c_uint32), + ("szExeFile", ctypes.c_char * 260), + ] + + kernel32 = ctypes.windll.kernel32 + snapshot = kernel32.CreateToolhelp32Snapshot(_TH32CS_SNAPPROCESS, 0) + ppid_and_pids = [] + try: + process_entry = PROCESSENTRY32() + process_entry.dwSize = ctypes.sizeof(PROCESSENTRY32) + if not kernel32.Process32First( + ctypes.c_void_p(snapshot), ctypes.byref(process_entry) + ): + pydev_log.critical( + "Process32First failed (getting process from CreateToolhelp32Snapshot)." + ) + else: + while True: + ppid_and_pids.append( + (process_entry.th32ParentProcessID, process_entry.th32ProcessID) + ) + if not kernel32.Process32Next( + ctypes.c_void_p(snapshot), ctypes.byref(process_entry) + ): + break + finally: + kernel32.CloseHandle(snapshot) + + return ppid_and_pids diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_breakpoints.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_breakpoints.py new file mode 100644 index 000000000..a8c23a9be --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_breakpoints.py @@ -0,0 +1,211 @@ +from _pydev_bundle import pydev_log +from _pydev_bundle._pydev_saved_modules import threading + +from _pydevd_bundle import pydevd_import_class +from _pydevd_bundle.pydevd_frame_utils import add_exception_to_frame + + +class ExceptionBreakpoint: + def __init__( + self, + qname, + condition, + expression, + notify_on_handled_exceptions, + notify_on_unhandled_exceptions, + notify_on_user_unhandled_exceptions, + notify_on_first_raise_only, + ignore_libraries, + ): + exctype = get_exception_class(qname) + self.qname = qname + if exctype is not None: + self.name = exctype.__name__ + else: + self.name = None + + self.condition = condition + self.expression = expression + self.notify_on_unhandled_exceptions = notify_on_unhandled_exceptions + self.notify_on_handled_exceptions = notify_on_handled_exceptions + self.notify_on_first_raise_only = notify_on_first_raise_only + self.notify_on_user_unhandled_exceptions = notify_on_user_unhandled_exceptions + self.ignore_libraries = ignore_libraries + + self.type = exctype + + def __str__(self): + return self.qname + + @property + def has_condition(self): + return self.condition is not None + + def handle_hit_condition(self, frame): + return False + + +class LineBreakpoint: + def __init__( + self, + breakpoint_id, + line, + condition, + func_name, + expression, + suspend_policy="NONE", + hit_condition=None, + is_logpoint=False, + ): + self.breakpoint_id = breakpoint_id + self.line = line + self.condition = condition + self.func_name = func_name + self.expression = expression + self.suspend_policy = suspend_policy + self.hit_condition = hit_condition + self._hit_count = 0 + self._hit_condition_lock = threading.Lock() + self.is_logpoint = is_logpoint + + @property + def has_condition(self): + return bool(self.condition) or bool(self.hit_condition) + + def handle_hit_condition(self, frame): + if not self.hit_condition: + return False + ret = False + with self._hit_condition_lock: + self._hit_count += 1 + expr = self.hit_condition.replace("@HIT@", str(self._hit_count)) + try: + ret = bool(eval(expr, frame.f_globals, frame.f_locals)) + except Exception: + ret = False + return ret + + +class FunctionBreakpoint: + def __init__( + self, + func_name, + condition, + expression, + suspend_policy="NONE", + hit_condition=None, + is_logpoint=False, + ): + self.condition = condition + self.func_name = func_name + self.expression = expression + self.suspend_policy = suspend_policy + self.hit_condition = hit_condition + self._hit_count = 0 + self._hit_condition_lock = threading.Lock() + self.is_logpoint = is_logpoint + + @property + def has_condition(self): + return bool(self.condition) or bool(self.hit_condition) + + def handle_hit_condition(self, frame): + if not self.hit_condition: + return False + ret = False + with self._hit_condition_lock: + self._hit_count += 1 + expr = self.hit_condition.replace("@HIT@", str(self._hit_count)) + try: + ret = bool(eval(expr, frame.f_globals, frame.f_locals)) + except Exception: + ret = False + return ret + + +def get_exception_breakpoint(exctype, exceptions): + if not exctype: + exception_full_qname = None + else: + exception_full_qname = str(exctype.__module__) + "." + exctype.__name__ + + exc = None + if exceptions is not None: + try: + return exceptions[exception_full_qname] + except KeyError: + for exception_breakpoint in exceptions.values(): + if exception_breakpoint.type is not None and issubclass( + exctype, exception_breakpoint.type + ): + if exc is None or issubclass(exception_breakpoint.type, exc.type): + exc = exception_breakpoint + return exc + + +def stop_on_unhandled_exception(py_db, thread, additional_info, arg): + exctype, value, tb = arg + break_on_uncaught_exceptions = py_db.break_on_uncaught_exceptions + if break_on_uncaught_exceptions: + exception_breakpoint = py_db.get_exception_breakpoint( + exctype, break_on_uncaught_exceptions + ) + else: + exception_breakpoint = None + + if not exception_breakpoint: + return + + if tb is None: # sometimes it can be None, e.g. with GTK + return + + if exctype is KeyboardInterrupt: + return + + if exctype is SystemExit and py_db.ignore_system_exit_code(value): + return + + frames = [] + user_frame = None + + while tb is not None: + if not py_db.exclude_exception_by_filter(exception_breakpoint, tb): + user_frame = tb.tb_frame + frames.append(tb.tb_frame) + tb = tb.tb_next + + if user_frame is None: + return + + frames_byid = dict([(id(frame), frame) for frame in frames]) + add_exception_to_frame(user_frame, arg) + if exception_breakpoint.condition is not None: + eval_result = py_db.handle_breakpoint_condition( + additional_info, exception_breakpoint, user_frame + ) + if not eval_result: + return + + if exception_breakpoint.expression is not None: + py_db.handle_breakpoint_expression( + exception_breakpoint, additional_info, user_frame + ) + + try: + additional_info.pydev_message = exception_breakpoint.qname + except: + additional_info.pydev_message = exception_breakpoint.qname.encode("utf-8") + + pydev_log.debug( + "Handling post-mortem stop on exception breakpoint %s" + % (exception_breakpoint.qname,) + ) + + py_db.do_stop_on_unhandled_exception(thread, user_frame, frames_byid, arg) + + +def get_exception_class(kls): + try: + return eval(kls) + except: + return pydevd_import_class.import_name(kls) diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils.py new file mode 100644 index 000000000..fee935c44 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils.py @@ -0,0 +1,1010 @@ +""" +Bytecode analysing utils. Originally added for using in smart step into. + +Note: not importable from Python 2. +""" + +import dis +from bisect import bisect +from collections import deque +from types import CodeType + +import opcode as _opcode +from _pydev_bundle import pydev_log +from _pydevd_frame_eval.vendored import bytecode +from _pydevd_frame_eval.vendored.bytecode import cfg as bytecode_cfg +from _pydevd_frame_eval.vendored.bytecode.instr import Label, _Variable + +from _pydevd_bundle.pydevd_constants import ( + IS_PY311_OR_GREATER, + DebugInfoHolder, + KeyifyList, +) + +# When True, throws errors on unknown bytecodes, when False, ignore those as if they didn't change the stack. +STRICT_MODE = False + +GO_INTO_INNER_CODES = True + +DEBUG = False + +_BINARY_OPS = set([opname for opname in dis.opname if opname.startswith("BINARY_")]) + +_BINARY_OP_MAP = { + "BINARY_POWER": "__pow__", + "BINARY_MULTIPLY": "__mul__", + "BINARY_MATRIX_MULTIPLY": "__matmul__", + "BINARY_FLOOR_DIVIDE": "__floordiv__", + "BINARY_TRUE_DIVIDE": "__div__", + "BINARY_MODULO": "__mod__", + "BINARY_ADD": "__add__", + "BINARY_SUBTRACT": "__sub__", + "BINARY_LSHIFT": "__lshift__", + "BINARY_RSHIFT": "__rshift__", + "BINARY_AND": "__and__", + "BINARY_OR": "__or__", + "BINARY_XOR": "__xor__", + "BINARY_SUBSCR": "__getitem__", + "BINARY_DIVIDE": "__div__", +} + +_COMP_OP_MAP = { + "<": "__lt__", + "<=": "__le__", + "==": "__eq__", + "!=": "__ne__", + ">": "__gt__", + ">=": "__ge__", + "in": "__contains__", + "not in": "__contains__", +} + + +class Target: + __slots__ = [ + "arg", + "lineno", + "endlineno", + "startcol", + "endcol", + "offset", + "children_targets", + ] + + def __init__( + self, + arg, + lineno, + offset, + children_targets=(), + # These are optional (only Python 3.11 onwards). + endlineno=-1, + startcol=-1, + endcol=-1, + ): + self.arg = arg + self.lineno = lineno + self.endlineno = endlineno + self.startcol = startcol + self.endcol = endcol + + self.offset = offset + self.children_targets = children_targets + + def __repr__(self): + ret = [] + for s in self.__slots__: + ret.append("%s: %s" % (s, getattr(self, s))) + return "Target(%s)" % ", ".join(ret) + + __str__ = __repr__ + + +class _TargetIdHashable: + def __init__(self, target): + self.target = target + + def __eq__(self, other): + if not hasattr(other, "target"): + return + return other.target is self.target + + def __ne__(self, other): + return not self == other + + def __hash__(self): + return id(self.target) + + +class _StackInterpreter: + """ + Good reference: https://github.com/python/cpython/blob/fcb55c0037baab6f98f91ee38ce84b6f874f034a/Python/ceval.c + """ + + def __init__(self, bytecode): + self.bytecode = bytecode + self._stack = deque() + self.function_calls = [] + self.load_attrs = {} + self.func = set() + self.func_name_id_to_code_object = {} + + def __str__(self): + return "Stack:\nFunction calls:\n%s\nLoad attrs:\n%s\n" % ( + self.function_calls, + list(self.load_attrs.values()), + ) + + def _getname(self, instr): + if instr.opcode in _opcode.hascompare: + cmp_op = dis.cmp_op[instr.arg] + if cmp_op not in ("exception match", "BAD"): + return _COMP_OP_MAP.get(cmp_op, cmp_op) + return instr.arg + + def _getcallname(self, instr): + if instr.name == "BINARY_SUBSCR": + return "__getitem__().__call__" + if instr.name == "CALL_FUNCTION": + # Note: previously a '__call__().__call__' was returned, but this was a bit weird + # and on Python 3.9 this construct could appear for some internal things where + # it wouldn't be expected. + # Note: it'd be what we had in func()(). + return None + if instr.name == "MAKE_FUNCTION": + return "__func__().__call__" + if instr.name == "LOAD_ASSERTION_ERROR": + return "AssertionError" + name = self._getname(instr) + if isinstance(name, CodeType): + name = name.co_qualname # Note: only available for Python 3.11 + if isinstance(name, _Variable): + name = name.name + if isinstance(name, tuple): + # Load attr in Python 3.12 comes with (bool, name) + if ( + len(name) == 2 + and isinstance(name[0], bool) + and isinstance(name[1], str) + ): + name = name[1] + + if not isinstance(name, str): + return None + if name.endswith(">"): # xxx., xxx., ... + return name.split(".")[-1] + return name + + def _no_stack_change(self, instr): + pass # Can be aliased when the instruction does nothing. + + def on_LOAD_GLOBAL(self, instr): + self._stack.append(instr) + + def on_POP_TOP(self, instr): + try: + self._stack.pop() + except IndexError: + pass # Ok (in the end of blocks) + + def on_LOAD_ATTR(self, instr): + self.on_POP_TOP(instr) # replaces the current top + self._stack.append(instr) + self.load_attrs[_TargetIdHashable(instr)] = Target( + self._getname(instr), instr.lineno, instr.offset + ) + + on_LOOKUP_METHOD = on_LOAD_ATTR # Improvement in PyPy + + def on_LOAD_CONST(self, instr): + self._stack.append(instr) + + on_LOAD_DEREF = on_LOAD_CONST + on_LOAD_NAME = on_LOAD_CONST + on_LOAD_CLOSURE = on_LOAD_CONST + on_LOAD_CLASSDEREF = on_LOAD_CONST + + # Although it actually changes the stack, it's inconsequential for us as a function call can't + # really be found there. + on_IMPORT_NAME = _no_stack_change + on_IMPORT_FROM = _no_stack_change + on_IMPORT_STAR = _no_stack_change + on_SETUP_ANNOTATIONS = _no_stack_change + + def on_STORE_FAST(self, instr): + try: + self._stack.pop() + except IndexError: + pass # Ok, we may have a block just with the store + + # Note: it stores in the locals and doesn't put anything in the stack. + + on_STORE_GLOBAL = on_STORE_FAST + on_STORE_DEREF = on_STORE_FAST + on_STORE_ATTR = on_STORE_FAST + on_STORE_NAME = on_STORE_FAST + + on_DELETE_NAME = on_POP_TOP + on_DELETE_ATTR = on_POP_TOP + on_DELETE_GLOBAL = on_POP_TOP + on_DELETE_FAST = on_POP_TOP + on_DELETE_DEREF = on_POP_TOP + + on_DICT_UPDATE = on_POP_TOP + on_SET_UPDATE = on_POP_TOP + + on_GEN_START = on_POP_TOP + + def on_NOP(self, instr): + pass + + def _handle_call_from_instr(self, func_name_instr, func_call_instr): + self.load_attrs.pop(_TargetIdHashable(func_name_instr), None) + call_name = self._getcallname(func_name_instr) + target = None + if not call_name: + pass # Ignore if we can't identify a name + elif call_name in ("", "", "", ""): + code_obj = self.func_name_id_to_code_object[ + _TargetIdHashable(func_name_instr) + ] + if code_obj is not None and GO_INTO_INNER_CODES: + children_targets = _get_smart_step_into_targets(code_obj) + if children_targets: + # i.e.: we have targets inside of a or . + # Note that to actually match this in the debugger we need to do matches on 2 frames, + # the one with the and then the actual target inside the . + target = Target( + call_name, + func_name_instr.lineno, + func_call_instr.offset, + children_targets, + ) + self.function_calls.append(target) + + else: + # Ok, regular call + target = Target(call_name, func_name_instr.lineno, func_call_instr.offset) + self.function_calls.append(target) + + if DEBUG and target is not None: + print("Created target", target) + self._stack.append(func_call_instr) # Keep the func call as the result + + def on_COMPARE_OP(self, instr): + try: + _right = self._stack.pop() + except IndexError: + return + try: + _left = self._stack.pop() + except IndexError: + return + + cmp_op = dis.cmp_op[instr.arg] + if cmp_op not in ("exception match", "BAD"): + self.function_calls.append( + Target(self._getname(instr), instr.lineno, instr.offset) + ) + + self._stack.append(instr) + + def on_IS_OP(self, instr): + try: + self._stack.pop() + except IndexError: + return + try: + self._stack.pop() + except IndexError: + return + + def on_BINARY_SUBSCR(self, instr): + try: + _sub = self._stack.pop() + except IndexError: + return + try: + _container = self._stack.pop() + except IndexError: + return + self.function_calls.append( + Target(_BINARY_OP_MAP[instr.name], instr.lineno, instr.offset) + ) + self._stack.append(instr) + + on_BINARY_MATRIX_MULTIPLY = on_BINARY_SUBSCR + on_BINARY_POWER = on_BINARY_SUBSCR + on_BINARY_MULTIPLY = on_BINARY_SUBSCR + on_BINARY_FLOOR_DIVIDE = on_BINARY_SUBSCR + on_BINARY_TRUE_DIVIDE = on_BINARY_SUBSCR + on_BINARY_MODULO = on_BINARY_SUBSCR + on_BINARY_ADD = on_BINARY_SUBSCR + on_BINARY_SUBTRACT = on_BINARY_SUBSCR + on_BINARY_LSHIFT = on_BINARY_SUBSCR + on_BINARY_RSHIFT = on_BINARY_SUBSCR + on_BINARY_AND = on_BINARY_SUBSCR + on_BINARY_OR = on_BINARY_SUBSCR + on_BINARY_XOR = on_BINARY_SUBSCR + + def on_LOAD_METHOD(self, instr): + self.on_POP_TOP( + instr + ) # Remove the previous as we're loading something from it. + self._stack.append(instr) + + def on_MAKE_FUNCTION(self, instr): + if not IS_PY311_OR_GREATER: + # The qualifier name is no longer put in the stack. + qualname = self._stack.pop() + code_obj_instr = self._stack.pop() + else: + # In 3.11 the code object has a co_qualname which we can use. + qualname = code_obj_instr = self._stack.pop() + + arg = instr.arg + if arg & 0x08: + _func_closure = self._stack.pop() + if arg & 0x04: + _func_annotations = self._stack.pop() + if arg & 0x02: + _func_kwdefaults = self._stack.pop() + if arg & 0x01: + _func_defaults = self._stack.pop() + + call_name = self._getcallname(qualname) + if call_name in ("", "", "", ""): + if isinstance(code_obj_instr.arg, CodeType): + self.func_name_id_to_code_object[ + _TargetIdHashable(qualname) + ] = code_obj_instr.arg + self._stack.append(qualname) + + def on_LOAD_FAST(self, instr): + self._stack.append(instr) + + on_LOAD_FAST_AND_CLEAR = on_LOAD_FAST + on_LOAD_FAST_CHECK = on_LOAD_FAST + + def on_LOAD_ASSERTION_ERROR(self, instr): + self._stack.append(instr) + + on_LOAD_BUILD_CLASS = on_LOAD_FAST + + def on_CALL_METHOD(self, instr): + # pop the actual args + for _ in range(instr.arg): + self._stack.pop() + + func_name_instr = self._stack.pop() + self._handle_call_from_instr(func_name_instr, instr) + + def on_CALL(self, instr): + # pop the actual args + for _ in range(instr.arg): + self._stack.pop() + + func_name_instr = self._stack.pop() + if self._getcallname(func_name_instr) is None: + func_name_instr = self._stack.pop() + + if self._stack: + peeked = self._stack[-1] + if peeked.name == "PUSH_NULL": + self._stack.pop() + + self._handle_call_from_instr(func_name_instr, instr) + + def on_CALL_INTRINSIC_1(self, instr): + try: + func_name_instr = self._stack.pop() + except IndexError: + return + + if self._stack: + peeked = self._stack[-1] + if peeked.name == "PUSH_NULL": + self._stack.pop() + + self._handle_call_from_instr(func_name_instr, instr) + + def on_PUSH_NULL(self, instr): + self._stack.append(instr) + + def on_KW_NAMES(self, instr): + return + + def on_RETURN_CONST(self, instr): + return + + def on_CALL_FUNCTION(self, instr): + arg = instr.arg + + argc = arg & 0xFF # positional args + argc += (arg >> 8) * 2 # keyword args + + # pop the actual args + for _ in range(argc): + try: + self._stack.pop() + except IndexError: + return + + try: + func_name_instr = self._stack.pop() + except IndexError: + return + self._handle_call_from_instr(func_name_instr, instr) + + def on_CALL_FUNCTION_KW(self, instr): + # names of kw args + _names_of_kw_args = self._stack.pop() + + # pop the actual args + arg = instr.arg + + argc = arg & 0xFF # positional args + argc += (arg >> 8) * 2 # keyword args + + for _ in range(argc): + self._stack.pop() + + func_name_instr = self._stack.pop() + self._handle_call_from_instr(func_name_instr, instr) + + def on_CALL_FUNCTION_VAR(self, instr): + # var name + _var_arg = self._stack.pop() + + # pop the actual args + arg = instr.arg + + argc = arg & 0xFF # positional args + argc += (arg >> 8) * 2 # keyword args + + for _ in range(argc): + self._stack.pop() + + func_name_instr = self._stack.pop() + self._handle_call_from_instr(func_name_instr, instr) + + def on_CALL_FUNCTION_VAR_KW(self, instr): + # names of kw args + _names_of_kw_args = self._stack.pop() + + arg = instr.arg + + argc = arg & 0xFF # positional args + argc += (arg >> 8) * 2 # keyword args + + # also pop **kwargs + self._stack.pop() + + # pop the actual args + for _ in range(argc): + self._stack.pop() + + func_name_instr = self._stack.pop() + self._handle_call_from_instr(func_name_instr, instr) + + def on_CALL_FUNCTION_EX(self, instr): + if instr.arg & 0x01: + _kwargs = self._stack.pop() + _callargs = self._stack.pop() + func_name_instr = self._stack.pop() + self._handle_call_from_instr(func_name_instr, instr) + + on_GET_AITER = _no_stack_change + on_GET_ANEXT = _no_stack_change + on_END_FOR = _no_stack_change + on_END_ASYNC_FOR = _no_stack_change + on_BEFORE_ASYNC_WITH = _no_stack_change + on_SETUP_ASYNC_WITH = _no_stack_change + on_YIELD_FROM = _no_stack_change + on_SETUP_LOOP = _no_stack_change + on_FOR_ITER = _no_stack_change + on_BREAK_LOOP = _no_stack_change + on_JUMP_ABSOLUTE = _no_stack_change + on_RERAISE = _no_stack_change + on_LIST_TO_TUPLE = _no_stack_change + on_CALL_FINALLY = _no_stack_change + on_POP_FINALLY = _no_stack_change + + def on_JUMP_IF_FALSE_OR_POP(self, instr): + try: + self._stack.pop() + except IndexError: + return + + on_JUMP_IF_TRUE_OR_POP = on_JUMP_IF_FALSE_OR_POP + + def on_JUMP_IF_NOT_EXC_MATCH(self, instr): + try: + self._stack.pop() + except IndexError: + return + try: + self._stack.pop() + except IndexError: + return + + def on_SWAP(self, instr): + i = instr.arg + try: + self._stack[-i], self._stack[-1] = self._stack[-1], self._stack[-i] + except: + pass + + def on_ROT_TWO(self, instr): + try: + p0 = self._stack.pop() + except IndexError: + return + + try: + p1 = self._stack.pop() + except: + self._stack.append(p0) + return + + self._stack.append(p0) + self._stack.append(p1) + + def on_ROT_THREE(self, instr): + try: + p0 = self._stack.pop() + except IndexError: + return + + try: + p1 = self._stack.pop() + except: + self._stack.append(p0) + return + + try: + p2 = self._stack.pop() + except: + self._stack.append(p0) + self._stack.append(p1) + return + + self._stack.append(p0) + self._stack.append(p1) + self._stack.append(p2) + + def on_ROT_FOUR(self, instr): + try: + p0 = self._stack.pop() + except IndexError: + return + + try: + p1 = self._stack.pop() + except: + self._stack.append(p0) + return + + try: + p2 = self._stack.pop() + except: + self._stack.append(p0) + self._stack.append(p1) + return + + try: + p3 = self._stack.pop() + except: + self._stack.append(p0) + self._stack.append(p1) + self._stack.append(p2) + return + + self._stack.append(p0) + self._stack.append(p1) + self._stack.append(p2) + self._stack.append(p3) + + def on_BUILD_LIST_FROM_ARG(self, instr): + self._stack.append(instr) + + def on_BUILD_MAP(self, instr): + for _i in range(instr.arg): + self._stack.pop() + self._stack.pop() + self._stack.append(instr) + + def on_BUILD_CONST_KEY_MAP(self, instr): + self.on_POP_TOP(instr) # keys + for _i in range(instr.arg): + self.on_POP_TOP(instr) # value + self._stack.append(instr) + + on_YIELD_VALUE = on_POP_TOP + on_RETURN_VALUE = on_POP_TOP + on_POP_JUMP_IF_FALSE = on_POP_TOP + on_POP_JUMP_IF_TRUE = on_POP_TOP + on_DICT_MERGE = on_POP_TOP + on_LIST_APPEND = on_POP_TOP + on_SET_ADD = on_POP_TOP + on_LIST_EXTEND = on_POP_TOP + on_UNPACK_EX = on_POP_TOP + + # ok: doesn't change the stack (converts top to getiter(top)) + on_GET_ITER = _no_stack_change + on_GET_AWAITABLE = _no_stack_change + on_GET_YIELD_FROM_ITER = _no_stack_change + + def on_RETURN_GENERATOR(self, instr): + self._stack.append(instr) + + on_RETURN_GENERATOR = _no_stack_change + on_RESUME = _no_stack_change + + def on_MAP_ADD(self, instr): + self.on_POP_TOP(instr) + self.on_POP_TOP(instr) + + def on_UNPACK_SEQUENCE(self, instr): + self._stack.pop() + for _i in range(instr.arg): + self._stack.append(instr) + + def on_BUILD_LIST(self, instr): + for _i in range(instr.arg): + self.on_POP_TOP(instr) + self._stack.append(instr) + + on_BUILD_TUPLE = on_BUILD_LIST + on_BUILD_STRING = on_BUILD_LIST + on_BUILD_TUPLE_UNPACK_WITH_CALL = on_BUILD_LIST + on_BUILD_TUPLE_UNPACK = on_BUILD_LIST + on_BUILD_LIST_UNPACK = on_BUILD_LIST + on_BUILD_MAP_UNPACK_WITH_CALL = on_BUILD_LIST + on_BUILD_MAP_UNPACK = on_BUILD_LIST + on_BUILD_SET = on_BUILD_LIST + on_BUILD_SET_UNPACK = on_BUILD_LIST + + on_SETUP_FINALLY = _no_stack_change + on_POP_FINALLY = _no_stack_change + on_BEGIN_FINALLY = _no_stack_change + on_END_FINALLY = _no_stack_change + + def on_RAISE_VARARGS(self, instr): + for _i in range(instr.arg): + self.on_POP_TOP(instr) + + on_POP_BLOCK = _no_stack_change + on_JUMP_FORWARD = _no_stack_change + on_JUMP_BACKWARD = _no_stack_change + on_JUMP_BACKWARD_NO_INTERRUPT = _no_stack_change + on_POP_EXCEPT = _no_stack_change + on_SETUP_EXCEPT = _no_stack_change + on_WITH_EXCEPT_START = _no_stack_change + + on_END_FINALLY = _no_stack_change + on_BEGIN_FINALLY = _no_stack_change + on_SETUP_WITH = _no_stack_change + on_WITH_CLEANUP_START = _no_stack_change + on_WITH_CLEANUP_FINISH = _no_stack_change + on_FORMAT_VALUE = _no_stack_change + on_EXTENDED_ARG = _no_stack_change + + def on_INPLACE_ADD(self, instr): + # This would actually pop 2 and leave the value in the stack. + # In a += 1 it pop `a` and `1` and leave the resulting value + # for a load. In our case, let's just pop the `1` and leave the `a` + # instead of leaving the INPLACE_ADD bytecode. + try: + self._stack.pop() + except IndexError: + pass + + on_INPLACE_POWER = on_INPLACE_ADD + on_INPLACE_MULTIPLY = on_INPLACE_ADD + on_INPLACE_MATRIX_MULTIPLY = on_INPLACE_ADD + on_INPLACE_TRUE_DIVIDE = on_INPLACE_ADD + on_INPLACE_FLOOR_DIVIDE = on_INPLACE_ADD + on_INPLACE_MODULO = on_INPLACE_ADD + on_INPLACE_SUBTRACT = on_INPLACE_ADD + on_INPLACE_RSHIFT = on_INPLACE_ADD + on_INPLACE_LSHIFT = on_INPLACE_ADD + on_INPLACE_AND = on_INPLACE_ADD + on_INPLACE_OR = on_INPLACE_ADD + on_INPLACE_XOR = on_INPLACE_ADD + + def on_DUP_TOP(self, instr): + try: + i = self._stack[-1] + except IndexError: + # ok (in the start of block) + self._stack.append(instr) + else: + self._stack.append(i) + + def on_DUP_TOP_TWO(self, instr): + if len(self._stack) == 0: + self._stack.append(instr) + return + + if len(self._stack) == 1: + i = self._stack[-1] + self._stack.append(i) + self._stack.append(instr) + return + + i = self._stack[-1] + j = self._stack[-2] + self._stack.append(j) + self._stack.append(i) + + def on_BUILD_SLICE(self, instr): + for _ in range(instr.arg): + try: + self._stack.pop() + except IndexError: + pass + self._stack.append(instr) + + def on_STORE_SUBSCR(self, instr): + try: + self._stack.pop() + self._stack.pop() + self._stack.pop() + except IndexError: + pass + + def on_DELETE_SUBSCR(self, instr): + try: + self._stack.pop() + self._stack.pop() + except IndexError: + pass + + # Note: on Python 3 this is only found on interactive mode to print the results of + # some evaluation. + on_PRINT_EXPR = on_POP_TOP + + on_LABEL = _no_stack_change + on_UNARY_POSITIVE = _no_stack_change + on_UNARY_NEGATIVE = _no_stack_change + on_UNARY_NOT = _no_stack_change + on_UNARY_INVERT = _no_stack_change + + on_CACHE = _no_stack_change + on_PRECALL = _no_stack_change + + +def _get_smart_step_into_targets(code): + """ + :return list(Target) + """ + b = bytecode.Bytecode.from_code(code) + cfg = bytecode_cfg.ControlFlowGraph.from_bytecode(b) + + ret = [] + + for block in cfg: + if DEBUG: + print("\nStart block----") + stack = _StackInterpreter(block) + for instr in block: + if isinstance(instr, (Label,)): + # No name for these + continue + try: + func_name = "on_%s" % (instr.name,) + func = getattr(stack, func_name, None) + + if func is None: + if STRICT_MODE: + raise AssertionError("%s not found." % (func_name,)) + else: + if DEBUG: + print("Skipping: %s." % (func_name,)) + + continue + func(instr) + + if DEBUG: + if instr.name != "CACHE": # Filter the ones we don't want to see. + print("\nHandled: ", instr, ">>", stack._getname(instr), "<<") + print("New stack:") + for entry in stack._stack: + print(" arg:", stack._getname(entry), "(", entry, ")") + except: + if STRICT_MODE: + raise # Error in strict mode. + else: + # In non-strict mode, log it (if in verbose mode) and keep on going. + if DebugInfoHolder.DEBUG_TRACE_LEVEL >= 2: + pydev_log.exception( + "Exception computing step into targets (handled)." + ) + + ret.extend(stack.function_calls) + # No longer considering attr loads as calls (while in theory sometimes it's possible + # that something as `some.attr` can turn out to be a property which could be stepped + # in, it's not that common in practice and can be surprising for users, so, disabling + # step into from stepping into properties). + # ret.extend(stack.load_attrs.values()) + + if DEBUG: + print("\nEnd block----") + return ret + + +# Note that the offset is unique within the frame (so, we can use it as the target id). +# Also, as the offset is the instruction offset within the frame, it's possible to +# to inspect the parent frame for frame.f_lasti to know where we actually are (as the +# caller name may not always match the new frame name). +class Variant: + __slots__ = [ + "name", + "is_visited", + "line", + "offset", + "call_order", + "children_variants", + "parent", + "endlineno", + "startcol", + "endcol", + ] + + def __init__( + self, + name, + is_visited, + line, + offset, + call_order, + children_variants=None, + endlineno=-1, + startcol=-1, + endcol=-1, + ): + self.name = name + self.is_visited = is_visited + self.line = line + self.endlineno = endlineno + self.startcol = startcol + self.endcol = endcol + self.offset = offset + self.call_order = call_order + self.children_variants = children_variants + self.parent = None + if children_variants: + for variant in children_variants: + variant.parent = self + + def __repr__(self): + ret = [] + for s in self.__slots__: + if s == "parent": + try: + parent = self.parent + except AttributeError: + ret.append("%s: " % (s,)) + else: + if parent is None: + ret.append("parent: None") + else: + ret.append("parent: %s (%s)" % (parent.name, parent.offset)) + continue + + if s == "children_variants": + ret.append( + "children_variants: %s" + % (len(self.children_variants) if self.children_variants else 0) + ) + continue + + try: + ret.append("%s= %s" % (s, getattr(self, s))) + except AttributeError: + ret.append("%s: " % (s,)) + return "Variant(%s)" % ", ".join(ret) + + __str__ = __repr__ + + +def _convert_target_to_variant( + target, start_line, end_line, call_order_cache: dict, lasti: int, base: int +): + name = target.arg + if not isinstance(name, str): + return + if target.lineno > end_line: + return + if target.lineno < start_line: + return + + call_order = call_order_cache.get(name, 0) + 1 + call_order_cache[name] = call_order + is_visited = target.offset <= lasti + + children_targets = target.children_targets + children_variants = None + if children_targets: + children_variants = [ + _convert_target_to_variant( + child, start_line, end_line, call_order_cache, lasti, base + ) + for child in target.children_targets + ] + + return Variant( + name, + is_visited, + target.lineno - base, + target.offset, + call_order, + children_variants, + # Only really matter in Python 3.11 + target.endlineno - base if target.endlineno >= 0 else -1, + target.startcol, + target.endcol, + ) + + +def calculate_smart_step_into_variants(frame, start_line, end_line, base=0): + """ + Calculate smart step into variants for the given line range. + :param frame: + :type frame: :py:class:`types.FrameType` + :param start_line: + :param end_line: + :return: A list of call names from the first to the last. + :note: it's guaranteed that the offsets appear in order. + :raise: :py:class:`RuntimeError` if failed to parse the bytecode or if dis cannot be used. + """ + if IS_PY311_OR_GREATER: + from . import pydevd_bytecode_utils_py311 + + return pydevd_bytecode_utils_py311.calculate_smart_step_into_variants( + frame, start_line, end_line, base + ) + + variants = [] + code = frame.f_code + lasti = frame.f_lasti + + call_order_cache = {} + if DEBUG: + print("dis.dis:") + if IS_PY311_OR_GREATER: + dis.dis(code, show_caches=False) + else: + dis.dis(code) + + for target in _get_smart_step_into_targets(code): + variant = _convert_target_to_variant( + target, start_line, end_line, call_order_cache, lasti, base + ) + if variant is None: + continue + variants.append(variant) + + return variants + + +def get_smart_step_into_variant_from_frame_offset(frame_f_lasti, variants): + """ + Given the frame.f_lasti, return the related `Variant`. + + :note: if the offset is found before any variant available or no variants are + available, None is returned. + + :rtype: Variant|NoneType + """ + if not variants: + return None + + i = bisect(KeyifyList(variants, lambda entry: entry.offset), frame_f_lasti) + + if i == 0: + return None + + else: + return variants[i - 1] diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils_py311.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils_py311.py new file mode 100644 index 000000000..3a61c6a24 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils_py311.py @@ -0,0 +1,132 @@ +import dis +from collections import namedtuple +from types import CodeType + +from _pydevd_bundle.pydevd_constants import IS_PY311_OR_GREATER + +DEBUG = False + +_Pos = namedtuple("_Pos", "lineno endlineno startcol endcol") + + +def _is_inside(item_pos: _Pos, container_pos: _Pos): + if ( + item_pos.lineno < container_pos.lineno + or item_pos.endlineno > container_pos.endlineno + ): + return False + + if item_pos.lineno == container_pos.lineno: + if item_pos.startcol < container_pos.startcol: + return False + + if item_pos.endlineno == container_pos.endlineno: + if item_pos.endcol > container_pos.endcol: + return False + + # Not outside, must be inside. + return True + + +def _get_smart_step_into_targets(code): + import linecache + + from .pydevd_bytecode_utils import Target + + filename = code.co_filename + + targets_root = [] + children = [] + for instr in dis.Bytecode(code): + if instr.opname == "LOAD_CONST": + if isinstance(instr.argval, CodeType): + children.append(_get_smart_step_into_targets(instr.argval)) + + elif instr.opname in ("CALL", "CALL_INTRINSIC_1"): + positions = instr.positions + if positions.lineno is None: + continue + if positions.end_lineno is None: + continue + lines = [] + for lineno in range(positions.lineno, positions.end_lineno + 1): + lines.append(linecache.getline(filename, lineno)) + + startcol = positions.col_offset + endcol = positions.end_col_offset + + if positions.lineno == positions.end_lineno: + lines[0] = lines[0][startcol:endcol] + else: + lines[0] = lines[0][startcol:] + lines[-1] = lines[-1][:endcol] + + pos = _Pos(positions.lineno, positions.end_lineno, startcol, endcol) + targets_root.append( + Target( + "".join(lines), + positions.lineno, + instr.offset, + [], + positions.end_lineno, + startcol, + endcol, + ) + ) + + for targets in children: + for child_target in targets: + pos = _Pos( + child_target.lineno, + child_target.endlineno, + child_target.startcol, + child_target.endcol, + ) + + for outer_target in targets_root: + outer_pos = _Pos( + outer_target.lineno, + outer_target.endlineno, + outer_target.startcol, + outer_target.endcol, + ) + if _is_inside(pos, outer_pos): + outer_target.children_targets.append(child_target) + break + return targets_root + + +def calculate_smart_step_into_variants(frame, start_line, end_line, base=0): + """ + Calculate smart step into variants for the given line range. + :param frame: + :type frame: :py:class:`types.FrameType` + :param start_line: + :param end_line: + :return: A list of call names from the first to the last. + :note: it's guaranteed that the offsets appear in order. + :raise: :py:class:`RuntimeError` if failed to parse the bytecode or if dis cannot be used. + """ + from .pydevd_bytecode_utils import _convert_target_to_variant + + variants = [] + code = frame.f_code + lasti = frame.f_lasti + + call_order_cache = {} + if DEBUG: + print("dis.dis:") + if IS_PY311_OR_GREATER: + dis.dis(code, show_caches=False) + else: + dis.dis(code) + + for target in _get_smart_step_into_targets(code): + variant = _convert_target_to_variant( + target, start_line, end_line, call_order_cache, lasti, base + ) + if variant is None: + continue + variants.append(variant) + + return variants diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_code_to_source.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_code_to_source.py new file mode 100644 index 000000000..3ddff0829 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_code_to_source.py @@ -0,0 +1,625 @@ +""" +Decompiler that can be used with the debugger (where statements correctly represent the +line numbers). + +Note: this is a work in progress / proof of concept / not ready to be used. +""" + +import dis +import inspect +import sys +from io import StringIO + +from _pydev_bundle import pydev_log + +from _pydevd_bundle.pydevd_collect_bytecode_info import iter_instructions + + +class _Stack: + def __init__(self): + self._contents = [] + + def push(self, obj): + # print('push', obj) + self._contents.append(obj) + + def pop(self): + return self._contents.pop(-1) + + +INDENT_MARKER = object() +DEDENT_MARKER = object() +_SENTINEL = object() + +DEBUG = False + + +class _Token: + def __init__( + self, + i_line, + instruction=None, + tok=_SENTINEL, + priority=0, + after=None, + end_of_line=False, + ): + """ + :param i_line: + :param instruction: + :param tok: + :param priority: + :param after: + :param end_of_line: + Marker to signal only after all the other tokens have been written. + """ + self.i_line = i_line + if tok is not _SENTINEL: + self.tok = tok + else: + if instruction is not None: + if inspect.iscode(instruction.argval): + self.tok = "" + else: + self.tok = str(instruction.argval) + else: + raise AssertionError("Either the tok or the instruction is needed.") + self.instruction = instruction + self.priority = priority + self.end_of_line = end_of_line + self._after_tokens = set() + self._after_handler_tokens = set() + if after: + self.mark_after(after) + + def mark_after(self, v): + if isinstance(v, _Token): + self._after_tokens.add(v) + elif isinstance(v, _BaseHandler): + self._after_handler_tokens.add(v) + + else: + raise AssertionError("Unhandled: %s" % (v,)) + + def get_after_tokens(self): + ret = self._after_tokens.copy() + for handler in self._after_handler_tokens: + ret.update(handler.tokens) + return ret + + def __repr__(self): + return "Token(%s, after: %s)" % (self.tok, self.get_after_tokens()) + + __str__ = __repr__ + + +class _Writer: + def __init__(self): + self.line_to_contents = {} + self.all_tokens = set() + + def get_line(self, line): + lst = self.line_to_contents.get(line) + if lst is None: + lst = self.line_to_contents[line] = [] + return lst + + def indent(self, line): + self.get_line(line).append(INDENT_MARKER) + + def dedent(self, line): + self.get_line(line).append(DEDENT_MARKER) + + def write(self, line, token): + if token in self.all_tokens: + return + self.all_tokens.add(token) + assert isinstance(token, _Token) + lst = self.get_line(line) + lst.append(token) + + +class _BaseHandler: + def __init__(self, i_line, instruction, stack, writer, disassembler): + self.i_line = i_line + self.instruction = instruction + self.stack = stack + self.writer = writer + self.disassembler = disassembler + self.tokens = [] + self._handle() + + def _write_tokens(self): + for token in self.tokens: + self.writer.write(token.i_line, token) + + def _handle(self): + raise NotImplementedError(self) + + def __repr__(self, *args, **kwargs): + try: + return "%s line:%s" % (self.instruction, self.i_line) + except: + return object.__repr__(self) + + __str__ = __repr__ + + +_op_name_to_handler = {} + + +def _register(cls): + _op_name_to_handler[cls.opname] = cls + return cls + + +class _BasePushHandler(_BaseHandler): + def _handle(self): + self.stack.push(self) + + +class _BaseLoadHandler(_BasePushHandler): + def _handle(self): + _BasePushHandler._handle(self) + self.tokens = [_Token(self.i_line, self.instruction)] + + +@_register +class _LoadBuildClass(_BasePushHandler): + opname = "LOAD_BUILD_CLASS" + + +@_register +class _LoadConst(_BaseLoadHandler): + opname = "LOAD_CONST" + + +@_register +class _LoadName(_BaseLoadHandler): + opname = "LOAD_NAME" + + +@_register +class _LoadGlobal(_BaseLoadHandler): + opname = "LOAD_GLOBAL" + + +@_register +class _LoadFast(_BaseLoadHandler): + opname = "LOAD_FAST" + + +@_register +class _GetIter(_BaseHandler): + """ + Implements TOS = iter(TOS). + """ + + opname = "GET_ITER" + iter_target = None + + def _handle(self): + self.iter_target = self.stack.pop() + self.tokens.extend(self.iter_target.tokens) + self.stack.push(self) + + +@_register +class _ForIter(_BaseHandler): + """ + TOS is an iterator. Call its __next__() method. If this yields a new value, push it on the stack + (leaving the iterator below it). If the iterator indicates it is exhausted TOS is popped, and + the byte code counter is incremented by delta. + """ + + opname = "FOR_ITER" + + iter_in = None + + def _handle(self): + self.iter_in = self.stack.pop() + self.stack.push(self) + + def store_in_name(self, store_name): + for_token = _Token(self.i_line, None, "for ") + self.tokens.append(for_token) + prev = for_token + + t_name = _Token(store_name.i_line, store_name.instruction, after=prev) + self.tokens.append(t_name) + prev = t_name + + in_token = _Token(store_name.i_line, None, " in ", after=prev) + self.tokens.append(in_token) + prev = in_token + + max_line = store_name.i_line + if self.iter_in: + for t in self.iter_in.tokens: + t.mark_after(prev) + max_line = max(max_line, t.i_line) + prev = t + self.tokens.extend(self.iter_in.tokens) + + colon_token = _Token(self.i_line, None, ":", after=prev) + self.tokens.append(colon_token) + prev = for_token + + self._write_tokens() + + +@_register +class _StoreName(_BaseHandler): + """ + Implements name = TOS. namei is the index of name in the attribute co_names of the code object. + The compiler tries to use STORE_FAST or STORE_GLOBAL if possible. + """ + + opname = "STORE_NAME" + + def _handle(self): + v = self.stack.pop() + + if isinstance(v, _ForIter): + v.store_in_name(self) + else: + if not isinstance(v, _MakeFunction) or v.is_lambda: + line = self.i_line + for t in v.tokens: + line = min(line, t.i_line) + + t_name = _Token(line, self.instruction) + t_equal = _Token(line, None, "=", after=t_name) + + self.tokens.append(t_name) + self.tokens.append(t_equal) + + for t in v.tokens: + t.mark_after(t_equal) + self.tokens.extend(v.tokens) + + self._write_tokens() + + +@_register +class _ReturnValue(_BaseHandler): + """ + Returns with TOS to the caller of the function. + """ + + opname = "RETURN_VALUE" + + def _handle(self): + v = self.stack.pop() + return_token = _Token(self.i_line, None, "return ", end_of_line=True) + self.tokens.append(return_token) + for token in v.tokens: + token.mark_after(return_token) + self.tokens.extend(v.tokens) + + self._write_tokens() + + +@_register +class _CallFunction(_BaseHandler): + """ + + CALL_FUNCTION(argc) + + Calls a callable object with positional arguments. argc indicates the number of positional + arguments. The top of the stack contains positional arguments, with the right-most argument + on top. Below the arguments is a callable object to call. CALL_FUNCTION pops all arguments + and the callable object off the stack, calls the callable object with those arguments, and + pushes the return value returned by the callable object. + + Changed in version 3.6: This opcode is used only for calls with positional arguments. + + """ + + opname = "CALL_FUNCTION" + + def _handle(self): + args = [] + for _i in range(self.instruction.argval + 1): + arg = self.stack.pop() + args.append(arg) + it = reversed(args) + name = next(it) + max_line = name.i_line + for t in name.tokens: + self.tokens.append(t) + + tok_open_parens = _Token(name.i_line, None, "(", after=name) + self.tokens.append(tok_open_parens) + + prev = tok_open_parens + for i, arg in enumerate(it): + for t in arg.tokens: + t.mark_after(name) + t.mark_after(prev) + max_line = max(max_line, t.i_line) + self.tokens.append(t) + prev = arg + + if i > 0: + comma_token = _Token(prev.i_line, None, ",", after=prev) + self.tokens.append(comma_token) + prev = comma_token + + tok_close_parens = _Token(max_line, None, ")", after=prev) + self.tokens.append(tok_close_parens) + + self._write_tokens() + + self.stack.push(self) + + +@_register +class _MakeFunctionPy3(_BaseHandler): + """ + Pushes a new function object on the stack. From bottom to top, the consumed stack must consist + of values if the argument carries a specified flag value + + 0x01 a tuple of default values for positional-only and positional-or-keyword parameters in positional order + + 0x02 a dictionary of keyword-only parameters' default values + + 0x04 an annotation dictionary + + 0x08 a tuple containing cells for free variables, making a closure + + the code associated with the function (at TOS1) + + the qualified name of the function (at TOS) + """ + + opname = "MAKE_FUNCTION" + is_lambda = False + + def _handle(self): + stack = self.stack + self.qualified_name = stack.pop() + self.code = stack.pop() + + default_node = None + if self.instruction.argval & 0x01: + default_node = stack.pop() + + is_lambda = self.is_lambda = "" in [ + x.tok for x in self.qualified_name.tokens + ] + + if not is_lambda: + def_token = _Token(self.i_line, None, "def ") + self.tokens.append(def_token) + + for token in self.qualified_name.tokens: + self.tokens.append(token) + if not is_lambda: + token.mark_after(def_token) + prev = token + + open_parens_token = _Token(self.i_line, None, "(", after=prev) + self.tokens.append(open_parens_token) + prev = open_parens_token + + code = self.code.instruction.argval + + if default_node: + defaults = ( + [_SENTINEL] + * (len(code.co_varnames) - len(default_node.instruction.argval)) + ) + list(default_node.instruction.argval) + else: + defaults = [_SENTINEL] * len(code.co_varnames) + + for i, arg in enumerate(code.co_varnames): + if i > 0: + comma_token = _Token(prev.i_line, None, ", ", after=prev) + self.tokens.append(comma_token) + prev = comma_token + + arg_token = _Token(self.i_line, None, arg, after=prev) + self.tokens.append(arg_token) + + default = defaults[i] + if default is not _SENTINEL: + eq_token = _Token(default_node.i_line, None, "=", after=prev) + self.tokens.append(eq_token) + prev = eq_token + + default_token = _Token( + default_node.i_line, None, str(default), after=prev + ) + self.tokens.append(default_token) + prev = default_token + + tok_close_parens = _Token(prev.i_line, None, "):", after=prev) + self.tokens.append(tok_close_parens) + + self._write_tokens() + + stack.push(self) + self.writer.indent(prev.i_line + 1) + self.writer.dedent(max(self.disassembler.merge_code(code))) + + +_MakeFunction = _MakeFunctionPy3 + + +def _print_after_info(line_contents, stream=None): + if stream is None: + stream = sys.stdout + for token in line_contents: + after_tokens = token.get_after_tokens() + if after_tokens: + s = "%s after: %s\n" % ( + repr(token.tok), + ('"' + '", "'.join(t.tok for t in token.get_after_tokens()) + '"'), + ) + stream.write(s) + else: + stream.write("%s (NO REQUISITES)" % repr(token.tok)) + + +def _compose_line_contents(line_contents, previous_line_tokens): + lst = [] + handled = set() + + add_to_end_of_line = [] + delete_indexes = [] + for i, token in enumerate(line_contents): + if token.end_of_line: + add_to_end_of_line.append(token) + delete_indexes.append(i) + for i in reversed(delete_indexes): + del line_contents[i] + del delete_indexes + + while line_contents: + added = False + delete_indexes = [] + + for i, token in enumerate(line_contents): + after_tokens = token.get_after_tokens() + for after in after_tokens: + if after not in handled and after not in previous_line_tokens: + break + else: + added = True + previous_line_tokens.add(token) + handled.add(token) + lst.append(token.tok) + delete_indexes.append(i) + + for i in reversed(delete_indexes): + del line_contents[i] + + if not added: + if add_to_end_of_line: + line_contents.extend(add_to_end_of_line) + del add_to_end_of_line[:] + continue + + # Something is off, let's just add as is. + for token in line_contents: + if token not in handled: + lst.append(token.tok) + + stream = StringIO() + _print_after_info(line_contents, stream) + pydev_log.critical( + "Error. After markers are not correct:\n%s", stream.getvalue() + ) + break + return "".join(lst) + + +class _PyCodeToSource: + def __init__(self, co, memo=None): + if memo is None: + memo = {} + self.memo = memo + self.co = co + self.instructions = list(iter_instructions(co)) + self.stack = _Stack() + self.writer = _Writer() + + def _process_next(self, i_line): + instruction = self.instructions.pop(0) + handler_class = _op_name_to_handler.get(instruction.opname) + if handler_class is not None: + s = handler_class(i_line, instruction, self.stack, self.writer, self) + if DEBUG: + print(s) + + else: + if DEBUG: + print("UNHANDLED", instruction) + + def build_line_to_contents(self): + co = self.co + + op_offset_to_line = dict(dis.findlinestarts(co)) + curr_line_index = 0 + + instructions = self.instructions + while instructions: + instruction = instructions[0] + new_line_index = op_offset_to_line.get(instruction.offset) + if new_line_index is not None: + if new_line_index is not None: + curr_line_index = new_line_index + + self._process_next(curr_line_index) + return self.writer.line_to_contents + + def merge_code(self, code): + if DEBUG: + print("merge code ----") + # for d in dir(code): + # if not d.startswith('_'): + # print(d, getattr(code, d)) + line_to_contents = _PyCodeToSource(code, self.memo).build_line_to_contents() + lines = [] + for line, contents in sorted(line_to_contents.items()): + lines.append(line) + self.writer.get_line(line).extend(contents) + if DEBUG: + print("end merge code ----") + return lines + + def disassemble(self): + show_lines = False + line_to_contents = self.build_line_to_contents() + stream = StringIO() + last_line = 0 + indent = "" + previous_line_tokens = set() + for i_line, contents in sorted(line_to_contents.items()): + while last_line < i_line - 1: + if show_lines: + stream.write("%s.\n" % (last_line + 1,)) + else: + stream.write("\n") + last_line += 1 + + line_contents = [] + dedents_found = 0 + for part in contents: + if part is INDENT_MARKER: + if DEBUG: + print("found indent", i_line) + indent += " " + continue + if part is DEDENT_MARKER: + if DEBUG: + print("found dedent", i_line) + dedents_found += 1 + continue + line_contents.append(part) + + s = indent + _compose_line_contents(line_contents, previous_line_tokens) + if show_lines: + stream.write("%s. %s\n" % (i_line, s)) + else: + stream.write("%s\n" % s) + + if dedents_found: + indent = indent[: -(4 * dedents_found)] + last_line = i_line + + return stream.getvalue() + + +def code_obj_to_source(co): + """ + Converts a code object to source code to provide a suitable representation for the compiler when + the actual source code is not found. + + This is a work in progress / proof of concept / not ready to be used. + """ + ret = _PyCodeToSource(co).disassemble() + if DEBUG: + print(ret) + return ret diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_collect_bytecode_info.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_collect_bytecode_info.py new file mode 100644 index 000000000..65326106d --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_collect_bytecode_info.py @@ -0,0 +1,1156 @@ +import dis +import inspect +import sys +from collections import namedtuple +from io import StringIO + +from _pydev_bundle import pydev_log +from opcode import ( + EXTENDED_ARG, + HAVE_ARGUMENT, + cmp_op, + hascompare, + hasconst, + hasfree, + hasjrel, + haslocal, + hasname, + opname, +) + + +class TryExceptInfo: + def __init__(self, try_line, ignore=False): + """ + :param try_line: + :param ignore: + Usually we should ignore any block that's not a try..except + (this can happen for finally blocks, with statements, etc, for + which we create temporary entries). + """ + self.try_line = try_line + self.ignore = ignore + self.except_line = -1 + self.except_end_line = -1 + self.raise_lines_in_except = [] + + # Note: these may not be available if generated from source instead of bytecode. + self.except_bytecode_offset = -1 + self.except_end_bytecode_offset = -1 + + def is_line_in_try_block(self, line): + return self.try_line <= line < self.except_line + + def is_line_in_except_block(self, line): + return self.except_line <= line <= self.except_end_line + + def __str__(self): + lst = [ + "{try:", + str(self.try_line), + " except ", + str(self.except_line), + " end block ", + str(self.except_end_line), + ] + if self.raise_lines_in_except: + lst.append( + " raises: %s" % (", ".join(str(x) for x in self.raise_lines_in_except),) + ) + + lst.append("}") + return "".join(lst) + + __repr__ = __str__ + + +class ReturnInfo: + def __init__(self, return_line): + self.return_line = return_line + + def __str__(self): + return "{return: %s}" % (self.return_line,) + + __repr__ = __str__ + + +def _get_line(op_offset_to_line, op_offset, firstlineno, search=False): + op_offset_original = op_offset + while op_offset >= 0: + ret = op_offset_to_line.get(op_offset) + if ret is not None: + return ret - firstlineno + if not search: + return ret + else: + op_offset -= 1 + raise AssertionError( + "Unable to find line for offset: %s.Info: %s" + % (op_offset_original, op_offset_to_line) + ) + + +def debug(s): + pass + + +_Instruction = namedtuple( + "_Instruction", + "opname, opcode, starts_line, argval, is_jump_target, offset, argrepr", +) + + +def _iter_as_bytecode_as_instructions_py2(co): + code = co.co_code + op_offset_to_line = dict(dis.findlinestarts(co)) + labels = set(dis.findlabels(code)) + bytecode_len = len(code) + i = 0 + extended_arg = 0 + free = None + + op_to_name = opname + + while i < bytecode_len: + c = code[i] + op = ord(c) + is_jump_target = i in labels + + curr_op_name = op_to_name[op] + initial_bytecode_offset = i + + i = i + 1 + if op < HAVE_ARGUMENT: + yield _Instruction( + curr_op_name, + op, + _get_line(op_offset_to_line, initial_bytecode_offset, 0), + None, + is_jump_target, + initial_bytecode_offset, + "", + ) + + else: + oparg = ord(code[i]) + ord(code[i + 1]) * 256 + extended_arg + + extended_arg = 0 + i = i + 2 + if op == EXTENDED_ARG: + extended_arg = oparg * 65536 + + if op in hasconst: + yield _Instruction( + curr_op_name, + op, + _get_line(op_offset_to_line, initial_bytecode_offset, 0), + co.co_consts[oparg], + is_jump_target, + initial_bytecode_offset, + repr(co.co_consts[oparg]), + ) + elif op in hasname: + yield _Instruction( + curr_op_name, + op, + _get_line(op_offset_to_line, initial_bytecode_offset, 0), + co.co_names[oparg], + is_jump_target, + initial_bytecode_offset, + str(co.co_names[oparg]), + ) + elif op in hasjrel: + argval = i + oparg + yield _Instruction( + curr_op_name, + op, + _get_line(op_offset_to_line, initial_bytecode_offset, 0), + argval, + is_jump_target, + initial_bytecode_offset, + "to " + repr(argval), + ) + elif op in haslocal: + yield _Instruction( + curr_op_name, + op, + _get_line(op_offset_to_line, initial_bytecode_offset, 0), + co.co_varnames[oparg], + is_jump_target, + initial_bytecode_offset, + str(co.co_varnames[oparg]), + ) + elif op in hascompare: + yield _Instruction( + curr_op_name, + op, + _get_line(op_offset_to_line, initial_bytecode_offset, 0), + cmp_op[oparg], + is_jump_target, + initial_bytecode_offset, + cmp_op[oparg], + ) + elif op in hasfree: + if free is None: + free = co.co_cellvars + co.co_freevars + yield _Instruction( + curr_op_name, + op, + _get_line(op_offset_to_line, initial_bytecode_offset, 0), + free[oparg], + is_jump_target, + initial_bytecode_offset, + str(free[oparg]), + ) + else: + yield _Instruction( + curr_op_name, + op, + _get_line(op_offset_to_line, initial_bytecode_offset, 0), + oparg, + is_jump_target, + initial_bytecode_offset, + str(oparg), + ) + + +def iter_instructions(co): + if sys.version_info[0] < 3: + iter_in = _iter_as_bytecode_as_instructions_py2(co) + else: + iter_in = dis.Bytecode(co) + iter_in = list(iter_in) + + bytecode_to_instruction = {} + for instruction in iter_in: + bytecode_to_instruction[instruction.offset] = instruction + + if iter_in: + for instruction in iter_in: + yield instruction + + +def collect_return_info(co, use_func_first_line=False): + if not hasattr(co, "co_lines") and not hasattr(co, "co_lnotab"): + return [] + + if use_func_first_line: + firstlineno = co.co_firstlineno + else: + firstlineno = 0 + + lst = [] + op_offset_to_line = dict(dis.findlinestarts(co)) + for instruction in iter_instructions(co): + curr_op_name = instruction.opname + if curr_op_name in ("RETURN_VALUE", "RETURN_CONST"): + lst.append( + ReturnInfo( + _get_line( + op_offset_to_line, instruction.offset, firstlineno, search=True + ) + ) + ) + + return lst + + +if sys.version_info[:2] <= (3, 9): + + class _TargetInfo: + def __init__(self, except_end_instruction, jump_if_not_exc_instruction=None): + self.except_end_instruction = except_end_instruction + self.jump_if_not_exc_instruction = jump_if_not_exc_instruction + + def __str__(self): + msg = ["_TargetInfo("] + msg.append(self.except_end_instruction.opname) + if self.jump_if_not_exc_instruction: + msg.append(" - ") + msg.append(self.jump_if_not_exc_instruction.opname) + msg.append("(") + msg.append(str(self.jump_if_not_exc_instruction.argval)) + msg.append(")") + msg.append(")") + return "".join(msg) + + def _get_except_target_info( + instructions, exception_end_instruction_index, offset_to_instruction_idx + ): + next_3 = [ + j_instruction.opname + for j_instruction in instructions[ + exception_end_instruction_index : exception_end_instruction_index + 3 + ] + ] + # print('next_3:', [(j_instruction.opname, j_instruction.argval) for j_instruction in instructions[exception_end_instruction_index:exception_end_instruction_index + 3]]) + if next_3 == [ + "POP_TOP", + "POP_TOP", + "POP_TOP", + ]: # try..except without checking exception. + try: + jump_instruction = instructions[exception_end_instruction_index - 1] + if jump_instruction.opname not in ("JUMP_FORWARD", "JUMP_ABSOLUTE"): + return None + except IndexError: + pass + + if jump_instruction.opname == "JUMP_ABSOLUTE": + # On latest versions of Python 3 the interpreter has a go-backwards step, + # used to show the initial line of a for/while, etc (which is this + # JUMP_ABSOLUTE)... we're not really interested in it, but rather on where + # it points to. + except_end_instruction = instructions[ + offset_to_instruction_idx[jump_instruction.argval] + ] + idx = offset_to_instruction_idx[except_end_instruction.argval] + # Search for the POP_EXCEPT which should be at the end of the block. + for pop_except_instruction in reversed(instructions[:idx]): + if pop_except_instruction.opname == "POP_EXCEPT": + except_end_instruction = pop_except_instruction + return _TargetInfo(except_end_instruction) + else: + return None # i.e.: Continue outer loop + + else: + # JUMP_FORWARD + i = offset_to_instruction_idx[jump_instruction.argval] + try: + # i.e.: the jump is to the instruction after the block finishes (so, we need to + # get the previous instruction as that should be the place where the exception + # block finishes). + except_end_instruction = instructions[i - 1] + except: + pydev_log.critical("Error when computing try..except block end.") + return None + return _TargetInfo(except_end_instruction) + + elif next_3 and next_3[0] == "DUP_TOP": # try..except AssertionError. + iter_in = instructions[exception_end_instruction_index + 1 :] + for j, jump_if_not_exc_instruction in enumerate(iter_in): + if jump_if_not_exc_instruction.opname == "JUMP_IF_NOT_EXC_MATCH": + # Python 3.9 + except_end_instruction = instructions[ + offset_to_instruction_idx[jump_if_not_exc_instruction.argval] + ] + return _TargetInfo( + except_end_instruction, jump_if_not_exc_instruction + ) + + elif ( + jump_if_not_exc_instruction.opname == "COMPARE_OP" + and jump_if_not_exc_instruction.argval == "exception match" + ): + # Python 3.8 and before + try: + next_instruction = iter_in[j + 1] + except: + continue + if next_instruction.opname == "POP_JUMP_IF_FALSE": + except_end_instruction = instructions[ + offset_to_instruction_idx[next_instruction.argval] + ] + return _TargetInfo(except_end_instruction, next_instruction) + else: + return None # i.e.: Continue outer loop + + else: + # i.e.: we're not interested in try..finally statements, only try..except. + return None + + def collect_try_except_info(co, use_func_first_line=False): + # We no longer have 'END_FINALLY', so, we need to do things differently in Python 3.9 + if not hasattr(co, "co_lines") and not hasattr(co, "co_lnotab"): + return [] + + if use_func_first_line: + firstlineno = co.co_firstlineno + else: + firstlineno = 0 + + try_except_info_lst = [] + + op_offset_to_line = dict(dis.findlinestarts(co)) + + offset_to_instruction_idx = {} + + instructions = list(iter_instructions(co)) + + for i, instruction in enumerate(instructions): + offset_to_instruction_idx[instruction.offset] = i + + for i, instruction in enumerate(instructions): + curr_op_name = instruction.opname + if curr_op_name in ( + "SETUP_FINALLY", + "SETUP_EXCEPT", + ): # SETUP_EXCEPT before Python 3.8, SETUP_FINALLY Python 3.8 onwards. + exception_end_instruction_index = offset_to_instruction_idx[ + instruction.argval + ] + + jump_instruction = instructions[exception_end_instruction_index - 1] + if jump_instruction.opname not in ("JUMP_FORWARD", "JUMP_ABSOLUTE"): + continue + + except_end_instruction = None + indexes_checked = set() + indexes_checked.add(exception_end_instruction_index) + target_info = _get_except_target_info( + instructions, + exception_end_instruction_index, + offset_to_instruction_idx, + ) + while target_info is not None: + # Handle a try..except..except..except. + jump_instruction = target_info.jump_if_not_exc_instruction + except_end_instruction = target_info.except_end_instruction + + if jump_instruction is not None: + check_index = offset_to_instruction_idx[jump_instruction.argval] + if check_index in indexes_checked: + break + indexes_checked.add(check_index) + target_info = _get_except_target_info( + instructions, check_index, offset_to_instruction_idx + ) + else: + break + + if except_end_instruction is not None: + try_except_info = TryExceptInfo( + _get_line( + op_offset_to_line, + instruction.offset, + firstlineno, + search=True, + ), + ignore=False, + ) + try_except_info.except_bytecode_offset = instruction.argval + try_except_info.except_line = _get_line( + op_offset_to_line, + try_except_info.except_bytecode_offset, + firstlineno, + search=True, + ) + + try_except_info.except_end_bytecode_offset = ( + except_end_instruction.offset + ) + try_except_info.except_end_line = _get_line( + op_offset_to_line, + except_end_instruction.offset, + firstlineno, + search=True, + ) + try_except_info_lst.append(try_except_info) + + for raise_instruction in instructions[ + i : offset_to_instruction_idx[ + try_except_info.except_end_bytecode_offset + ] + ]: + if raise_instruction.opname == "RAISE_VARARGS": + if raise_instruction.argval == 0: + try_except_info.raise_lines_in_except.append( + _get_line( + op_offset_to_line, + raise_instruction.offset, + firstlineno, + search=True, + ) + ) + + return try_except_info_lst + +elif sys.version_info[:2] == (3, 10): + + class _TargetInfo: + def __init__(self, except_end_instruction, jump_if_not_exc_instruction=None): + self.except_end_instruction = except_end_instruction + self.jump_if_not_exc_instruction = jump_if_not_exc_instruction + + def __str__(self): + msg = ["_TargetInfo("] + msg.append(self.except_end_instruction.opname) + if self.jump_if_not_exc_instruction: + msg.append(" - ") + msg.append(self.jump_if_not_exc_instruction.opname) + msg.append("(") + msg.append(str(self.jump_if_not_exc_instruction.argval)) + msg.append(")") + msg.append(")") + return "".join(msg) + + def _get_except_target_info( + instructions, exception_end_instruction_index, offset_to_instruction_idx + ): + next_3 = [ + j_instruction.opname + for j_instruction in instructions[ + exception_end_instruction_index : exception_end_instruction_index + 3 + ] + ] + # print('next_3:', [(j_instruction.opname, j_instruction.argval) for j_instruction in instructions[exception_end_instruction_index:exception_end_instruction_index + 3]]) + if next_3 == [ + "POP_TOP", + "POP_TOP", + "POP_TOP", + ]: # try..except without checking exception. + # Previously there was a jump which was able to point where the exception would end. This + # is no longer true, now a bare except doesn't really have any indication in the bytecode + # where the end would be expected if the exception wasn't raised, so, we just blindly + # search for a POP_EXCEPT from the current position. + for pop_except_instruction in instructions[ + exception_end_instruction_index + 3 : + ]: + if pop_except_instruction.opname == "POP_EXCEPT": + except_end_instruction = pop_except_instruction + return _TargetInfo(except_end_instruction) + + elif next_3 and next_3[0] == "DUP_TOP": # try..except AssertionError. + iter_in = instructions[exception_end_instruction_index + 1 :] + for jump_if_not_exc_instruction in iter_in: + if jump_if_not_exc_instruction.opname == "JUMP_IF_NOT_EXC_MATCH": + # Python 3.9 + except_end_instruction = instructions[ + offset_to_instruction_idx[jump_if_not_exc_instruction.argval] + ] + return _TargetInfo( + except_end_instruction, jump_if_not_exc_instruction + ) + else: + return None # i.e.: Continue outer loop + + else: + # i.e.: we're not interested in try..finally statements, only try..except. + return None + + def collect_try_except_info(co, use_func_first_line=False): + # We no longer have 'END_FINALLY', so, we need to do things differently in Python 3.9 + if not hasattr(co, "co_lines") and not hasattr(co, "co_lnotab"): + return [] + + if use_func_first_line: + firstlineno = co.co_firstlineno + else: + firstlineno = 0 + + try_except_info_lst = [] + + op_offset_to_line = dict(dis.findlinestarts(co)) + + offset_to_instruction_idx = {} + + instructions = list(iter_instructions(co)) + + for i, instruction in enumerate(instructions): + offset_to_instruction_idx[instruction.offset] = i + + for i, instruction in enumerate(instructions): + curr_op_name = instruction.opname + if curr_op_name == "SETUP_FINALLY": + exception_end_instruction_index = offset_to_instruction_idx[ + instruction.argval + ] + + jump_instruction = instructions[exception_end_instruction_index] + if jump_instruction.opname != "DUP_TOP": + continue + + except_end_instruction = None + indexes_checked = set() + indexes_checked.add(exception_end_instruction_index) + target_info = _get_except_target_info( + instructions, + exception_end_instruction_index, + offset_to_instruction_idx, + ) + while target_info is not None: + # Handle a try..except..except..except. + jump_instruction = target_info.jump_if_not_exc_instruction + except_end_instruction = target_info.except_end_instruction + + if jump_instruction is not None: + check_index = offset_to_instruction_idx[jump_instruction.argval] + if check_index in indexes_checked: + break + indexes_checked.add(check_index) + target_info = _get_except_target_info( + instructions, check_index, offset_to_instruction_idx + ) + else: + break + + if except_end_instruction is not None: + try_except_info = TryExceptInfo( + _get_line( + op_offset_to_line, + instruction.offset, + firstlineno, + search=True, + ), + ignore=False, + ) + try_except_info.except_bytecode_offset = instruction.argval + try_except_info.except_line = _get_line( + op_offset_to_line, + try_except_info.except_bytecode_offset, + firstlineno, + search=True, + ) + + try_except_info.except_end_bytecode_offset = ( + except_end_instruction.offset + ) + + # On Python 3.10 the final line of the except end isn't really correct, rather, + # it's engineered to be the same line of the except and not the end line of the + # block, so, the approach taken is to search for the biggest line between the + # except and the end instruction + except_end_line = -1 + start_i = offset_to_instruction_idx[ + try_except_info.except_bytecode_offset + ] + end_i = offset_to_instruction_idx[except_end_instruction.offset] + for instruction in instructions[start_i : end_i + 1]: + found_at_line = op_offset_to_line.get(instruction.offset) + if ( + found_at_line is not None + and found_at_line > except_end_line + ): + except_end_line = found_at_line + try_except_info.except_end_line = except_end_line - firstlineno + + try_except_info_lst.append(try_except_info) + + for raise_instruction in instructions[ + i : offset_to_instruction_idx[ + try_except_info.except_end_bytecode_offset + ] + ]: + if raise_instruction.opname == "RAISE_VARARGS": + if raise_instruction.argval == 0: + try_except_info.raise_lines_in_except.append( + _get_line( + op_offset_to_line, + raise_instruction.offset, + firstlineno, + search=True, + ) + ) + + return try_except_info_lst + +elif sys.version_info[:2] >= (3, 11): + + def collect_try_except_info(co, use_func_first_line=False): + """ + Note: if the filename is available and we can get the source, + `collect_try_except_info_from_source` is preferred (this is kept as + a fallback for cases where sources aren't available). + """ + return [] + + +import ast as ast_module + + +class _Visitor(ast_module.NodeVisitor): + def __init__(self): + self.try_except_infos = [] + self._stack = [] + self._in_except_stack = [] + self.max_line = -1 + + def generic_visit(self, node): + if hasattr(node, "lineno"): + if node.lineno > self.max_line: + self.max_line = node.lineno + return ast_module.NodeVisitor.generic_visit(self, node) + + def visit_Try(self, node): + info = TryExceptInfo(node.lineno, ignore=True) + self._stack.append(info) + self.generic_visit(node) + assert info is self._stack.pop() + if not info.ignore: + self.try_except_infos.insert(0, info) + + if sys.version_info[0] < 3: + visit_TryExcept = visit_Try + + def visit_ExceptHandler(self, node): + info = self._stack[-1] + info.ignore = False + if info.except_line == -1: + info.except_line = node.lineno + self._in_except_stack.append(info) + self.generic_visit(node) + if hasattr(node, "end_lineno"): + info.except_end_line = node.end_lineno + else: + info.except_end_line = self.max_line + self._in_except_stack.pop() + + if sys.version_info[0] >= 3: + + def visit_Raise(self, node): + for info in self._in_except_stack: + if node.exc is None: + info.raise_lines_in_except.append(node.lineno) + self.generic_visit(node) + + else: + + def visit_Raise(self, node): + for info in self._in_except_stack: + if node.type is None and node.tback is None: + info.raise_lines_in_except.append(node.lineno) + self.generic_visit(node) + + +def collect_try_except_info_from_source(filename): + with open(filename, "rb") as stream: + contents = stream.read() + return collect_try_except_info_from_contents(contents, filename) + + +def collect_try_except_info_from_contents(contents, filename=""): + ast = ast_module.parse(contents, filename) + visitor = _Visitor() + visitor.visit(ast) + return visitor.try_except_infos + + +RESTART_FROM_LOOKAHEAD = object() +SEPARATOR = object() + + +class _MsgPart: + def __init__(self, line, tok): + assert line >= 0 + self.line = line + self.tok = tok + + def __str__(self) -> str: + return "_MsgPart(line: %s tok: %s)" % (self.line, self.tok) + + __repr__ = __str__ + + @classmethod + def add_to_line_to_contents(cls, obj, line_to_contents, line=None): + if isinstance(obj, (list, tuple)): + for o in obj: + cls.add_to_line_to_contents(o, line_to_contents, line=line) + return + + if isinstance(obj, str): + assert line is not None + line = int(line) + lst = line_to_contents.setdefault(line, []) + lst.append(obj) + return + + if isinstance(obj, _MsgPart): + if isinstance(obj.tok, (list, tuple)): + cls.add_to_line_to_contents(obj.tok, line_to_contents, line=obj.line) + return + + if isinstance(obj.tok, str): + lst = line_to_contents.setdefault(obj.line, []) + lst.append(obj.tok) + return + + raise AssertionError("Unhandled: %" % (obj,)) + + +class _Disassembler: + def __init__(self, co, firstlineno, level=0): + self.co = co + self.firstlineno = firstlineno + self.level = level + self.instructions = list(iter_instructions(co)) + op_offset_to_line = self.op_offset_to_line = dict(dis.findlinestarts(co)) + + # Update offsets so that all offsets have the line index (and update it based on + # the passed firstlineno). + line_index = co.co_firstlineno - firstlineno + for instruction in self.instructions: + new_line_index = op_offset_to_line.get(instruction.offset) + if new_line_index is not None: + line_index = new_line_index - firstlineno + op_offset_to_line[instruction.offset] = line_index + else: + op_offset_to_line[instruction.offset] = line_index + + BIG_LINE_INT = 9999999 + SMALL_LINE_INT = -1 + + def min_line(self, *args): + m = self.BIG_LINE_INT + for arg in args: + if isinstance(arg, (list, tuple)): + m = min(m, self.min_line(*arg)) + + elif isinstance(arg, _MsgPart): + m = min(m, arg.line) + + elif hasattr(arg, "offset"): + m = min(m, self.op_offset_to_line[arg.offset]) + return m + + def max_line(self, *args): + m = self.SMALL_LINE_INT + for arg in args: + if isinstance(arg, (list, tuple)): + m = max(m, self.max_line(*arg)) + + elif isinstance(arg, _MsgPart): + m = max(m, arg.line) + + elif hasattr(arg, "offset"): + m = max(m, self.op_offset_to_line[arg.offset]) + return m + + def _lookahead(self): + """ + This handles and converts some common constructs from bytecode to actual source code. + + It may change the list of instructions. + """ + msg = self._create_msg_part + found = [] + fullrepr = None + + # Collect all the load instructions + for next_instruction in self.instructions: + if next_instruction.opname in ( + "LOAD_GLOBAL", + "LOAD_FAST", + "LOAD_CONST", + "LOAD_NAME", + ): + found.append(next_instruction) + else: + break + + if not found: + return None + + if next_instruction.opname == "LOAD_ATTR": + prev_instruction = found[-1] + # Remove the current LOAD_ATTR + assert self.instructions.pop(len(found)) is next_instruction + + # Add the LOAD_ATTR to the previous LOAD + self.instructions[len(found) - 1] = _Instruction( + prev_instruction.opname, + prev_instruction.opcode, + prev_instruction.starts_line, + prev_instruction.argval, + False, # prev_instruction.is_jump_target, + prev_instruction.offset, + ( + msg(prev_instruction), + msg(prev_instruction, "."), + msg(next_instruction), + ), + ) + return RESTART_FROM_LOOKAHEAD + + if next_instruction.opname in ("CALL_FUNCTION", "PRECALL", "CALL"): + if len(found) == next_instruction.argval + 1: + force_restart = False + delta = 0 + else: + force_restart = True + if len(found) > next_instruction.argval + 1: + delta = len(found) - (next_instruction.argval + 1) + else: + return None # This is odd + + del_upto = delta + next_instruction.argval + 2 # +2 = NAME / CALL_FUNCTION + if next_instruction.opname == "PRECALL": + del_upto += 1 # Also remove the CALL right after the PRECALL. + del self.instructions[delta:del_upto] + + found = iter(found[delta:]) + call_func = next(found) + args = list(found) + fullrepr = [ + msg(call_func), + msg(call_func, "("), + ] + prev = call_func + for i, arg in enumerate(args): + if i > 0: + fullrepr.append(msg(prev, ", ")) + prev = arg + fullrepr.append(msg(arg)) + + fullrepr.append(msg(prev, ")")) + + if force_restart: + self.instructions.insert( + delta, + _Instruction( + call_func.opname, + call_func.opcode, + call_func.starts_line, + call_func.argval, + False, # call_func.is_jump_target, + call_func.offset, + tuple(fullrepr), + ), + ) + return RESTART_FROM_LOOKAHEAD + + elif next_instruction.opname == "BUILD_TUPLE": + if len(found) == next_instruction.argval: + force_restart = False + delta = 0 + else: + force_restart = True + if len(found) > next_instruction.argval: + delta = len(found) - (next_instruction.argval) + else: + return None # This is odd + + del self.instructions[ + delta : delta + next_instruction.argval + 1 + ] # +1 = BUILD_TUPLE + + found = iter(found[delta:]) + + args = [instruction for instruction in found] + if args: + first_instruction = args[0] + else: + first_instruction = next_instruction + prev = first_instruction + + fullrepr = [] + fullrepr.append(msg(prev, "(")) + for i, arg in enumerate(args): + if i > 0: + fullrepr.append(msg(prev, ", ")) + prev = arg + fullrepr.append(msg(arg)) + + fullrepr.append(msg(prev, ")")) + + if force_restart: + self.instructions.insert( + delta, + _Instruction( + first_instruction.opname, + first_instruction.opcode, + first_instruction.starts_line, + first_instruction.argval, + False, # first_instruction.is_jump_target, + first_instruction.offset, + tuple(fullrepr), + ), + ) + return RESTART_FROM_LOOKAHEAD + + if fullrepr is not None and self.instructions: + if self.instructions[0].opname == "POP_TOP": + self.instructions.pop(0) + + if self.instructions[0].opname in ("STORE_FAST", "STORE_NAME"): + next_instruction = self.instructions.pop(0) + return msg(next_instruction), msg(next_instruction, " = "), fullrepr + + if self.instructions[0].opname == "RETURN_VALUE": + next_instruction = self.instructions.pop(0) + return msg( + next_instruction, + "return ", + line=self.min_line(next_instruction, fullrepr), + ), fullrepr + + return fullrepr + + def _decorate_jump_target(self, instruction, instruction_repr): + if instruction.is_jump_target: + return ("|", str(instruction.offset), "|", instruction_repr) + + return instruction_repr + + def _create_msg_part(self, instruction, tok=None, line=None): + dec = self._decorate_jump_target + if line is None or line in (self.BIG_LINE_INT, self.SMALL_LINE_INT): + line = self.op_offset_to_line[instruction.offset] + + argrepr = instruction.argrepr + if isinstance(argrepr, str) and argrepr.startswith("NULL + "): + argrepr = argrepr[7:] + if isinstance(argrepr, str) and argrepr.endswith("+ NULL"): + argrepr = argrepr[:-7] + return _MsgPart(line, tok if tok is not None else dec(instruction, argrepr)) + + def _next_instruction_to_str(self, line_to_contents): + # indent = '' + # if self.level > 0: + # indent += ' ' * self.level + # print(indent, 'handle', self.instructions[0]) + + if self.instructions: + ret = self._lookahead() + if ret: + return ret + + msg = self._create_msg_part + + instruction = self.instructions.pop(0) + + if instruction.opname in ("RESUME", "NULL"): + return None + + if instruction.opname == "RETURN_CONST": + return ( + msg(instruction, "return ", line=self.min_line(instruction)), + msg(instruction), + ) + + if instruction.opname in ( + "LOAD_GLOBAL", + "LOAD_FAST", + "LOAD_CONST", + "LOAD_NAME", + ): + next_instruction = self.instructions[0] + if next_instruction.opname in ("STORE_FAST", "STORE_NAME"): + self.instructions.pop(0) + return ( + msg(next_instruction), + msg(next_instruction, " = "), + msg(instruction), + ) + + if next_instruction.opname == "RETURN_VALUE": + self.instructions.pop(0) + return ( + msg(instruction, "return ", line=self.min_line(instruction)), + msg(instruction), + ) + + if ( + next_instruction.opname == "RAISE_VARARGS" + and next_instruction.argval == 1 + ): + self.instructions.pop(0) + return ( + msg(instruction, "raise ", line=self.min_line(instruction)), + msg(instruction), + ) + + if instruction.opname == "LOAD_CONST": + if inspect.iscode(instruction.argval): + code_line_to_contents = _Disassembler( + instruction.argval, self.firstlineno, self.level + 1 + ).build_line_to_contents() + + for contents in code_line_to_contents.values(): + contents.insert(0, " ") + for line, contents in code_line_to_contents.items(): + line_to_contents.setdefault(line, []).extend(contents) + return msg(instruction, "LOAD_CONST(code)") + + if instruction.opname == "RAISE_VARARGS": + if instruction.argval == 0: + return msg(instruction, "raise") + + if instruction.opname == "SETUP_FINALLY": + return msg(instruction, ("try(", instruction.argrepr, "):")) + + if instruction.argrepr: + return msg(instruction, (instruction.opname, "(", instruction.argrepr, ")")) + + if instruction.argval: + return msg( + instruction, + "%s{%s}" + % ( + instruction.opname, + instruction.argval, + ), + ) + + return msg(instruction, instruction.opname) + + def build_line_to_contents(self): + # print('----') + # for instruction in self.instructions: + # print(instruction) + # print('----\n\n') + + line_to_contents = {} + + instructions = self.instructions + while instructions: + s = self._next_instruction_to_str(line_to_contents) + if s is RESTART_FROM_LOOKAHEAD: + continue + if s is None: + continue + + _MsgPart.add_to_line_to_contents(s, line_to_contents) + m = self.max_line(s) + if m != self.SMALL_LINE_INT: + line_to_contents.setdefault(m, []).append(SEPARATOR) + return line_to_contents + + def disassemble(self): + line_to_contents = self.build_line_to_contents() + stream = StringIO() + last_line = 0 + show_lines = False + for line, contents in sorted(line_to_contents.items()): + while last_line < line - 1: + if show_lines: + stream.write("%s.\n" % (last_line + 1,)) + else: + stream.write("\n") + last_line += 1 + + if show_lines: + stream.write("%s. " % (line,)) + + for i, content in enumerate(contents): + if content == SEPARATOR: + if i != len(contents) - 1: + stream.write(", ") + else: + stream.write(content) + + stream.write("\n") + + last_line = line + + return stream.getvalue() + + +def code_to_bytecode_representation(co, use_func_first_line=False): + """ + A simple disassemble of bytecode. + + It does not attempt to provide the full Python source code, rather, it provides a low-level + representation of the bytecode, respecting the lines (so, its target is making the bytecode + easier to grasp and not providing the original source code). + + Note that it does show jump locations/targets and converts some common bytecode constructs to + Python code to make it a bit easier to understand. + """ + # Reference for bytecodes: + # https://docs.python.org/3/library/dis.html + if use_func_first_line: + firstlineno = co.co_firstlineno + else: + firstlineno = 0 + + return _Disassembler(co, firstlineno).disassemble() diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm.py new file mode 100644 index 000000000..b0a5e1b7e --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm.py @@ -0,0 +1,2280 @@ +"""pydevd - a debugging daemon +This is the daemon you launch for python remote debugging. + +Protocol: +each command has a format: + id\tsequence-num\ttext + id: protocol command number + sequence-num: each request has a sequence number. Sequence numbers + originating at the debugger are odd, sequence numbers originating + at the daemon are even. Every response uses the same sequence number + as the request. + payload: it is protocol dependent. When response is a complex structure, it + is returned as XML. Each attribute value is urlencoded, and then the whole + payload is urlencoded again to prevent stray characters corrupting protocol/xml encodings + + Commands: + + NUMBER NAME FROM* ARGUMENTS RESPONSE NOTE +100 series: program execution + 101 RUN JAVA - - + 102 LIST_THREADS JAVA RETURN with XML listing of all threads + 103 THREAD_CREATE PYDB - XML with thread information + 104 THREAD_KILL JAVA id (or * to exit) kills the thread + PYDB id nofies JAVA that thread was killed + 105 THREAD_SUSPEND JAVA XML of the stack, suspends the thread + reason for suspension + PYDB id notifies JAVA that thread was suspended + + 106 CMD_THREAD_RUN JAVA id resume the thread + PYDB id \t reason notifies JAVA that thread was resumed + + 107 STEP_INTO JAVA thread_id + 108 STEP_OVER JAVA thread_id + 109 STEP_RETURN JAVA thread_id + + 110 GET_VARIABLE JAVA thread_id \t frame_id \t GET_VARIABLE with XML of var content + FRAME|GLOBAL \t attributes* + + 111 SET_BREAK JAVA file/line of the breakpoint + 112 REMOVE_BREAK JAVA file/line of the return + 113 CMD_EVALUATE_EXPRESSION JAVA expression result of evaluating the expression + 114 CMD_GET_FRAME JAVA request for frame contents + 115 CMD_EXEC_EXPRESSION JAVA + 116 CMD_WRITE_TO_CONSOLE PYDB + 117 CMD_CHANGE_VARIABLE + 118 CMD_RUN_TO_LINE + 119 CMD_RELOAD_CODE + 120 CMD_GET_COMPLETIONS JAVA + + 200 CMD_REDIRECT_OUTPUT JAVA streams to redirect as string - + 'STDOUT' (redirect only STDOUT) + 'STDERR' (redirect only STDERR) + 'STDOUT STDERR' (redirect both streams) + +500 series diagnostics/ok + 501 VERSION either Version string (1.0) Currently just used at startup + 502 RETURN either Depends on caller - + +900 series: errors + 901 ERROR either - This is reserved for unexpected errors. + + * JAVA - remote debugger, the java end + * PYDB - pydevd, the python end +""" + +import dis +import itertools +import linecache +import os +import sys +import traceback +import weakref +from io import StringIO +from urllib.parse import quote_plus, unquote_plus + +import pydevconsole +import pydevd_file_utils +from _pydev_bundle import _pydev_completer, fsnotify, pydev_log +from _pydev_bundle._pydev_completer import extract_token_and_qualifier +from _pydev_bundle._pydev_saved_modules import ThreadingEvent, time +from _pydev_bundle._pydev_saved_modules import socket as socket_module +from _pydev_bundle.pydev_imports import _queue +from _pydev_bundle.pydev_log import exception as pydev_log_exception +from _pydev_bundle.pydev_monkey import ( + disable_trace_thread_modules, + enable_trace_thread_modules, +) +from _pydev_bundle.pydev_override import overrides +from pydevd_tracing import get_exception_traceback_str + +from _pydevd_bundle import ( + pydevd_bytecode_utils, + pydevd_console, + pydevd_io, + pydevd_reload, + pydevd_vars, + pydevd_vm_type, + pydevd_xml, +) +from _pydevd_bundle._debug_adapter import pydevd_base_schema, pydevd_schema +from _pydevd_bundle._debug_adapter.pydevd_schema import ( + SetVariableResponseBody, + StepInTarget, + StepInTargetsResponseBody, + VariablesResponseBody, +) + +# CMD_XXX constants imported for backward compatibility +from _pydevd_bundle.pydevd_comm_constants import * # @UnusedWildImport +from _pydevd_bundle.pydevd_constants import ( + ASYNC_EVAL_TIMEOUT_SEC, + IS_JYTHON, + IS_PY36_OR_GREATER, + IS_PY311_OR_GREATER, + IS_WASM, + IS_WINDOWS, + NULL, + STATE_RUN, + DebugInfoHolder, + ForkSafeLock, + filter_all_warnings, + silence_warnings_decorator, +) +from _pydevd_bundle.pydevd_daemon_thread import PyDBDaemonThread +from _pydevd_bundle.pydevd_dont_trace_files import PYDEV_FILE +from _pydevd_bundle.pydevd_net_command import NetCommand +from _pydevd_bundle.pydevd_thread_lifecycle import ( + pydevd_find_thread_by_id, + resume_threads, +) +from _pydevd_bundle.pydevd_utils import ( + ScopeRequest, + Timer, + compare_object_attrs_key, + getattr_checked, + is_current_thread_main_thread, + isinstance_checked, + notify_about_gevent_if_needed, +) +from _pydevd_bundle.pydevd_utils import ( + quote_smart as quote, +) +from _pydevd_bundle.pydevd_xml import ExceptionOnEvaluate + +# Socket import aliases: +AF_INET, AF_INET6, SOCK_STREAM, SHUT_WR, SOL_SOCKET, IPPROTO_TCP, socket = ( + socket_module.AF_INET, + socket_module.AF_INET6, + socket_module.SOCK_STREAM, + socket_module.SHUT_WR, + socket_module.SOL_SOCKET, + socket_module.IPPROTO_TCP, + socket_module.socket, +) + +if IS_WINDOWS and not IS_JYTHON: + SO_EXCLUSIVEADDRUSE = socket_module.SO_EXCLUSIVEADDRUSE +if not IS_WASM: + SO_REUSEADDR = socket_module.SO_REUSEADDR + + +class ReaderThread(PyDBDaemonThread): + """reader thread reads and dispatches commands in an infinite loop""" + + def __init__( + self, + sock, + py_db, + PyDevJsonCommandProcessor, + process_net_command, + terminate_on_socket_close=True, + ): + assert sock is not None + PyDBDaemonThread.__init__(self, py_db) + self.__terminate_on_socket_close = terminate_on_socket_close + + self.sock = sock + self._buffer = b"" + self.name = "pydevd.Reader" + self.process_net_command = process_net_command + self.process_net_command_json = PyDevJsonCommandProcessor( + self._from_json + ).process_net_command_json + + def _from_json(self, json_msg, update_ids_from_dap=False): + return pydevd_base_schema.from_json( + json_msg, update_ids_from_dap, on_dict_loaded=self._on_dict_loaded + ) + + def _on_dict_loaded(self, dct): + for listener in self.py_db.dap_messages_listeners: + listener.after_receive(dct) + + @overrides(PyDBDaemonThread.do_kill_pydev_thread) + def do_kill_pydev_thread(self): + PyDBDaemonThread.do_kill_pydev_thread(self) + # Note that we no longer shutdown the reader, just the writer. The idea is that we shutdown + # the writer to send that the communication has finished, then, the client will shutdown its + # own writer when it receives an empty read, at which point this reader will also shutdown. + + # That way, we can *almost* guarantee that all messages have been properly sent -- it's not + # completely guaranteed because it's possible that the process exits before the whole + # message was sent as having this thread alive won't stop the process from exiting -- we + # have a timeout when exiting the process waiting for this thread to finish -- see: + # PyDB.dispose_and_kill_all_pydevd_threads()). + + # try: + # self.sock.shutdown(SHUT_RD) + # except: + # pass + # try: + # self.sock.close() + # except: + # pass + + def _read(self, size): + while True: + buffer_len = len(self._buffer) + if buffer_len == size: + ret = self._buffer + self._buffer = b"" + return ret + + if buffer_len > size: + ret = self._buffer[:size] + self._buffer = self._buffer[size:] + return ret + + try: + r = self.sock.recv(max(size - buffer_len, 1024)) + except OSError: + return b"" + if not r: + return b"" + self._buffer += r + + def _read_line(self): + while True: + i = self._buffer.find(b"\n") + if i != -1: + i += 1 # Add the newline to the return + ret = self._buffer[:i] + self._buffer = self._buffer[i:] + return ret + else: + try: + r = self.sock.recv(1024) + except OSError: + return b"" + if not r: + return b"" + self._buffer += r + + @overrides(PyDBDaemonThread._on_run) + def _on_run(self): + try: + content_len = -1 + + while True: + # i.e.: even if we received a kill, we should only exit the ReaderThread when the + # client itself closes the connection (although on kill received we stop actually + # processing anything read). + try: + notify_about_gevent_if_needed() + line = self._read_line() + + if len(line) == 0: + pydev_log.debug( + "ReaderThread: empty contents received (len(line) == 0)." + ) + self._terminate_on_socket_close() + return # Finished communication. + + if self._kill_received: + continue + + if line.startswith(b"Content-Length:"): + content_len = int(line.strip().split(b":", 1)[1]) + continue + + if content_len != -1: + # If we previously received a content length, read until a '\r\n'. + if line == b"\r\n": + json_contents = self._read(content_len) + + content_len = -1 + + if len(json_contents) == 0: + pydev_log.debug( + "ReaderThread: empty contents received (len(json_contents) == 0)." + ) + self._terminate_on_socket_close() + return # Finished communication. + + if self._kill_received: + continue + + # We just received a json message, let's process it. + self.process_net_command_json(self.py_db, json_contents) + + continue + else: + # No content len, regular line-based protocol message (remove trailing new-line). + if line.endswith(b"\n\n"): + line = line[:-2] + + elif line.endswith(b"\n"): + line = line[:-1] + + elif line.endswith(b"\r"): + line = line[:-1] + except: + if not self._kill_received: + pydev_log_exception() + self._terminate_on_socket_close() + return # Finished communication. + + # Note: the java backend is always expected to pass utf-8 encoded strings. We now work with str + # internally and thus, we may need to convert to the actual encoding where needed (i.e.: filenames + # on python 2 may need to be converted to the filesystem encoding). + if hasattr(line, "decode"): + line = line.decode("utf-8") + + if DebugInfoHolder.DEBUG_TRACE_LEVEL >= 3: + pydev_log.debug("debugger: received >>%s<<\n", line) + + args = line.split("\t", 2) + try: + cmd_id = int(args[0]) + if DebugInfoHolder.DEBUG_TRACE_LEVEL >= 3: + pydev_log.debug( + "Received command: %s %s\n", + ID_TO_MEANING.get(str(cmd_id), "???"), + line, + ) + self.process_command(cmd_id, int(args[1]), args[2]) + except: + if ( + sys is not None and pydev_log_exception is not None + ): # Could happen at interpreter shutdown + pydev_log_exception("Can't process net command: %s.", line) + + except: + if not self._kill_received: + if ( + sys is not None and pydev_log_exception is not None + ): # Could happen at interpreter shutdown + pydev_log_exception() + + self._terminate_on_socket_close() + finally: + pydev_log.debug("ReaderThread: exit") + + def _terminate_on_socket_close(self): + if self.__terminate_on_socket_close: + self.py_db.dispose_and_kill_all_pydevd_threads() + + def process_command(self, cmd_id, seq, text): + self.process_net_command(self.py_db, cmd_id, seq, text) + + +class FSNotifyThread(PyDBDaemonThread): + def __init__(self, py_db, api, watch_dirs): + PyDBDaemonThread.__init__(self, py_db) + self.api = api + self.name = "pydevd.FSNotifyThread" + self.watcher = fsnotify.Watcher() + self.watch_dirs = watch_dirs + + @overrides(PyDBDaemonThread._on_run) + def _on_run(self): + try: + pydev_log.info( + "Watching directories for code reload:\n---\n%s\n---" + % ("\n".join(sorted(self.watch_dirs))) + ) + + # i.e.: The first call to set_tracked_paths will do a full scan, so, do it in the thread + # too (after everything is configured). + self.watcher.set_tracked_paths(self.watch_dirs) + while not self._kill_received: + for change_enum, change_path in self.watcher.iter_changes(): + # We're only interested in modified events + if change_enum == fsnotify.Change.modified: + pydev_log.info("Modified: %s", change_path) + self.api.request_reload_code(self.py_db, -1, None, change_path) + else: + pydev_log.info( + "Ignored (add or remove) change in: %s", change_path + ) + except: + pydev_log.exception( + "Error when waiting for filesystem changes in FSNotifyThread." + ) + + @overrides(PyDBDaemonThread.do_kill_pydev_thread) + def do_kill_pydev_thread(self): + self.watcher.dispose() + PyDBDaemonThread.do_kill_pydev_thread(self) + + +class WriterThread(PyDBDaemonThread): + """writer thread writes out the commands in an infinite loop""" + + def __init__(self, sock, py_db, terminate_on_socket_close=True): + PyDBDaemonThread.__init__(self, py_db) + self.sock = sock + self.__terminate_on_socket_close = terminate_on_socket_close + self.name = "pydevd.Writer" + self._cmd_queue = _queue.Queue() + if pydevd_vm_type.get_vm_type() == "python": + self.timeout = 0 + else: + self.timeout = 0.1 + + def add_command(self, cmd): + """Cmd is NetCommand""" + if not self._kill_received: # we don't take new data after everybody die + self._cmd_queue.put(cmd, False) + + @overrides(PyDBDaemonThread._on_run) + def _on_run(self): + """Just loop and write responses""" + try: + while True: + try: + try: + cmd = self._cmd_queue.get(True, 0.1) + except _queue.Empty: + if self._kill_received: + pydev_log.debug( + "WriterThread: kill_received (sock.shutdown(SHUT_WR))" + ) + try: + self.sock.shutdown(SHUT_WR) + except: + pass + # Note: don't close the socket, just send the shutdown, + # then, when no data is received on the reader, it can close + # the socket. + # See: https://blog.netherlabs.nl/articles/2009/01/18/the-ultimate-so_linger-page-or-why-is-my-tcp-not-reliable + + # try: + # self.sock.close() + # except: + # pass + + return # break if queue is empty and _kill_received + else: + continue + except: + # pydev_log.info('Finishing debug communication...(1)') + # when liberating the thread here, we could have errors because we were shutting down + # but the thread was still not liberated + return + + if cmd.as_dict is not None: + for listener in self.py_db.dap_messages_listeners: + listener.before_send(cmd.as_dict) + + notify_about_gevent_if_needed() + cmd.send(self.sock) + + if cmd.id == CMD_EXIT: + pydev_log.debug("WriterThread: CMD_EXIT received") + break + if time is None: + break # interpreter shutdown + time.sleep(self.timeout) + except Exception: + if self.__terminate_on_socket_close: + self.py_db.dispose_and_kill_all_pydevd_threads() + if DebugInfoHolder.DEBUG_TRACE_LEVEL > 0: + pydev_log_exception() + finally: + pydev_log.debug("WriterThread: exit") + + def empty(self): + return self._cmd_queue.empty() + + @overrides(PyDBDaemonThread.do_kill_pydev_thread) + def do_kill_pydev_thread(self): + if not self._kill_received: + # Add command before setting the kill flag (otherwise the command may not be added). + exit_cmd = self.py_db.cmd_factory.make_exit_command(self.py_db) + self.add_command(exit_cmd) + + PyDBDaemonThread.do_kill_pydev_thread(self) + + +def create_server_socket(host, port): + try: + server = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP) + if IS_WINDOWS and not IS_JYTHON: + server.setsockopt(SOL_SOCKET, SO_EXCLUSIVEADDRUSE, 1) + elif not IS_WASM: + server.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1) + + server.bind((host, port)) + server.settimeout(None) + except Exception: + server.close() + raise + + return server + + +def start_server(port): + """Binds to a port, waits for the debugger to connect""" + s = create_server_socket(host="", port=port) + + try: + s.listen(1) + # Let the user know it's halted waiting for the connection. + host, port = s.getsockname() + msg = f"pydevd: waiting for connection at: {host}:{port}" + print(msg, file=sys.stderr) + pydev_log.info(msg) + + new_socket, _addr = s.accept() + pydev_log.info("Connection accepted") + # closing server socket is not necessary but we don't need it + s.close() + return new_socket + except: + pydev_log.exception("Could not bind to port: %s\n", port) + raise + + +def start_client(host, port): + """Connects to a host/port""" + pydev_log.info("Connecting to %s:%s", host, port) + + address_family = AF_INET + for res in socket_module.getaddrinfo(host, port, 0, SOCK_STREAM): + if res[0] == AF_INET: + address_family = res[0] + # Prefer IPv4 addresses for backward compat. + break + if res[0] == AF_INET6: + # Don't break after this - if the socket is dual-stack prefer IPv4. + address_family = res[0] + + s = socket(address_family, SOCK_STREAM) + + # Set TCP keepalive on an open socket. + # It activates after 1 second (TCP_KEEPIDLE,) of idleness, + # then sends a keepalive ping once every 3 seconds (TCP_KEEPINTVL), + # and closes the connection after 5 failed ping (TCP_KEEPCNT), or 15 seconds + try: + s.setsockopt(SOL_SOCKET, socket_module.SO_KEEPALIVE, 1) + except (AttributeError, OSError): + pass # May not be available everywhere. + try: + s.setsockopt(socket_module.IPPROTO_TCP, socket_module.TCP_KEEPIDLE, 1) + except (AttributeError, OSError): + pass # May not be available everywhere. + try: + s.setsockopt(socket_module.IPPROTO_TCP, socket_module.TCP_KEEPINTVL, 3) + except (AttributeError, OSError): + pass # May not be available everywhere. + try: + s.setsockopt(socket_module.IPPROTO_TCP, socket_module.TCP_KEEPCNT, 5) + except (AttributeError, OSError): + pass # May not be available everywhere. + + try: + # 10 seconds default timeout + timeout = int(os.environ.get("PYDEVD_CONNECT_TIMEOUT", 10)) + s.settimeout(timeout) + s.connect((host, port)) + s.settimeout(None) # no timeout after connected + pydev_log.info(f"Connected to: {s}.") + return s + except: + pydev_log.exception("Could not connect to %s: %s", host, port) + raise + + +INTERNAL_TERMINATE_THREAD = 1 +INTERNAL_SUSPEND_THREAD = 2 + + +class InternalThreadCommand: + """internal commands are generated/executed by the debugger. + + The reason for their existence is that some commands have to be executed + on specific threads. These are the InternalThreadCommands that get + get posted to PyDB. + """ + + def __init__(self, thread_id, method=None, *args, **kwargs): + self.thread_id = thread_id + self.method = method + self.args = args + self.kwargs = kwargs + + def can_be_executed_by(self, thread_id): + """By default, it must be in the same thread to be executed""" + return self.thread_id == thread_id or self.thread_id.endswith("|" + thread_id) + + def do_it(self, dbg): + try: + if self.method is not None: + self.method(dbg, *self.args, **self.kwargs) + else: + raise NotImplementedError("you have to override do_it") + finally: + self.args = None + self.kwargs = None + + def __str__(self): + return "InternalThreadCommands(%s, %s, %s)" % ( + self.method, + self.args, + self.kwargs, + ) + + __repr__ = __str__ + + +class InternalThreadCommandForAnyThread(InternalThreadCommand): + def __init__(self, thread_id, method=None, *args, **kwargs): + assert thread_id == "*" + + InternalThreadCommand.__init__(self, thread_id, method, *args, **kwargs) + + self.executed = False + self.lock = ForkSafeLock() + + def can_be_executed_by(self, thread_id): + return True # Can be executed by any thread. + + def do_it(self, dbg): + with self.lock: + if self.executed: + return + self.executed = True + + InternalThreadCommand.do_it(self, dbg) + + +def _send_io_message(py_db, s): + cmd = py_db.cmd_factory.make_io_message(s, 2) + if py_db.writer is not None: + py_db.writer.add_command(cmd) + + +def internal_reload_code(dbg, seq, module_name, filename): + try: + found_module_to_reload = False + if module_name is not None: + module_name = module_name + if module_name not in sys.modules: + if "." in module_name: + new_module_name = module_name.split(".")[-1] + if new_module_name in sys.modules: + module_name = new_module_name + + modules_to_reload = {} + module = sys.modules.get(module_name) + if module is not None: + modules_to_reload[id(module)] = (module, module_name) + + if filename: + filename = pydevd_file_utils.normcase(filename) + for module_name, module in sys.modules.copy().items(): + f = getattr_checked(module, "__file__") + if f is not None: + if f.endswith((".pyc", ".pyo")): + f = f[:-1] + + if pydevd_file_utils.normcase(f) == filename: + modules_to_reload[id(module)] = (module, module_name) + + if not modules_to_reload: + if filename and module_name: + _send_io_message( + dbg, + "code reload: Unable to find module %s to reload for path: %s\n" + % (module_name, filename), + ) + elif filename: + _send_io_message( + dbg, + "code reload: Unable to find module to reload for path: %s\n" + % (filename,), + ) + elif module_name: + _send_io_message( + dbg, + "code reload: Unable to find module to reload: %s\n" + % (module_name,), + ) + + else: + # Too much info... + # _send_io_message(dbg, 'code reload: This usually means you are trying to reload the __main__ module (which cannot be reloaded).\n') + for module, module_name in modules_to_reload.values(): + _send_io_message( + dbg, + 'code reload: Start reloading module: "' + module_name + '" ... \n', + ) + found_module_to_reload = True + + if pydevd_reload.xreload(module): + _send_io_message(dbg, "code reload: reload finished\n") + else: + _send_io_message( + dbg, + "code reload: reload finished without applying any change\n", + ) + + cmd = dbg.cmd_factory.make_reloaded_code_message(seq, found_module_to_reload) + dbg.writer.add_command(cmd) + except: + pydev_log.exception("Error reloading code") + + +class InternalGetThreadStack(InternalThreadCommand): + """ + This command will either wait for a given thread to be paused to get its stack or will provide + it anyways after a timeout (in which case the stack will be gotten but local variables won't + be available and it'll not be possible to interact with the frame as it's not actually + stopped in a breakpoint). + """ + + def __init__( + self, + seq, + thread_id, + py_db, + set_additional_thread_info, + fmt, + timeout=0.5, + start_frame=0, + levels=0, + ): + InternalThreadCommand.__init__(self, thread_id) + self._py_db = weakref.ref(py_db) + self._timeout = time.time() + timeout + self.seq = seq + self._cmd = None + self._fmt = fmt + self._start_frame = start_frame + self._levels = levels + + # Note: receives set_additional_thread_info to avoid a circular import + # in this module. + self._set_additional_thread_info = set_additional_thread_info + + @overrides(InternalThreadCommand.can_be_executed_by) + def can_be_executed_by(self, _thread_id): + timed_out = time.time() >= self._timeout + + py_db = self._py_db() + t = pydevd_find_thread_by_id(self.thread_id) + frame = None + if t and not getattr(t, "pydev_do_not_trace", None): + additional_info = self._set_additional_thread_info(t) + frame = additional_info.get_topmost_frame(t) + try: + self._cmd = py_db.cmd_factory.make_get_thread_stack_message( + py_db, + self.seq, + self.thread_id, + frame, + self._fmt, + must_be_suspended=not timed_out, + start_frame=self._start_frame, + levels=self._levels, + ) + finally: + frame = None + t = None + + return self._cmd is not None or timed_out + + @overrides(InternalThreadCommand.do_it) + def do_it(self, dbg): + if self._cmd is not None: + dbg.writer.add_command(self._cmd) + self._cmd = None + + +def internal_step_in_thread(py_db, thread_id, cmd_id, set_additional_thread_info): + thread_to_step = pydevd_find_thread_by_id(thread_id) + if thread_to_step is not None: + info = set_additional_thread_info(thread_to_step) + info.pydev_original_step_cmd = cmd_id + info.pydev_step_cmd = cmd_id + info.pydev_step_stop = None + info.pydev_state = STATE_RUN + info.update_stepping_info() + + if py_db.stepping_resumes_all_threads: + resume_threads("*", except_thread=thread_to_step) + + +def internal_smart_step_into( + py_db, thread_id, offset, child_offset, set_additional_thread_info +): + thread_to_step = pydevd_find_thread_by_id(thread_id) + if thread_to_step is not None: + info = set_additional_thread_info(thread_to_step) + info.pydev_original_step_cmd = CMD_SMART_STEP_INTO + info.pydev_step_cmd = CMD_SMART_STEP_INTO + info.pydev_step_stop = None + info.pydev_smart_parent_offset = int(offset) + info.pydev_smart_child_offset = int(child_offset) + info.pydev_state = STATE_RUN + info.update_stepping_info() + + if py_db.stepping_resumes_all_threads: + resume_threads("*", except_thread=thread_to_step) + + +class InternalSetNextStatementThread(InternalThreadCommand): + def __init__(self, thread_id, cmd_id, line, func_name, seq=0): + """ + cmd_id may actually be one of: + + CMD_RUN_TO_LINE + CMD_SET_NEXT_STATEMENT + CMD_SMART_STEP_INTO + """ + self.thread_id = thread_id + self.cmd_id = cmd_id + self.line = line + self.seq = seq + + self.func_name = func_name + + def do_it(self, dbg): + t = pydevd_find_thread_by_id(self.thread_id) + if t is not None: + info = t.additional_info + info.pydev_original_step_cmd = self.cmd_id + info.pydev_step_cmd = self.cmd_id + info.pydev_step_stop = None + info.pydev_next_line = int(self.line) + info.pydev_func_name = self.func_name + info.pydev_message = str(self.seq) + info.pydev_smart_parent_offset = -1 + info.pydev_smart_child_offset = -1 + info.pydev_state = STATE_RUN + info.update_stepping_info() + + +@silence_warnings_decorator +def internal_get_variable_json(py_db, request): + """ + :param VariablesRequest request: + """ + arguments = request.arguments # : :type arguments: VariablesArguments + variables_reference = arguments.variablesReference + scope = None + if isinstance_checked(variables_reference, ScopeRequest): + scope = variables_reference + variables_reference = variables_reference.variable_reference + + fmt = arguments.format + if hasattr(fmt, "to_dict"): + fmt = fmt.to_dict() + + variables = [] + try: + try: + variable = py_db.suspended_frames_manager.get_variable(variables_reference) + except KeyError: + pass + else: + for child_var in variable.get_children_variables(fmt=fmt, scope=scope): + variables.append(child_var.get_var_data(fmt=fmt)) + except: + try: + exc, exc_type, tb = sys.exc_info() + err = "".join(traceback.format_exception(exc, exc_type, tb)) + variables = [ + { + "name": "", + "value": err, + "type": "", + "variablesReference": 0, + } + ] + except: + err = "" + pydev_log.exception(err) + variables = [] + + body = VariablesResponseBody(variables) + variables_response = pydevd_base_schema.build_response( + request, kwargs={"body": body} + ) + py_db.writer.add_command( + NetCommand(CMD_RETURN, 0, variables_response, is_json=True) + ) + + +class InternalGetVariable(InternalThreadCommand): + """gets the value of a variable""" + + def __init__(self, seq, thread_id, frame_id, scope, attrs): + self.sequence = seq + self.thread_id = thread_id + self.frame_id = frame_id + self.scope = scope + self.attributes = attrs + + @silence_warnings_decorator + def do_it(self, dbg): + """Converts request into python variable""" + try: + xml = StringIO() + xml.write("") + type_name, val_dict = pydevd_vars.resolve_compound_variable_fields( + dbg, self.thread_id, self.frame_id, self.scope, self.attributes + ) + if val_dict is None: + val_dict = {} + + # assume properly ordered if resolver returns 'OrderedDict' + # check type as string to support OrderedDict backport for older Python + keys = list(val_dict) + if not ( + type_name == "OrderedDict" + or val_dict.__class__.__name__ == "OrderedDict" + or IS_PY36_OR_GREATER + ): + keys = sorted(keys, key=compare_object_attrs_key) + + timer = Timer() + for k in keys: + val = val_dict[k] + evaluate_full_value = pydevd_xml.should_evaluate_full_value(val) + xml.write( + pydevd_xml.var_to_xml( + val, k, evaluate_full_value=evaluate_full_value + ) + ) + timer.report_if_compute_repr_attr_slow(self.attributes, k, type(val)) + + xml.write("") + cmd = dbg.cmd_factory.make_get_variable_message( + self.sequence, xml.getvalue() + ) + xml.close() + dbg.writer.add_command(cmd) + except Exception: + cmd = dbg.cmd_factory.make_error_message( + self.sequence, + "Error resolving variables %s" % (get_exception_traceback_str(),), + ) + dbg.writer.add_command(cmd) + + +class InternalGetArray(InternalThreadCommand): + def __init__( + self, + seq, + roffset, + coffset, + rows, + cols, + format, + thread_id, + frame_id, + scope, + attrs, + ): + self.sequence = seq + self.thread_id = thread_id + self.frame_id = frame_id + self.scope = scope + self.name = attrs.split("\t")[-1] + self.attrs = attrs + self.roffset = int(roffset) + self.coffset = int(coffset) + self.rows = int(rows) + self.cols = int(cols) + self.format = format + + def do_it(self, dbg): + try: + frame = dbg.find_frame(self.thread_id, self.frame_id) + var = pydevd_vars.eval_in_context( + self.name, frame.f_globals, frame.f_locals, py_db=dbg + ) + xml = pydevd_vars.table_like_struct_to_xml( + var, + self.name, + self.roffset, + self.coffset, + self.rows, + self.cols, + self.format, + ) + cmd = dbg.cmd_factory.make_get_array_message(self.sequence, xml) + dbg.writer.add_command(cmd) + except: + cmd = dbg.cmd_factory.make_error_message( + self.sequence, "Error resolving array: " + get_exception_traceback_str() + ) + dbg.writer.add_command(cmd) + + +def internal_change_variable(dbg, seq, thread_id, frame_id, scope, attr, value): + """Changes the value of a variable""" + try: + frame = dbg.find_frame(thread_id, frame_id) + if frame is not None: + result = pydevd_vars.change_attr_expression(frame, attr, value, dbg) + else: + result = None + xml = "" + xml += pydevd_xml.var_to_xml(result, "") + xml += "" + cmd = dbg.cmd_factory.make_variable_changed_message(seq, xml) + dbg.writer.add_command(cmd) + except Exception: + cmd = dbg.cmd_factory.make_error_message( + seq, + "Error changing variable attr:%s expression:%s traceback:%s" + % (attr, value, get_exception_traceback_str()), + ) + dbg.writer.add_command(cmd) + + +def internal_change_variable_json(py_db, request): + """ + The pydevd_vars.change_attr_expression(thread_id, frame_id, attr, value, dbg) can only + deal with changing at a frame level, so, currently changing the contents of something + in a different scope is currently not supported. + + :param SetVariableRequest request: + """ + # : :type arguments: SetVariableArguments + arguments = request.arguments + variables_reference = arguments.variablesReference + scope = None + if isinstance_checked(variables_reference, ScopeRequest): + scope = variables_reference + variables_reference = variables_reference.variable_reference + + fmt = arguments.format + if hasattr(fmt, "to_dict"): + fmt = fmt.to_dict() + + try: + variable = py_db.suspended_frames_manager.get_variable(variables_reference) + except KeyError: + variable = None + + if variable is None: + _write_variable_response( + py_db, + request, + value="", + success=False, + message="Unable to find variable container to change: %s." + % (variables_reference,), + ) + return + + child_var = variable.change_variable( + arguments.name, arguments.value, py_db, fmt=fmt + ) + + if child_var is None: + _write_variable_response( + py_db, + request, + value="", + success=False, + message="Unable to change: %s." % (arguments.name,), + ) + return + + var_data = child_var.get_var_data(fmt=fmt) + body = SetVariableResponseBody( + value=var_data["value"], + type=var_data["type"], + variablesReference=var_data.get("variablesReference"), + namedVariables=var_data.get("namedVariables"), + indexedVariables=var_data.get("indexedVariables"), + ) + variables_response = pydevd_base_schema.build_response( + request, kwargs={"body": body} + ) + py_db.writer.add_command( + NetCommand(CMD_RETURN, 0, variables_response, is_json=True) + ) + + +def _write_variable_response(py_db, request, value, success, message): + body = SetVariableResponseBody("") + variables_response = pydevd_base_schema.build_response( + request, kwargs={"body": body, "success": False, "message": message} + ) + cmd = NetCommand(CMD_RETURN, 0, variables_response, is_json=True) + py_db.writer.add_command(cmd) + + +@silence_warnings_decorator +def internal_get_frame(dbg, seq, thread_id, frame_id): + """Converts request into python variable""" + try: + frame = dbg.find_frame(thread_id, frame_id) + if frame is not None: + hidden_ns = pydevconsole.get_ipython_hidden_vars() + xml = "" + xml += pydevd_xml.frame_vars_to_xml(frame.f_locals, hidden_ns) + del frame + xml += "" + cmd = dbg.cmd_factory.make_get_frame_message(seq, xml) + dbg.writer.add_command(cmd) + else: + # pydevd_vars.dump_frames(thread_id) + # don't print this error: frame not found: means that the client is not synchronized (but that's ok) + cmd = dbg.cmd_factory.make_error_message( + seq, "Frame not found: %s from thread: %s" % (frame_id, thread_id) + ) + dbg.writer.add_command(cmd) + except: + cmd = dbg.cmd_factory.make_error_message( + seq, "Error resolving frame: %s from thread: %s" % (frame_id, thread_id) + ) + dbg.writer.add_command(cmd) + + +def internal_get_smart_step_into_variants( + dbg, seq, thread_id, frame_id, start_line, end_line, set_additional_thread_info +): + try: + thread = pydevd_find_thread_by_id(thread_id) + frame = dbg.find_frame(thread_id, frame_id) + + if thread is None or frame is None: + cmd = dbg.cmd_factory.make_error_message( + seq, "Frame not found: %s from thread: %s" % (frame_id, thread_id) + ) + dbg.writer.add_command(cmd) + return + + if pydevd_bytecode_utils is None: + variants = [] + else: + variants = pydevd_bytecode_utils.calculate_smart_step_into_variants( + frame, int(start_line), int(end_line) + ) + + info = set_additional_thread_info(thread) + + # Store the last request (may be used afterwards when stepping). + info.pydev_smart_step_into_variants = tuple(variants) + xml = "" + + for variant in variants: + if variant.children_variants: + for child_variant in variant.children_variants: + # If there are child variants, the current one is just an intermediary, so, + # just create variants for the child (notifying properly about the parent too). + xml += ( + '' + % ( + quote(child_variant.name), + str(child_variant.is_visited).lower(), + child_variant.line, + variant.offset, + child_variant.offset, + child_variant.call_order, + variant.endlineno, + variant.startcol, + variant.endcol, + ) + ) + else: + xml += ( + '' + % ( + quote(variant.name), + str(variant.is_visited).lower(), + variant.line, + variant.offset, + variant.call_order, + variant.endlineno, + variant.startcol, + variant.endcol, + ) + ) + + xml += "" + cmd = NetCommand(CMD_GET_SMART_STEP_INTO_VARIANTS, seq, xml) + dbg.writer.add_command(cmd) + except: + # Error is expected (if `dis` module cannot be used -- i.e.: Jython). + pydev_log.exception("Error calculating Smart Step Into Variants.") + cmd = dbg.cmd_factory.make_error_message( + seq, + "Error getting smart step into variants for frame: %s from thread: %s" + % (frame_id, thread_id), + ) + dbg.writer.add_command(cmd) + + +def internal_get_step_in_targets_json( + dbg, seq, thread_id, frame_id, request, set_additional_thread_info +): + try: + thread = pydevd_find_thread_by_id(thread_id) + frame = dbg.find_frame(thread_id, frame_id) + + if thread is None or frame is None: + body = StepInTargetsResponseBody([]) + variables_response = pydevd_base_schema.build_response( + request, + kwargs={ + "body": body, + "success": False, + "message": "Thread to get step in targets seems to have resumed already.", + }, + ) + cmd = NetCommand(CMD_RETURN, 0, variables_response, is_json=True) + dbg.writer.add_command(cmd) + return + + start_line = 0 + end_line = 99999999 + if pydevd_bytecode_utils is None: + variants = [] + else: + variants = pydevd_bytecode_utils.calculate_smart_step_into_variants( + frame, start_line, end_line + ) + + info = set_additional_thread_info(thread) + targets = [] + counter = itertools.count(0) + target_id_to_variant = {} + for variant in variants: + if not variant.is_visited: + if variant.children_variants: + for child_variant in variant.children_variants: + target_id = next(counter) + + if child_variant.call_order > 1: + targets.append( + StepInTarget( + id=target_id, + label="%s (call %s)" + % (child_variant.name, child_variant.call_order), + ) + ) + else: + targets.append( + StepInTarget(id=target_id, label=child_variant.name) + ) + target_id_to_variant[target_id] = child_variant + + if len(targets) >= 15: # Show at most 15 targets. + break + else: + target_id = next(counter) + if variant.call_order > 1: + targets.append( + StepInTarget( + id=target_id, + label="%s (call %s)" + % (variant.name, variant.call_order), + ) + ) + else: + targets.append(StepInTarget(id=target_id, label=variant.name)) + target_id_to_variant[target_id] = variant + + if len(targets) >= 15: # Show at most 15 targets. + break + + # Store the last request (may be used afterwards when stepping). + info.pydev_smart_step_into_variants = tuple(variants) + info.target_id_to_smart_step_into_variant = target_id_to_variant + + body = StepInTargetsResponseBody(targets=targets) + response = pydevd_base_schema.build_response(request, kwargs={"body": body}) + cmd = NetCommand(CMD_RETURN, 0, response, is_json=True) + dbg.writer.add_command(cmd) + except Exception as e: + # Error is expected (if `dis` module cannot be used -- i.e.: Jython). + pydev_log.exception("Error calculating Smart Step Into Variants.") + body = StepInTargetsResponseBody([]) + variables_response = pydevd_base_schema.build_response( + request, kwargs={"body": body, "success": False, "message": str(e)} + ) + cmd = NetCommand(CMD_RETURN, 0, variables_response, is_json=True) + dbg.writer.add_command(cmd) + + +def internal_get_next_statement_targets(dbg, seq, thread_id, frame_id): + """Gets the valid line numbers for use with set next statement""" + try: + frame = dbg.find_frame(thread_id, frame_id) + if frame is not None: + code = frame.f_code + xml = "" + try: + linestarts = dis.findlinestarts(code) + except: + # i.e.: jython doesn't provide co_lnotab, so, we can only keep at the current line. + xml += "%d" % (frame.f_lineno,) + else: + for _, line in linestarts: + if line is not None: + xml += "%d" % (line,) + del frame + xml += "" + cmd = dbg.cmd_factory.make_get_next_statement_targets_message(seq, xml) + dbg.writer.add_command(cmd) + else: + cmd = dbg.cmd_factory.make_error_message( + seq, "Frame not found: %s from thread: %s" % (frame_id, thread_id) + ) + dbg.writer.add_command(cmd) + except: + cmd = dbg.cmd_factory.make_error_message( + seq, "Error resolving frame: %s from thread: %s" % (frame_id, thread_id) + ) + dbg.writer.add_command(cmd) + + +def _evaluate_response(py_db, request, result, error_message=""): + is_error = isinstance(result, ExceptionOnEvaluate) + if is_error: + result = result.result + if not error_message: + body = pydevd_schema.EvaluateResponseBody(result=result, variablesReference=0) + variables_response = pydevd_base_schema.build_response( + request, kwargs={"body": body} + ) + py_db.writer.add_command( + NetCommand(CMD_RETURN, 0, variables_response, is_json=True) + ) + else: + body = pydevd_schema.EvaluateResponseBody(result=result, variablesReference=0) + variables_response = pydevd_base_schema.build_response( + request, kwargs={"body": body, "success": False, "message": error_message} + ) + py_db.writer.add_command( + NetCommand(CMD_RETURN, 0, variables_response, is_json=True) + ) + + +_global_frame = None + + +def internal_evaluate_expression_json(py_db, request, thread_id): + """ + :param EvaluateRequest request: + """ + global _global_frame + # : :type arguments: EvaluateArguments + + arguments = request.arguments + expression = arguments.expression + frame_id = arguments.frameId + context = arguments.context + fmt = arguments.format + if hasattr(fmt, "to_dict"): + fmt = fmt.to_dict() + + ctx = NULL + if context == "repl": + if not py_db.is_output_redirected: + ctx = pydevd_io.redirect_stream_to_pydb_io_messages_context() + else: + # If we're not in a repl (watch, hover, ...) don't show warnings. + ctx = filter_all_warnings() + + with ctx: + try_exec = False + if frame_id is None: + if _global_frame is None: + # Lazily create a frame to be used for evaluation with no frame id. + + def __create_frame(): + yield sys._getframe() + + _global_frame = next(__create_frame()) + + frame = _global_frame + try_exec = True # Always exec in this case + eval_result = None + else: + frame = py_db.find_frame(thread_id, frame_id) + + eval_result = pydevd_vars.evaluate_expression( + py_db, frame, expression, is_exec=False + ) + is_error = isinstance_checked(eval_result, ExceptionOnEvaluate) + if is_error: + if ( + context == "hover" + ): # In a hover it doesn't make sense to do an exec. + _evaluate_response( + py_db, + request, + result="", + error_message="Exception occurred during evaluation.", + ) + return + elif context == "watch": + # If it's a watch, don't show it as an exception object, rather, format + # it and show it as a string (with success=False). + msg = "%s: %s" % ( + eval_result.result.__class__.__name__, + eval_result.result, + ) + _evaluate_response(py_db, request, result=msg, error_message=msg) + return + else: + # We only try the exec if the failure we had was due to not being able + # to evaluate the expression. + try: + pydevd_vars.compile_as_eval(expression) + except Exception: + try_exec = context == "repl" + else: + try_exec = False + if context == "repl": + # In the repl we should show the exception to the user. + _evaluate_response_return_exception( + py_db, + request, + eval_result.etype, + eval_result.result, + eval_result.tb, + ) + return + + if try_exec: + try: + pydevd_vars.evaluate_expression(py_db, frame, expression, is_exec=True) + except (Exception, KeyboardInterrupt): + _evaluate_response_return_exception(py_db, request, *sys.exc_info()) + return + # No result on exec. + _evaluate_response(py_db, request, result="") + return + + # Ok, we have the result (could be an error), let's put it into the saved variables. + frame_tracker = py_db.suspended_frames_manager.get_frame_tracker(thread_id) + if frame_tracker is None: + # This is not really expected. + _evaluate_response( + py_db, + request, + result="", + error_message="Thread id: %s is not current thread id." % (thread_id,), + ) + return + + safe_repr_custom_attrs = {} + if context == "clipboard": + safe_repr_custom_attrs = dict( + maxstring_outer=2**64, + maxstring_inner=2**64, + maxother_outer=2**64, + maxother_inner=2**64, + ) + + if context == "repl" and eval_result is None: + # We don't want "None" to appear when typing in the repl. + body = pydevd_schema.EvaluateResponseBody( + result="", + variablesReference=0, + ) + + else: + variable = frame_tracker.obtain_as_variable( + expression, eval_result, frame=frame + ) + var_data = variable.get_var_data( + fmt=fmt, context=context, **safe_repr_custom_attrs + ) + + body = pydevd_schema.EvaluateResponseBody( + result=var_data["value"], + variablesReference=var_data.get("variablesReference", 0), + type=var_data.get("type"), + presentationHint=var_data.get("presentationHint"), + namedVariables=var_data.get("namedVariables"), + indexedVariables=var_data.get("indexedVariables"), + ) + variables_response = pydevd_base_schema.build_response( + request, kwargs={"body": body} + ) + py_db.writer.add_command( + NetCommand(CMD_RETURN, 0, variables_response, is_json=True) + ) + + +def _evaluate_response_return_exception(py_db, request, exc_type, exc, initial_tb): + try: + tb = initial_tb + + # Show the traceback without pydevd frames. + temp_tb = tb + while temp_tb: + if py_db.get_file_type(temp_tb.tb_frame) == PYDEV_FILE: + tb = temp_tb.tb_next + temp_tb = temp_tb.tb_next + + if tb is None: + tb = initial_tb + err = "".join(traceback.format_exception(exc_type, exc, tb)) + + # Make sure we don't keep references to them. + exc = None + exc_type = None + tb = None + temp_tb = None + initial_tb = None + except: + err = "" + pydev_log.exception(err) + + # Currently there is an issue in VSC where returning success=false for an + # eval request, in repl context, VSC does not show the error response in + # the debug console. So return the error message in result as well. + _evaluate_response(py_db, request, result=err, error_message=err) + + +@silence_warnings_decorator +def internal_evaluate_expression( + dbg, + seq, + thread_id, + frame_id, + expression, + is_exec, + trim_if_too_big, + attr_to_set_result, +): + """Gets the value of a variable""" + try: + frame = dbg.find_frame(thread_id, frame_id) + if frame is not None: + result = pydevd_vars.evaluate_expression(dbg, frame, expression, is_exec) + if attr_to_set_result != "": + pydevd_vars.change_attr_expression( + frame, attr_to_set_result, expression, dbg, result + ) + else: + result = None + + xml = "" + xml += pydevd_xml.var_to_xml(result, expression, trim_if_too_big) + xml += "" + cmd = dbg.cmd_factory.make_evaluate_expression_message(seq, xml) + dbg.writer.add_command(cmd) + except: + exc = get_exception_traceback_str() + cmd = dbg.cmd_factory.make_error_message( + seq, "Error evaluating expression " + exc + ) + dbg.writer.add_command(cmd) + + +def _set_expression_response(py_db, request, error_message): + body = pydevd_schema.SetExpressionResponseBody(value="") + variables_response = pydevd_base_schema.build_response( + request, kwargs={"body": body, "success": False, "message": error_message} + ) + py_db.writer.add_command( + NetCommand(CMD_RETURN, 0, variables_response, is_json=True) + ) + + +def internal_set_expression_json(py_db, request, thread_id): + # : :type arguments: SetExpressionArguments + + arguments = request.arguments + expression = arguments.expression + frame_id = arguments.frameId + value = arguments.value + fmt = arguments.format + if hasattr(fmt, "to_dict"): + fmt = fmt.to_dict() + + frame = py_db.find_frame(thread_id, frame_id) + exec_code = "%s = (%s)" % (expression, value) + try: + pydevd_vars.evaluate_expression(py_db, frame, exec_code, is_exec=True) + except (Exception, KeyboardInterrupt): + _set_expression_response( + py_db, request, error_message="Error executing: %s" % (exec_code,) + ) + return + + # Ok, we have the result (could be an error), let's put it into the saved variables. + frame_tracker = py_db.suspended_frames_manager.get_frame_tracker(thread_id) + if frame_tracker is None: + # This is not really expected. + _set_expression_response( + py_db, + request, + error_message="Thread id: %s is not current thread id." % (thread_id,), + ) + return + + # Now that the exec is done, get the actual value changed to return. + result = pydevd_vars.evaluate_expression(py_db, frame, expression, is_exec=False) + variable = frame_tracker.obtain_as_variable(expression, result, frame=frame) + var_data = variable.get_var_data(fmt=fmt) + + body = pydevd_schema.SetExpressionResponseBody( + value=var_data["value"], + variablesReference=var_data.get("variablesReference", 0), + type=var_data.get("type"), + presentationHint=var_data.get("presentationHint"), + namedVariables=var_data.get("namedVariables"), + indexedVariables=var_data.get("indexedVariables"), + ) + variables_response = pydevd_base_schema.build_response( + request, kwargs={"body": body} + ) + py_db.writer.add_command( + NetCommand(CMD_RETURN, 0, variables_response, is_json=True) + ) + + +def internal_get_completions( + dbg, seq, thread_id, frame_id, act_tok, line=-1, column=-1 +): + """ + Note that if the column is >= 0, the act_tok is considered text and the actual + activation token/qualifier is computed in this command. + """ + try: + remove_path = None + try: + qualifier = "" + if column >= 0: + token_and_qualifier = extract_token_and_qualifier(act_tok, line, column) + act_tok = token_and_qualifier[0] + if act_tok: + act_tok += "." + qualifier = token_and_qualifier[1] + + frame = dbg.find_frame(thread_id, frame_id) + if frame is not None: + completions = _pydev_completer.generate_completions(frame, act_tok) + + # Note that qualifier and start are only actually valid for the + # Debug Adapter Protocol (for the line-based protocol, the IDE + # is required to filter the completions returned). + cmd = dbg.cmd_factory.make_get_completions_message( + seq, completions, qualifier, start=column - len(qualifier) + ) + dbg.writer.add_command(cmd) + else: + cmd = dbg.cmd_factory.make_error_message( + seq, + "internal_get_completions: Frame not found: %s from thread: %s" + % (frame_id, thread_id), + ) + dbg.writer.add_command(cmd) + + finally: + if remove_path is not None: + sys.path.remove(remove_path) + + except: + exc = get_exception_traceback_str() + sys.stderr.write("%s\n" % (exc,)) + cmd = dbg.cmd_factory.make_error_message( + seq, "Error evaluating expression " + exc + ) + dbg.writer.add_command(cmd) + + +def internal_get_description(dbg, seq, thread_id, frame_id, expression): + """Fetch the variable description stub from the debug console""" + try: + frame = dbg.find_frame(thread_id, frame_id) + description = pydevd_console.get_description( + frame, thread_id, frame_id, expression + ) + description = pydevd_xml.make_valid_xml_value(quote(description, "/>_= \t")) + description_xml = '' % description + cmd = dbg.cmd_factory.make_get_description_message(seq, description_xml) + dbg.writer.add_command(cmd) + except: + exc = get_exception_traceback_str() + cmd = dbg.cmd_factory.make_error_message( + seq, "Error in fetching description" + exc + ) + dbg.writer.add_command(cmd) + + +def build_exception_info_response( + dbg, + thread_id, + thread, + request_seq, + set_additional_thread_info, + iter_visible_frames_info, + max_frames, +): + """ + :return ExceptionInfoResponse + """ + additional_info = set_additional_thread_info(thread) + topmost_frame = additional_info.get_topmost_frame(thread) + + current_paused_frame_name = "" + + source_path = "" # This is an extra bit of data used by Visual Studio + stack_str_lst = [] + name = None + description = None + + if topmost_frame is not None: + try: + try: + frames_list = dbg.suspended_frames_manager.get_frames_list(thread_id) + while frames_list is not None and len(frames_list): + frames = [] + + frame = None + + if not name: + exc_type = frames_list.exc_type + if exc_type is not None: + try: + name = exc_type.__qualname__ + except: + try: + name = exc_type.__name__ + except: + try: + name = str(exc_type) + except: + pass + + if not description: + exc_desc = frames_list.exc_desc + if exc_desc is not None: + try: + description = str(exc_desc) + except: + pass + + for ( + frame_id, + frame, + method_name, + original_filename, + filename_in_utf8, + lineno, + _applied_mapping, + show_as_current_frame, + line_col_info, + ) in iter_visible_frames_info(dbg, frames_list): + line_text = linecache.getline(original_filename, lineno) + + # Never filter out plugin frames! + if not getattr(frame, "IS_PLUGIN_FRAME", False): + if dbg.is_files_filter_enabled and dbg.apply_files_filter( + frame, original_filename, False + ): + continue + + if show_as_current_frame: + current_paused_frame_name = method_name + method_name += " (Current frame)" + frames.append( + ( + filename_in_utf8, + lineno, + method_name, + line_text, + line_col_info, + ) + ) + + if not source_path and frames: + source_path = frames[0][0] + + if IS_PY311_OR_GREATER: + stack_summary = traceback.StackSummary() + for ( + filename_in_utf8, + lineno, + method_name, + line_text, + line_col_info, + ) in frames[-max_frames:]: + frame_summary = traceback.FrameSummary( + filename_in_utf8, lineno, method_name, line=line_text + ) + if line_col_info is not None: + frame_summary.end_lineno = line_col_info.end_lineno + frame_summary.colno = line_col_info.colno + frame_summary.end_colno = line_col_info.end_colno + stack_summary.append(frame_summary) + + stack_str = "".join(stack_summary.format()) + + else: + # Note: remove col info (just used in 3.11). + stack_str = "".join( + traceback.format_list(x[:-1] for x in frames[-max_frames:]) + ) + + try: + stype = frames_list.exc_type.__qualname__ + smod = frames_list.exc_type.__module__ + if smod not in ("__main__", "builtins"): + if not isinstance(smod, str): + smod = "" + stype = smod + "." + stype + except Exception: + stype = "" + pydev_log.exception("Error getting exception type.") + + stack_str += "%s: %s\n" % (stype, frames_list.exc_desc) + stack_str += frames_list.exc_context_msg + stack_str_lst.append(stack_str) + + frames_list = frames_list.chained_frames_list + if frames_list is None or not frames_list: + break + + except: + pydev_log.exception("Error on build_exception_info_response.") + finally: + topmost_frame = None + full_stack_str = "".join(reversed(stack_str_lst)) + + if not name: + name = "exception: type unknown" + if not description: + description = "exception: no description" + + if current_paused_frame_name: + name += ( + " (note: full exception trace is shown but execution is paused at: %s)" + % (current_paused_frame_name,) + ) + + if thread.stop_reason == CMD_STEP_CAUGHT_EXCEPTION: + break_mode = pydevd_schema.ExceptionBreakMode.ALWAYS + else: + break_mode = pydevd_schema.ExceptionBreakMode.UNHANDLED + + response = pydevd_schema.ExceptionInfoResponse( + request_seq=request_seq, + success=True, + command="exceptionInfo", + body=pydevd_schema.ExceptionInfoResponseBody( + exceptionId=name, + description=description, + breakMode=break_mode, + details=pydevd_schema.ExceptionDetails( + message=description, + typeName=name, + stackTrace=full_stack_str, + source=source_path, + # Note: ExceptionDetails actually accepts an 'innerException', but + # when passing it, VSCode is not showing the stack trace at all. + ), + ), + ) + return response + + +def internal_get_exception_details_json( + dbg, + request, + thread_id, + thread, + max_frames, + set_additional_thread_info=None, + iter_visible_frames_info=None, +): + """Fetch exception details""" + try: + response = build_exception_info_response( + dbg, + thread_id, + thread, + request.seq, + set_additional_thread_info, + iter_visible_frames_info, + max_frames, + ) + except: + exc = get_exception_traceback_str() + response = pydevd_base_schema.build_response( + request, kwargs={"success": False, "message": exc, "body": {}} + ) + dbg.writer.add_command(NetCommand(CMD_RETURN, 0, response, is_json=True)) + + +class InternalGetBreakpointException(InternalThreadCommand): + """Send details of exception raised while evaluating conditional breakpoint""" + + def __init__(self, thread_id, exc_type, stacktrace): + self.sequence = 0 + self.thread_id = thread_id + self.stacktrace = stacktrace + self.exc_type = exc_type + + def do_it(self, dbg): + try: + callstack = "" + + makeValid = pydevd_xml.make_valid_xml_value + + for filename, line, methodname, methodobj in self.stacktrace: + if not filesystem_encoding_is_utf8 and hasattr(filename, "decode"): + # filename is a byte string encoded using the file system encoding + # convert it to utf8 + filename = filename.decode(file_system_encoding).encode("utf-8") + + callstack += ( + '' + % ( + self.thread_id, + makeValid(filename), + line, + makeValid(methodname), + makeValid(methodobj), + ) + ) + callstack += "" + + cmd = dbg.cmd_factory.make_send_breakpoint_exception_message( + self.sequence, self.exc_type + "\t" + callstack + ) + dbg.writer.add_command(cmd) + except: + exc = get_exception_traceback_str() + sys.stderr.write("%s\n" % (exc,)) + cmd = dbg.cmd_factory.make_error_message( + self.sequence, "Error Sending Exception: " + exc + ) + dbg.writer.add_command(cmd) + + +class InternalSendCurrExceptionTrace(InternalThreadCommand): + """Send details of the exception that was caught and where we've broken in.""" + + def __init__(self, thread_id, arg, curr_frame_id): + """ + :param arg: exception type, description, traceback object + """ + self.sequence = 0 + self.thread_id = thread_id + self.curr_frame_id = curr_frame_id + self.arg = arg + + def do_it(self, dbg): + try: + cmd = dbg.cmd_factory.make_send_curr_exception_trace_message( + dbg, self.sequence, self.thread_id, self.curr_frame_id, *self.arg + ) + del self.arg + dbg.writer.add_command(cmd) + except: + exc = get_exception_traceback_str() + sys.stderr.write("%s\n" % (exc,)) + cmd = dbg.cmd_factory.make_error_message( + self.sequence, "Error Sending Current Exception Trace: " + exc + ) + dbg.writer.add_command(cmd) + + +class InternalSendCurrExceptionTraceProceeded(InternalThreadCommand): + """Send details of the exception that was caught and where we've broken in.""" + + def __init__(self, thread_id): + self.sequence = 0 + self.thread_id = thread_id + + def do_it(self, dbg): + try: + cmd = dbg.cmd_factory.make_send_curr_exception_trace_proceeded_message( + self.sequence, self.thread_id + ) + dbg.writer.add_command(cmd) + except: + exc = get_exception_traceback_str() + sys.stderr.write("%s\n" % (exc,)) + cmd = dbg.cmd_factory.make_error_message( + self.sequence, "Error Sending Current Exception Trace Proceeded: " + exc + ) + dbg.writer.add_command(cmd) + + +class InternalEvaluateConsoleExpression(InternalThreadCommand): + """Execute the given command in the debug console""" + + def __init__(self, seq, thread_id, frame_id, line, buffer_output=True): + self.sequence = seq + self.thread_id = thread_id + self.frame_id = frame_id + self.line = line + self.buffer_output = buffer_output + + def do_it(self, dbg): + """Create an XML for console output, error and more (true/false) + + + + true/false + + """ + try: + frame = dbg.find_frame(self.thread_id, self.frame_id) + if frame is not None: + console_message = pydevd_console.execute_console_command( + frame, self.thread_id, self.frame_id, self.line, self.buffer_output + ) + + cmd = dbg.cmd_factory.make_send_console_message( + self.sequence, console_message.to_xml() + ) + else: + from _pydevd_bundle.pydevd_console import ConsoleMessage + + console_message = ConsoleMessage() + console_message.add_console_message( + pydevd_console.CONSOLE_ERROR, + "Select the valid frame in the debug view (thread: %s, frame: %s invalid)" + % (self.thread_id, self.frame_id), + ) + cmd = dbg.cmd_factory.make_error_message( + self.sequence, console_message.to_xml() + ) + except: + exc = get_exception_traceback_str() + cmd = dbg.cmd_factory.make_error_message( + self.sequence, "Error evaluating expression " + exc + ) + dbg.writer.add_command(cmd) + + +class InternalRunCustomOperation(InternalThreadCommand): + """Run a custom command on an expression""" + + def __init__( + self, + seq, + thread_id, + frame_id, + scope, + attrs, + style, + encoded_code_or_file, + fnname, + ): + self.sequence = seq + self.thread_id = thread_id + self.frame_id = frame_id + self.scope = scope + self.attrs = attrs + self.style = style + self.code_or_file = unquote_plus(encoded_code_or_file) + self.fnname = fnname + + def do_it(self, dbg): + try: + res = pydevd_vars.custom_operation( + dbg, + self.thread_id, + self.frame_id, + self.scope, + self.attrs, + self.style, + self.code_or_file, + self.fnname, + ) + resEncoded = quote_plus(res) + cmd = dbg.cmd_factory.make_custom_operation_message( + self.sequence, resEncoded + ) + dbg.writer.add_command(cmd) + except: + exc = get_exception_traceback_str() + cmd = dbg.cmd_factory.make_error_message( + self.sequence, "Error in running custom operation" + exc + ) + dbg.writer.add_command(cmd) + + +class InternalConsoleGetCompletions(InternalThreadCommand): + """Fetch the completions in the debug console""" + + def __init__(self, seq, thread_id, frame_id, act_tok): + self.sequence = seq + self.thread_id = thread_id + self.frame_id = frame_id + self.act_tok = act_tok + + def do_it(self, dbg): + """Get completions and write back to the client""" + try: + frame = dbg.find_frame(self.thread_id, self.frame_id) + completions_xml = pydevd_console.get_completions(frame, self.act_tok) + cmd = dbg.cmd_factory.make_send_console_message( + self.sequence, completions_xml + ) + dbg.writer.add_command(cmd) + except: + exc = get_exception_traceback_str() + cmd = dbg.cmd_factory.make_error_message( + self.sequence, "Error in fetching completions" + exc + ) + dbg.writer.add_command(cmd) + + +class InternalConsoleExec(InternalThreadCommand): + """gets the value of a variable""" + + def __init__(self, seq, thread_id, frame_id, expression): + self.sequence = seq + self.thread_id = thread_id + self.frame_id = frame_id + self.expression = expression + + def init_matplotlib_in_debug_console(self, py_db): + # import hook and patches for matplotlib support in debug console + from _pydev_bundle.pydev_import_hook import import_hook_manager + + if is_current_thread_main_thread(): + for module in list(py_db.mpl_modules_for_patching): + import_hook_manager.add_module_name( + module, py_db.mpl_modules_for_patching.pop(module) + ) + + def do_it(self, py_db): + if not py_db.mpl_hooks_in_debug_console and not py_db.gui_in_use: + # add import hooks for matplotlib patches if only debug console was started + try: + self.init_matplotlib_in_debug_console(py_db) + py_db.gui_in_use = True + except: + pydev_log.debug( + "Matplotlib support in debug console failed", traceback.format_exc() + ) + py_db.mpl_hooks_in_debug_console = True + + try: + try: + # Don't trace new threads created by console command. + disable_trace_thread_modules() + + result = pydevconsole.console_exec( + self.thread_id, self.frame_id, self.expression, py_db + ) + xml = "" + xml += pydevd_xml.var_to_xml(result, "") + xml += "" + cmd = py_db.cmd_factory.make_evaluate_expression_message( + self.sequence, xml + ) + py_db.writer.add_command(cmd) + except: + exc = get_exception_traceback_str() + sys.stderr.write("%s\n" % (exc,)) + cmd = py_db.cmd_factory.make_error_message( + self.sequence, "Error evaluating console expression " + exc + ) + py_db.writer.add_command(cmd) + finally: + enable_trace_thread_modules() + + sys.stderr.flush() + sys.stdout.flush() + + +class InternalLoadFullValue(InternalThreadCommand): + """ + Loads values asynchronously + """ + + def __init__(self, seq, thread_id, frame_id, vars): + self.sequence = seq + self.thread_id = thread_id + self.frame_id = frame_id + self.vars = vars + + @silence_warnings_decorator + def do_it(self, dbg): + """Starts a thread that will load values asynchronously""" + try: + var_objects = [] + for variable in self.vars: + variable = variable.strip() + if len(variable) > 0: + if "\t" in variable: # there are attributes beyond scope + scope, attrs = variable.split("\t", 1) + name = attrs[0] + else: + scope, attrs = (variable, None) + name = scope + var_obj = pydevd_vars.getVariable( + dbg, self.thread_id, self.frame_id, scope, attrs + ) + var_objects.append((var_obj, name)) + + t = GetValueAsyncThreadDebug(dbg, dbg, self.sequence, var_objects) + t.start() + except: + exc = get_exception_traceback_str() + sys.stderr.write("%s\n" % (exc,)) + cmd = dbg.cmd_factory.make_error_message( + self.sequence, "Error evaluating variable %s " % exc + ) + dbg.writer.add_command(cmd) + + +class AbstractGetValueAsyncThread(PyDBDaemonThread): + """ + Abstract class for a thread, which evaluates values for async variables + """ + + def __init__(self, py_db, frame_accessor, seq, var_objects): + PyDBDaemonThread.__init__(self, py_db) + self.frame_accessor = frame_accessor + self.seq = seq + self.var_objs = var_objects + self.cancel_event = ThreadingEvent() + + def send_result(self, xml): + raise NotImplementedError() + + @overrides(PyDBDaemonThread._on_run) + def _on_run(self): + start = time.time() + xml = StringIO() + xml.write("") + for var_obj, name in self.var_objs: + current_time = time.time() + if ( + current_time - start > ASYNC_EVAL_TIMEOUT_SEC + or self.cancel_event.is_set() + ): + break + xml.write(pydevd_xml.var_to_xml(var_obj, name, evaluate_full_value=True)) + xml.write("") + self.send_result(xml) + xml.close() + + +class GetValueAsyncThreadDebug(AbstractGetValueAsyncThread): + """ + A thread for evaluation async values, which returns result for debugger + Create message and send it via writer thread + """ + + def send_result(self, xml): + if self.frame_accessor is not None: + cmd = self.frame_accessor.cmd_factory.make_load_full_value_message( + self.seq, xml.getvalue() + ) + self.frame_accessor.writer.add_command(cmd) + + +class GetValueAsyncThreadConsole(AbstractGetValueAsyncThread): + """ + A thread for evaluation async values, which returns result for Console + Send result directly to Console's server + """ + + def send_result(self, xml): + if self.frame_accessor is not None: + self.frame_accessor.ReturnFullValue(self.seq, xml.getvalue()) diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm_constants.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm_constants.py new file mode 100644 index 000000000..6ccd1f3b3 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm_constants.py @@ -0,0 +1,202 @@ +CMD_RUN = 101 +CMD_LIST_THREADS = 102 +CMD_THREAD_CREATE = 103 +CMD_THREAD_KILL = 104 +CMD_THREAD_SUSPEND = 105 +CMD_THREAD_RUN = 106 +CMD_STEP_INTO = 107 +CMD_STEP_OVER = 108 +CMD_STEP_RETURN = 109 +CMD_GET_VARIABLE = 110 +CMD_SET_BREAK = 111 +CMD_REMOVE_BREAK = 112 +CMD_EVALUATE_EXPRESSION = 113 +CMD_GET_FRAME = 114 +CMD_EXEC_EXPRESSION = 115 +CMD_WRITE_TO_CONSOLE = 116 +CMD_CHANGE_VARIABLE = 117 +CMD_RUN_TO_LINE = 118 +CMD_RELOAD_CODE = 119 +CMD_GET_COMPLETIONS = 120 + +# Note: renumbered (conflicted on merge) +CMD_CONSOLE_EXEC = 121 +CMD_ADD_EXCEPTION_BREAK = 122 +CMD_REMOVE_EXCEPTION_BREAK = 123 +CMD_LOAD_SOURCE = 124 +CMD_ADD_DJANGO_EXCEPTION_BREAK = 125 +CMD_REMOVE_DJANGO_EXCEPTION_BREAK = 126 +CMD_SET_NEXT_STATEMENT = 127 +CMD_SMART_STEP_INTO = 128 +CMD_EXIT = 129 +CMD_SIGNATURE_CALL_TRACE = 130 + +CMD_SET_PY_EXCEPTION = 131 +CMD_GET_FILE_CONTENTS = 132 +CMD_SET_PROPERTY_TRACE = 133 +# Pydev debug console commands +CMD_EVALUATE_CONSOLE_EXPRESSION = 134 +CMD_RUN_CUSTOM_OPERATION = 135 +CMD_GET_BREAKPOINT_EXCEPTION = 136 +CMD_STEP_CAUGHT_EXCEPTION = 137 +CMD_SEND_CURR_EXCEPTION_TRACE = 138 +CMD_SEND_CURR_EXCEPTION_TRACE_PROCEEDED = 139 +CMD_IGNORE_THROWN_EXCEPTION_AT = 140 +CMD_ENABLE_DONT_TRACE = 141 +CMD_SHOW_CONSOLE = 142 + +CMD_GET_ARRAY = 143 +CMD_STEP_INTO_MY_CODE = 144 +CMD_GET_CONCURRENCY_EVENT = 145 +CMD_SHOW_RETURN_VALUES = 146 +CMD_INPUT_REQUESTED = 147 +CMD_GET_DESCRIPTION = 148 + +CMD_PROCESS_CREATED = 149 +CMD_SHOW_CYTHON_WARNING = 150 +CMD_LOAD_FULL_VALUE = 151 + +CMD_GET_THREAD_STACK = 152 + +# This is mostly for unit-tests to diagnose errors on ci. +CMD_THREAD_DUMP_TO_STDERR = 153 + +# Sent from the client to signal that we should stop when we start executing user code. +CMD_STOP_ON_START = 154 + +# When the debugger is stopped in an exception, this command will provide the details of the current exception (in the current thread). +CMD_GET_EXCEPTION_DETAILS = 155 + +# Allows configuring pydevd settings (can be called multiple times and only keys +# available in the json will be configured -- keys not passed will not change the +# previous configuration). +CMD_PYDEVD_JSON_CONFIG = 156 + +CMD_THREAD_SUSPEND_SINGLE_NOTIFICATION = 157 +CMD_THREAD_RESUME_SINGLE_NOTIFICATION = 158 + +CMD_STEP_OVER_MY_CODE = 159 +CMD_STEP_RETURN_MY_CODE = 160 + +CMD_SET_PY_EXCEPTION_JSON = 161 +CMD_SET_PATH_MAPPING_JSON = 162 + +CMD_GET_SMART_STEP_INTO_VARIANTS = ( + 163 # XXX: PyCharm has 160 for this (we're currently incompatible anyways). +) + +CMD_REDIRECT_OUTPUT = 200 +CMD_GET_NEXT_STATEMENT_TARGETS = 201 +CMD_SET_PROJECT_ROOTS = 202 + +CMD_MODULE_EVENT = 203 +CMD_PROCESS_EVENT = 204 + +CMD_AUTHENTICATE = 205 + +CMD_STEP_INTO_COROUTINE = 206 + +CMD_LOAD_SOURCE_FROM_FRAME_ID = 207 + +CMD_SET_FUNCTION_BREAK = 208 + +CMD_VERSION = 501 +CMD_RETURN = 502 +CMD_SET_PROTOCOL = 503 +CMD_ERROR = 901 + +# this number can be changed if there's need to do so +# if the io is too big, we'll not send all (could make the debugger too non-responsive) +MAX_IO_MSG_SIZE = 10000 + +VERSION_STRING = "@@BUILD_NUMBER@@" + +from _pydev_bundle._pydev_filesystem_encoding import getfilesystemencoding + +file_system_encoding = getfilesystemencoding() +filesystem_encoding_is_utf8 = file_system_encoding.lower() in ("utf-8", "utf_8", "utf8") + +ID_TO_MEANING = { + "101": "CMD_RUN", + "102": "CMD_LIST_THREADS", + "103": "CMD_THREAD_CREATE", + "104": "CMD_THREAD_KILL", + "105": "CMD_THREAD_SUSPEND", + "106": "CMD_THREAD_RUN", + "107": "CMD_STEP_INTO", + "108": "CMD_STEP_OVER", + "109": "CMD_STEP_RETURN", + "110": "CMD_GET_VARIABLE", + "111": "CMD_SET_BREAK", + "112": "CMD_REMOVE_BREAK", + "113": "CMD_EVALUATE_EXPRESSION", + "114": "CMD_GET_FRAME", + "115": "CMD_EXEC_EXPRESSION", + "116": "CMD_WRITE_TO_CONSOLE", + "117": "CMD_CHANGE_VARIABLE", + "118": "CMD_RUN_TO_LINE", + "119": "CMD_RELOAD_CODE", + "120": "CMD_GET_COMPLETIONS", + "121": "CMD_CONSOLE_EXEC", + "122": "CMD_ADD_EXCEPTION_BREAK", + "123": "CMD_REMOVE_EXCEPTION_BREAK", + "124": "CMD_LOAD_SOURCE", + "125": "CMD_ADD_DJANGO_EXCEPTION_BREAK", + "126": "CMD_REMOVE_DJANGO_EXCEPTION_BREAK", + "127": "CMD_SET_NEXT_STATEMENT", + "128": "CMD_SMART_STEP_INTO", + "129": "CMD_EXIT", + "130": "CMD_SIGNATURE_CALL_TRACE", + "131": "CMD_SET_PY_EXCEPTION", + "132": "CMD_GET_FILE_CONTENTS", + "133": "CMD_SET_PROPERTY_TRACE", + "134": "CMD_EVALUATE_CONSOLE_EXPRESSION", + "135": "CMD_RUN_CUSTOM_OPERATION", + "136": "CMD_GET_BREAKPOINT_EXCEPTION", + "137": "CMD_STEP_CAUGHT_EXCEPTION", + "138": "CMD_SEND_CURR_EXCEPTION_TRACE", + "139": "CMD_SEND_CURR_EXCEPTION_TRACE_PROCEEDED", + "140": "CMD_IGNORE_THROWN_EXCEPTION_AT", + "141": "CMD_ENABLE_DONT_TRACE", + "142": "CMD_SHOW_CONSOLE", + "143": "CMD_GET_ARRAY", + "144": "CMD_STEP_INTO_MY_CODE", + "145": "CMD_GET_CONCURRENCY_EVENT", + "146": "CMD_SHOW_RETURN_VALUES", + "147": "CMD_INPUT_REQUESTED", + "148": "CMD_GET_DESCRIPTION", + "149": "CMD_PROCESS_CREATED", # Note: this is actually a notification of a sub-process created. + "150": "CMD_SHOW_CYTHON_WARNING", + "151": "CMD_LOAD_FULL_VALUE", + "152": "CMD_GET_THREAD_STACK", + "153": "CMD_THREAD_DUMP_TO_STDERR", + "154": "CMD_STOP_ON_START", + "155": "CMD_GET_EXCEPTION_DETAILS", + "156": "CMD_PYDEVD_JSON_CONFIG", + "157": "CMD_THREAD_SUSPEND_SINGLE_NOTIFICATION", + "158": "CMD_THREAD_RESUME_SINGLE_NOTIFICATION", + "159": "CMD_STEP_OVER_MY_CODE", + "160": "CMD_STEP_RETURN_MY_CODE", + "161": "CMD_SET_PY_EXCEPTION_JSON", + "162": "CMD_SET_PATH_MAPPING_JSON", + "163": "CMD_GET_SMART_STEP_INTO_VARIANTS", + "200": "CMD_REDIRECT_OUTPUT", + "201": "CMD_GET_NEXT_STATEMENT_TARGETS", + "202": "CMD_SET_PROJECT_ROOTS", + "203": "CMD_MODULE_EVENT", + "204": "CMD_PROCESS_EVENT", # DAP process event. + "205": "CMD_AUTHENTICATE", + "206": "CMD_STEP_INTO_COROUTINE", + "207": "CMD_LOAD_SOURCE_FROM_FRAME_ID", + "501": "CMD_VERSION", + "502": "CMD_RETURN", + "503": "CMD_SET_PROTOCOL", + "901": "CMD_ERROR", +} + + +def constant_to_str(constant): + s = ID_TO_MEANING.get(str(constant)) + if not s: + s = "" % (constant,) + return s diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_command_line_handling.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_command_line_handling.py new file mode 100644 index 000000000..fcd25f46a --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_command_line_handling.py @@ -0,0 +1,192 @@ +import os +import sys + + +class ArgHandlerWithParam: + """ + Handler for some arguments which needs a value + """ + + def __init__(self, arg_name, convert_val=None, default_val=None): + self.arg_name = arg_name + self.arg_v_rep = "--%s" % (arg_name,) + self.convert_val = convert_val + self.default_val = default_val + + def to_argv(self, lst, setup): + v = setup.get(self.arg_name) + if v is not None and v != self.default_val: + lst.append(self.arg_v_rep) + lst.append("%s" % (v,)) + + def handle_argv(self, argv, i, setup): + assert argv[i] == self.arg_v_rep + del argv[i] + + val = argv[i] + if self.convert_val: + val = self.convert_val(val) + + setup[self.arg_name] = val + del argv[i] + + +class ArgHandlerBool: + """ + If a given flag is received, mark it as 'True' in setup. + """ + + def __init__(self, arg_name, default_val=False): + self.arg_name = arg_name + self.arg_v_rep = "--%s" % (arg_name,) + self.default_val = default_val + + def to_argv(self, lst, setup): + v = setup.get(self.arg_name) + if v: + lst.append(self.arg_v_rep) + + def handle_argv(self, argv, i, setup): + assert argv[i] == self.arg_v_rep + del argv[i] + setup[self.arg_name] = True + + +def convert_ppid(ppid): + ret = int(ppid) + if ret != 0: + if ret == os.getpid(): + raise AssertionError( + "ppid passed is the same as the current process pid (%s)!" % (ret,) + ) + return ret + + +ACCEPTED_ARG_HANDLERS = [ + ArgHandlerWithParam("port", int, 0), + ArgHandlerWithParam("ppid", convert_ppid, 0), + ArgHandlerWithParam("vm_type"), + ArgHandlerWithParam("client"), + ArgHandlerWithParam("access-token"), + ArgHandlerWithParam("client-access-token"), + ArgHandlerWithParam("debug-mode"), + ArgHandlerWithParam("preimport"), + # Logging + ArgHandlerWithParam("log-file"), + ArgHandlerWithParam("log-level", int, None), + ArgHandlerBool("server"), + ArgHandlerBool("multiproc"), # Used by PyCharm (reuses connection: ssh tunneling) + ArgHandlerBool("multiprocess"), # Used by PyDev (creates new connection to ide) + ArgHandlerBool("save-signatures"), + ArgHandlerBool("save-threading"), + ArgHandlerBool("save-asyncio"), + ArgHandlerBool("print-in-debugger-startup"), + ArgHandlerBool("cmd-line"), + ArgHandlerBool("module"), + ArgHandlerBool("skip-notify-stdin"), + # The ones below should've been just one setting to specify the protocol, but for compatibility + # reasons they're passed as a flag but are mutually exclusive. + ArgHandlerBool( + "json-dap" + ), # Protocol used by ptvsd to communicate with pydevd (a single json message in each read) + ArgHandlerBool("json-dap-http"), # Actual DAP (json messages over http protocol). + ArgHandlerBool("protocol-quoted-line"), # Custom protocol with quoted lines. + ArgHandlerBool("protocol-http"), # Custom protocol with http. +] + +ARGV_REP_TO_HANDLER = {} +for handler in ACCEPTED_ARG_HANDLERS: + ARGV_REP_TO_HANDLER[handler.arg_v_rep] = handler + + +def get_pydevd_file(): + import pydevd + + f = pydevd.__file__ + if f.endswith(".pyc"): + f = f[:-1] + elif f.endswith("$py.class"): + f = f[: -len("$py.class")] + ".py" + return f + + +def setup_to_argv(setup, skip_names=None): + """ + :param dict setup: + A dict previously gotten from process_command_line. + + :param set skip_names: + The names in the setup which shouldn't be converted to argv. + + :note: does not handle --file nor --DEBUG. + """ + if skip_names is None: + skip_names = set() + ret = [get_pydevd_file()] + + for handler in ACCEPTED_ARG_HANDLERS: + if handler.arg_name in setup and handler.arg_name not in skip_names: + handler.to_argv(ret, setup) + return ret + + +def process_command_line(argv): + """Parses the arguments. + removes our arguments from the command line + """ + setup = {} + for handler in ACCEPTED_ARG_HANDLERS: + setup[handler.arg_name] = handler.default_val + setup["file"] = "" + setup["qt-support"] = "" + + initial_argv = tuple(argv) + + i = 0 + del argv[0] + while i < len(argv): + handler = ARGV_REP_TO_HANDLER.get(argv[i]) + if handler is not None: + handler.handle_argv(argv, i, setup) + + elif argv[i].startswith("--qt-support"): + # The --qt-support is special because we want to keep backward compatibility: + # Previously, just passing '--qt-support' meant that we should use the auto-discovery mode + # whereas now, if --qt-support is passed, it should be passed as --qt-support=, where + # mode can be one of 'auto', 'none', 'pyqt5', 'pyqt4', 'pyside', 'pyside2'. + if argv[i] == "--qt-support": + setup["qt-support"] = "auto" + + elif argv[i].startswith("--qt-support="): + qt_support = argv[i][len("--qt-support=") :] + valid_modes = ("none", "auto", "pyqt5", "pyqt4", "pyside", "pyside2") + if qt_support not in valid_modes: + raise ValueError("qt-support mode invalid: " + qt_support) + if qt_support == "none": + # On none, actually set an empty string to evaluate to False. + setup["qt-support"] = "" + else: + setup["qt-support"] = qt_support + else: + raise ValueError( + "Unexpected definition for qt-support flag: " + argv[i] + ) + + del argv[i] + + elif argv[i] == "--file": + # --file is special because it's the last one (so, no handler for it). + del argv[i] + setup["file"] = argv[i] + i = len(argv) # pop out, file is our last argument + + elif argv[i] == "--DEBUG": + sys.stderr.write( + "pydevd: --DEBUG parameter deprecated. Use `--debug-level=3` instead.\n" + ) + + else: + raise ValueError( + "Unexpected option: %s when processing: %s" % (argv[i], initial_argv) + ) + return setup diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/__init__.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_concurrency_logger.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_concurrency_logger.py new file mode 100644 index 000000000..11dba05e8 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_concurrency_logger.py @@ -0,0 +1,547 @@ +import sys +import time + +import pydevd_file_utils +from _pydev_bundle import pydev_log +from _pydev_bundle._pydev_filesystem_encoding import getfilesystemencoding +from _pydev_bundle._pydev_saved_modules import threading + +from _pydevd_bundle import pydevd_xml +from _pydevd_bundle.pydevd_concurrency_analyser.pydevd_thread_wrappers import ( + ObjectWrapper, + wrap_attr, +) +from _pydevd_bundle.pydevd_constants import GlobalDebuggerHolder, get_thread_id +from _pydevd_bundle.pydevd_net_command import NetCommand + +file_system_encoding = getfilesystemencoding() + +from urllib.parse import quote + +threadingCurrentThread = threading.current_thread + +DONT_TRACE_THREADING = ["threading.py", "pydevd.py"] +INNER_METHODS = ["_stop"] +INNER_FILES = ["threading.py"] +THREAD_METHODS = ["start", "_stop", "join"] +LOCK_METHODS = ["__init__", "acquire", "release", "__enter__", "__exit__"] +QUEUE_METHODS = ["put", "get"] + +# return time since epoch in milliseconds +cur_time = lambda: int(round(time.time() * 1000000)) + + +def get_text_list_for_frame(frame): + # partial copy-paste from make_thread_suspend_str + curFrame = frame + cmdTextList = [] + try: + while curFrame: + # print cmdText + myId = str(id(curFrame)) + # print "id is ", myId + + if curFrame.f_code is None: + break # Iron Python sometimes does not have it! + + myName = ( + curFrame.f_code.co_name + ) # method name (if in method) or ? if global + if myName is None: + break # Iron Python sometimes does not have it! + + # print "name is ", myName + + absolute_filename = ( + pydevd_file_utils.get_abs_path_real_path_and_base_from_frame(curFrame)[ + 0 + ] + ) + + my_file, _applied_mapping = pydevd_file_utils.map_file_to_client( + absolute_filename + ) + + # print "file is ", my_file + # my_file = inspect.getsourcefile(curFrame) or inspect.getfile(frame) + + myLine = str(curFrame.f_lineno) + # print "line is ", myLine + + # the variables are all gotten 'on-demand' + # variables = pydevd_xml.frame_vars_to_xml(curFrame.f_locals) + + variables = "" + cmdTextList.append( + '' % (quote(my_file, "/>_= \t"), myLine) + ) + cmdTextList.append(variables) + cmdTextList.append("") + curFrame = curFrame.f_back + except: + pydev_log.exception() + + return cmdTextList + + +def send_concurrency_message( + event_class, + time, + name, + thread_id, + type, + event, + file, + line, + frame, + lock_id=0, + parent=None, +): + dbg = GlobalDebuggerHolder.global_dbg + if dbg is None: + return + cmdTextList = [""] + + cmdTextList.append("<" + event_class) + cmdTextList.append(' time="%s"' % pydevd_xml.make_valid_xml_value(str(time))) + cmdTextList.append(' name="%s"' % pydevd_xml.make_valid_xml_value(name)) + cmdTextList.append(' thread_id="%s"' % pydevd_xml.make_valid_xml_value(thread_id)) + cmdTextList.append(' type="%s"' % pydevd_xml.make_valid_xml_value(type)) + if type == "lock": + cmdTextList.append( + ' lock_id="%s"' % pydevd_xml.make_valid_xml_value(str(lock_id)) + ) + if parent is not None: + cmdTextList.append(' parent="%s"' % pydevd_xml.make_valid_xml_value(parent)) + cmdTextList.append(' event="%s"' % pydevd_xml.make_valid_xml_value(event)) + cmdTextList.append(' file="%s"' % pydevd_xml.make_valid_xml_value(file)) + cmdTextList.append(' line="%s"' % pydevd_xml.make_valid_xml_value(str(line))) + cmdTextList.append(">") + + cmdTextList += get_text_list_for_frame(frame) + cmdTextList.append("") + + text = "".join(cmdTextList) + if dbg.writer is not None: + dbg.writer.add_command(NetCommand(145, 0, text)) + + +def log_new_thread(global_debugger, t): + event_time = cur_time() - global_debugger.thread_analyser.start_time + send_concurrency_message( + "threading_event", + event_time, + t.name, + get_thread_id(t), + "thread", + "start", + "code_name", + 0, + None, + parent=get_thread_id(t), + ) + + +class ThreadingLogger: + def __init__(self): + self.start_time = cur_time() + + def set_start_time(self, time): + self.start_time = time + + def log_event(self, frame): + write_log = False + self_obj = None + if "self" in frame.f_locals: + self_obj = frame.f_locals["self"] + if ( + isinstance(self_obj, threading.Thread) + or self_obj.__class__ == ObjectWrapper + ): + write_log = True + if hasattr(frame, "f_back") and frame.f_back is not None: + back = frame.f_back + if hasattr(back, "f_back") and back.f_back is not None: + back = back.f_back + if "self" in back.f_locals: + if isinstance(back.f_locals["self"], threading.Thread): + write_log = True + try: + if write_log: + t = threadingCurrentThread() + back = frame.f_back + if not back: + return + ( + name, + _, + back_base, + ) = pydevd_file_utils.get_abs_path_real_path_and_base_from_frame(back) + event_time = cur_time() - self.start_time + method_name = frame.f_code.co_name + + if isinstance(self_obj, threading.Thread): + if not hasattr(self_obj, "_pydev_run_patched"): + wrap_attr(self_obj, "run") + if (method_name in THREAD_METHODS) and ( + back_base not in DONT_TRACE_THREADING + or (method_name in INNER_METHODS and back_base in INNER_FILES) + ): + thread_id = get_thread_id(self_obj) + name = self_obj.getName() + real_method = frame.f_code.co_name + parent = None + if real_method == "_stop": + if ( + back_base in INNER_FILES + and back.f_code.co_name == "_wait_for_tstate_lock" + ): + back = back.f_back.f_back + real_method = "stop" + if hasattr(self_obj, "_pydev_join_called"): + parent = get_thread_id(t) + elif real_method == "join": + # join called in the current thread, not in self object + if not self_obj.is_alive(): + return + thread_id = get_thread_id(t) + name = t.name + self_obj._pydev_join_called = True + + if real_method == "start": + parent = get_thread_id(t) + send_concurrency_message( + "threading_event", + event_time, + name, + thread_id, + "thread", + real_method, + back.f_code.co_filename, + back.f_lineno, + back, + parent=parent, + ) + # print(event_time, self_obj.getName(), thread_id, "thread", + # real_method, back.f_code.co_filename, back.f_lineno) + + if method_name == "pydev_after_run_call": + if hasattr(frame, "f_back") and frame.f_back is not None: + back = frame.f_back + if hasattr(back, "f_back") and back.f_back is not None: + back = back.f_back + if "self" in back.f_locals: + if isinstance(back.f_locals["self"], threading.Thread): + my_self_obj = frame.f_back.f_back.f_locals["self"] + my_back = frame.f_back.f_back + my_thread_id = get_thread_id(my_self_obj) + send_massage = True + if hasattr(my_self_obj, "_pydev_join_called"): + send_massage = False + # we can't detect stop after join in Python 2 yet + if send_massage: + send_concurrency_message( + "threading_event", + event_time, + "Thread", + my_thread_id, + "thread", + "stop", + my_back.f_code.co_filename, + my_back.f_lineno, + my_back, + parent=None, + ) + + if self_obj.__class__ == ObjectWrapper: + if back_base in DONT_TRACE_THREADING: + # do not trace methods called from threading + return + back_back_base = ( + pydevd_file_utils.get_abs_path_real_path_and_base_from_frame( + back.f_back + )[2] + ) + back = back.f_back + if back_back_base in DONT_TRACE_THREADING: + # back_back_base is the file, where the method was called froms + return + if method_name == "__init__": + send_concurrency_message( + "threading_event", + event_time, + t.name, + get_thread_id(t), + "lock", + method_name, + back.f_code.co_filename, + back.f_lineno, + back, + lock_id=str(id(frame.f_locals["self"])), + ) + if "attr" in frame.f_locals and ( + frame.f_locals["attr"] in LOCK_METHODS + or frame.f_locals["attr"] in QUEUE_METHODS + ): + real_method = frame.f_locals["attr"] + if method_name == "call_begin": + real_method += "_begin" + elif method_name == "call_end": + real_method += "_end" + else: + return + if real_method == "release_end": + # do not log release end. Maybe use it later + return + send_concurrency_message( + "threading_event", + event_time, + t.name, + get_thread_id(t), + "lock", + real_method, + back.f_code.co_filename, + back.f_lineno, + back, + lock_id=str(id(self_obj)), + ) + + if real_method in ("put_end", "get_end"): + # fake release for queue, cause we don't call it directly + send_concurrency_message( + "threading_event", + event_time, + t.name, + get_thread_id(t), + "lock", + "release", + back.f_code.co_filename, + back.f_lineno, + back, + lock_id=str(id(self_obj)), + ) + # print(event_time, t.name, get_thread_id(t), "lock", + # real_method, back.f_code.co_filename, back.f_lineno) + + except Exception: + pydev_log.exception() + + +class NameManager: + def __init__(self, name_prefix): + self.tasks = {} + self.last = 0 + self.prefix = name_prefix + + def get(self, id): + if id not in self.tasks: + self.last += 1 + self.tasks[id] = self.prefix + "-" + str(self.last) + return self.tasks[id] + + +class AsyncioLogger: + def __init__(self): + self.task_mgr = NameManager("Task") + self.coro_mgr = NameManager("Coro") + self.start_time = cur_time() + + def get_task_id(self, frame): + asyncio = sys.modules.get("asyncio") + if asyncio is None: + # If asyncio was not imported, there's nothing to be done + # (also fixes issue where multiprocessing is imported due + # to asyncio). + return None + while frame is not None: + if "self" in frame.f_locals: + self_obj = frame.f_locals["self"] + if isinstance(self_obj, asyncio.Task): + method_name = frame.f_code.co_name + if method_name == "_step": + return id(self_obj) + frame = frame.f_back + return None + + def log_event(self, frame): + event_time = cur_time() - self.start_time + + # Debug loop iterations + # if isinstance(self_obj, asyncio.base_events.BaseEventLoop): + # if method_name == "_run_once": + # print("Loop iteration") + + if not hasattr(frame, "f_back") or frame.f_back is None: + return + + asyncio = sys.modules.get("asyncio") + if asyncio is None: + # If asyncio was not imported, there's nothing to be done + # (also fixes issue where multiprocessing is imported due + # to asyncio). + return + + back = frame.f_back + + if "self" in frame.f_locals: + self_obj = frame.f_locals["self"] + if isinstance(self_obj, asyncio.Task): + method_name = frame.f_code.co_name + if method_name == "set_result": + task_id = id(self_obj) + task_name = self.task_mgr.get(str(task_id)) + send_concurrency_message( + "asyncio_event", + event_time, + task_name, + task_name, + "thread", + "stop", + frame.f_code.co_filename, + frame.f_lineno, + frame, + ) + + method_name = back.f_code.co_name + if method_name == "__init__": + task_id = id(self_obj) + task_name = self.task_mgr.get(str(task_id)) + send_concurrency_message( + "asyncio_event", + event_time, + task_name, + task_name, + "thread", + "start", + frame.f_code.co_filename, + frame.f_lineno, + frame, + ) + + method_name = frame.f_code.co_name + if isinstance(self_obj, asyncio.Lock): + if method_name in ("acquire", "release"): + task_id = self.get_task_id(frame) + task_name = self.task_mgr.get(str(task_id)) + + if method_name == "acquire": + if not self_obj._waiters and not self_obj.locked(): + send_concurrency_message( + "asyncio_event", + event_time, + task_name, + task_name, + "lock", + method_name + "_begin", + frame.f_code.co_filename, + frame.f_lineno, + frame, + lock_id=str(id(self_obj)), + ) + if self_obj.locked(): + method_name += "_begin" + else: + method_name += "_end" + elif method_name == "release": + method_name += "_end" + + send_concurrency_message( + "asyncio_event", + event_time, + task_name, + task_name, + "lock", + method_name, + frame.f_code.co_filename, + frame.f_lineno, + frame, + lock_id=str(id(self_obj)), + ) + + if isinstance(self_obj, asyncio.Queue): + if method_name in ("put", "get", "_put", "_get"): + task_id = self.get_task_id(frame) + task_name = self.task_mgr.get(str(task_id)) + + if method_name == "put": + send_concurrency_message( + "asyncio_event", + event_time, + task_name, + task_name, + "lock", + "acquire_begin", + frame.f_code.co_filename, + frame.f_lineno, + frame, + lock_id=str(id(self_obj)), + ) + elif method_name == "_put": + send_concurrency_message( + "asyncio_event", + event_time, + task_name, + task_name, + "lock", + "acquire_end", + frame.f_code.co_filename, + frame.f_lineno, + frame, + lock_id=str(id(self_obj)), + ) + send_concurrency_message( + "asyncio_event", + event_time, + task_name, + task_name, + "lock", + "release", + frame.f_code.co_filename, + frame.f_lineno, + frame, + lock_id=str(id(self_obj)), + ) + elif method_name == "get": + back = frame.f_back + if back.f_code.co_name != "send": + send_concurrency_message( + "asyncio_event", + event_time, + task_name, + task_name, + "lock", + "acquire_begin", + frame.f_code.co_filename, + frame.f_lineno, + frame, + lock_id=str(id(self_obj)), + ) + else: + send_concurrency_message( + "asyncio_event", + event_time, + task_name, + task_name, + "lock", + "acquire_end", + frame.f_code.co_filename, + frame.f_lineno, + frame, + lock_id=str(id(self_obj)), + ) + send_concurrency_message( + "asyncio_event", + event_time, + task_name, + task_name, + "lock", + "release", + frame.f_code.co_filename, + frame.f_lineno, + frame, + lock_id=str(id(self_obj)), + ) diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_thread_wrappers.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_thread_wrappers.py new file mode 100644 index 000000000..f7a35a3e1 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_thread_wrappers.py @@ -0,0 +1,82 @@ +from _pydev_bundle._pydev_saved_modules import threading + + +def wrapper(fun): + def pydev_after_run_call(): + pass + + def inner(*args, **kwargs): + fun(*args, **kwargs) + pydev_after_run_call() + + return inner + + +def wrap_attr(obj, attr): + t_save_start = getattr(obj, attr) + setattr(obj, attr, wrapper(t_save_start)) + obj._pydev_run_patched = True + + +class ObjectWrapper: + def __init__(self, obj): + self.wrapped_object = obj + try: + import functools + + functools.update_wrapper(self, obj) + except: + pass + + def __getattr__(self, attr): + orig_attr = getattr(self.wrapped_object, attr) # .__getattribute__(attr) + if callable(orig_attr): + + def patched_attr(*args, **kwargs): + self.call_begin(attr) + result = orig_attr(*args, **kwargs) + self.call_end(attr) + if result == self.wrapped_object: + return self + return result + + return patched_attr + else: + return orig_attr + + def call_begin(self, attr): + pass + + def call_end(self, attr): + pass + + def __enter__(self): + self.call_begin("__enter__") + self.wrapped_object.__enter__() + self.call_end("__enter__") + + def __exit__(self, exc_type, exc_val, exc_tb): + self.call_begin("__exit__") + self.wrapped_object.__exit__(exc_type, exc_val, exc_tb) + + +def factory_wrapper(fun): + def inner(*args, **kwargs): + obj = fun(*args, **kwargs) + return ObjectWrapper(obj) + + return inner + + +def wrap_threads(): + # TODO: add wrappers for thread and _thread + # import _thread as mod + # print("Thread imported") + # mod.start_new_thread = wrapper(mod.start_new_thread) + threading.Lock = factory_wrapper(threading.Lock) + threading.RLock = factory_wrapper(threading.RLock) + + # queue patching + import queue # @UnresolvedImport + + queue.Queue = factory_wrapper(queue.Queue) diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_console.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_console.py new file mode 100644 index 000000000..5a1f46ad2 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_console.py @@ -0,0 +1,289 @@ +"""An helper file for the pydev debugger (REPL) console +""" +import inspect +import sys +import traceback + +from _pydev_bundle import _pydev_completer +from _pydev_bundle.pydev_console_utils import BaseInterpreterInterface, BaseStdIn +from _pydev_bundle.pydev_override import overrides +from pydevd_tracing import get_exception_traceback_str + +from _pydevd_bundle.pydevconsole_code import ( + InteractiveConsole, + _EvalAwaitInNewEventLoop, +) +from _pydevd_bundle.pydevd_io import IOBuf +from _pydevd_bundle.pydevd_save_locals import update_globals_and_locals +from _pydevd_bundle.pydevd_xml import make_valid_xml_value + +CONSOLE_OUTPUT = "output" +CONSOLE_ERROR = "error" + + +# ======================================================================================================================= +# ConsoleMessage +# ======================================================================================================================= +class ConsoleMessage: + """Console Messages""" + + def __init__(self): + self.more = False + # List of tuple [('error', 'error_message'), ('message_list', 'output_message')] + self.console_messages = [] + + def add_console_message(self, message_type, message): + """Add messages in the console_messages list""" + for m in message.split("\n"): + if m.strip(): + self.console_messages.append((message_type, m)) + + def update_more(self, more): + """More is set to true if further input is required from the user + else more is set to false + """ + self.more = more + + def to_xml(self): + """Create an XML for console message_list, error and more (true/false) + + console message_list + console error + true/false + + """ + makeValid = make_valid_xml_value + + xml = "%s" % (self.more) + + for message_type, message in self.console_messages: + xml += '<%s message="%s">' % ( + message_type, + makeValid(message), + message_type, + ) + + xml += "" + + return xml + + +# ======================================================================================================================= +# _DebugConsoleStdIn +# ======================================================================================================================= +class _DebugConsoleStdIn(BaseStdIn): + @overrides(BaseStdIn.readline) + def readline(self, *args, **kwargs): + sys.stderr.write( + "Warning: Reading from stdin is still not supported in this console.\n" + ) + return "\n" + + +# ======================================================================================================================= +# DebugConsole +# ======================================================================================================================= +class DebugConsole(InteractiveConsole, BaseInterpreterInterface): + """Wrapper around code.InteractiveConsole, in order to send + errors and outputs to the debug console + """ + + @overrides(BaseInterpreterInterface.create_std_in) + def create_std_in(self, *args, **kwargs): + try: + if not self.__buffer_output: + return sys.stdin + except: + pass + + return ( + _DebugConsoleStdIn() + ) # If buffered, raw_input is not supported in this console. + + @overrides(InteractiveConsole.push) + def push(self, line, frame, buffer_output=True): + """Change built-in stdout and stderr methods by the + new custom StdMessage. + execute the InteractiveConsole.push. + Change the stdout and stderr back be the original built-ins + + :param buffer_output: if False won't redirect the output. + + Return boolean (True if more input is required else False), + output_messages and input_messages + """ + self.__buffer_output = buffer_output + more = False + if buffer_output: + original_stdout = sys.stdout + original_stderr = sys.stderr + try: + try: + self.frame = frame + if buffer_output: + out = sys.stdout = IOBuf() + err = sys.stderr = IOBuf() + more = self.add_exec(line) + except Exception: + exc = get_exception_traceback_str() + if buffer_output: + err.buflist.append("Internal Error: %s" % (exc,)) + else: + sys.stderr.write("Internal Error: %s\n" % (exc,)) + finally: + # Remove frame references. + self.frame = None + frame = None + if buffer_output: + sys.stdout = original_stdout + sys.stderr = original_stderr + + if buffer_output: + return more, out.buflist, err.buflist + else: + return more, [], [] + + @overrides(BaseInterpreterInterface.do_add_exec) + def do_add_exec(self, line): + return InteractiveConsole.push(self, line) + + @overrides(InteractiveConsole.runcode) + def runcode(self, code): + """Execute a code object. + + When an exception occurs, self.showtraceback() is called to + display a traceback. All exceptions are caught except + SystemExit, which is reraised. + + A note about KeyboardInterrupt: this exception may occur + elsewhere in this code, and may not always be caught. The + caller should be prepared to deal with it. + + """ + try: + updated_globals = self.get_namespace() + initial_globals = updated_globals.copy() + + updated_locals = None + + is_async = False + if hasattr(inspect, "CO_COROUTINE"): + is_async = inspect.CO_COROUTINE & code.co_flags == inspect.CO_COROUTINE + + if is_async: + t = _EvalAwaitInNewEventLoop(code, updated_globals, updated_locals) + t.start() + t.join() + + update_globals_and_locals(updated_globals, initial_globals, self.frame) + if t.exc: + raise t.exc[1].with_traceback(t.exc[2]) + + else: + try: + exec(code, updated_globals, updated_locals) + finally: + update_globals_and_locals( + updated_globals, initial_globals, self.frame + ) + except SystemExit: + raise + except: + # In case sys.excepthook called, use original excepthook #PyDev-877: Debug console freezes with Python 3.5+ + # (showtraceback does it on python 3.5 onwards) + sys.excepthook = sys.__excepthook__ + try: + self.showtraceback() + finally: + sys.__excepthook__ = sys.excepthook + + def get_namespace(self): + dbg_namespace = {} + dbg_namespace.update(self.frame.f_globals) + dbg_namespace.update( + self.frame.f_locals + ) # locals later because it has precedence over the actual globals + return dbg_namespace + + +# ======================================================================================================================= +# InteractiveConsoleCache +# ======================================================================================================================= +class InteractiveConsoleCache: + thread_id = None + frame_id = None + interactive_console_instance = None + + +# Note: On Jython 2.1 we can't use classmethod or staticmethod, so, just make the functions below free-functions. +def get_interactive_console(thread_id, frame_id, frame, console_message): + """Returns the global interactive console. + interactive console should have been initialized by this time + :rtype: DebugConsole + """ + if ( + InteractiveConsoleCache.thread_id == thread_id + and InteractiveConsoleCache.frame_id == frame_id + ): + return InteractiveConsoleCache.interactive_console_instance + + InteractiveConsoleCache.interactive_console_instance = DebugConsole() + InteractiveConsoleCache.thread_id = thread_id + InteractiveConsoleCache.frame_id = frame_id + + console_stacktrace = traceback.extract_stack(frame, limit=1) + if console_stacktrace: + current_context = console_stacktrace[0] # top entry from stacktrace + context_message = 'File "%s", line %s, in %s' % ( + current_context[0], + current_context[1], + current_context[2], + ) + console_message.add_console_message( + CONSOLE_OUTPUT, "[Current context]: %s" % (context_message,) + ) + return InteractiveConsoleCache.interactive_console_instance + + +def clear_interactive_console(): + InteractiveConsoleCache.thread_id = None + InteractiveConsoleCache.frame_id = None + InteractiveConsoleCache.interactive_console_instance = None + + +def execute_console_command(frame, thread_id, frame_id, line, buffer_output=True): + """Fetch an interactive console instance from the cache and + push the received command to the console. + + create and return an instance of console_message + """ + console_message = ConsoleMessage() + + interpreter = get_interactive_console(thread_id, frame_id, frame, console_message) + more, output_messages, error_messages = interpreter.push(line, frame, buffer_output) + console_message.update_more(more) + + for message in output_messages: + console_message.add_console_message(CONSOLE_OUTPUT, message) + + for message in error_messages: + console_message.add_console_message(CONSOLE_ERROR, message) + + return console_message + + +def get_description(frame, thread_id, frame_id, expression): + console_message = ConsoleMessage() + interpreter = get_interactive_console(thread_id, frame_id, frame, console_message) + try: + interpreter.frame = frame + return interpreter.getDescription(expression) + finally: + interpreter.frame = None + + +def get_completions(frame, act_tok): + """Fetch all completions, create xml for the same + return the completions xml + """ + return _pydev_completer.generate_completions_as_xml(frame, act_tok) diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_constants.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_constants.py new file mode 100644 index 000000000..71f38821a --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_constants.py @@ -0,0 +1,895 @@ +""" +This module holds the constants used for specifying the states of the debugger. +""" + +import functools +import platform +import struct +import warnings +import weakref +from contextlib import contextmanager + +STATE_RUN = 1 +STATE_SUSPEND = 2 + +PYTHON_SUSPEND = 1 +DJANGO_SUSPEND = 2 +JINJA2_SUSPEND = 3 + +int_types = (int,) + +# types does not include a MethodWrapperType +try: + MethodWrapperType = type([].__str__) +except: + MethodWrapperType = None + +# Preload codecs to avoid imports to them later on which can potentially halt the debugger. +import codecs as _codecs +import sys # Note: the sys import must be here anyways (others depend on it) + +for _codec in ["ascii", "utf8", "utf-8", "latin1", "latin-1", "idna"]: + _codecs.lookup(_codec) + + +class DebugInfoHolder: + # we have to put it here because it can be set through the command line (so, the + # already imported references would not have it). + + # General information + DEBUG_TRACE_LEVEL = 0 # 0 = critical, 1 = info, 2 = debug, 3 = verbose + + PYDEVD_DEBUG_FILE = None + + +# Any filename that starts with these strings is not traced nor shown to the user. +# In Python 3.7 " ..." can appear and should be ignored for the user. +# has special heuristics to know whether it should be traced or not (it's part of +# user code when it's the used in python -c and part of the library otherwise). + +# Any filename that starts with these strings is considered user (project) code. Note +# that files for which we have a source mapping are also considered as a part of the project. +USER_CODE_BASENAMES_STARTING_WITH = (" (2**32) + +IS_JYTHON = pydevd_vm_type.get_vm_type() == pydevd_vm_type.PydevdVmType.JYTHON + +IS_PYPY = platform.python_implementation() == "PyPy" + +if IS_JYTHON: + import java.lang.System # @UnresolvedImport + + IS_WINDOWS = java.lang.System.getProperty("os.name").lower().startswith("windows") + +USE_CUSTOM_SYS_CURRENT_FRAMES = not hasattr(sys, "_current_frames") or IS_PYPY +USE_CUSTOM_SYS_CURRENT_FRAMES_MAP = USE_CUSTOM_SYS_CURRENT_FRAMES and ( + IS_PYPY or IS_IRONPYTHON +) + +if USE_CUSTOM_SYS_CURRENT_FRAMES: + # Some versions of Jython don't have it (but we can provide a replacement) + if IS_JYTHON: + from java.lang import NoSuchFieldException + from org.python.core import ThreadStateMapping + + try: + cachedThreadState = ThreadStateMapping.getDeclaredField( + "globalThreadStates" + ) # Dev version + except NoSuchFieldException: + cachedThreadState = ThreadStateMapping.getDeclaredField( + "cachedThreadState" + ) # Release Jython 2.7.0 + cachedThreadState.accessible = True + thread_states = cachedThreadState.get(ThreadStateMapping) + + def _current_frames(): + as_array = thread_states.entrySet().toArray() + ret = {} + for thread_to_state in as_array: + thread = thread_to_state.getKey() + if thread is None: + continue + thread_state = thread_to_state.getValue() + if thread_state is None: + continue + + frame = thread_state.frame + if frame is None: + continue + + ret[thread.getId()] = frame + return ret + + elif USE_CUSTOM_SYS_CURRENT_FRAMES_MAP: + constructed_tid_to_last_frame = {} + + # IronPython doesn't have it. Let's use our workaround... + def _current_frames(): + return constructed_tid_to_last_frame + + else: + raise RuntimeError( + "Unable to proceed (sys._current_frames not available in this Python implementation)." + ) +else: + _current_frames = sys._current_frames + +IS_PYTHON_STACKLESS = "stackless" in sys.version.lower() +CYTHON_SUPPORTED = False + +python_implementation = platform.python_implementation() +if python_implementation == "CPython": + # Only available for CPython! + CYTHON_SUPPORTED = True + +# ======================================================================================================================= +# Python 3? +# ======================================================================================================================= +IS_PY36_OR_GREATER = sys.version_info >= (3, 6) +IS_PY37_OR_GREATER = sys.version_info >= (3, 7) +IS_PY38_OR_GREATER = sys.version_info >= (3, 8) +IS_PY39_OR_GREATER = sys.version_info >= (3, 9) +IS_PY310_OR_GREATER = sys.version_info >= (3, 10) +IS_PY311_OR_GREATER = sys.version_info >= (3, 11) +IS_PY312_OR_GREATER = sys.version_info >= (3, 12) +IS_PY313_OR_GREATER = sys.version_info >= (3, 13) +IS_PY314_OR_GREATER = sys.version_info >= (3, 14) + +# Bug affecting Python 3.13.0 specifically makes some tests crash the interpreter! +# Hopefully it'll be fixed in 3.13.1. +IS_PY313_0 = sys.version_info[:3] == (3, 13, 0) + +# Mark tests that need to be fixed with this. +TODO_PY313_OR_GREATER = IS_PY313_OR_GREATER + +# Not currently supported in Python 3.14. +SUPPORT_ATTACH_TO_PID = not IS_PY314_OR_GREATER + + +def version_str(v): + return ".".join(str(x) for x in v[:3]) + "".join(str(x) for x in v[3:]) + + +PY_VERSION_STR = version_str(sys.version_info) +try: + PY_IMPL_VERSION_STR = version_str(sys.implementation.version) +except AttributeError: + PY_IMPL_VERSION_STR = "" + +try: + PY_IMPL_NAME = sys.implementation.name +except AttributeError: + PY_IMPL_NAME = "" + +ENV_TRUE_LOWER_VALUES = ("yes", "true", "1") +ENV_FALSE_LOWER_VALUES = ("no", "false", "0") + +PYDEVD_USE_SYS_MONITORING = IS_PY312_OR_GREATER and hasattr(sys, "monitoring") +if ( + PYDEVD_USE_SYS_MONITORING +): # Default gotten, let's see if it was somehow customize by the user. + _use_sys_monitoring_env_var = os.getenv("PYDEVD_USE_SYS_MONITORING", "").lower() + if _use_sys_monitoring_env_var: + # Check if the user specified something. + if _use_sys_monitoring_env_var in ENV_FALSE_LOWER_VALUES: + PYDEVD_USE_SYS_MONITORING = False + elif _use_sys_monitoring_env_var in ENV_TRUE_LOWER_VALUES: + PYDEVD_USE_SYS_MONITORING = True + else: + raise RuntimeError( + "Unrecognized value for PYDEVD_USE_SYS_MONITORING: %s" + % (_use_sys_monitoring_env_var,) + ) + + +def is_true_in_env(env_key): + if isinstance(env_key, tuple): + # If a tuple, return True if any of those ends up being true. + for v in env_key: + if is_true_in_env(v): + return True + return False + else: + return os.getenv(env_key, "").lower() in ENV_TRUE_LOWER_VALUES + + +def as_float_in_env(env_key, default): + value = os.getenv(env_key) + if value is None: + return default + try: + return float(value) + except Exception: + raise RuntimeError( + "Error: expected the env variable: %s to be set to a float value. Found: %s" + % (env_key, value) + ) + + +def as_int_in_env(env_key, default): + value = os.getenv(env_key) + if value is None: + return default + try: + return int(value) + except Exception: + raise RuntimeError( + "Error: expected the env variable: %s to be set to a int value. Found: %s" + % (env_key, value) + ) + + +# If true in env, use gevent mode. +SUPPORT_GEVENT = is_true_in_env("GEVENT_SUPPORT") + +# Opt-in support to show gevent paused greenlets. False by default because if too many greenlets are +# paused the UI can slow-down (i.e.: if 1000 greenlets are paused, each one would be shown separate +# as a different thread, but if the UI isn't optimized for that the experience is lacking...). +GEVENT_SHOW_PAUSED_GREENLETS = is_true_in_env("GEVENT_SHOW_PAUSED_GREENLETS") + +DISABLE_FILE_VALIDATION = is_true_in_env("PYDEVD_DISABLE_FILE_VALIDATION") + +GEVENT_SUPPORT_NOT_SET_MSG = os.getenv( + "GEVENT_SUPPORT_NOT_SET_MSG", + "It seems that the gevent monkey-patching is being used.\n" + "Please set an environment variable with:\n" + "GEVENT_SUPPORT=True\n" + "to enable gevent support in the debugger.", +) + +USE_LIB_COPY = SUPPORT_GEVENT + +INTERACTIVE_MODE_AVAILABLE = ( + sys.platform in ("darwin", "win32") or os.getenv("DISPLAY") is not None +) + +# If true in env, forces cython to be used (raises error if not available). +# If false in env, disables it. +# If not specified, uses default heuristic to determine if it should be loaded. +USE_CYTHON_FLAG = os.getenv("PYDEVD_USE_CYTHON") + +if USE_CYTHON_FLAG is not None: + USE_CYTHON_FLAG = USE_CYTHON_FLAG.lower() + if ( + USE_CYTHON_FLAG not in ENV_TRUE_LOWER_VALUES + and USE_CYTHON_FLAG not in ENV_FALSE_LOWER_VALUES + ): + raise RuntimeError( + "Unexpected value for PYDEVD_USE_CYTHON: %s (enable with one of: %s, disable with one of: %s)" + % (USE_CYTHON_FLAG, ENV_TRUE_LOWER_VALUES, ENV_FALSE_LOWER_VALUES) + ) + +else: + if not CYTHON_SUPPORTED: + USE_CYTHON_FLAG = "no" + +# If true in env, forces frame eval to be used (raises error if not available). +# If false in env, disables it. +# If not specified, uses default heuristic to determine if it should be loaded. +PYDEVD_USE_FRAME_EVAL = os.getenv("PYDEVD_USE_FRAME_EVAL", "").lower() + +# Values used to determine how much container items will be shown. +# PYDEVD_CONTAINER_INITIAL_EXPANDED_ITEMS: +# - Defines how many items will appear initially expanded after which a 'more...' will appear. +# +# PYDEVD_CONTAINER_BUCKET_SIZE +# - Defines the size of each bucket inside the 'more...' item +# i.e.: a bucket with size == 2 would show items such as: +# - [2:4] +# - [4:6] +# ... +# +# PYDEVD_CONTAINER_RANDOM_ACCESS_MAX_ITEMS +# - Defines the maximum number of items for dicts and sets. +# +PYDEVD_CONTAINER_INITIAL_EXPANDED_ITEMS = as_int_in_env( + "PYDEVD_CONTAINER_INITIAL_EXPANDED_ITEMS", 100 +) +PYDEVD_CONTAINER_BUCKET_SIZE = as_int_in_env("PYDEVD_CONTAINER_BUCKET_SIZE", 1000) +PYDEVD_CONTAINER_RANDOM_ACCESS_MAX_ITEMS = as_int_in_env( + "PYDEVD_CONTAINER_RANDOM_ACCESS_MAX_ITEMS", 500 +) +PYDEVD_CONTAINER_NUMPY_MAX_ITEMS = as_int_in_env( + "PYDEVD_CONTAINER_NUMPY_MAX_ITEMS", 500 +) + +PYDEVD_IPYTHON_COMPATIBLE_DEBUGGING = is_true_in_env( + "PYDEVD_IPYTHON_COMPATIBLE_DEBUGGING" +) + +# If specified in PYDEVD_IPYTHON_CONTEXT it must be a string with the basename +# and then the name of 2 methods in which the evaluate is done. +PYDEVD_IPYTHON_CONTEXT = ("interactiveshell.py", "run_code", "run_ast_nodes") +_ipython_ctx = os.getenv("PYDEVD_IPYTHON_CONTEXT") +if _ipython_ctx: + PYDEVD_IPYTHON_CONTEXT = tuple(x.strip() for x in _ipython_ctx.split(",")) + assert len(PYDEVD_IPYTHON_CONTEXT) == 3, "Invalid PYDEVD_IPYTHON_CONTEXT: %s" % ( + _ipython_ctx, + ) + +# Use to disable loading the lib to set tracing to all threads (default is using heuristics based on where we're running). +LOAD_NATIVE_LIB_FLAG = os.getenv("PYDEVD_LOAD_NATIVE_LIB", "").lower() + +LOG_TIME = os.getenv("PYDEVD_LOG_TIME", "true").lower() in ENV_TRUE_LOWER_VALUES + +SHOW_COMPILE_CYTHON_COMMAND_LINE = is_true_in_env( + "PYDEVD_SHOW_COMPILE_CYTHON_COMMAND_LINE" +) + +LOAD_VALUES_ASYNC = is_true_in_env("PYDEVD_LOAD_VALUES_ASYNC") +DEFAULT_VALUE = "__pydevd_value_async" +ASYNC_EVAL_TIMEOUT_SEC = 60 +NEXT_VALUE_SEPARATOR = "__pydev_val__" +BUILTINS_MODULE_NAME = "builtins" + +# Pandas customization. +PANDAS_MAX_ROWS = as_int_in_env("PYDEVD_PANDAS_MAX_ROWS", 60) +PANDAS_MAX_COLS = as_int_in_env("PYDEVD_PANDAS_MAX_COLS", 10) +PANDAS_MAX_COLWIDTH = as_int_in_env("PYDEVD_PANDAS_MAX_COLWIDTH", 50) + +# If getting an attribute or computing some value is too slow, let the user know if the given timeout elapses. +PYDEVD_WARN_SLOW_RESOLVE_TIMEOUT = as_float_in_env( + "PYDEVD_WARN_SLOW_RESOLVE_TIMEOUT", 0.50 +) + +# This timeout is used to track the time to send a message saying that the evaluation +# is taking too long and possible mitigations. +PYDEVD_WARN_EVALUATION_TIMEOUT = as_float_in_env("PYDEVD_WARN_EVALUATION_TIMEOUT", 3.0) + +# If True in env shows a thread dump when the evaluation times out. +PYDEVD_THREAD_DUMP_ON_WARN_EVALUATION_TIMEOUT = is_true_in_env( + "PYDEVD_THREAD_DUMP_ON_WARN_EVALUATION_TIMEOUT" +) + +# This timeout is used only when the mode that all threads are stopped/resumed at once is used +# (i.e.: multi_threads_single_notification) +# +# In this mode, if some evaluation doesn't finish until this timeout, we notify the user +# and then resume all threads until the evaluation finishes. +# +# A negative value will disable the timeout and a value of 0 will automatically run all threads +# (without any notification) when the evaluation is started and pause all threads when the +# evaluation is finished. A positive value will run run all threads after the timeout +# elapses. +PYDEVD_UNBLOCK_THREADS_TIMEOUT = as_float_in_env("PYDEVD_UNBLOCK_THREADS_TIMEOUT", -1.0) + +# Timeout to interrupt a thread (so, if some evaluation doesn't finish until this +# timeout, the thread doing the evaluation is interrupted). +# A value <= 0 means this is disabled. +# See: _pydevd_bundle.pydevd_timeout.create_interrupt_this_thread_callback for details +# on how the thread interruption works (there are some caveats related to it). +PYDEVD_INTERRUPT_THREAD_TIMEOUT = as_float_in_env("PYDEVD_INTERRUPT_THREAD_TIMEOUT", -1) + +# If PYDEVD_APPLY_PATCHING_TO_HIDE_PYDEVD_THREADS is set to False, the patching to hide pydevd threads won't be applied. +PYDEVD_APPLY_PATCHING_TO_HIDE_PYDEVD_THREADS = ( + os.getenv("PYDEVD_APPLY_PATCHING_TO_HIDE_PYDEVD_THREADS", "true").lower() + in ENV_TRUE_LOWER_VALUES +) + +EXCEPTION_TYPE_UNHANDLED = "UNHANDLED" +EXCEPTION_TYPE_USER_UNHANDLED = "USER_UNHANDLED" +EXCEPTION_TYPE_HANDLED = "HANDLED" + +SHOW_DEBUG_INFO_ENV = is_true_in_env(("PYCHARM_DEBUG", "PYDEV_DEBUG", "PYDEVD_DEBUG")) + +if SHOW_DEBUG_INFO_ENV: + # show debug info before the debugger start + DebugInfoHolder.DEBUG_TRACE_LEVEL = 3 + +DebugInfoHolder.PYDEVD_DEBUG_FILE = os.getenv("PYDEVD_DEBUG_FILE") + + +def protect_libraries_from_patching(): + """ + In this function we delete some modules from `sys.modules` dictionary and import them again inside + `_pydev_saved_modules` in order to save their original copies there. After that we can use these + saved modules within the debugger to protect them from patching by external libraries (e.g. gevent). + """ + patched = [ + "threading", + "thread", + "_thread", + "time", + "socket", + "queue", + "select", + "xmlrpclib", + "SimpleXMLRPCServer", + "BaseHTTPServer", + "SocketServer", + "xmlrpc.client", + "xmlrpc.server", + "http.server", + "socketserver", + ] + + for name in patched: + try: + __import__(name) + except: + pass + + patched_modules = dict([(k, v) for k, v in sys.modules.items() if k in patched]) + + for name in patched_modules: + del sys.modules[name] + + # import for side effects + + for name in patched_modules: + sys.modules[name] = patched_modules[name] + + +if USE_LIB_COPY: + protect_libraries_from_patching() + +from _pydev_bundle._pydev_saved_modules import thread, threading + +_fork_safe_locks = [] + +if IS_JYTHON: + + def ForkSafeLock(rlock=False): + if rlock: + return threading.RLock() + else: + return threading.Lock() + +else: + + class ForkSafeLock: + """ + A lock which is fork-safe (when a fork is done, `pydevd_constants.after_fork()` + should be called to reset the locks in the new process to avoid deadlocks + from a lock which was locked during the fork). + + Note: + Unlike `threading.Lock` this class is not completely atomic, so, doing: + + lock = ForkSafeLock() + with lock: + ... + + is different than using `threading.Lock` directly because the tracing may + find an additional function call on `__enter__` and on `__exit__`, so, it's + not recommended to use this in all places, only where the forking may be important + (so, for instance, the locks on PyDB should not be changed to this lock because + of that -- and those should all be collected in the new process because PyDB itself + should be completely cleared anyways). + + It's possible to overcome this limitation by using `ForkSafeLock.acquire` and + `ForkSafeLock.release` instead of the context manager (as acquire/release are + bound to the original implementation, whereas __enter__/__exit__ is not due to Python + limitations). + """ + + def __init__(self, rlock=False): + self._rlock = rlock + self._init() + _fork_safe_locks.append(weakref.ref(self)) + + def __enter__(self): + return self._lock.__enter__() + + def __exit__(self, exc_type, exc_val, exc_tb): + return self._lock.__exit__(exc_type, exc_val, exc_tb) + + def _init(self): + if self._rlock: + self._lock = threading.RLock() + else: + self._lock = thread.allocate_lock() + + self.acquire = self._lock.acquire + self.release = self._lock.release + _fork_safe_locks.append(weakref.ref(self)) + + +def after_fork(): + """ + Must be called after a fork operation (will reset the ForkSafeLock). + """ + global _fork_safe_locks + locks = _fork_safe_locks[:] + _fork_safe_locks = [] + for lock in locks: + lock = lock() + if lock is not None: + lock._init() + + +_thread_id_lock = ForkSafeLock() +thread_get_ident = thread.get_ident + + +def as_str(s): + assert isinstance(s, str) + return s + + +@contextmanager +def filter_all_warnings(): + with warnings.catch_warnings(): + warnings.filterwarnings("ignore") + yield + + +def silence_warnings_decorator(func): + @functools.wraps(func) + def new_func(*args, **kwargs): + with filter_all_warnings(): + return func(*args, **kwargs) + + return new_func + + +def sorted_dict_repr(d): + s = sorted(d.items(), key=lambda x: str(x[0])) + return "{" + ", ".join(("%r: %r" % x) for x in s) + "}" + + +def iter_chars(b): + # In Python 2, we can iterate bytes or str with individual characters, but Python 3 onwards + # changed that behavior so that when iterating bytes we actually get ints! + if isinstance(b, bytes): + # i.e.: do something as struct.unpack('3c', b) + return iter(struct.unpack(str(len(b)) + "c", b)) + return iter(b) + + +if IS_JYTHON or PYDEVD_USE_SYS_MONITORING: + + def NO_FTRACE(frame, event, arg): + return None + +else: + _curr_trace = sys.gettrace() + + # Set a temporary trace which does nothing for us to test (otherwise setting frame.f_trace has no + # effect). + def _temp_trace(frame, event, arg): + return None + + sys.settrace(_temp_trace) + + def _check_ftrace_set_none(): + """ + Will throw an error when executing a line event + """ + sys._getframe().f_trace = None + _line_event = 1 + _line_event = 2 + + try: + _check_ftrace_set_none() + + def NO_FTRACE(frame, event, arg): + frame.f_trace = None + return None + + except TypeError: + + def NO_FTRACE(frame, event, arg): + # In Python <= 2.6 and <= 3.4, if we're tracing a method, frame.f_trace may not be set + # to None, it must always be set to a tracing function. + # See: tests_python.test_tracing_gotchas.test_tracing_gotchas + # + # Note: Python 2.7 sometimes works and sometimes it doesn't depending on the minor + # version because of https://bugs.python.org/issue20041 (although bug reports didn't + # include the minor version, so, mark for any Python 2.7 as I'm not completely sure + # the fix in later 2.7 versions is the same one we're dealing with). + return None + + sys.settrace(_curr_trace) + + +# ======================================================================================================================= +# get_pid +# ======================================================================================================================= +def get_pid(): + try: + return os.getpid() + except AttributeError: + try: + # Jython does not have it! + import java.lang.management.ManagementFactory # @UnresolvedImport -- just for jython + + pid = java.lang.management.ManagementFactory.getRuntimeMXBean().getName() + return pid.replace("@", "_") + except: + # ok, no pid available (will be unable to debug multiple processes) + return "000001" + + +def clear_cached_thread_id(thread): + with _thread_id_lock: + try: + if thread.__pydevd_id__ != "console_main": + # The console_main is a special thread id used in the console and its id should never be reset + # (otherwise we may no longer be able to get its variables -- see: https://www.brainwy.com/tracker/PyDev/776). + del thread.__pydevd_id__ + except AttributeError: + pass + + +# Don't let threads be collected (so that id(thread) is guaranteed to be unique). +_thread_id_to_thread_found = {} + + +def _get_or_compute_thread_id_with_lock(thread, is_current_thread): + with _thread_id_lock: + # We do a new check with the lock in place just to be sure that nothing changed + tid = getattr(thread, "__pydevd_id__", None) + if tid is not None: + return tid + + _thread_id_to_thread_found[id(thread)] = thread + + # Note: don't use thread.ident because a new thread may have the + # same id from an old thread. + pid = get_pid() + tid = "pid_%s_id_%s" % (pid, id(thread)) + + thread.__pydevd_id__ = tid + + return tid + + +def get_current_thread_id(thread): + """ + Note: the difference from get_current_thread_id to get_thread_id is that + for the current thread we can get the thread id while the thread.ident + is still not set in the Thread instance. + """ + try: + # Fast path without getting lock. + tid = thread.__pydevd_id__ + if tid is None: + # Fix for https://www.brainwy.com/tracker/PyDev/645 + # if __pydevd_id__ is None, recalculate it... also, use an heuristic + # that gives us always the same id for the thread (using thread.ident or id(thread)). + raise AttributeError() + except AttributeError: + tid = _get_or_compute_thread_id_with_lock(thread, is_current_thread=True) + + return tid + + +def get_thread_id(thread): + try: + # Fast path without getting lock. + tid = thread.__pydevd_id__ + if tid is None: + # Fix for https://www.brainwy.com/tracker/PyDev/645 + # if __pydevd_id__ is None, recalculate it... also, use an heuristic + # that gives us always the same id for the thread (using thread.ident or id(thread)). + raise AttributeError() + except AttributeError: + tid = _get_or_compute_thread_id_with_lock(thread, is_current_thread=False) + + return tid + + +def set_thread_id(thread, thread_id): + with _thread_id_lock: + thread.__pydevd_id__ = thread_id + + +# ======================================================================================================================= +# Null +# ======================================================================================================================= +class Null: + """ + Gotten from: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/68205 + """ + + def __init__(self, *args, **kwargs): + return None + + def __call__(self, *args, **kwargs): + return self + + def __enter__(self, *args, **kwargs): + return self + + def __exit__(self, *args, **kwargs): + return self + + def __getattr__(self, mname): + if len(mname) > 4 and mname[:2] == "__" and mname[-2:] == "__": + # Don't pretend to implement special method names. + raise AttributeError(mname) + return self + + def __setattr__(self, name, value): + return self + + def __delattr__(self, name): + return self + + def __repr__(self): + return "" + + def __str__(self): + return "Null" + + def __len__(self): + return 0 + + def __getitem__(self): + return self + + def __setitem__(self, *args, **kwargs): + pass + + def write(self, *args, **kwargs): + pass + + def __nonzero__(self): + return 0 + + def __iter__(self): + return iter(()) + + +# Default instance +NULL = Null() + + +class KeyifyList: + def __init__(self, inner, key): + self.inner = inner + self.key = key + + def __len__(self): + return len(self.inner) + + def __getitem__(self, k): + return self.key(self.inner[k]) + + +def call_only_once(func): + """ + To be used as a decorator + + @call_only_once + def func(): + print 'Calling func only this time' + + Actually, in PyDev it must be called as: + + func = call_only_once(func) to support older versions of Python. + """ + + def new_func(*args, **kwargs): + if not new_func._called: + new_func._called = True + return func(*args, **kwargs) + + new_func._called = False + return new_func + + +# Protocol where each line is a new message (text is quoted to prevent new lines). +# payload is xml +QUOTED_LINE_PROTOCOL = "quoted-line" +ARGUMENT_QUOTED_LINE_PROTOCOL = "protocol-quoted-line" + +# Uses http protocol to provide a new message. +# i.e.: Content-Length:xxx\r\n\r\npayload +# payload is xml +HTTP_PROTOCOL = "http" +ARGUMENT_HTTP_PROTOCOL = "protocol-http" + +# Message is sent without any header. +# payload is json +JSON_PROTOCOL = "json" +ARGUMENT_JSON_PROTOCOL = "json-dap" + +# Same header as the HTTP_PROTOCOL +# payload is json +HTTP_JSON_PROTOCOL = "http_json" +ARGUMENT_HTTP_JSON_PROTOCOL = "json-dap-http" + +ARGUMENT_PPID = "ppid" + + +class _GlobalSettings: + protocol = QUOTED_LINE_PROTOCOL + + +def set_protocol(protocol): + expected = (HTTP_PROTOCOL, QUOTED_LINE_PROTOCOL, JSON_PROTOCOL, HTTP_JSON_PROTOCOL) + assert protocol in expected, "Protocol (%s) should be one of: %s" % ( + protocol, + expected, + ) + + _GlobalSettings.protocol = protocol + + +def get_protocol(): + return _GlobalSettings.protocol + + +def is_json_protocol(): + return _GlobalSettings.protocol in (JSON_PROTOCOL, HTTP_JSON_PROTOCOL) + + +class GlobalDebuggerHolder: + """ + Holder for the global debugger. + """ + + global_dbg = None # Note: don't rename (the name is used in our attach to process) + + +def get_global_debugger(): + return GlobalDebuggerHolder.global_dbg + + +GetGlobalDebugger = get_global_debugger # Backward-compatibility + + +def set_global_debugger(dbg): + GlobalDebuggerHolder.global_dbg = dbg + + +if __name__ == "__main__": + if Null(): + sys.stdout.write("here\n") diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_custom_frames.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_custom_frames.py new file mode 100644 index 000000000..e617f6f09 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_custom_frames.py @@ -0,0 +1,127 @@ +import sys + +from _pydev_bundle import pydev_log +from _pydev_bundle._pydev_saved_modules import threading +from pydevd_file_utils import get_abs_path_real_path_and_base_from_frame + +from _pydevd_bundle.pydevd_constants import ForkSafeLock, Null, get_current_thread_id + +DEBUG = False + + +class CustomFramesContainer: + # Actual Values initialized later on. + custom_frames_lock = None # : :type custom_frames_lock: threading.Lock + + custom_frames = None + + _next_frame_id = None + + _py_db_command_thread_event = None + + +def custom_frames_container_init(): # Note: no staticmethod on jython 2.1 (so, use free-function) + CustomFramesContainer.custom_frames_lock = ForkSafeLock() + + # custom_frames can only be accessed if properly locked with custom_frames_lock! + # Key is a string identifying the frame (as well as the thread it belongs to). + # Value is a CustomFrame. + # + CustomFramesContainer.custom_frames = {} + + # Only to be used in this module + CustomFramesContainer._next_frame_id = 0 + + # This is the event we must set to release an internal process events. It's later set by the actual debugger + # when we do create the debugger. + CustomFramesContainer._py_db_command_thread_event = Null() + + +# Initialize it the first time (it may be reinitialized later on when dealing with a fork). +custom_frames_container_init() + + +class CustomFrame: + def __init__(self, name, frame, thread_id): + # 0 = string with the representation of that frame + self.name = name + + # 1 = the frame to show + self.frame = frame + + # 2 = an integer identifying the last time the frame was changed. + self.mod_time = 0 + + # 3 = the thread id of the given frame + self.thread_id = thread_id + + +def add_custom_frame(frame, name, thread_id): + """ + It's possible to show paused frames by adding a custom frame through this API (it's + intended to be used for coroutines, but could potentially be used for generators too). + + :param frame: + The topmost frame to be shown paused when a thread with thread.ident == thread_id is paused. + + :param name: + The name to be shown for the custom thread in the UI. + + :param thread_id: + The thread id to which this frame is related (must match thread.ident). + + :return: str + Returns the custom thread id which will be used to show the given frame paused. + """ + with CustomFramesContainer.custom_frames_lock: + curr_thread_id = get_current_thread_id(threading.current_thread()) + next_id = CustomFramesContainer._next_frame_id = ( + CustomFramesContainer._next_frame_id + 1 + ) + + # Note: the frame id kept contains an id and thread information on the thread where the frame was added + # so that later on we can check if the frame is from the current thread by doing frame_id.endswith('|'+thread_id). + frame_custom_thread_id = "__frame__:%s|%s" % (next_id, curr_thread_id) + if DEBUG: + sys.stderr.write( + "add_custom_frame: %s (%s) %s %s\n" + % ( + frame_custom_thread_id, + get_abs_path_real_path_and_base_from_frame(frame)[-1], + frame.f_lineno, + frame.f_code.co_name, + ) + ) + + CustomFramesContainer.custom_frames[frame_custom_thread_id] = CustomFrame( + name, frame, thread_id + ) + CustomFramesContainer._py_db_command_thread_event.set() + return frame_custom_thread_id + + +def update_custom_frame(frame_custom_thread_id, frame, thread_id, name=None): + with CustomFramesContainer.custom_frames_lock: + if DEBUG: + sys.stderr.write("update_custom_frame: %s\n" % frame_custom_thread_id) + try: + old = CustomFramesContainer.custom_frames[frame_custom_thread_id] + if name is not None: + old.name = name + old.mod_time += 1 + old.thread_id = thread_id + except: + sys.stderr.write( + "Unable to get frame to replace: %s\n" % (frame_custom_thread_id,) + ) + pydev_log.exception() + + CustomFramesContainer._py_db_command_thread_event.set() + + +def remove_custom_frame(frame_custom_thread_id): + with CustomFramesContainer.custom_frames_lock: + if DEBUG: + sys.stderr.write("remove_custom_frame: %s\n" % frame_custom_thread_id) + CustomFramesContainer.custom_frames.pop(frame_custom_thread_id, None) + CustomFramesContainer._py_db_command_thread_event.set() diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.c b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.c new file mode 100644 index 000000000..347df47d3 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.c @@ -0,0 +1,55535 @@ +/* Generated by Cython 3.0.11 */ + +/* BEGIN: Cython Metadata +{ + "distutils": { + "depends": [], + "name": "_pydevd_bundle.pydevd_cython", + "sources": [ + "_pydevd_bundle/pydevd_cython.pyx" + ] + }, + "module_name": "_pydevd_bundle.pydevd_cython" +} +END: Cython Metadata */ + +#ifndef PY_SSIZE_T_CLEAN +#define PY_SSIZE_T_CLEAN +#endif /* PY_SSIZE_T_CLEAN */ +#if defined(CYTHON_LIMITED_API) && 0 + #ifndef Py_LIMITED_API + #if CYTHON_LIMITED_API+0 > 0x03030000 + #define Py_LIMITED_API CYTHON_LIMITED_API + #else + #define Py_LIMITED_API 0x03030000 + #endif + #endif +#endif + +#include "Python.h" +#if PY_VERSION_HEX >= 0x03090000 +#include "internal/pycore_gc.h" +#include "internal/pycore_interp.h" +#endif + +#ifndef Py_PYTHON_H + #error Python headers needed to compile C extensions, please install development version of Python. +#elif PY_VERSION_HEX < 0x02070000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) + #error Cython requires Python 2.7+ or Python 3.3+. +#else +#if defined(CYTHON_LIMITED_API) && CYTHON_LIMITED_API +#define __PYX_EXTRA_ABI_MODULE_NAME "limited" +#else +#define __PYX_EXTRA_ABI_MODULE_NAME "" +#endif +#define CYTHON_ABI "3_0_11" __PYX_EXTRA_ABI_MODULE_NAME +#define __PYX_ABI_MODULE_NAME "_cython_" CYTHON_ABI +#define __PYX_TYPE_MODULE_PREFIX __PYX_ABI_MODULE_NAME "." +#define CYTHON_HEX_VERSION 0x03000BF0 +#define CYTHON_FUTURE_DIVISION 1 +#include +#ifndef offsetof + #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) +#endif +#if !defined(_WIN32) && !defined(WIN32) && !defined(MS_WINDOWS) + #ifndef __stdcall + #define __stdcall + #endif + #ifndef __cdecl + #define __cdecl + #endif + #ifndef __fastcall + #define __fastcall + #endif +#endif +#ifndef DL_IMPORT + #define DL_IMPORT(t) t +#endif +#ifndef DL_EXPORT + #define DL_EXPORT(t) t +#endif +#define __PYX_COMMA , +#ifndef HAVE_LONG_LONG + #define HAVE_LONG_LONG +#endif +#ifndef PY_LONG_LONG + #define PY_LONG_LONG LONG_LONG +#endif +#ifndef Py_HUGE_VAL + #define Py_HUGE_VAL HUGE_VAL +#endif +#define __PYX_LIMITED_VERSION_HEX PY_VERSION_HEX +#if defined(GRAALVM_PYTHON) + /* For very preliminary testing purposes. Most variables are set the same as PyPy. + The existence of this section does not imply that anything works or is even tested */ + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 1 + #define CYTHON_COMPILING_IN_NOGIL 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #undef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #if PY_VERSION_HEX < 0x03050000 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #undef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 1 + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3) + #endif + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #undef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 + #endif + #undef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 +#elif defined(PYPY_VERSION) + #define CYTHON_COMPILING_IN_PYPY 1 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #ifndef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #endif + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #if PY_VERSION_HEX < 0x03050000 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #undef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 1 + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3) + #endif + #if PY_VERSION_HEX < 0x03090000 + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT) + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #undef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1 && PYPY_VERSION_NUM >= 0x07030C00) + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 + #endif + #undef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 +#elif defined(CYTHON_LIMITED_API) + #ifdef Py_LIMITED_API + #undef __PYX_LIMITED_VERSION_HEX + #define __PYX_LIMITED_VERSION_HEX Py_LIMITED_API + #endif + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 1 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 0 + #undef CYTHON_CLINE_IN_TRACEBACK + #define CYTHON_CLINE_IN_TRACEBACK 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #undef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 1 + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #ifndef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #endif + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #undef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 1 + #ifndef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #endif + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 + #endif + #undef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 +#elif defined(Py_GIL_DISABLED) || defined(Py_NOGIL) + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 1 + #ifndef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #endif + #ifndef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #endif + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #ifndef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #ifndef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #endif + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #ifndef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 1 + #endif + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #ifndef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 1 + #endif + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #ifndef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #ifndef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #endif + #ifndef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 1 + #endif + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 1 + #endif + #ifndef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 + #endif +#else + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 1 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 0 + #ifndef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #endif + #ifndef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #endif + #ifndef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 1 + #endif + #if PY_MAJOR_VERSION < 3 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #ifndef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 1 + #endif + #ifndef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 1 + #endif + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif + #if PY_VERSION_HEX < 0x030300F0 || PY_VERSION_HEX >= 0x030B00A2 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #elif !defined(CYTHON_USE_UNICODE_WRITER) + #define CYTHON_USE_UNICODE_WRITER 1 + #endif + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #ifndef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 1 + #endif + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif + #ifndef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 1 + #endif + #ifndef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL (PY_MAJOR_VERSION < 3 || PY_VERSION_HEX >= 0x03060000 && PY_VERSION_HEX < 0x030C00A6) + #endif + #ifndef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL (PY_VERSION_HEX >= 0x030700A1) + #endif + #ifndef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 1 + #endif + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #if PY_VERSION_HEX < 0x03050000 + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT) + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #ifndef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #endif + #if PY_VERSION_HEX < 0x030400a1 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #elif !defined(CYTHON_USE_TP_FINALIZE) + #define CYTHON_USE_TP_FINALIZE 1 + #endif + #if PY_VERSION_HEX < 0x030600B1 + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #elif !defined(CYTHON_USE_DICT_VERSIONS) + #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX < 0x030C00A5) + #endif + #if PY_VERSION_HEX < 0x030700A3 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #elif !defined(CYTHON_USE_EXC_INFO_STACK) + #define CYTHON_USE_EXC_INFO_STACK 1 + #endif + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 1 + #endif + #ifndef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 1 + #endif +#endif +#if !defined(CYTHON_FAST_PYCCALL) +#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) +#endif +#if !defined(CYTHON_VECTORCALL) +#define CYTHON_VECTORCALL (CYTHON_FAST_PYCCALL && PY_VERSION_HEX >= 0x030800B1) +#endif +#define CYTHON_BACKPORT_VECTORCALL (CYTHON_METH_FASTCALL && PY_VERSION_HEX < 0x030800B1) +#if CYTHON_USE_PYLONG_INTERNALS + #if PY_MAJOR_VERSION < 3 + #include "longintrepr.h" + #endif + #undef SHIFT + #undef BASE + #undef MASK + #ifdef SIZEOF_VOID_P + enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) }; + #endif +#endif +#ifndef __has_attribute + #define __has_attribute(x) 0 +#endif +#ifndef __has_cpp_attribute + #define __has_cpp_attribute(x) 0 +#endif +#ifndef CYTHON_RESTRICT + #if defined(__GNUC__) + #define CYTHON_RESTRICT __restrict__ + #elif defined(_MSC_VER) && _MSC_VER >= 1400 + #define CYTHON_RESTRICT __restrict + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_RESTRICT restrict + #else + #define CYTHON_RESTRICT + #endif +#endif +#ifndef CYTHON_UNUSED + #if defined(__cplusplus) + /* for clang __has_cpp_attribute(maybe_unused) is true even before C++17 + * but leads to warnings with -pedantic, since it is a C++17 feature */ + #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L) + #if __has_cpp_attribute(maybe_unused) + #define CYTHON_UNUSED [[maybe_unused]] + #endif + #endif + #endif +#endif +#ifndef CYTHON_UNUSED +# if defined(__GNUC__) +# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +#endif +#ifndef CYTHON_UNUSED_VAR +# if defined(__cplusplus) + template void CYTHON_UNUSED_VAR( const T& ) { } +# else +# define CYTHON_UNUSED_VAR(x) (void)(x) +# endif +#endif +#ifndef CYTHON_MAYBE_UNUSED_VAR + #define CYTHON_MAYBE_UNUSED_VAR(x) CYTHON_UNUSED_VAR(x) +#endif +#ifndef CYTHON_NCP_UNUSED +# if CYTHON_COMPILING_IN_CPYTHON +# define CYTHON_NCP_UNUSED +# else +# define CYTHON_NCP_UNUSED CYTHON_UNUSED +# endif +#endif +#ifndef CYTHON_USE_CPP_STD_MOVE + #if defined(__cplusplus) && (\ + __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1600)) + #define CYTHON_USE_CPP_STD_MOVE 1 + #else + #define CYTHON_USE_CPP_STD_MOVE 0 + #endif +#endif +#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) +#ifdef _MSC_VER + #ifndef _MSC_STDINT_H_ + #if _MSC_VER < 1300 + typedef unsigned char uint8_t; + typedef unsigned short uint16_t; + typedef unsigned int uint32_t; + #else + typedef unsigned __int8 uint8_t; + typedef unsigned __int16 uint16_t; + typedef unsigned __int32 uint32_t; + #endif + #endif + #if _MSC_VER < 1300 + #ifdef _WIN64 + typedef unsigned long long __pyx_uintptr_t; + #else + typedef unsigned int __pyx_uintptr_t; + #endif + #else + #ifdef _WIN64 + typedef unsigned __int64 __pyx_uintptr_t; + #else + typedef unsigned __int32 __pyx_uintptr_t; + #endif + #endif +#else + #include + typedef uintptr_t __pyx_uintptr_t; +#endif +#ifndef CYTHON_FALLTHROUGH + #if defined(__cplusplus) + /* for clang __has_cpp_attribute(fallthrough) is true even before C++17 + * but leads to warnings with -pedantic, since it is a C++17 feature */ + #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L) + #if __has_cpp_attribute(fallthrough) + #define CYTHON_FALLTHROUGH [[fallthrough]] + #endif + #endif + #ifndef CYTHON_FALLTHROUGH + #if __has_cpp_attribute(clang::fallthrough) + #define CYTHON_FALLTHROUGH [[clang::fallthrough]] + #elif __has_cpp_attribute(gnu::fallthrough) + #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] + #endif + #endif + #endif + #ifndef CYTHON_FALLTHROUGH + #if __has_attribute(fallthrough) + #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) + #else + #define CYTHON_FALLTHROUGH + #endif + #endif + #if defined(__clang__) && defined(__apple_build_version__) + #if __apple_build_version__ < 7000000 + #undef CYTHON_FALLTHROUGH + #define CYTHON_FALLTHROUGH + #endif + #endif +#endif +#ifdef __cplusplus + template + struct __PYX_IS_UNSIGNED_IMPL {static const bool value = T(0) < T(-1);}; + #define __PYX_IS_UNSIGNED(type) (__PYX_IS_UNSIGNED_IMPL::value) +#else + #define __PYX_IS_UNSIGNED(type) (((type)-1) > 0) +#endif +#if CYTHON_COMPILING_IN_PYPY == 1 + #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x030A0000) +#else + #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000) +#endif +#define __PYX_REINTERPRET_FUNCION(func_pointer, other_pointer) ((func_pointer)(void(*)(void))(other_pointer)) + +#ifndef CYTHON_INLINE + #if defined(__clang__) + #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) + #elif defined(__GNUC__) + #define CYTHON_INLINE __inline__ + #elif defined(_MSC_VER) + #define CYTHON_INLINE __inline + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_INLINE inline + #else + #define CYTHON_INLINE + #endif +#endif + +#define __PYX_BUILD_PY_SSIZE_T "n" +#define CYTHON_FORMAT_SSIZE_T "z" +#if PY_MAJOR_VERSION < 3 + #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" + #define __Pyx_DefaultClassType PyClass_Type + #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#else + #define __Pyx_BUILTIN_MODULE_NAME "builtins" + #define __Pyx_DefaultClassType PyType_Type +#if CYTHON_COMPILING_IN_LIMITED_API + static CYTHON_INLINE PyObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f, + PyObject *code, PyObject *c, PyObject* n, PyObject *v, + PyObject *fv, PyObject *cell, PyObject* fn, + PyObject *name, int fline, PyObject *lnos) { + PyObject *exception_table = NULL; + PyObject *types_module=NULL, *code_type=NULL, *result=NULL; + #if __PYX_LIMITED_VERSION_HEX < 0x030B0000 + PyObject *version_info; + PyObject *py_minor_version = NULL; + #endif + long minor_version = 0; + PyObject *type, *value, *traceback; + PyErr_Fetch(&type, &value, &traceback); + #if __PYX_LIMITED_VERSION_HEX >= 0x030B0000 + minor_version = 11; + #else + if (!(version_info = PySys_GetObject("version_info"))) goto end; + if (!(py_minor_version = PySequence_GetItem(version_info, 1))) goto end; + minor_version = PyLong_AsLong(py_minor_version); + Py_DECREF(py_minor_version); + if (minor_version == -1 && PyErr_Occurred()) goto end; + #endif + if (!(types_module = PyImport_ImportModule("types"))) goto end; + if (!(code_type = PyObject_GetAttrString(types_module, "CodeType"))) goto end; + if (minor_version <= 7) { + (void)p; + result = PyObject_CallFunction(code_type, "iiiiiOOOOOOiOO", a, k, l, s, f, code, + c, n, v, fn, name, fline, lnos, fv, cell); + } else if (minor_version <= 10) { + result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOiOO", a,p, k, l, s, f, code, + c, n, v, fn, name, fline, lnos, fv, cell); + } else { + if (!(exception_table = PyBytes_FromStringAndSize(NULL, 0))) goto end; + result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOOiOO", a,p, k, l, s, f, code, + c, n, v, fn, name, name, fline, lnos, exception_table, fv, cell); + } + end: + Py_XDECREF(code_type); + Py_XDECREF(exception_table); + Py_XDECREF(types_module); + if (type) { + PyErr_Restore(type, value, traceback); + } + return result; + } + #ifndef CO_OPTIMIZED + #define CO_OPTIMIZED 0x0001 + #endif + #ifndef CO_NEWLOCALS + #define CO_NEWLOCALS 0x0002 + #endif + #ifndef CO_VARARGS + #define CO_VARARGS 0x0004 + #endif + #ifndef CO_VARKEYWORDS + #define CO_VARKEYWORDS 0x0008 + #endif + #ifndef CO_ASYNC_GENERATOR + #define CO_ASYNC_GENERATOR 0x0200 + #endif + #ifndef CO_GENERATOR + #define CO_GENERATOR 0x0020 + #endif + #ifndef CO_COROUTINE + #define CO_COROUTINE 0x0080 + #endif +#elif PY_VERSION_HEX >= 0x030B0000 + static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f, + PyObject *code, PyObject *c, PyObject* n, PyObject *v, + PyObject *fv, PyObject *cell, PyObject* fn, + PyObject *name, int fline, PyObject *lnos) { + PyCodeObject *result; + PyObject *empty_bytes = PyBytes_FromStringAndSize("", 0); + if (!empty_bytes) return NULL; + result = + #if PY_VERSION_HEX >= 0x030C0000 + PyUnstable_Code_NewWithPosOnlyArgs + #else + PyCode_NewWithPosOnlyArgs + #endif + (a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, name, fline, lnos, empty_bytes); + Py_DECREF(empty_bytes); + return result; + } +#elif PY_VERSION_HEX >= 0x030800B2 && !CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_NewWithPosOnlyArgs(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#else + #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#endif +#endif +#if PY_VERSION_HEX >= 0x030900A4 || defined(Py_IS_TYPE) + #define __Pyx_IS_TYPE(ob, type) Py_IS_TYPE(ob, type) +#else + #define __Pyx_IS_TYPE(ob, type) (((const PyObject*)ob)->ob_type == (type)) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_Is) + #define __Pyx_Py_Is(x, y) Py_Is(x, y) +#else + #define __Pyx_Py_Is(x, y) ((x) == (y)) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsNone) + #define __Pyx_Py_IsNone(ob) Py_IsNone(ob) +#else + #define __Pyx_Py_IsNone(ob) __Pyx_Py_Is((ob), Py_None) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsTrue) + #define __Pyx_Py_IsTrue(ob) Py_IsTrue(ob) +#else + #define __Pyx_Py_IsTrue(ob) __Pyx_Py_Is((ob), Py_True) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsFalse) + #define __Pyx_Py_IsFalse(ob) Py_IsFalse(ob) +#else + #define __Pyx_Py_IsFalse(ob) __Pyx_Py_Is((ob), Py_False) +#endif +#define __Pyx_NoneAsNull(obj) (__Pyx_Py_IsNone(obj) ? NULL : (obj)) +#if PY_VERSION_HEX >= 0x030900F0 && !CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyObject_GC_IsFinalized(o) PyObject_GC_IsFinalized(o) +#else + #define __Pyx_PyObject_GC_IsFinalized(o) _PyGC_FINALIZED(o) +#endif +#ifndef CO_COROUTINE + #define CO_COROUTINE 0x80 +#endif +#ifndef CO_ASYNC_GENERATOR + #define CO_ASYNC_GENERATOR 0x200 +#endif +#ifndef Py_TPFLAGS_CHECKTYPES + #define Py_TPFLAGS_CHECKTYPES 0 +#endif +#ifndef Py_TPFLAGS_HAVE_INDEX + #define Py_TPFLAGS_HAVE_INDEX 0 +#endif +#ifndef Py_TPFLAGS_HAVE_NEWBUFFER + #define Py_TPFLAGS_HAVE_NEWBUFFER 0 +#endif +#ifndef Py_TPFLAGS_HAVE_FINALIZE + #define Py_TPFLAGS_HAVE_FINALIZE 0 +#endif +#ifndef Py_TPFLAGS_SEQUENCE + #define Py_TPFLAGS_SEQUENCE 0 +#endif +#ifndef Py_TPFLAGS_MAPPING + #define Py_TPFLAGS_MAPPING 0 +#endif +#ifndef METH_STACKLESS + #define METH_STACKLESS 0 +#endif +#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL) + #ifndef METH_FASTCALL + #define METH_FASTCALL 0x80 + #endif + typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); + typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, + Py_ssize_t nargs, PyObject *kwnames); +#else + #if PY_VERSION_HEX >= 0x030d00A4 + # define __Pyx_PyCFunctionFast PyCFunctionFast + # define __Pyx_PyCFunctionFastWithKeywords PyCFunctionFastWithKeywords + #else + # define __Pyx_PyCFunctionFast _PyCFunctionFast + # define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords + #endif +#endif +#if CYTHON_METH_FASTCALL + #define __Pyx_METH_FASTCALL METH_FASTCALL + #define __Pyx_PyCFunction_FastCall __Pyx_PyCFunctionFast + #define __Pyx_PyCFunction_FastCallWithKeywords __Pyx_PyCFunctionFastWithKeywords +#else + #define __Pyx_METH_FASTCALL METH_VARARGS + #define __Pyx_PyCFunction_FastCall PyCFunction + #define __Pyx_PyCFunction_FastCallWithKeywords PyCFunctionWithKeywords +#endif +#if CYTHON_VECTORCALL + #define __pyx_vectorcallfunc vectorcallfunc + #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET PY_VECTORCALL_ARGUMENTS_OFFSET + #define __Pyx_PyVectorcall_NARGS(n) PyVectorcall_NARGS((size_t)(n)) +#elif CYTHON_BACKPORT_VECTORCALL + typedef PyObject *(*__pyx_vectorcallfunc)(PyObject *callable, PyObject *const *args, + size_t nargsf, PyObject *kwnames); + #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET ((size_t)1 << (8 * sizeof(size_t) - 1)) + #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(((size_t)(n)) & ~__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)) +#else + #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET 0 + #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(n)) +#endif +#if PY_MAJOR_VERSION >= 0x030900B1 +#define __Pyx_PyCFunction_CheckExact(func) PyCFunction_CheckExact(func) +#else +#define __Pyx_PyCFunction_CheckExact(func) PyCFunction_Check(func) +#endif +#define __Pyx_CyOrPyCFunction_Check(func) PyCFunction_Check(func) +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) (((PyCFunctionObject*)(func))->m_ml->ml_meth) +#elif !CYTHON_COMPILING_IN_LIMITED_API +#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) PyCFunction_GET_FUNCTION(func) +#endif +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_CyOrPyCFunction_GET_FLAGS(func) (((PyCFunctionObject*)(func))->m_ml->ml_flags) +static CYTHON_INLINE PyObject* __Pyx_CyOrPyCFunction_GET_SELF(PyObject *func) { + return (__Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_STATIC) ? NULL : ((PyCFunctionObject*)func)->m_self; +} +#endif +static CYTHON_INLINE int __Pyx__IsSameCFunction(PyObject *func, void *cfunc) { +#if CYTHON_COMPILING_IN_LIMITED_API + return PyCFunction_Check(func) && PyCFunction_GetFunction(func) == (PyCFunction) cfunc; +#else + return PyCFunction_Check(func) && PyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc; +#endif +} +#define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCFunction(func, cfunc) +#if __PYX_LIMITED_VERSION_HEX < 0x030900B1 + #define __Pyx_PyType_FromModuleAndSpec(m, s, b) ((void)m, PyType_FromSpecWithBases(s, b)) + typedef PyObject *(*__Pyx_PyCMethod)(PyObject *, PyTypeObject *, PyObject *const *, size_t, PyObject *); +#else + #define __Pyx_PyType_FromModuleAndSpec(m, s, b) PyType_FromModuleAndSpec(m, s, b) + #define __Pyx_PyCMethod PyCMethod +#endif +#ifndef METH_METHOD + #define METH_METHOD 0x200 +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) + #define PyObject_Malloc(s) PyMem_Malloc(s) + #define PyObject_Free(p) PyMem_Free(p) + #define PyObject_Realloc(p) PyMem_Realloc(p) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) +#else + #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyThreadState_Current PyThreadState_Get() +#elif !CYTHON_FAST_THREAD_STATE + #define __Pyx_PyThreadState_Current PyThreadState_GET() +#elif PY_VERSION_HEX >= 0x030d00A1 + #define __Pyx_PyThreadState_Current PyThreadState_GetUnchecked() +#elif PY_VERSION_HEX >= 0x03060000 + #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() +#elif PY_VERSION_HEX >= 0x03000000 + #define __Pyx_PyThreadState_Current PyThreadState_GET() +#else + #define __Pyx_PyThreadState_Current _PyThreadState_Current +#endif +#if CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_INLINE void *__Pyx_PyModule_GetState(PyObject *op) +{ + void *result; + result = PyModule_GetState(op); + if (!result) + Py_FatalError("Couldn't find the module state"); + return result; +} +#endif +#define __Pyx_PyObject_GetSlot(obj, name, func_ctype) __Pyx_PyType_GetSlot(Py_TYPE(obj), name, func_ctype) +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((func_ctype) PyType_GetSlot((type), Py_##name)) +#else + #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((type)->name) +#endif +#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT) +#include "pythread.h" +#define Py_tss_NEEDS_INIT 0 +typedef int Py_tss_t; +static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { + *key = PyThread_create_key(); + return 0; +} +static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) { + Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t)); + *key = Py_tss_NEEDS_INIT; + return key; +} +static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) { + PyObject_Free(key); +} +static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) { + return *key != Py_tss_NEEDS_INIT; +} +static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) { + PyThread_delete_key(*key); + *key = Py_tss_NEEDS_INIT; +} +static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { + return PyThread_set_key_value(*key, value); +} +static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { + return PyThread_get_key_value(*key); +} +#endif +#if PY_MAJOR_VERSION < 3 + #if CYTHON_COMPILING_IN_PYPY + #if PYPY_VERSION_NUM < 0x07030600 + #if defined(__cplusplus) && __cplusplus >= 201402L + [[deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")]] + #elif defined(__GNUC__) || defined(__clang__) + __attribute__ ((__deprecated__("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6"))) + #elif defined(_MSC_VER) + __declspec(deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")) + #endif + static CYTHON_INLINE int PyGILState_Check(void) { + return 0; + } + #else // PYPY_VERSION_NUM < 0x07030600 + #endif // PYPY_VERSION_NUM < 0x07030600 + #else + static CYTHON_INLINE int PyGILState_Check(void) { + PyThreadState * tstate = _PyThreadState_Current; + return tstate && (tstate == PyGILState_GetThisThreadState()); + } + #endif +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030d0000 || defined(_PyDict_NewPresized) +#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) +#else +#define __Pyx_PyDict_NewPresized(n) PyDict_New() +#endif +#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION + #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) + #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) +#else + #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) + #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX > 0x030600B4 && PY_VERSION_HEX < 0x030d0000 && CYTHON_USE_UNICODE_INTERNALS +#define __Pyx_PyDict_GetItemStrWithError(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) +static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStr(PyObject *dict, PyObject *name) { + PyObject *res = __Pyx_PyDict_GetItemStrWithError(dict, name); + if (res == NULL) PyErr_Clear(); + return res; +} +#elif PY_MAJOR_VERSION >= 3 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07020000) +#define __Pyx_PyDict_GetItemStrWithError PyDict_GetItemWithError +#define __Pyx_PyDict_GetItemStr PyDict_GetItem +#else +static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStrWithError(PyObject *dict, PyObject *name) { +#if CYTHON_COMPILING_IN_PYPY + return PyDict_GetItem(dict, name); +#else + PyDictEntry *ep; + PyDictObject *mp = (PyDictObject*) dict; + long hash = ((PyStringObject *) name)->ob_shash; + assert(hash != -1); + ep = (mp->ma_lookup)(mp, name, hash); + if (ep == NULL) { + return NULL; + } + return ep->me_value; +#endif +} +#define __Pyx_PyDict_GetItemStr PyDict_GetItem +#endif +#if CYTHON_USE_TYPE_SLOTS + #define __Pyx_PyType_GetFlags(tp) (((PyTypeObject *)tp)->tp_flags) + #define __Pyx_PyType_HasFeature(type, feature) ((__Pyx_PyType_GetFlags(type) & (feature)) != 0) + #define __Pyx_PyObject_GetIterNextFunc(obj) (Py_TYPE(obj)->tp_iternext) +#else + #define __Pyx_PyType_GetFlags(tp) (PyType_GetFlags((PyTypeObject *)tp)) + #define __Pyx_PyType_HasFeature(type, feature) PyType_HasFeature(type, feature) + #define __Pyx_PyObject_GetIterNextFunc(obj) PyIter_Next +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_SetItemOnTypeDict(tp, k, v) PyObject_GenericSetAttr((PyObject*)tp, k, v) +#else + #define __Pyx_SetItemOnTypeDict(tp, k, v) PyDict_SetItem(tp->tp_dict, k, v) +#endif +#if CYTHON_USE_TYPE_SPECS && PY_VERSION_HEX >= 0x03080000 +#define __Pyx_PyHeapTypeObject_GC_Del(obj) {\ + PyTypeObject *type = Py_TYPE((PyObject*)obj);\ + assert(__Pyx_PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE));\ + PyObject_GC_Del(obj);\ + Py_DECREF(type);\ +} +#else +#define __Pyx_PyHeapTypeObject_GC_Del(obj) PyObject_GC_Del(obj) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define CYTHON_PEP393_ENABLED 1 + #define __Pyx_PyUnicode_READY(op) (0) + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GetLength(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_ReadChar(u, i) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((void)u, 1114111U) + #define __Pyx_PyUnicode_KIND(u) ((void)u, (0)) + #define __Pyx_PyUnicode_DATA(u) ((void*)u) + #define __Pyx_PyUnicode_READ(k, d, i) ((void)k, PyUnicode_ReadChar((PyObject*)(d), i)) + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GetLength(u)) +#elif PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) + #define CYTHON_PEP393_ENABLED 1 + #if PY_VERSION_HEX >= 0x030C0000 + #define __Pyx_PyUnicode_READY(op) (0) + #else + #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ + 0 : _PyUnicode_Ready((PyObject *)(op))) + #endif + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) + #define __Pyx_PyUnicode_KIND(u) ((int)PyUnicode_KIND(u)) + #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) + #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) + #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, (Py_UCS4) ch) + #if PY_VERSION_HEX >= 0x030C0000 + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u)) + #else + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000 + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length)) + #else + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) + #endif + #endif +#else + #define CYTHON_PEP393_ENABLED 0 + #define PyUnicode_1BYTE_KIND 1 + #define PyUnicode_2BYTE_KIND 2 + #define PyUnicode_4BYTE_KIND 4 + #define __Pyx_PyUnicode_READY(op) (0) + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535U : 1114111U) + #define __Pyx_PyUnicode_KIND(u) ((int)sizeof(Py_UNICODE)) + #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) + #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) + #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = (Py_UNICODE) ch) + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) +#endif +#if CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) +#else + #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ + PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) +#endif +#if CYTHON_COMPILING_IN_PYPY + #if !defined(PyUnicode_DecodeUnicodeEscape) + #define PyUnicode_DecodeUnicodeEscape(s, size, errors) PyUnicode_Decode(s, size, "unicode_escape", errors) + #endif + #if !defined(PyUnicode_Contains) || (PY_MAJOR_VERSION == 2 && PYPY_VERSION_NUM < 0x07030500) + #undef PyUnicode_Contains + #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) + #endif + #if !defined(PyByteArray_Check) + #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) + #endif + #if !defined(PyObject_Format) + #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) + #endif +#endif +#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) +#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) +#else + #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) +#endif +#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) + #define PyObject_ASCII(o) PyObject_Repr(o) +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyBaseString_Type PyUnicode_Type + #define PyStringObject PyUnicodeObject + #define PyString_Type PyUnicode_Type + #define PyString_Check PyUnicode_Check + #define PyString_CheckExact PyUnicode_CheckExact +#ifndef PyObject_Unicode + #define PyObject_Unicode PyObject_Str +#endif +#endif +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) + #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) +#else + #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) + #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) +#endif +#if CYTHON_COMPILING_IN_CPYTHON + #define __Pyx_PySequence_ListKeepNew(obj)\ + (likely(PyList_CheckExact(obj) && Py_REFCNT(obj) == 1) ? __Pyx_NewRef(obj) : PySequence_List(obj)) +#else + #define __Pyx_PySequence_ListKeepNew(obj) PySequence_List(obj) +#endif +#ifndef PySet_CheckExact + #define PySet_CheckExact(obj) __Pyx_IS_TYPE(obj, &PySet_Type) +#endif +#if PY_VERSION_HEX >= 0x030900A4 + #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt) + #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size) +#else + #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt) + #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size) +#endif +#if CYTHON_ASSUME_SAFE_MACROS + #define __Pyx_PySequence_ITEM(o, i) PySequence_ITEM(o, i) + #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) + #define __Pyx_PyTuple_SET_ITEM(o, i, v) (PyTuple_SET_ITEM(o, i, v), (0)) + #define __Pyx_PyList_SET_ITEM(o, i, v) (PyList_SET_ITEM(o, i, v), (0)) + #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_GET_SIZE(o) + #define __Pyx_PyList_GET_SIZE(o) PyList_GET_SIZE(o) + #define __Pyx_PySet_GET_SIZE(o) PySet_GET_SIZE(o) + #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_GET_SIZE(o) + #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_GET_SIZE(o) +#else + #define __Pyx_PySequence_ITEM(o, i) PySequence_GetItem(o, i) + #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) + #define __Pyx_PyTuple_SET_ITEM(o, i, v) PyTuple_SetItem(o, i, v) + #define __Pyx_PyList_SET_ITEM(o, i, v) PyList_SetItem(o, i, v) + #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_Size(o) + #define __Pyx_PyList_GET_SIZE(o) PyList_Size(o) + #define __Pyx_PySet_GET_SIZE(o) PySet_Size(o) + #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_Size(o) + #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_Size(o) +#endif +#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1 + #define __Pyx_PyImport_AddModuleRef(name) PyImport_AddModuleRef(name) +#else + static CYTHON_INLINE PyObject *__Pyx_PyImport_AddModuleRef(const char *name) { + PyObject *module = PyImport_AddModule(name); + Py_XINCREF(module); + return module; + } +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyIntObject PyLongObject + #define PyInt_Type PyLong_Type + #define PyInt_Check(op) PyLong_Check(op) + #define PyInt_CheckExact(op) PyLong_CheckExact(op) + #define __Pyx_Py3Int_Check(op) PyLong_Check(op) + #define __Pyx_Py3Int_CheckExact(op) PyLong_CheckExact(op) + #define PyInt_FromString PyLong_FromString + #define PyInt_FromUnicode PyLong_FromUnicode + #define PyInt_FromLong PyLong_FromLong + #define PyInt_FromSize_t PyLong_FromSize_t + #define PyInt_FromSsize_t PyLong_FromSsize_t + #define PyInt_AsLong PyLong_AsLong + #define PyInt_AS_LONG PyLong_AS_LONG + #define PyInt_AsSsize_t PyLong_AsSsize_t + #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask + #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask + #define PyNumber_Int PyNumber_Long +#else + #define __Pyx_Py3Int_Check(op) (PyLong_Check(op) || PyInt_Check(op)) + #define __Pyx_Py3Int_CheckExact(op) (PyLong_CheckExact(op) || PyInt_CheckExact(op)) +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyBoolObject PyLongObject +#endif +#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY + #ifndef PyUnicode_InternFromString + #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) + #endif +#endif +#if PY_VERSION_HEX < 0x030200A4 + typedef long Py_hash_t; + #define __Pyx_PyInt_FromHash_t PyInt_FromLong + #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsHash_t +#else + #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t + #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsSsize_t +#endif +#if CYTHON_USE_ASYNC_SLOTS + #if PY_VERSION_HEX >= 0x030500B1 + #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods + #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) + #else + #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) + #endif +#else + #define __Pyx_PyType_AsAsync(obj) NULL +#endif +#ifndef __Pyx_PyAsyncMethodsStruct + typedef struct { + unaryfunc am_await; + unaryfunc am_aiter; + unaryfunc am_anext; + } __Pyx_PyAsyncMethodsStruct; +#endif + +#if defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS) + #if !defined(_USE_MATH_DEFINES) + #define _USE_MATH_DEFINES + #endif +#endif +#include +#ifdef NAN +#define __PYX_NAN() ((float) NAN) +#else +static CYTHON_INLINE float __PYX_NAN() { + float value; + memset(&value, 0xFF, sizeof(value)); + return value; +} +#endif +#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) +#define __Pyx_truncl trunc +#else +#define __Pyx_truncl truncl +#endif + +#define __PYX_MARK_ERR_POS(f_index, lineno) \ + { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; } +#define __PYX_ERR(f_index, lineno, Ln_error) \ + { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; } + +#ifdef CYTHON_EXTERN_C + #undef __PYX_EXTERN_C + #define __PYX_EXTERN_C CYTHON_EXTERN_C +#elif defined(__PYX_EXTERN_C) + #ifdef _MSC_VER + #pragma message ("Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.") + #else + #warning Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead. + #endif +#else + #ifdef __cplusplus + #define __PYX_EXTERN_C extern "C" + #else + #define __PYX_EXTERN_C extern + #endif +#endif + +#define __PYX_HAVE___pydevd_bundle__pydevd_cython +#define __PYX_HAVE_API___pydevd_bundle__pydevd_cython +/* Early includes */ +#include +#include +#ifdef _OPENMP +#include +#endif /* _OPENMP */ + +#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) +#define CYTHON_WITHOUT_ASSERTIONS +#endif + +typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; + const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; + +#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 +#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0 +#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8) +#define __PYX_DEFAULT_STRING_ENCODING "" +#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString +#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +#define __Pyx_uchar_cast(c) ((unsigned char)c) +#define __Pyx_long_cast(x) ((long)x) +#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ + (sizeof(type) < sizeof(Py_ssize_t)) ||\ + (sizeof(type) > sizeof(Py_ssize_t) &&\ + likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX) &&\ + (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ + v == (type)PY_SSIZE_T_MIN))) ||\ + (sizeof(type) == sizeof(Py_ssize_t) &&\ + (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX))) ) +static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) { + return (size_t) i < (size_t) limit; +} +#if defined (__cplusplus) && __cplusplus >= 201103L + #include + #define __Pyx_sst_abs(value) std::abs(value) +#elif SIZEOF_INT >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) abs(value) +#elif SIZEOF_LONG >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) labs(value) +#elif defined (_MSC_VER) + #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) +#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define __Pyx_sst_abs(value) llabs(value) +#elif defined (__GNUC__) + #define __Pyx_sst_abs(value) __builtin_llabs(value) +#else + #define __Pyx_sst_abs(value) ((value<0) ? -value : value) +#endif +static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s); +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); +static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char*); +#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) +#define __Pyx_PyBytes_FromString PyBytes_FromString +#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); +#if PY_MAJOR_VERSION < 3 + #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString + #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +#else + #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString + #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize +#endif +#define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyObject_AsWritableString(s) ((char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableSString(s) ((signed char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) +#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) +#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) +#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) +#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) +#define __Pyx_PyUnicode_FromOrdinal(o) PyUnicode_FromOrdinal((int)o) +#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode +#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) +#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) +static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); +static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); +static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*); +static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); +#define __Pyx_PySequence_Tuple(obj)\ + (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) +static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); +static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); +static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*); +#if CYTHON_ASSUME_SAFE_MACROS +#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) +#else +#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) +#endif +#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) +#if PY_MAJOR_VERSION >= 3 +#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) +#else +#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) +#endif +#if CYTHON_USE_PYLONG_INTERNALS + #if PY_VERSION_HEX >= 0x030C00A7 + #ifndef _PyLong_SIGN_MASK + #define _PyLong_SIGN_MASK 3 + #endif + #ifndef _PyLong_NON_SIZE_BITS + #define _PyLong_NON_SIZE_BITS 3 + #endif + #define __Pyx_PyLong_Sign(x) (((PyLongObject*)x)->long_value.lv_tag & _PyLong_SIGN_MASK) + #define __Pyx_PyLong_IsNeg(x) ((__Pyx_PyLong_Sign(x) & 2) != 0) + #define __Pyx_PyLong_IsNonNeg(x) (!__Pyx_PyLong_IsNeg(x)) + #define __Pyx_PyLong_IsZero(x) (__Pyx_PyLong_Sign(x) & 1) + #define __Pyx_PyLong_IsPos(x) (__Pyx_PyLong_Sign(x) == 0) + #define __Pyx_PyLong_CompactValueUnsigned(x) (__Pyx_PyLong_Digits(x)[0]) + #define __Pyx_PyLong_DigitCount(x) ((Py_ssize_t) (((PyLongObject*)x)->long_value.lv_tag >> _PyLong_NON_SIZE_BITS)) + #define __Pyx_PyLong_SignedDigitCount(x)\ + ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * __Pyx_PyLong_DigitCount(x)) + #if defined(PyUnstable_Long_IsCompact) && defined(PyUnstable_Long_CompactValue) + #define __Pyx_PyLong_IsCompact(x) PyUnstable_Long_IsCompact((PyLongObject*) x) + #define __Pyx_PyLong_CompactValue(x) PyUnstable_Long_CompactValue((PyLongObject*) x) + #else + #define __Pyx_PyLong_IsCompact(x) (((PyLongObject*)x)->long_value.lv_tag < (2 << _PyLong_NON_SIZE_BITS)) + #define __Pyx_PyLong_CompactValue(x) ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * (Py_ssize_t) __Pyx_PyLong_Digits(x)[0]) + #endif + typedef Py_ssize_t __Pyx_compact_pylong; + typedef size_t __Pyx_compact_upylong; + #else + #define __Pyx_PyLong_IsNeg(x) (Py_SIZE(x) < 0) + #define __Pyx_PyLong_IsNonNeg(x) (Py_SIZE(x) >= 0) + #define __Pyx_PyLong_IsZero(x) (Py_SIZE(x) == 0) + #define __Pyx_PyLong_IsPos(x) (Py_SIZE(x) > 0) + #define __Pyx_PyLong_CompactValueUnsigned(x) ((Py_SIZE(x) == 0) ? 0 : __Pyx_PyLong_Digits(x)[0]) + #define __Pyx_PyLong_DigitCount(x) __Pyx_sst_abs(Py_SIZE(x)) + #define __Pyx_PyLong_SignedDigitCount(x) Py_SIZE(x) + #define __Pyx_PyLong_IsCompact(x) (Py_SIZE(x) == 0 || Py_SIZE(x) == 1 || Py_SIZE(x) == -1) + #define __Pyx_PyLong_CompactValue(x)\ + ((Py_SIZE(x) == 0) ? (sdigit) 0 : ((Py_SIZE(x) < 0) ? -(sdigit)__Pyx_PyLong_Digits(x)[0] : (sdigit)__Pyx_PyLong_Digits(x)[0])) + typedef sdigit __Pyx_compact_pylong; + typedef digit __Pyx_compact_upylong; + #endif + #if PY_VERSION_HEX >= 0x030C00A5 + #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->long_value.ob_digit) + #else + #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->ob_digit) + #endif +#endif +#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII +#include +static int __Pyx_sys_getdefaultencoding_not_ascii; +static int __Pyx_init_sys_getdefaultencoding_params(void) { + PyObject* sys; + PyObject* default_encoding = NULL; + PyObject* ascii_chars_u = NULL; + PyObject* ascii_chars_b = NULL; + const char* default_encoding_c; + sys = PyImport_ImportModule("sys"); + if (!sys) goto bad; + default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); + Py_DECREF(sys); + if (!default_encoding) goto bad; + default_encoding_c = PyBytes_AsString(default_encoding); + if (!default_encoding_c) goto bad; + if (strcmp(default_encoding_c, "ascii") == 0) { + __Pyx_sys_getdefaultencoding_not_ascii = 0; + } else { + char ascii_chars[128]; + int c; + for (c = 0; c < 128; c++) { + ascii_chars[c] = (char) c; + } + __Pyx_sys_getdefaultencoding_not_ascii = 1; + ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); + if (!ascii_chars_u) goto bad; + ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); + if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { + PyErr_Format( + PyExc_ValueError, + "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", + default_encoding_c); + goto bad; + } + Py_DECREF(ascii_chars_u); + Py_DECREF(ascii_chars_b); + } + Py_DECREF(default_encoding); + return 0; +bad: + Py_XDECREF(default_encoding); + Py_XDECREF(ascii_chars_u); + Py_XDECREF(ascii_chars_b); + return -1; +} +#endif +#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 +#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) +#else +#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) +#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT +#include +static char* __PYX_DEFAULT_STRING_ENCODING; +static int __Pyx_init_sys_getdefaultencoding_params(void) { + PyObject* sys; + PyObject* default_encoding = NULL; + char* default_encoding_c; + sys = PyImport_ImportModule("sys"); + if (!sys) goto bad; + default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); + Py_DECREF(sys); + if (!default_encoding) goto bad; + default_encoding_c = PyBytes_AsString(default_encoding); + if (!default_encoding_c) goto bad; + __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1); + if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; + strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); + Py_DECREF(default_encoding); + return 0; +bad: + Py_XDECREF(default_encoding); + return -1; +} +#endif +#endif + + +/* Test for GCC > 2.95 */ +#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) + #define likely(x) __builtin_expect(!!(x), 1) + #define unlikely(x) __builtin_expect(!!(x), 0) +#else /* !__GNUC__ or GCC < 2.95 */ + #define likely(x) (x) + #define unlikely(x) (x) +#endif /* __GNUC__ */ +static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } + +#if !CYTHON_USE_MODULE_STATE +static PyObject *__pyx_m = NULL; +#endif +static int __pyx_lineno; +static int __pyx_clineno = 0; +static const char * __pyx_cfilenm = __FILE__; +static const char *__pyx_filename; + +/* #### Code section: filename_table ### */ + +static const char *__pyx_f[] = { + "_pydevd_bundle\\\\pydevd_cython.pyx", + "_pydevd_bundle\\\\pydevd_cython.pxd", + "", + "type.pxd", +}; +/* #### Code section: utility_code_proto_before_types ### */ +/* ForceInitThreads.proto */ +#ifndef __PYX_FORCE_INIT_THREADS + #define __PYX_FORCE_INIT_THREADS 0 +#endif + +/* #### Code section: numeric_typedefs ### */ +/* #### Code section: complex_type_declarations ### */ +/* #### Code section: type_declarations ### */ + +/*--- Type declarations ---*/ +struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo; +struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj; +struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame; +struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper; +struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions; +struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame; +struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_ThreadTracer; + +/* "_pydevd_bundle/pydevd_cython.pxd":1 + * cdef class PyDBAdditionalThreadInfo: # <<<<<<<<<<<<<< + * cdef public int pydev_state + * cdef public object pydev_step_stop # Actually, it's a frame or None + */ +struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo { + PyObject_HEAD + struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_vtab; + int pydev_state; + PyObject *pydev_step_stop; + int pydev_original_step_cmd; + int pydev_step_cmd; + int pydev_notify_kill; + PyObject *pydev_smart_step_stop; + int pydev_django_resolve_frame; + PyObject *pydev_call_from_jinja2; + PyObject *pydev_call_inside_jinja2; + int is_tracing; + PyObject *conditional_breakpoint_exception; + PyObject *pydev_message; + int suspend_type; + int pydev_next_line; + PyObject *pydev_func_name; + int suspended_at_unhandled; + PyObject *trace_suspend_type; + PyObject *top_level_thread_tracer_no_back_frames; + PyObject *top_level_thread_tracer_unhandled; + PyObject *thread_tracer; + PyObject *step_in_initial_location; + int pydev_smart_parent_offset; + int pydev_smart_child_offset; + PyObject *pydev_smart_step_into_variants; + PyObject *target_id_to_smart_step_into_variant; + int pydev_use_scoped_step_frame; + PyObject *weak_thread; + int is_in_wait_loop; +}; + + +/* "_pydevd_bundle/pydevd_cython.pyx":436 + * + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cdef class _TryExceptContainerObj: # <<<<<<<<<<<<<< + * cdef public list try_except_infos; + * def __init__(self): + */ +struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj { + PyObject_HEAD + PyObject *try_except_infos; +}; + + +/* "_pydevd_bundle/pydevd_cython.pyx":457 + * # ======================================================================================================================= + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cdef class PyDBFrame: # <<<<<<<<<<<<<< + * # ELSE + * # class PyDBFrame: + */ +struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame { + PyObject_HEAD + struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_vtab; + PyObject *_args; + int should_skip; + PyObject *exc_info; +}; + + +/* "_pydevd_bundle/pydevd_cython.pyx":1689 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cdef class SafeCallWrapper: # <<<<<<<<<<<<<< + * cdef method_object + * def __init__(self, method_object): + */ +struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper { + PyObject_HEAD + PyObject *method_object; +}; + + +/* "_pydevd_bundle/pydevd_cython.pyx":1857 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cdef class TopLevelThreadTracerOnlyUnhandledExceptions: # <<<<<<<<<<<<<< + * cdef public tuple _args; + * def __init__(self, tuple args): + */ +struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions { + PyObject_HEAD + PyObject *_args; +}; + + +/* "_pydevd_bundle/pydevd_cython.pyx":1888 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cdef class TopLevelThreadTracerNoBackFrame: # <<<<<<<<<<<<<< + * cdef public object _frame_trace_dispatch; + * cdef public tuple _args; + */ +struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame { + PyObject_HEAD + PyObject *_frame_trace_dispatch; + PyObject *_args; + PyObject *try_except_infos; + PyObject *_last_exc_arg; + PyObject *_raise_lines; + int _last_raise_line; +}; + + +/* "_pydevd_bundle/pydevd_cython.pyx":1968 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cdef class ThreadTracer: # <<<<<<<<<<<<<< + * cdef public tuple _args; + * def __init__(self, tuple args): + */ +struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_ThreadTracer { + PyObject_HEAD + PyObject *_args; +}; + + + +/* "_pydevd_bundle/pydevd_cython.pyx":30 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cdef class PyDBAdditionalThreadInfo: # <<<<<<<<<<<<<< + * # ELSE + * # class PyDBAdditionalThreadInfo(object): + */ + +struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo { + PyObject *(*get_topmost_frame)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *, PyObject *, int __pyx_skip_dispatch); + PyObject *(*update_stepping_info)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *, int __pyx_skip_dispatch); + PyObject *(*_get_related_thread)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *, int __pyx_skip_dispatch); + int (*_is_stepping)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *, int __pyx_skip_dispatch); +}; +static struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_vtabptr_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo; + + +/* "_pydevd_bundle/pydevd_cython.pyx":457 + * # ======================================================================================================================= + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cdef class PyDBFrame: # <<<<<<<<<<<<<< + * # ELSE + * # class PyDBFrame: + */ + +struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame { + PyObject *(*get_func_name)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *, PyObject *); + PyObject *(*_show_return_values)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *, PyObject *, PyObject *); + PyObject *(*_remove_return_values)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *, PyObject *, PyObject *); + PyObject *(*_get_unfiltered_back_frame)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *, PyObject *, PyObject *); + PyObject *(*_is_same_frame)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *, PyObject *, PyObject *); + PyObject *(*trace_dispatch)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *, PyObject *, PyObject *, PyObject *, int __pyx_skip_dispatch); +}; +static struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_vtabptr_14_pydevd_bundle_13pydevd_cython_PyDBFrame; +/* #### Code section: utility_code_proto ### */ + +/* --- Runtime support code (head) --- */ +/* Refnanny.proto */ +#ifndef CYTHON_REFNANNY + #define CYTHON_REFNANNY 0 +#endif +#if CYTHON_REFNANNY + typedef struct { + void (*INCREF)(void*, PyObject*, Py_ssize_t); + void (*DECREF)(void*, PyObject*, Py_ssize_t); + void (*GOTREF)(void*, PyObject*, Py_ssize_t); + void (*GIVEREF)(void*, PyObject*, Py_ssize_t); + void* (*SetupContext)(const char*, Py_ssize_t, const char*); + void (*FinishContext)(void**); + } __Pyx_RefNannyAPIStruct; + static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; + static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); + #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; +#ifdef WITH_THREAD + #define __Pyx_RefNannySetupContext(name, acquire_gil)\ + if (acquire_gil) {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\ + PyGILState_Release(__pyx_gilstate_save);\ + } else {\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\ + } + #define __Pyx_RefNannyFinishContextNogil() {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __Pyx_RefNannyFinishContext();\ + PyGILState_Release(__pyx_gilstate_save);\ + } +#else + #define __Pyx_RefNannySetupContext(name, acquire_gil)\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__)) + #define __Pyx_RefNannyFinishContextNogil() __Pyx_RefNannyFinishContext() +#endif + #define __Pyx_RefNannyFinishContextNogil() {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __Pyx_RefNannyFinishContext();\ + PyGILState_Release(__pyx_gilstate_save);\ + } + #define __Pyx_RefNannyFinishContext()\ + __Pyx_RefNanny->FinishContext(&__pyx_refnanny) + #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_XINCREF(r) do { if((r) == NULL); else {__Pyx_INCREF(r); }} while(0) + #define __Pyx_XDECREF(r) do { if((r) == NULL); else {__Pyx_DECREF(r); }} while(0) + #define __Pyx_XGOTREF(r) do { if((r) == NULL); else {__Pyx_GOTREF(r); }} while(0) + #define __Pyx_XGIVEREF(r) do { if((r) == NULL); else {__Pyx_GIVEREF(r);}} while(0) +#else + #define __Pyx_RefNannyDeclarations + #define __Pyx_RefNannySetupContext(name, acquire_gil) + #define __Pyx_RefNannyFinishContextNogil() + #define __Pyx_RefNannyFinishContext() + #define __Pyx_INCREF(r) Py_INCREF(r) + #define __Pyx_DECREF(r) Py_DECREF(r) + #define __Pyx_GOTREF(r) + #define __Pyx_GIVEREF(r) + #define __Pyx_XINCREF(r) Py_XINCREF(r) + #define __Pyx_XDECREF(r) Py_XDECREF(r) + #define __Pyx_XGOTREF(r) + #define __Pyx_XGIVEREF(r) +#endif +#define __Pyx_Py_XDECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; Py_XDECREF(tmp);\ + } while (0) +#define __Pyx_XDECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_XDECREF(tmp);\ + } while (0) +#define __Pyx_DECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_DECREF(tmp);\ + } while (0) +#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) +#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) + +/* PyErrExceptionMatches.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) +static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); +#else +#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) +#endif + +/* PyThreadStateGet.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; +#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; +#if PY_VERSION_HEX >= 0x030C00A6 +#define __Pyx_PyErr_Occurred() (__pyx_tstate->current_exception != NULL) +#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->current_exception ? (PyObject*) Py_TYPE(__pyx_tstate->current_exception) : (PyObject*) NULL) +#else +#define __Pyx_PyErr_Occurred() (__pyx_tstate->curexc_type != NULL) +#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->curexc_type) +#endif +#else +#define __Pyx_PyThreadState_declare +#define __Pyx_PyThreadState_assign +#define __Pyx_PyErr_Occurred() (PyErr_Occurred() != NULL) +#define __Pyx_PyErr_CurrentExceptionType() PyErr_Occurred() +#endif + +/* PyErrFetchRestore.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) +#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A6 +#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) +#else +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#endif +#else +#define __Pyx_PyErr_Clear() PyErr_Clear() +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) +#endif + +/* PyObjectGetAttrStr.proto */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); +#else +#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) +#endif + +/* PyObjectGetAttrStrNoError.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name); + +/* GetBuiltinName.proto */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name); + +/* TupleAndListFromArray.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n); +static CYTHON_INLINE PyObject* __Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n); +#endif + +/* IncludeStringH.proto */ +#include + +/* BytesEquals.proto */ +static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals); + +/* UnicodeEquals.proto */ +static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals); + +/* fastcall.proto */ +#if CYTHON_AVOID_BORROWED_REFS + #define __Pyx_Arg_VARARGS(args, i) PySequence_GetItem(args, i) +#elif CYTHON_ASSUME_SAFE_MACROS + #define __Pyx_Arg_VARARGS(args, i) PyTuple_GET_ITEM(args, i) +#else + #define __Pyx_Arg_VARARGS(args, i) PyTuple_GetItem(args, i) +#endif +#if CYTHON_AVOID_BORROWED_REFS + #define __Pyx_Arg_NewRef_VARARGS(arg) __Pyx_NewRef(arg) + #define __Pyx_Arg_XDECREF_VARARGS(arg) Py_XDECREF(arg) +#else + #define __Pyx_Arg_NewRef_VARARGS(arg) arg + #define __Pyx_Arg_XDECREF_VARARGS(arg) +#endif +#define __Pyx_NumKwargs_VARARGS(kwds) PyDict_Size(kwds) +#define __Pyx_KwValues_VARARGS(args, nargs) NULL +#define __Pyx_GetKwValue_VARARGS(kw, kwvalues, s) __Pyx_PyDict_GetItemStrWithError(kw, s) +#define __Pyx_KwargsAsDict_VARARGS(kw, kwvalues) PyDict_Copy(kw) +#if CYTHON_METH_FASTCALL + #define __Pyx_Arg_FASTCALL(args, i) args[i] + #define __Pyx_NumKwargs_FASTCALL(kwds) PyTuple_GET_SIZE(kwds) + #define __Pyx_KwValues_FASTCALL(args, nargs) ((args) + (nargs)) + static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s); +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 + CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues); + #else + #define __Pyx_KwargsAsDict_FASTCALL(kw, kwvalues) _PyStack_AsDict(kwvalues, kw) + #endif + #define __Pyx_Arg_NewRef_FASTCALL(arg) arg /* no-op, __Pyx_Arg_FASTCALL is direct and this needs + to have the same reference counting */ + #define __Pyx_Arg_XDECREF_FASTCALL(arg) +#else + #define __Pyx_Arg_FASTCALL __Pyx_Arg_VARARGS + #define __Pyx_NumKwargs_FASTCALL __Pyx_NumKwargs_VARARGS + #define __Pyx_KwValues_FASTCALL __Pyx_KwValues_VARARGS + #define __Pyx_GetKwValue_FASTCALL __Pyx_GetKwValue_VARARGS + #define __Pyx_KwargsAsDict_FASTCALL __Pyx_KwargsAsDict_VARARGS + #define __Pyx_Arg_NewRef_FASTCALL(arg) __Pyx_Arg_NewRef_VARARGS(arg) + #define __Pyx_Arg_XDECREF_FASTCALL(arg) __Pyx_Arg_XDECREF_VARARGS(arg) +#endif +#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS +#define __Pyx_ArgsSlice_VARARGS(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_VARARGS(args, start), stop - start) +#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_FASTCALL(args, start), stop - start) +#else +#define __Pyx_ArgsSlice_VARARGS(args, start, stop) PyTuple_GetSlice(args, start, stop) +#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) PyTuple_GetSlice(args, start, stop) +#endif + +/* RaiseArgTupleInvalid.proto */ +static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, + Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); + +/* KeywordStringCheck.proto */ +static int __Pyx_CheckKeywordStrings(PyObject *kw, const char* function_name, int kw_allowed); + +/* PyDictVersioning.proto */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +#define __PYX_DICT_VERSION_INIT ((PY_UINT64_T) -1) +#define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag) +#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\ + (version_var) = __PYX_GET_DICT_VERSION(dict);\ + (cache_var) = (value); +#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\ + static PY_UINT64_T __pyx_dict_version = 0;\ + static PyObject *__pyx_dict_cached_value = NULL;\ + if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\ + (VAR) = __pyx_dict_cached_value;\ + } else {\ + (VAR) = __pyx_dict_cached_value = (LOOKUP);\ + __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\ + }\ +} +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj); +static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj); +static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version); +#else +#define __PYX_GET_DICT_VERSION(dict) (0) +#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var) +#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP); +#endif + +/* GetModuleGlobalName.proto */ +#if CYTHON_USE_DICT_VERSIONS +#define __Pyx_GetModuleGlobalName(var, name) do {\ + static PY_UINT64_T __pyx_dict_version = 0;\ + static PyObject *__pyx_dict_cached_value = NULL;\ + (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\ + (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\ + __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ +} while(0) +#define __Pyx_GetModuleGlobalNameUncached(var, name) do {\ + PY_UINT64_T __pyx_dict_version;\ + PyObject *__pyx_dict_cached_value;\ + (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ +} while(0) +static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value); +#else +#define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name) +#define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name) +static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name); +#endif + +/* PyFunctionFastCall.proto */ +#if CYTHON_FAST_PYCALL +#if !CYTHON_VECTORCALL +#define __Pyx_PyFunction_FastCall(func, args, nargs)\ + __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs); +#endif +#define __Pyx_BUILD_ASSERT_EXPR(cond)\ + (sizeof(char [1 - 2*!(cond)]) - 1) +#ifndef Py_MEMBER_SIZE +#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member) +#endif +#if !CYTHON_VECTORCALL +#if PY_VERSION_HEX >= 0x03080000 + #include "frameobject.h" +#if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API + #ifndef Py_BUILD_CORE + #define Py_BUILD_CORE 1 + #endif + #include "internal/pycore_frame.h" +#endif + #define __Pxy_PyFrame_Initialize_Offsets() + #define __Pyx_PyFrame_GetLocalsplus(frame) ((frame)->f_localsplus) +#else + static size_t __pyx_pyframe_localsplus_offset = 0; + #include "frameobject.h" + #define __Pxy_PyFrame_Initialize_Offsets()\ + ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\ + (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus))) + #define __Pyx_PyFrame_GetLocalsplus(frame)\ + (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset)) +#endif +#endif +#endif + +/* PyObjectCall.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); +#else +#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) +#endif + +/* PyObjectCallMethO.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); +#endif + +/* PyObjectFastCall.proto */ +#define __Pyx_PyObject_FastCall(func, args, nargs) __Pyx_PyObject_FastCallDict(func, args, (size_t)(nargs), NULL) +static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs); + +/* PyObjectCallOneArg.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); + +/* RaiseDoubleKeywords.proto */ +static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); + +/* ParseKeywords.proto */ +static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject *const *kwvalues, + PyObject **argnames[], + PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, + const char* function_name); + +/* RaiseUnexpectedTypeError.proto */ +static int __Pyx_RaiseUnexpectedTypeError(const char *expected, PyObject *obj); + +/* GetAttr3.proto */ +static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *); + +/* PyObjectCallNoArg.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); + +/* RaiseException.proto */ +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); + +/* GetTopmostException.proto */ +#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE +static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate); +#endif + +/* SaveResetException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +#else +#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) +#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) +#endif + +/* GetException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) +static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#else +static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); +#endif + +/* PyObjectLookupSpecial.proto */ +#if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS +#define __Pyx_PyObject_LookupSpecialNoError(obj, attr_name) __Pyx__PyObject_LookupSpecial(obj, attr_name, 0) +#define __Pyx_PyObject_LookupSpecial(obj, attr_name) __Pyx__PyObject_LookupSpecial(obj, attr_name, 1) +static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error); +#else +#define __Pyx_PyObject_LookupSpecialNoError(o,n) __Pyx_PyObject_GetAttrStrNoError(o,n) +#define __Pyx_PyObject_LookupSpecial(o,n) __Pyx_PyObject_GetAttrStr(o,n) +#endif + +/* GetItemInt.proto */ +#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\ + (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ + __Pyx_GetItemInt_Generic(o, to_py_func(i)))) +#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ + (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck); +#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ + (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck); +static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, + int is_list, int wraparound, int boundscheck); + +/* PyObjectSetAttrStr.proto */ +#if CYTHON_USE_TYPE_SLOTS +#define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o, n, NULL) +static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value); +#else +#define __Pyx_PyObject_DelAttrStr(o,n) PyObject_DelAttr(o,n) +#define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v) +#endif + +/* ExtTypeTest.proto */ +static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); + +/* SliceObject.proto */ +#define __Pyx_PyObject_DelSlice(obj, cstart, cstop, py_start, py_stop, py_slice, has_cstart, has_cstop, wraparound)\ + __Pyx_PyObject_SetSlice(obj, (PyObject*)NULL, cstart, cstop, py_start, py_stop, py_slice, has_cstart, has_cstop, wraparound) +static CYTHON_INLINE int __Pyx_PyObject_SetSlice( + PyObject* obj, PyObject* value, Py_ssize_t cstart, Py_ssize_t cstop, + PyObject** py_start, PyObject** py_stop, PyObject** py_slice, + int has_cstart, int has_cstop, int wraparound); + +/* ListAppend.proto */ +#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS +static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) { + PyListObject* L = (PyListObject*) list; + Py_ssize_t len = Py_SIZE(list); + if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) { + Py_INCREF(x); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 + L->ob_item[len] = x; + #else + PyList_SET_ITEM(list, len, x); + #endif + __Pyx_SET_SIZE(list, len + 1); + return 0; + } + return PyList_Append(list, x); +} +#else +#define __Pyx_PyList_Append(L,x) PyList_Append(L,x) +#endif + +/* PyObjectCall2Args.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2); + +/* PyObjectGetMethod.proto */ +static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method); + +/* PyObjectCallMethod1.proto */ +static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg); + +/* append.proto */ +static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x); + +/* RaiseUnboundLocalError.proto */ +static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname); + +/* IterFinish.proto */ +static CYTHON_INLINE int __Pyx_IterFinish(void); + +/* set_iter.proto */ +static CYTHON_INLINE PyObject* __Pyx_set_iterator(PyObject* iterable, int is_set, + Py_ssize_t* p_orig_length, int* p_source_is_set); +static CYTHON_INLINE int __Pyx_set_iter_next( + PyObject* iter_obj, Py_ssize_t orig_length, + Py_ssize_t* ppos, PyObject **value, + int source_is_set); + +/* RaiseTooManyValuesToUnpack.proto */ +static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected); + +/* RaiseNeedMoreValuesToUnpack.proto */ +static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index); + +/* UnpackItemEndCheck.proto */ +static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected); + +/* ArgTypeTest.proto */ +#define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\ + ((likely(__Pyx_IS_TYPE(obj, type) | (none_allowed && (obj == Py_None)))) ? 1 :\ + __Pyx__ArgTypeTest(obj, type, name, exact)) +static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact); + +/* pyfrozenset_new.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyFrozenSet_New(PyObject* it); + +/* py_set_discard.proto */ +static CYTHON_INLINE int __Pyx_PySet_Discard(PyObject *set, PyObject *key); + +/* PySetContains.proto */ +static CYTHON_INLINE int __Pyx_PySet_ContainsTF(PyObject* key, PyObject* set, int eq); + +/* PySequenceContains.proto */ +static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) { + int result = PySequence_Contains(seq, item); + return unlikely(result < 0) ? result : (result == (eq == Py_EQ)); +} + +/* StrEquals.proto */ +#if PY_MAJOR_VERSION >= 3 +#define __Pyx_PyString_Equals __Pyx_PyUnicode_Equals +#else +#define __Pyx_PyString_Equals __Pyx_PyBytes_Equals +#endif + +/* SwapException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_ExceptionSwap(type, value, tb) __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#else +static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb); +#endif + +/* RaiseNoneIterError.proto */ +static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void); + +/* PyIntBinop.proto */ +#if !CYTHON_COMPILING_IN_PYPY +static PyObject* __Pyx_PyInt_AndObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check); +#else +#define __Pyx_PyInt_AndObjC(op1, op2, intval, inplace, zerodivision_check)\ + (inplace ? PyNumber_InPlaceAnd(op1, op2) : PyNumber_And(op1, op2)) +#endif + +/* dict_getitem_default.proto */ +static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObject* default_value); + +/* UnpackUnboundCMethod.proto */ +typedef struct { + PyObject *type; + PyObject **method_name; + PyCFunction func; + PyObject *method; + int flag; +} __Pyx_CachedCFunction; + +/* CallUnboundCMethod1.proto */ +static PyObject* __Pyx__CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg); +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg); +#else +#define __Pyx_CallUnboundCMethod1(cfunc, self, arg) __Pyx__CallUnboundCMethod1(cfunc, self, arg) +#endif + +/* CallUnboundCMethod2.proto */ +static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2); +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030600B1 +static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2); +#else +#define __Pyx_CallUnboundCMethod2(cfunc, self, arg1, arg2) __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2) +#endif + +/* PyObjectCallMethod0.proto */ +static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name); + +/* UnpackTupleError.proto */ +static void __Pyx_UnpackTupleError(PyObject *, Py_ssize_t index); + +/* UnpackTuple2.proto */ +#define __Pyx_unpack_tuple2(tuple, value1, value2, is_tuple, has_known_size, decref_tuple)\ + (likely(is_tuple || PyTuple_Check(tuple)) ?\ + (likely(has_known_size || PyTuple_GET_SIZE(tuple) == 2) ?\ + __Pyx_unpack_tuple2_exact(tuple, value1, value2, decref_tuple) :\ + (__Pyx_UnpackTupleError(tuple, 2), -1)) :\ + __Pyx_unpack_tuple2_generic(tuple, value1, value2, has_known_size, decref_tuple)) +static CYTHON_INLINE int __Pyx_unpack_tuple2_exact( + PyObject* tuple, PyObject** value1, PyObject** value2, int decref_tuple); +static int __Pyx_unpack_tuple2_generic( + PyObject* tuple, PyObject** value1, PyObject** value2, int has_known_size, int decref_tuple); + +/* dict_iter.proto */ +static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* dict, int is_dict, PyObject* method_name, + Py_ssize_t* p_orig_length, int* p_is_dict); +static CYTHON_INLINE int __Pyx_dict_iter_next(PyObject* dict_or_iter, Py_ssize_t orig_length, Py_ssize_t* ppos, + PyObject** pkey, PyObject** pvalue, PyObject** pitem, int is_dict); + +/* PyDictContains.proto */ +static CYTHON_INLINE int __Pyx_PyDict_ContainsTF(PyObject* item, PyObject* dict, int eq) { + int result = PyDict_Contains(dict, item); + return unlikely(result < 0) ? result : (result == (eq == Py_EQ)); +} + +/* DictGetItem.proto */ +#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY +static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key); +#define __Pyx_PyObject_Dict_GetItem(obj, name)\ + (likely(PyDict_CheckExact(obj)) ?\ + __Pyx_PyDict_GetItem(obj, name) : PyObject_GetItem(obj, name)) +#else +#define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key) +#define __Pyx_PyObject_Dict_GetItem(obj, name) PyObject_GetItem(obj, name) +#endif + +/* SliceObject.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice( + PyObject* obj, Py_ssize_t cstart, Py_ssize_t cstop, + PyObject** py_start, PyObject** py_stop, PyObject** py_slice, + int has_cstart, int has_cstop, int wraparound); + +/* GetAttr.proto */ +static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *); + +/* HasAttr.proto */ +static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *); + +/* py_dict_clear.proto */ +#define __Pyx_PyDict_Clear(d) (PyDict_Clear(d), 0) + +/* PyIntBinop.proto */ +#if !CYTHON_COMPILING_IN_PYPY +static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check); +#else +#define __Pyx_PyInt_AddObjC(op1, op2, intval, inplace, zerodivision_check)\ + (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2)) +#endif + +/* SliceTupleAndList.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyList_GetSlice(PyObject* src, Py_ssize_t start, Py_ssize_t stop); +static CYTHON_INLINE PyObject* __Pyx_PyTuple_GetSlice(PyObject* src, Py_ssize_t start, Py_ssize_t stop); +#else +#define __Pyx_PyList_GetSlice(seq, start, stop) PySequence_GetSlice(seq, start, stop) +#define __Pyx_PyTuple_GetSlice(seq, start, stop) PySequence_GetSlice(seq, start, stop) +#endif + +/* PyIntCompare.proto */ +static CYTHON_INLINE int __Pyx_PyInt_BoolEqObjC(PyObject *op1, PyObject *op2, long intval, long inplace); + +/* ObjectGetItem.proto */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject *key); +#else +#define __Pyx_PyObject_GetItem(obj, key) PyObject_GetItem(obj, key) +#endif + +/* Import.proto */ +static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); + +/* ImportFrom.proto */ +static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); + +/* IncludeStructmemberH.proto */ +#include + +/* FixUpExtensionType.proto */ +#if CYTHON_USE_TYPE_SPECS +static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type); +#endif + +/* ValidateBasesTuple.proto */ +#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS +static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases); +#endif + +/* PyType_Ready.proto */ +CYTHON_UNUSED static int __Pyx_PyType_Ready(PyTypeObject *t); + +/* PyObject_GenericGetAttrNoDict.proto */ +#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name); +#else +#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr +#endif + +/* PyObject_GenericGetAttr.proto */ +#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name); +#else +#define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr +#endif + +/* SetVTable.proto */ +static int __Pyx_SetVtable(PyTypeObject* typeptr , void* vtable); + +/* GetVTable.proto */ +static void* __Pyx_GetVtable(PyTypeObject *type); + +/* MergeVTables.proto */ +#if !CYTHON_COMPILING_IN_LIMITED_API +static int __Pyx_MergeVtables(PyTypeObject *type); +#endif + +/* SetupReduce.proto */ +#if !CYTHON_COMPILING_IN_LIMITED_API +static int __Pyx_setup_reduce(PyObject* type_obj); +#endif + +/* TypeImport.proto */ +#ifndef __PYX_HAVE_RT_ImportType_proto_3_0_11 +#define __PYX_HAVE_RT_ImportType_proto_3_0_11 +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L +#include +#endif +#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || __cplusplus >= 201103L +#define __PYX_GET_STRUCT_ALIGNMENT_3_0_11(s) alignof(s) +#else +#define __PYX_GET_STRUCT_ALIGNMENT_3_0_11(s) sizeof(void*) +#endif +enum __Pyx_ImportType_CheckSize_3_0_11 { + __Pyx_ImportType_CheckSize_Error_3_0_11 = 0, + __Pyx_ImportType_CheckSize_Warn_3_0_11 = 1, + __Pyx_ImportType_CheckSize_Ignore_3_0_11 = 2 +}; +static PyTypeObject *__Pyx_ImportType_3_0_11(PyObject* module, const char *module_name, const char *class_name, size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_0_11 check_size); +#endif + +/* ImportDottedModule.proto */ +static PyObject *__Pyx_ImportDottedModule(PyObject *name, PyObject *parts_tuple); +#if PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx_ImportDottedModule_WalkParts(PyObject *module, PyObject *name, PyObject *parts_tuple); +#endif + +/* FetchSharedCythonModule.proto */ +static PyObject *__Pyx_FetchSharedCythonABIModule(void); + +/* FetchCommonType.proto */ +#if !CYTHON_USE_TYPE_SPECS +static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); +#else +static PyTypeObject* __Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases); +#endif + +/* PyMethodNew.proto */ +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { + PyObject *typesModule=NULL, *methodType=NULL, *result=NULL; + CYTHON_UNUSED_VAR(typ); + if (!self) + return __Pyx_NewRef(func); + typesModule = PyImport_ImportModule("types"); + if (!typesModule) return NULL; + methodType = PyObject_GetAttrString(typesModule, "MethodType"); + Py_DECREF(typesModule); + if (!methodType) return NULL; + result = PyObject_CallFunctionObjArgs(methodType, func, self, NULL); + Py_DECREF(methodType); + return result; +} +#elif PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { + CYTHON_UNUSED_VAR(typ); + if (!self) + return __Pyx_NewRef(func); + return PyMethod_New(func, self); +} +#else + #define __Pyx_PyMethod_New PyMethod_New +#endif + +/* PyVectorcallFastCallDict.proto */ +#if CYTHON_METH_FASTCALL +static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw); +#endif + +/* CythonFunctionShared.proto */ +#define __Pyx_CyFunction_USED +#define __Pyx_CYFUNCTION_STATICMETHOD 0x01 +#define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 +#define __Pyx_CYFUNCTION_CCLASS 0x04 +#define __Pyx_CYFUNCTION_COROUTINE 0x08 +#define __Pyx_CyFunction_GetClosure(f)\ + (((__pyx_CyFunctionObject *) (f))->func_closure) +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_CyFunction_GetClassObj(f)\ + (((__pyx_CyFunctionObject *) (f))->func_classobj) +#else + #define __Pyx_CyFunction_GetClassObj(f)\ + ((PyObject*) ((PyCMethodObject *) (f))->mm_class) +#endif +#define __Pyx_CyFunction_SetClassObj(f, classobj)\ + __Pyx__CyFunction_SetClassObj((__pyx_CyFunctionObject *) (f), (classobj)) +#define __Pyx_CyFunction_Defaults(type, f)\ + ((type *)(((__pyx_CyFunctionObject *) (f))->defaults)) +#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\ + ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g) +typedef struct { +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject_HEAD + PyObject *func; +#elif PY_VERSION_HEX < 0x030900B1 + PyCFunctionObject func; +#else + PyCMethodObject func; +#endif +#if CYTHON_BACKPORT_VECTORCALL + __pyx_vectorcallfunc func_vectorcall; +#endif +#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API + PyObject *func_weakreflist; +#endif + PyObject *func_dict; + PyObject *func_name; + PyObject *func_qualname; + PyObject *func_doc; + PyObject *func_globals; + PyObject *func_code; + PyObject *func_closure; +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + PyObject *func_classobj; +#endif + void *defaults; + int defaults_pyobjects; + size_t defaults_size; + int flags; + PyObject *defaults_tuple; + PyObject *defaults_kwdict; + PyObject *(*defaults_getter)(PyObject *); + PyObject *func_annotations; + PyObject *func_is_coroutine; +} __pyx_CyFunctionObject; +#undef __Pyx_CyOrPyCFunction_Check +#define __Pyx_CyFunction_Check(obj) __Pyx_TypeCheck(obj, __pyx_CyFunctionType) +#define __Pyx_CyOrPyCFunction_Check(obj) __Pyx_TypeCheck2(obj, __pyx_CyFunctionType, &PyCFunction_Type) +#define __Pyx_CyFunction_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CyFunctionType) +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc); +#undef __Pyx_IsSameCFunction +#define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCyOrCFunction(func, cfunc) +static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject* op, PyMethodDef *ml, + int flags, PyObject* qualname, + PyObject *closure, + PyObject *module, PyObject *globals, + PyObject* code); +static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj); +static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m, + size_t size, + int pyobjects); +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m, + PyObject *tuple); +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, + PyObject *dict); +static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, + PyObject *dict); +static int __pyx_CyFunction_init(PyObject *module); +#if CYTHON_METH_FASTCALL +static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +#if CYTHON_BACKPORT_VECTORCALL +#define __Pyx_CyFunction_func_vectorcall(f) (((__pyx_CyFunctionObject*)f)->func_vectorcall) +#else +#define __Pyx_CyFunction_func_vectorcall(f) (((PyCFunctionObject*)f)->vectorcall) +#endif +#endif + +/* CythonFunction.proto */ +static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, + int flags, PyObject* qualname, + PyObject *closure, + PyObject *module, PyObject *globals, + PyObject* code); + +/* CLineInTraceback.proto */ +#ifdef CYTHON_CLINE_IN_TRACEBACK +#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) +#else +static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); +#endif + +/* CodeObjectCache.proto */ +#if !CYTHON_COMPILING_IN_LIMITED_API +typedef struct { + PyCodeObject* code_object; + int code_line; +} __Pyx_CodeObjectCacheEntry; +struct __Pyx_CodeObjectCache { + int count; + int max_count; + __Pyx_CodeObjectCacheEntry* entries; +}; +static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; +static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); +static PyCodeObject *__pyx_find_code_object(int code_line); +static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); +#endif + +/* AddTraceback.proto */ +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename); + +/* GCCDiagnostics.proto */ +#if !defined(__INTEL_COMPILER) && defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) +#define __Pyx_HAS_GCC_DIAGNOSTIC +#endif + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); + +/* CIntFromPy.proto */ +static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); + +/* CIntFromPy.proto */ +static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); + +/* FormatTypeName.proto */ +#if CYTHON_COMPILING_IN_LIMITED_API +typedef PyObject *__Pyx_TypeName; +#define __Pyx_FMT_TYPENAME "%U" +static __Pyx_TypeName __Pyx_PyType_GetName(PyTypeObject* tp); +#define __Pyx_DECREF_TypeName(obj) Py_XDECREF(obj) +#else +typedef const char *__Pyx_TypeName; +#define __Pyx_FMT_TYPENAME "%.200s" +#define __Pyx_PyType_GetName(tp) ((tp)->tp_name) +#define __Pyx_DECREF_TypeName(obj) +#endif + +/* FastTypeChecks.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) +#define __Pyx_TypeCheck2(obj, type1, type2) __Pyx_IsAnySubtype2(Py_TYPE(obj), (PyTypeObject *)type1, (PyTypeObject *)type2) +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); +static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); +#else +#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) +#define __Pyx_TypeCheck2(obj, type1, type2) (PyObject_TypeCheck(obj, (PyTypeObject *)type1) || PyObject_TypeCheck(obj, (PyTypeObject *)type2)) +#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) +#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) +#endif +#define __Pyx_PyErr_ExceptionMatches2(err1, err2) __Pyx_PyErr_GivenExceptionMatches2(__Pyx_PyErr_CurrentExceptionType(), err1, err2) +#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) + +/* CheckBinaryVersion.proto */ +static unsigned long __Pyx_get_runtime_version(void); +static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer); + +/* FunctionExport.proto */ +static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig); + +/* InitStrings.proto */ +static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); + +/* #### Code section: module_declarations ### */ +static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo__get_related_thread(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ +static int __pyx_f_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo__is_stepping(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ +static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_get_topmost_frame(CYTHON_UNUSED struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_thread, int __pyx_skip_dispatch); /* proto*/ +static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_update_stepping_info(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ +static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_get_func_name(CYTHON_UNUSED struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_frame); /* proto*/ +static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame__show_return_values(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_frame, PyObject *__pyx_v_arg); /* proto*/ +static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame__remove_return_values(CYTHON_UNUSED struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_py_db, PyObject *__pyx_v_frame); /* proto*/ +static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame__get_unfiltered_back_frame(CYTHON_UNUSED struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_py_db, PyObject *__pyx_v_frame); /* proto*/ +static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame__is_same_frame(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_target_frame, PyObject *__pyx_v_current_frame); /* proto*/ +static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_trace_dispatch(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_frame, PyObject *__pyx_v_event, PyObject *__pyx_v_arg, int __pyx_skip_dispatch); /* proto*/ + +/* Module declarations from "libc.string" */ + +/* Module declarations from "libc.stdio" */ + +/* Module declarations from "__builtin__" */ + +/* Module declarations from "cpython.type" */ + +/* Module declarations from "cpython" */ + +/* Module declarations from "cpython.object" */ + +/* Module declarations from "cpython.ref" */ + +/* Module declarations from "_pydevd_bundle.pydevd_cython" */ +static PyObject *__pyx_v_14_pydevd_bundle_13pydevd_cython__all_infos = 0; +static PyObject *__pyx_v_14_pydevd_bundle_13pydevd_cython__infos_stepping = 0; +static PyObject *__pyx_v_14_pydevd_bundle_13pydevd_cython__update_infos_lock = 0; +static PyObject *__pyx_v_14_pydevd_bundle_13pydevd_cython__global_notify_skipped_step_in = 0; +static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_set_additional_thread_info(PyObject *, int __pyx_skip_dispatch); /*proto*/ +static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_add_additional_info(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *, int __pyx_skip_dispatch); /*proto*/ +static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_remove_additional_info(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *, int __pyx_skip_dispatch); /*proto*/ +static int __pyx_f_14_pydevd_bundle_13pydevd_cython_any_thread_stepping(int __pyx_skip_dispatch); /*proto*/ +static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython__update_stepping_info(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *); /*proto*/ +static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython___pyx_unpickle_PyDBAdditionalThreadInfo__set_state(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *, PyObject *); /*proto*/ +static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython___pyx_unpickle__TryExceptContainerObj__set_state(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *, PyObject *); /*proto*/ +static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython___pyx_unpickle_PyDBFrame__set_state(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *, PyObject *); /*proto*/ +static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython___pyx_unpickle_SafeCallWrapper__set_state(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper *, PyObject *); /*proto*/ +static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython___pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions__set_state(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions *, PyObject *); /*proto*/ +static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython___pyx_unpickle_TopLevelThreadTracerNoBackFrame__set_state(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *, PyObject *); /*proto*/ +static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython___pyx_unpickle_ThreadTracer__set_state(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_ThreadTracer *, PyObject *); /*proto*/ +/* #### Code section: typeinfo ### */ +/* #### Code section: before_global_var ### */ +#define __Pyx_MODULE_NAME "_pydevd_bundle.pydevd_cython" +extern int __pyx_module_is_main__pydevd_bundle__pydevd_cython; +int __pyx_module_is_main__pydevd_bundle__pydevd_cython = 0; + +/* Implementation of "_pydevd_bundle.pydevd_cython" */ +/* #### Code section: global_var ### */ +static PyObject *__pyx_builtin_ImportError; +static PyObject *__pyx_builtin_NameError; +static PyObject *__pyx_builtin_StopIteration; +static PyObject *__pyx_builtin_id; +static PyObject *__pyx_builtin_AttributeError; +static PyObject *__pyx_builtin_KeyboardInterrupt; +static PyObject *__pyx_builtin_SystemExit; +static PyObject *__pyx_builtin_GeneratorExit; +static PyObject *__pyx_builtin_RuntimeError; +/* #### Code section: string_decls ### */ +static const char __pyx_k_[] = ""; +static const char __pyx_k_1[] = "1"; +static const char __pyx_k_f[] = "f"; +static const char __pyx_k_i[] = "i"; +static const char __pyx_k_j[] = "j"; +static const char __pyx_k_t[] = "t"; +static const char __pyx_k__4[] = "?"; +static const char __pyx_k__8[] = "/"; +static const char __pyx_k__9[] = "\\"; +static const char __pyx_k_gc[] = "gc"; +static const char __pyx_k_id[] = "id"; +static const char __pyx_k_os[] = "os"; +static const char __pyx_k_re[] = "re"; +static const char __pyx_k_ALL[] = "ALL"; +static const char __pyx_k__10[] = "."; +static const char __pyx_k__19[] = "*"; +static const char __pyx_k_add[] = "add"; +static const char __pyx_k_arg[] = "arg"; +static const char __pyx_k_dis[] = "dis"; +static const char __pyx_k_get[] = "get"; +static const char __pyx_k_new[] = "__new__"; +static const char __pyx_k_pop[] = "pop"; +static const char __pyx_k_pyc[] = ".pyc"; +static const char __pyx_k_ref[] = "ref"; +static const char __pyx_k_ret[] = "ret"; +static const char __pyx_k_run[] = "run"; +static const char __pyx_k_s_s[] = "%s.%s"; +static const char __pyx_k_set[] = "set"; +static const char __pyx_k_sys[] = "sys"; +static const char __pyx_k_None[] = "None"; +static const char __pyx_k_args[] = "args"; +static const char __pyx_k_call[] = "call"; +static const char __pyx_k_cell[] = "__pyx_d); + Py_CLEAR(clear_module_state->__pyx_b); + Py_CLEAR(clear_module_state->__pyx_cython_runtime); + Py_CLEAR(clear_module_state->__pyx_empty_tuple); + Py_CLEAR(clear_module_state->__pyx_empty_bytes); + Py_CLEAR(clear_module_state->__pyx_empty_unicode); + #ifdef __Pyx_CyFunction_USED + Py_CLEAR(clear_module_state->__pyx_CyFunctionType); + #endif + #ifdef __Pyx_FusedFunction_USED + Py_CLEAR(clear_module_state->__pyx_FusedFunctionType); + #endif + Py_CLEAR(clear_module_state->__pyx_ptype_7cpython_4type_type); + Py_CLEAR(clear_module_state->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo); + Py_CLEAR(clear_module_state->__pyx_type_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo); + Py_CLEAR(clear_module_state->__pyx_ptype_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj); + Py_CLEAR(clear_module_state->__pyx_type_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj); + Py_CLEAR(clear_module_state->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBFrame); + Py_CLEAR(clear_module_state->__pyx_type_14_pydevd_bundle_13pydevd_cython_PyDBFrame); + Py_CLEAR(clear_module_state->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper); + Py_CLEAR(clear_module_state->__pyx_type_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper); + Py_CLEAR(clear_module_state->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions); + Py_CLEAR(clear_module_state->__pyx_type_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions); + Py_CLEAR(clear_module_state->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame); + Py_CLEAR(clear_module_state->__pyx_type_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame); + Py_CLEAR(clear_module_state->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_ThreadTracer); + Py_CLEAR(clear_module_state->__pyx_type_14_pydevd_bundle_13pydevd_cython_ThreadTracer); + Py_CLEAR(clear_module_state->__pyx_kp_s_); + Py_CLEAR(clear_module_state->__pyx_kp_s_1); + Py_CLEAR(clear_module_state->__pyx_n_s_ALL); + Py_CLEAR(clear_module_state->__pyx_n_s_AttributeError); + Py_CLEAR(clear_module_state->__pyx_n_s_CMD_SET_FUNCTION_BREAK); + Py_CLEAR(clear_module_state->__pyx_n_s_DEBUG_START); + Py_CLEAR(clear_module_state->__pyx_n_s_DEBUG_START_PY3K); + Py_CLEAR(clear_module_state->__pyx_n_s_EXCEPTION_TYPE_HANDLED); + Py_CLEAR(clear_module_state->__pyx_n_s_EXCEPTION_TYPE_USER_UNHANDLED); + Py_CLEAR(clear_module_state->__pyx_kp_s_Error_in_linecache_checkcache_r); + Py_CLEAR(clear_module_state->__pyx_kp_s_Error_in_linecache_getline_r_s_f); + Py_CLEAR(clear_module_state->__pyx_n_s_ForkSafeLock); + Py_CLEAR(clear_module_state->__pyx_n_s_GeneratorExit); + Py_CLEAR(clear_module_state->__pyx_n_s_IGNORE_EXCEPTION_TAG); + Py_CLEAR(clear_module_state->__pyx_kp_s_IgnoreException); + Py_CLEAR(clear_module_state->__pyx_kp_s_Ignore_exception_s_in_library_s); + Py_CLEAR(clear_module_state->__pyx_n_s_ImportError); + Py_CLEAR(clear_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0); + Py_CLEAR(clear_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2); + Py_CLEAR(clear_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3); + Py_CLEAR(clear_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_4); + Py_CLEAR(clear_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_5); + Py_CLEAR(clear_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_6); + Py_CLEAR(clear_module_state->__pyx_n_s_KeyboardInterrupt); + Py_CLEAR(clear_module_state->__pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER); + Py_CLEAR(clear_module_state->__pyx_n_s_NO_FTRACE); + Py_CLEAR(clear_module_state->__pyx_n_s_NameError); + Py_CLEAR(clear_module_state->__pyx_n_s_None); + Py_CLEAR(clear_module_state->__pyx_kp_s_Not_used_in_sys_monitoring_mode); + Py_CLEAR(clear_module_state->__pyx_n_s_PYDEVD_IPYTHON_CONTEXT); + Py_CLEAR(clear_module_state->__pyx_n_s_PYDEVD_USE_SYS_MONITORING); + Py_CLEAR(clear_module_state->__pyx_n_s_PYDEV_FILE); + Py_CLEAR(clear_module_state->__pyx_n_s_PYTHON_SUSPEND); + Py_CLEAR(clear_module_state->__pyx_n_s_PickleError); + Py_CLEAR(clear_module_state->__pyx_n_s_PyDBAdditionalThreadInfo); + Py_CLEAR(clear_module_state->__pyx_n_s_PyDBAdditionalThreadInfo___reduc); + Py_CLEAR(clear_module_state->__pyx_n_s_PyDBAdditionalThreadInfo___setst); + Py_CLEAR(clear_module_state->__pyx_n_s_PyDBAdditionalThreadInfo__get_re); + Py_CLEAR(clear_module_state->__pyx_n_s_PyDBAdditionalThreadInfo__is_ste); + Py_CLEAR(clear_module_state->__pyx_n_s_PyDBAdditionalThreadInfo_get_top); + Py_CLEAR(clear_module_state->__pyx_n_s_PyDBAdditionalThreadInfo_update); + Py_CLEAR(clear_module_state->__pyx_n_s_PyDBFrame); + Py_CLEAR(clear_module_state->__pyx_n_s_PyDBFrame___reduce_cython); + Py_CLEAR(clear_module_state->__pyx_n_s_PyDBFrame___setstate_cython); + Py_CLEAR(clear_module_state->__pyx_n_s_PyDBFrame_do_wait_suspend); + Py_CLEAR(clear_module_state->__pyx_n_s_PyDBFrame_handle_user_exception); + Py_CLEAR(clear_module_state->__pyx_n_s_PyDBFrame_set_suspend); + Py_CLEAR(clear_module_state->__pyx_n_s_PyDBFrame_trace_dispatch); + Py_CLEAR(clear_module_state->__pyx_n_s_PyDBFrame_trace_exception); + Py_CLEAR(clear_module_state->__pyx_n_s_RETURN_VALUES_DICT); + Py_CLEAR(clear_module_state->__pyx_n_s_RuntimeError); + Py_CLEAR(clear_module_state->__pyx_n_s_STATE_RUN); + Py_CLEAR(clear_module_state->__pyx_n_s_STATE_SUSPEND); + Py_CLEAR(clear_module_state->__pyx_n_s_SUPPORT_GEVENT); + Py_CLEAR(clear_module_state->__pyx_n_s_SafeCallWrapper); + Py_CLEAR(clear_module_state->__pyx_n_s_SafeCallWrapper___reduce_cython); + Py_CLEAR(clear_module_state->__pyx_n_s_SafeCallWrapper___setstate_cytho); + Py_CLEAR(clear_module_state->__pyx_n_s_SafeCallWrapper_get_method_objec); + Py_CLEAR(clear_module_state->__pyx_kp_s_State_s_Stop_s_Cmd_s_Kill_s); + Py_CLEAR(clear_module_state->__pyx_n_s_StopAsyncIteration); + Py_CLEAR(clear_module_state->__pyx_n_s_StopIteration); + Py_CLEAR(clear_module_state->__pyx_kp_s_Stop_inside_ipython_call); + Py_CLEAR(clear_module_state->__pyx_n_s_SystemExit); + Py_CLEAR(clear_module_state->__pyx_n_s_TRACE_PROPERTY); + Py_CLEAR(clear_module_state->__pyx_n_s_Thread); + Py_CLEAR(clear_module_state->__pyx_n_s_ThreadTracer); + Py_CLEAR(clear_module_state->__pyx_n_s_ThreadTracer___reduce_cython); + Py_CLEAR(clear_module_state->__pyx_n_s_ThreadTracer___setstate_cython); + Py_CLEAR(clear_module_state->__pyx_n_s_TopLevelThreadTracerNoBackFrame); + Py_CLEAR(clear_module_state->__pyx_n_s_TopLevelThreadTracerNoBackFrame_2); + Py_CLEAR(clear_module_state->__pyx_n_s_TopLevelThreadTracerNoBackFrame_3); + Py_CLEAR(clear_module_state->__pyx_n_s_TopLevelThreadTracerNoBackFrame_4); + Py_CLEAR(clear_module_state->__pyx_n_s_TopLevelThreadTracerNoBackFrame_5); + Py_CLEAR(clear_module_state->__pyx_n_s_TopLevelThreadTracerOnlyUnhandle); + Py_CLEAR(clear_module_state->__pyx_n_s_TopLevelThreadTracerOnlyUnhandle_2); + Py_CLEAR(clear_module_state->__pyx_n_s_TopLevelThreadTracerOnlyUnhandle_3); + Py_CLEAR(clear_module_state->__pyx_n_s_TopLevelThreadTracerOnlyUnhandle_4); + Py_CLEAR(clear_module_state->__pyx_n_s_TopLevelThreadTracerOnlyUnhandle_5); + Py_CLEAR(clear_module_state->__pyx_n_s_TryExceptContainerObj); + Py_CLEAR(clear_module_state->__pyx_n_s_TryExceptContainerObj___reduce); + Py_CLEAR(clear_module_state->__pyx_n_s_TryExceptContainerObj___setstat); + Py_CLEAR(clear_module_state->__pyx_n_s_USE_CUSTOM_SYS_CURRENT_FRAMES_MA); + Py_CLEAR(clear_module_state->__pyx_kp_s_Unable_to_get_topmost_frame_for); + Py_CLEAR(clear_module_state->__pyx_kp_s__10); + Py_CLEAR(clear_module_state->__pyx_kp_u__10); + Py_CLEAR(clear_module_state->__pyx_n_s__19); + Py_CLEAR(clear_module_state->__pyx_kp_s__4); + Py_CLEAR(clear_module_state->__pyx_kp_s__8); + Py_CLEAR(clear_module_state->__pyx_kp_s__9); + Py_CLEAR(clear_module_state->__pyx_n_s_abs_real_path_and_base); + Py_CLEAR(clear_module_state->__pyx_n_s_absolute_filename); + Py_CLEAR(clear_module_state->__pyx_n_s_active); + Py_CLEAR(clear_module_state->__pyx_n_s_add); + Py_CLEAR(clear_module_state->__pyx_n_s_add_additional_info); + Py_CLEAR(clear_module_state->__pyx_n_s_add_command); + Py_CLEAR(clear_module_state->__pyx_n_s_add_exception_to_frame); + Py_CLEAR(clear_module_state->__pyx_n_s_additional_info); + Py_CLEAR(clear_module_state->__pyx_n_s_any_thread_stepping); + Py_CLEAR(clear_module_state->__pyx_n_s_append); + Py_CLEAR(clear_module_state->__pyx_n_s_apply_files_filter); + Py_CLEAR(clear_module_state->__pyx_n_s_apply_to_settrace); + Py_CLEAR(clear_module_state->__pyx_n_s_arg); + Py_CLEAR(clear_module_state->__pyx_n_s_args); + Py_CLEAR(clear_module_state->__pyx_n_s_args_2); + Py_CLEAR(clear_module_state->__pyx_n_s_asyncio_coroutines); + Py_CLEAR(clear_module_state->__pyx_n_s_basename); + Py_CLEAR(clear_module_state->__pyx_n_s_bootstrap); + Py_CLEAR(clear_module_state->__pyx_n_s_bootstrap_2); + Py_CLEAR(clear_module_state->__pyx_n_s_bootstrap_inner); + Py_CLEAR(clear_module_state->__pyx_n_s_bootstrap_inner_2); + Py_CLEAR(clear_module_state->__pyx_n_s_break_on_caught_exceptions); + Py_CLEAR(clear_module_state->__pyx_n_s_break_on_user_uncaught_exception); + Py_CLEAR(clear_module_state->__pyx_n_s_breakpoints); + Py_CLEAR(clear_module_state->__pyx_n_s_call); + Py_CLEAR(clear_module_state->__pyx_n_s_call_2); + Py_CLEAR(clear_module_state->__pyx_n_s_can_skip); + Py_CLEAR(clear_module_state->__pyx_n_s_canonical_normalized_filename); + Py_CLEAR(clear_module_state->__pyx_kp_s_cell); + Py_CLEAR(clear_module_state->__pyx_n_s_check_excs); + Py_CLEAR(clear_module_state->__pyx_n_s_check_trace_obj); + Py_CLEAR(clear_module_state->__pyx_n_s_checkcache); + Py_CLEAR(clear_module_state->__pyx_n_s_children_variants); + Py_CLEAR(clear_module_state->__pyx_n_s_class_getitem); + Py_CLEAR(clear_module_state->__pyx_n_s_cline_in_traceback); + Py_CLEAR(clear_module_state->__pyx_n_s_cmd_factory); + Py_CLEAR(clear_module_state->__pyx_n_s_cmd_step_into); + Py_CLEAR(clear_module_state->__pyx_n_s_cmd_step_over); + Py_CLEAR(clear_module_state->__pyx_n_s_co_filename); + Py_CLEAR(clear_module_state->__pyx_n_s_co_firstlineno); + Py_CLEAR(clear_module_state->__pyx_n_s_co_flags); + Py_CLEAR(clear_module_state->__pyx_n_s_co_name); + Py_CLEAR(clear_module_state->__pyx_n_s_collect_return_info); + Py_CLEAR(clear_module_state->__pyx_n_s_collect_try_except_info); + Py_CLEAR(clear_module_state->__pyx_n_s_compile); + Py_CLEAR(clear_module_state->__pyx_n_s_condition); + Py_CLEAR(clear_module_state->__pyx_n_s_constant_to_str); + Py_CLEAR(clear_module_state->__pyx_n_s_constructed_tid_to_last_frame); + Py_CLEAR(clear_module_state->__pyx_n_s_container_obj); + Py_CLEAR(clear_module_state->__pyx_n_s_critical); + Py_CLEAR(clear_module_state->__pyx_n_s_curr_stat); + Py_CLEAR(clear_module_state->__pyx_n_s_current_frames); + Py_CLEAR(clear_module_state->__pyx_n_s_custom_key); + Py_CLEAR(clear_module_state->__pyx_n_s_debug); + Py_CLEAR(clear_module_state->__pyx_n_s_dict); + Py_CLEAR(clear_module_state->__pyx_n_s_dict_2); + Py_CLEAR(clear_module_state->__pyx_n_s_dis); + Py_CLEAR(clear_module_state->__pyx_kp_u_disable); + Py_CLEAR(clear_module_state->__pyx_n_s_disable_tracing); + Py_CLEAR(clear_module_state->__pyx_n_s_do_wait_suspend); + Py_CLEAR(clear_module_state->__pyx_kp_u_enable); + Py_CLEAR(clear_module_state->__pyx_n_s_enable_tracing); + Py_CLEAR(clear_module_state->__pyx_n_s_encode); + Py_CLEAR(clear_module_state->__pyx_n_s_endswith); + Py_CLEAR(clear_module_state->__pyx_n_s_enter); + Py_CLEAR(clear_module_state->__pyx_n_s_event); + Py_CLEAR(clear_module_state->__pyx_n_s_exc_break); + Py_CLEAR(clear_module_state->__pyx_n_s_exc_break_caught); + Py_CLEAR(clear_module_state->__pyx_n_s_exc_break_user); + Py_CLEAR(clear_module_state->__pyx_n_s_exc_info); + Py_CLEAR(clear_module_state->__pyx_n_s_exc_lineno); + Py_CLEAR(clear_module_state->__pyx_n_s_except_line); + Py_CLEAR(clear_module_state->__pyx_n_s_exception); + Py_CLEAR(clear_module_state->__pyx_n_s_exception_break); + Py_CLEAR(clear_module_state->__pyx_n_s_exception_breakpoint); + Py_CLEAR(clear_module_state->__pyx_n_s_exception_type); + Py_CLEAR(clear_module_state->__pyx_n_s_exclude_exception_by_filter); + Py_CLEAR(clear_module_state->__pyx_n_s_exec); + Py_CLEAR(clear_module_state->__pyx_n_s_execfile); + Py_CLEAR(clear_module_state->__pyx_n_s_exit); + Py_CLEAR(clear_module_state->__pyx_n_s_expression); + Py_CLEAR(clear_module_state->__pyx_n_s_f); + Py_CLEAR(clear_module_state->__pyx_n_s_f_back); + Py_CLEAR(clear_module_state->__pyx_n_s_f_code); + Py_CLEAR(clear_module_state->__pyx_n_s_f_globals); + Py_CLEAR(clear_module_state->__pyx_n_s_f_lasti); + Py_CLEAR(clear_module_state->__pyx_n_s_f_lineno); + Py_CLEAR(clear_module_state->__pyx_n_s_f_locals); + Py_CLEAR(clear_module_state->__pyx_n_s_f_trace); + Py_CLEAR(clear_module_state->__pyx_n_s_f_unhandled); + Py_CLEAR(clear_module_state->__pyx_n_s_filename); + Py_CLEAR(clear_module_state->__pyx_n_s_filename_to_lines_where_exceptio); + Py_CLEAR(clear_module_state->__pyx_n_s_filename_to_stat_info); + Py_CLEAR(clear_module_state->__pyx_n_s_findlinestarts); + Py_CLEAR(clear_module_state->__pyx_n_s_fix_top_level_trace_and_get_trac); + Py_CLEAR(clear_module_state->__pyx_n_s_force_only_unhandled_tracer); + Py_CLEAR(clear_module_state->__pyx_n_s_frame); + Py_CLEAR(clear_module_state->__pyx_n_s_frame_cache_key); + Py_CLEAR(clear_module_state->__pyx_n_s_frame_id_to_frame); + Py_CLEAR(clear_module_state->__pyx_n_s_frame_skips_cache); + Py_CLEAR(clear_module_state->__pyx_n_s_frame_trace_dispatch); + Py_CLEAR(clear_module_state->__pyx_n_s_from_user_input); + Py_CLEAR(clear_module_state->__pyx_n_s_func_name); + Py_CLEAR(clear_module_state->__pyx_n_s_function_breakpoint_name_to_brea); + Py_CLEAR(clear_module_state->__pyx_kp_u_gc); + Py_CLEAR(clear_module_state->__pyx_n_s_get); + Py_CLEAR(clear_module_state->__pyx_n_s_get_abs_path_real_path_and_base); + Py_CLEAR(clear_module_state->__pyx_n_s_get_breakpoint); + Py_CLEAR(clear_module_state->__pyx_n_s_get_clsname_for_code); + Py_CLEAR(clear_module_state->__pyx_n_s_get_current_thread_id); + Py_CLEAR(clear_module_state->__pyx_n_s_get_exception_breakpoint); + Py_CLEAR(clear_module_state->__pyx_n_s_get_file_type); + Py_CLEAR(clear_module_state->__pyx_n_s_get_global_debugger); + Py_CLEAR(clear_module_state->__pyx_n_s_get_internal_queue_and_event); + Py_CLEAR(clear_module_state->__pyx_n_s_get_method_object); + Py_CLEAR(clear_module_state->__pyx_n_s_get_related_thread); + Py_CLEAR(clear_module_state->__pyx_n_s_get_smart_step_into_variant_from); + Py_CLEAR(clear_module_state->__pyx_n_s_get_thread_id); + Py_CLEAR(clear_module_state->__pyx_n_s_get_topmost_frame); + Py_CLEAR(clear_module_state->__pyx_n_s_get_trace_dispatch_func); + Py_CLEAR(clear_module_state->__pyx_n_s_getline); + Py_CLEAR(clear_module_state->__pyx_n_s_getstate); + Py_CLEAR(clear_module_state->__pyx_n_s_global_cache_frame_skips); + Py_CLEAR(clear_module_state->__pyx_n_s_global_cache_skips); + Py_CLEAR(clear_module_state->__pyx_n_s_global_notify_skipped_step_in_l); + Py_CLEAR(clear_module_state->__pyx_n_s_handle_breakpoint_condition); + Py_CLEAR(clear_module_state->__pyx_n_s_handle_breakpoint_expression); + Py_CLEAR(clear_module_state->__pyx_n_s_handle_exception); + Py_CLEAR(clear_module_state->__pyx_n_s_handle_user_exception); + Py_CLEAR(clear_module_state->__pyx_n_s_has_condition); + Py_CLEAR(clear_module_state->__pyx_n_s_has_plugin_exception_breaks); + Py_CLEAR(clear_module_state->__pyx_n_s_has_plugin_line_breaks); + Py_CLEAR(clear_module_state->__pyx_n_s_i); + Py_CLEAR(clear_module_state->__pyx_n_s_id); + Py_CLEAR(clear_module_state->__pyx_n_s_ident); + Py_CLEAR(clear_module_state->__pyx_n_s_ident_2); + Py_CLEAR(clear_module_state->__pyx_n_s_ignore_exception_trace); + Py_CLEAR(clear_module_state->__pyx_n_s_ignore_exceptions_thrown_in_line); + Py_CLEAR(clear_module_state->__pyx_n_s_ignore_system_exit_code); + Py_CLEAR(clear_module_state->__pyx_n_s_import); + Py_CLEAR(clear_module_state->__pyx_n_s_in_project_scope); + Py_CLEAR(clear_module_state->__pyx_n_s_info); + Py_CLEAR(clear_module_state->__pyx_n_s_initial_trace_obj); + Py_CLEAR(clear_module_state->__pyx_n_s_initializing); + Py_CLEAR(clear_module_state->__pyx_kp_s_invalid); + Py_CLEAR(clear_module_state->__pyx_n_s_is_coroutine); + Py_CLEAR(clear_module_state->__pyx_n_s_is_files_filter_enabled); + Py_CLEAR(clear_module_state->__pyx_n_s_is_line_in_except_block); + Py_CLEAR(clear_module_state->__pyx_n_s_is_line_in_try_block); + Py_CLEAR(clear_module_state->__pyx_n_s_is_logpoint); + Py_CLEAR(clear_module_state->__pyx_n_s_is_stepping); + Py_CLEAR(clear_module_state->__pyx_n_s_is_thread_alive); + Py_CLEAR(clear_module_state->__pyx_n_s_is_unhandled_exception); + Py_CLEAR(clear_module_state->__pyx_n_s_is_unwind); + Py_CLEAR(clear_module_state->__pyx_n_s_is_user_uncaught); + Py_CLEAR(clear_module_state->__pyx_kp_u_isenabled); + Py_CLEAR(clear_module_state->__pyx_n_s_j); + Py_CLEAR(clear_module_state->__pyx_n_s_just_raised); + Py_CLEAR(clear_module_state->__pyx_n_s_kwargs); + Py_CLEAR(clear_module_state->__pyx_kp_s_lambda); + Py_CLEAR(clear_module_state->__pyx_n_s_last_raise_line); + Py_CLEAR(clear_module_state->__pyx_n_s_last_stat); + Py_CLEAR(clear_module_state->__pyx_n_s_line); + Py_CLEAR(clear_module_state->__pyx_n_s_linecache); + Py_CLEAR(clear_module_state->__pyx_n_s_lines); + Py_CLEAR(clear_module_state->__pyx_n_s_lines_ignored); + Py_CLEAR(clear_module_state->__pyx_n_s_linesep); + Py_CLEAR(clear_module_state->__pyx_n_s_main); + Py_CLEAR(clear_module_state->__pyx_n_s_main_2); + Py_CLEAR(clear_module_state->__pyx_n_s_make_console_message); + Py_CLEAR(clear_module_state->__pyx_n_s_make_io_message); + Py_CLEAR(clear_module_state->__pyx_n_s_match); + Py_CLEAR(clear_module_state->__pyx_n_s_maybe_user_uncaught_exc_info); + Py_CLEAR(clear_module_state->__pyx_n_s_merged); + Py_CLEAR(clear_module_state->__pyx_n_s_method_object); + Py_CLEAR(clear_module_state->__pyx_kp_s_module); + Py_CLEAR(clear_module_state->__pyx_n_s_name); + Py_CLEAR(clear_module_state->__pyx_n_s_name_2); + Py_CLEAR(clear_module_state->__pyx_n_s_new); + Py_CLEAR(clear_module_state->__pyx_n_s_next_additional_info); + Py_CLEAR(clear_module_state->__pyx_n_s_notify_on_first_raise_only); + Py_CLEAR(clear_module_state->__pyx_n_s_notify_skipped_step_in_because_o); + Py_CLEAR(clear_module_state->__pyx_n_s_notify_thread_not_alive); + Py_CLEAR(clear_module_state->__pyx_n_s_original_call); + Py_CLEAR(clear_module_state->__pyx_n_s_original_step_cmd); + Py_CLEAR(clear_module_state->__pyx_n_s_os); + Py_CLEAR(clear_module_state->__pyx_n_s_os_path); + Py_CLEAR(clear_module_state->__pyx_n_s_path); + Py_CLEAR(clear_module_state->__pyx_n_s_pickle); + Py_CLEAR(clear_module_state->__pyx_n_s_plugin); + Py_CLEAR(clear_module_state->__pyx_n_s_pop); + Py_CLEAR(clear_module_state->__pyx_n_s_prev_user_uncaught_exc_info); + Py_CLEAR(clear_module_state->__pyx_n_s_py_db); + Py_CLEAR(clear_module_state->__pyx_kp_s_pyc); + Py_CLEAR(clear_module_state->__pyx_n_s_pydb_disposed); + Py_CLEAR(clear_module_state->__pyx_n_s_pydev_bundle); + Py_CLEAR(clear_module_state->__pyx_n_s_pydev_bundle__pydev_saved_modul); + Py_CLEAR(clear_module_state->__pyx_n_s_pydev_bundle_pydev_is_thread_al); + Py_CLEAR(clear_module_state->__pyx_n_s_pydev_bundle_pydev_log); + Py_CLEAR(clear_module_state->__pyx_n_s_pydev_do_not_trace); + Py_CLEAR(clear_module_state->__pyx_kp_s_pydev_execfile_py); + Py_CLEAR(clear_module_state->__pyx_n_s_pydev_log); + Py_CLEAR(clear_module_state->__pyx_n_s_pydev_log_exception); + Py_CLEAR(clear_module_state->__pyx_n_s_pydev_monkey); + Py_CLEAR(clear_module_state->__pyx_n_s_pydevd); + Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_bundle); + Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_bundle_pydevd_bytecode_u); + Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_bundle_pydevd_comm_const); + Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_bundle_pydevd_constants); + Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_bundle_pydevd_cython); + Py_CLEAR(clear_module_state->__pyx_kp_s_pydevd_bundle_pydevd_cython_pyx); + Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_bundle_pydevd_frame_util); + Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_bundle_pydevd_utils); + Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_dont_trace); + Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_file_utils); + Py_CLEAR(clear_module_state->__pyx_kp_s_pydevd_py); + Py_CLEAR(clear_module_state->__pyx_kp_s_pydevd_traceproperty_py); + Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_tracing); + Py_CLEAR(clear_module_state->__pyx_n_s_pyx_PickleError); + Py_CLEAR(clear_module_state->__pyx_n_s_pyx_checksum); + Py_CLEAR(clear_module_state->__pyx_n_s_pyx_result); + Py_CLEAR(clear_module_state->__pyx_n_s_pyx_state); + Py_CLEAR(clear_module_state->__pyx_n_s_pyx_type); + Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle_PyDBAdditionalThr); + Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle_PyDBFrame); + Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle_SafeCallWrapper); + Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle_ThreadTracer); + Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle_TopLevelThreadTra); + Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle_TopLevelThreadTra_2); + Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle__TryExceptContain); + Py_CLEAR(clear_module_state->__pyx_n_s_pyx_vtable); + Py_CLEAR(clear_module_state->__pyx_n_s_qname); + Py_CLEAR(clear_module_state->__pyx_n_s_quitting); + Py_CLEAR(clear_module_state->__pyx_n_s_raise_lines); + Py_CLEAR(clear_module_state->__pyx_n_s_raise_lines_in_except); + Py_CLEAR(clear_module_state->__pyx_n_s_re); + Py_CLEAR(clear_module_state->__pyx_n_s_reduce); + Py_CLEAR(clear_module_state->__pyx_n_s_reduce_cython); + Py_CLEAR(clear_module_state->__pyx_n_s_reduce_ex); + Py_CLEAR(clear_module_state->__pyx_n_s_ref); + Py_CLEAR(clear_module_state->__pyx_n_s_remove_additional_info); + Py_CLEAR(clear_module_state->__pyx_n_s_remove_exception_from_frame); + Py_CLEAR(clear_module_state->__pyx_n_s_remove_return_values_flag); + Py_CLEAR(clear_module_state->__pyx_n_s_result); + Py_CLEAR(clear_module_state->__pyx_n_s_ret); + Py_CLEAR(clear_module_state->__pyx_n_s_return); + Py_CLEAR(clear_module_state->__pyx_n_s_return_line); + Py_CLEAR(clear_module_state->__pyx_n_s_returns); + Py_CLEAR(clear_module_state->__pyx_n_s_rfind); + Py_CLEAR(clear_module_state->__pyx_n_s_run); + Py_CLEAR(clear_module_state->__pyx_kp_s_s_raised_from_within_the_callba); + Py_CLEAR(clear_module_state->__pyx_kp_s_s_s); + Py_CLEAR(clear_module_state->__pyx_n_s_self); + Py_CLEAR(clear_module_state->__pyx_n_s_send_caught_exception_stack); + Py_CLEAR(clear_module_state->__pyx_n_s_send_caught_exception_stack_proc); + Py_CLEAR(clear_module_state->__pyx_n_s_set); + Py_CLEAR(clear_module_state->__pyx_n_s_set_additional_thread_info); + Py_CLEAR(clear_module_state->__pyx_n_s_set_additional_thread_info_lock); + Py_CLEAR(clear_module_state->__pyx_n_s_set_suspend); + Py_CLEAR(clear_module_state->__pyx_n_s_set_trace_for_frame_and_parents); + Py_CLEAR(clear_module_state->__pyx_n_s_setstate); + Py_CLEAR(clear_module_state->__pyx_n_s_setstate_cython); + Py_CLEAR(clear_module_state->__pyx_n_s_should_stop); + Py_CLEAR(clear_module_state->__pyx_n_s_should_stop_on_exception); + Py_CLEAR(clear_module_state->__pyx_n_s_should_trace_hook); + Py_CLEAR(clear_module_state->__pyx_n_s_show_return_values); + Py_CLEAR(clear_module_state->__pyx_n_s_skip_on_exceptions_thrown_in_sam); + Py_CLEAR(clear_module_state->__pyx_n_s_spec); + Py_CLEAR(clear_module_state->__pyx_n_s_st_mtime); + Py_CLEAR(clear_module_state->__pyx_n_s_st_size); + Py_CLEAR(clear_module_state->__pyx_n_s_startswith); + Py_CLEAR(clear_module_state->__pyx_n_s_stat); + Py_CLEAR(clear_module_state->__pyx_n_s_state); + Py_CLEAR(clear_module_state->__pyx_n_s_stop); + Py_CLEAR(clear_module_state->__pyx_n_s_stop_on_unhandled_exception); + Py_CLEAR(clear_module_state->__pyx_n_s_stopped); + Py_CLEAR(clear_module_state->__pyx_kp_s_stringsource); + Py_CLEAR(clear_module_state->__pyx_n_s_suspend); + Py_CLEAR(clear_module_state->__pyx_n_s_suspend_other_threads); + Py_CLEAR(clear_module_state->__pyx_n_s_suspend_policy); + Py_CLEAR(clear_module_state->__pyx_n_s_suspended_at_unhandled); + Py_CLEAR(clear_module_state->__pyx_n_s_sys); + Py_CLEAR(clear_module_state->__pyx_n_s_t); + Py_CLEAR(clear_module_state->__pyx_n_s_tb_frame); + Py_CLEAR(clear_module_state->__pyx_n_s_tb_lineno); + Py_CLEAR(clear_module_state->__pyx_n_s_tb_next); + Py_CLEAR(clear_module_state->__pyx_n_s_test); + Py_CLEAR(clear_module_state->__pyx_n_s_thread); + Py_CLEAR(clear_module_state->__pyx_kp_s_thread__ident_is_None_in__get_re); + Py_CLEAR(clear_module_state->__pyx_n_s_thread_trace_func); + Py_CLEAR(clear_module_state->__pyx_n_s_thread_tracer); + Py_CLEAR(clear_module_state->__pyx_n_s_threading); + Py_CLEAR(clear_module_state->__pyx_n_s_threading_active); + Py_CLEAR(clear_module_state->__pyx_n_s_threading_current_thread); + Py_CLEAR(clear_module_state->__pyx_n_s_threading_get_ident); + Py_CLEAR(clear_module_state->__pyx_n_s_top_level_thread_tracer); + Py_CLEAR(clear_module_state->__pyx_n_s_top_level_thread_tracer_no_back); + Py_CLEAR(clear_module_state->__pyx_n_s_top_level_thread_tracer_unhandle); + Py_CLEAR(clear_module_state->__pyx_n_s_trace); + Py_CLEAR(clear_module_state->__pyx_n_s_trace_dispatch); + Py_CLEAR(clear_module_state->__pyx_n_s_trace_dispatch_and_unhandled_exc); + Py_CLEAR(clear_module_state->__pyx_n_s_trace_exception); + Py_CLEAR(clear_module_state->__pyx_n_s_trace_obj); + Py_CLEAR(clear_module_state->__pyx_n_s_trace_unhandled_exceptions); + Py_CLEAR(clear_module_state->__pyx_n_s_try_exc_info); + Py_CLEAR(clear_module_state->__pyx_n_s_try_except_info); + Py_CLEAR(clear_module_state->__pyx_n_s_try_except_infos); + Py_CLEAR(clear_module_state->__pyx_n_s_update); + Py_CLEAR(clear_module_state->__pyx_n_s_update_stepping_info); + Py_CLEAR(clear_module_state->__pyx_n_s_use_setstate); + Py_CLEAR(clear_module_state->__pyx_kp_s_utf_8); + Py_CLEAR(clear_module_state->__pyx_n_s_valid_try_except_infos); + Py_CLEAR(clear_module_state->__pyx_n_s_value); + Py_CLEAR(clear_module_state->__pyx_n_s_values); + Py_CLEAR(clear_module_state->__pyx_n_s_version); + Py_CLEAR(clear_module_state->__pyx_n_s_was_just_raised); + Py_CLEAR(clear_module_state->__pyx_n_s_weak_thread); + Py_CLEAR(clear_module_state->__pyx_n_s_weakref); + Py_CLEAR(clear_module_state->__pyx_n_s_writer); + Py_CLEAR(clear_module_state->__pyx_int_0); + Py_CLEAR(clear_module_state->__pyx_int_1); + Py_CLEAR(clear_module_state->__pyx_int_2); + Py_CLEAR(clear_module_state->__pyx_int_11); + Py_CLEAR(clear_module_state->__pyx_int_111); + Py_CLEAR(clear_module_state->__pyx_int_137); + Py_CLEAR(clear_module_state->__pyx_int_160); + Py_CLEAR(clear_module_state->__pyx_int_2424557); + Py_CLEAR(clear_module_state->__pyx_int_16751766); + Py_CLEAR(clear_module_state->__pyx_int_18997755); + Py_CLEAR(clear_module_state->__pyx_int_61391470); + Py_CLEAR(clear_module_state->__pyx_int_63705258); + Py_CLEAR(clear_module_state->__pyx_int_64458794); + Py_CLEAR(clear_module_state->__pyx_int_66451433); + Py_CLEAR(clear_module_state->__pyx_int_70528507); + Py_CLEAR(clear_module_state->__pyx_int_84338306); + Py_CLEAR(clear_module_state->__pyx_int_125568891); + Py_CLEAR(clear_module_state->__pyx_int_169093275); + Py_CLEAR(clear_module_state->__pyx_int_171613889); + Py_CLEAR(clear_module_state->__pyx_int_192493205); + Py_CLEAR(clear_module_state->__pyx_int_210464433); + Py_CLEAR(clear_module_state->__pyx_int_221489684); + Py_CLEAR(clear_module_state->__pyx_int_230645316); + Py_CLEAR(clear_module_state->__pyx_int_232881363); + Py_CLEAR(clear_module_state->__pyx_int_255484337); + Py_CLEAR(clear_module_state->__pyx_int_neg_1); + Py_CLEAR(clear_module_state->__pyx_slice__2); + Py_CLEAR(clear_module_state->__pyx_slice__6); + Py_CLEAR(clear_module_state->__pyx_tuple__3); + Py_CLEAR(clear_module_state->__pyx_tuple__5); + Py_CLEAR(clear_module_state->__pyx_tuple__7); + Py_CLEAR(clear_module_state->__pyx_tuple__11); + Py_CLEAR(clear_module_state->__pyx_tuple__12); + Py_CLEAR(clear_module_state->__pyx_tuple__13); + Py_CLEAR(clear_module_state->__pyx_tuple__14); + Py_CLEAR(clear_module_state->__pyx_tuple__15); + Py_CLEAR(clear_module_state->__pyx_tuple__16); + Py_CLEAR(clear_module_state->__pyx_tuple__17); + Py_CLEAR(clear_module_state->__pyx_tuple__18); + Py_CLEAR(clear_module_state->__pyx_tuple__20); + Py_CLEAR(clear_module_state->__pyx_tuple__23); + Py_CLEAR(clear_module_state->__pyx_tuple__26); + Py_CLEAR(clear_module_state->__pyx_tuple__28); + Py_CLEAR(clear_module_state->__pyx_tuple__30); + Py_CLEAR(clear_module_state->__pyx_tuple__32); + Py_CLEAR(clear_module_state->__pyx_tuple__36); + Py_CLEAR(clear_module_state->__pyx_tuple__37); + Py_CLEAR(clear_module_state->__pyx_tuple__39); + Py_CLEAR(clear_module_state->__pyx_tuple__40); + Py_CLEAR(clear_module_state->__pyx_tuple__41); + Py_CLEAR(clear_module_state->__pyx_tuple__42); + Py_CLEAR(clear_module_state->__pyx_tuple__46); + Py_CLEAR(clear_module_state->__pyx_tuple__49); + Py_CLEAR(clear_module_state->__pyx_tuple__51); + Py_CLEAR(clear_module_state->__pyx_tuple__53); + Py_CLEAR(clear_module_state->__pyx_tuple__57); + Py_CLEAR(clear_module_state->__pyx_tuple__59); + Py_CLEAR(clear_module_state->__pyx_tuple__60); + Py_CLEAR(clear_module_state->__pyx_tuple__62); + Py_CLEAR(clear_module_state->__pyx_tuple__67); + Py_CLEAR(clear_module_state->__pyx_tuple__69); + Py_CLEAR(clear_module_state->__pyx_tuple__71); + Py_CLEAR(clear_module_state->__pyx_tuple__76); + Py_CLEAR(clear_module_state->__pyx_tuple__85); + Py_CLEAR(clear_module_state->__pyx_codeobj__21); + Py_CLEAR(clear_module_state->__pyx_codeobj__22); + Py_CLEAR(clear_module_state->__pyx_codeobj__24); + Py_CLEAR(clear_module_state->__pyx_codeobj__25); + Py_CLEAR(clear_module_state->__pyx_codeobj__27); + Py_CLEAR(clear_module_state->__pyx_codeobj__29); + Py_CLEAR(clear_module_state->__pyx_codeobj__31); + Py_CLEAR(clear_module_state->__pyx_codeobj__33); + Py_CLEAR(clear_module_state->__pyx_codeobj__34); + Py_CLEAR(clear_module_state->__pyx_codeobj__35); + Py_CLEAR(clear_module_state->__pyx_codeobj__38); + Py_CLEAR(clear_module_state->__pyx_codeobj__43); + Py_CLEAR(clear_module_state->__pyx_codeobj__44); + Py_CLEAR(clear_module_state->__pyx_codeobj__45); + Py_CLEAR(clear_module_state->__pyx_codeobj__47); + Py_CLEAR(clear_module_state->__pyx_codeobj__48); + Py_CLEAR(clear_module_state->__pyx_codeobj__50); + Py_CLEAR(clear_module_state->__pyx_codeobj__52); + Py_CLEAR(clear_module_state->__pyx_codeobj__54); + Py_CLEAR(clear_module_state->__pyx_codeobj__55); + Py_CLEAR(clear_module_state->__pyx_codeobj__56); + Py_CLEAR(clear_module_state->__pyx_codeobj__58); + Py_CLEAR(clear_module_state->__pyx_codeobj__61); + Py_CLEAR(clear_module_state->__pyx_codeobj__63); + Py_CLEAR(clear_module_state->__pyx_codeobj__64); + Py_CLEAR(clear_module_state->__pyx_codeobj__65); + Py_CLEAR(clear_module_state->__pyx_codeobj__66); + Py_CLEAR(clear_module_state->__pyx_codeobj__68); + Py_CLEAR(clear_module_state->__pyx_codeobj__70); + Py_CLEAR(clear_module_state->__pyx_codeobj__72); + Py_CLEAR(clear_module_state->__pyx_codeobj__73); + Py_CLEAR(clear_module_state->__pyx_codeobj__74); + Py_CLEAR(clear_module_state->__pyx_codeobj__75); + Py_CLEAR(clear_module_state->__pyx_codeobj__77); + Py_CLEAR(clear_module_state->__pyx_codeobj__78); + Py_CLEAR(clear_module_state->__pyx_codeobj__79); + Py_CLEAR(clear_module_state->__pyx_codeobj__80); + Py_CLEAR(clear_module_state->__pyx_codeobj__81); + Py_CLEAR(clear_module_state->__pyx_codeobj__82); + Py_CLEAR(clear_module_state->__pyx_codeobj__83); + Py_CLEAR(clear_module_state->__pyx_codeobj__84); + Py_CLEAR(clear_module_state->__pyx_codeobj__86); + Py_CLEAR(clear_module_state->__pyx_codeobj__87); + Py_CLEAR(clear_module_state->__pyx_codeobj__88); + Py_CLEAR(clear_module_state->__pyx_codeobj__89); + Py_CLEAR(clear_module_state->__pyx_codeobj__90); + Py_CLEAR(clear_module_state->__pyx_codeobj__91); + Py_CLEAR(clear_module_state->__pyx_codeobj__92); + return 0; +} +#endif +/* #### Code section: module_state_traverse ### */ +#if CYTHON_USE_MODULE_STATE +static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) { + __pyx_mstate *traverse_module_state = __pyx_mstate(m); + if (!traverse_module_state) return 0; + Py_VISIT(traverse_module_state->__pyx_d); + Py_VISIT(traverse_module_state->__pyx_b); + Py_VISIT(traverse_module_state->__pyx_cython_runtime); + Py_VISIT(traverse_module_state->__pyx_empty_tuple); + Py_VISIT(traverse_module_state->__pyx_empty_bytes); + Py_VISIT(traverse_module_state->__pyx_empty_unicode); + #ifdef __Pyx_CyFunction_USED + Py_VISIT(traverse_module_state->__pyx_CyFunctionType); + #endif + #ifdef __Pyx_FusedFunction_USED + Py_VISIT(traverse_module_state->__pyx_FusedFunctionType); + #endif + Py_VISIT(traverse_module_state->__pyx_ptype_7cpython_4type_type); + Py_VISIT(traverse_module_state->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo); + Py_VISIT(traverse_module_state->__pyx_type_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo); + Py_VISIT(traverse_module_state->__pyx_ptype_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj); + Py_VISIT(traverse_module_state->__pyx_type_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj); + Py_VISIT(traverse_module_state->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBFrame); + Py_VISIT(traverse_module_state->__pyx_type_14_pydevd_bundle_13pydevd_cython_PyDBFrame); + Py_VISIT(traverse_module_state->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper); + Py_VISIT(traverse_module_state->__pyx_type_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper); + Py_VISIT(traverse_module_state->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions); + Py_VISIT(traverse_module_state->__pyx_type_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions); + Py_VISIT(traverse_module_state->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame); + Py_VISIT(traverse_module_state->__pyx_type_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame); + Py_VISIT(traverse_module_state->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_ThreadTracer); + Py_VISIT(traverse_module_state->__pyx_type_14_pydevd_bundle_13pydevd_cython_ThreadTracer); + Py_VISIT(traverse_module_state->__pyx_kp_s_); + Py_VISIT(traverse_module_state->__pyx_kp_s_1); + Py_VISIT(traverse_module_state->__pyx_n_s_ALL); + Py_VISIT(traverse_module_state->__pyx_n_s_AttributeError); + Py_VISIT(traverse_module_state->__pyx_n_s_CMD_SET_FUNCTION_BREAK); + Py_VISIT(traverse_module_state->__pyx_n_s_DEBUG_START); + Py_VISIT(traverse_module_state->__pyx_n_s_DEBUG_START_PY3K); + Py_VISIT(traverse_module_state->__pyx_n_s_EXCEPTION_TYPE_HANDLED); + Py_VISIT(traverse_module_state->__pyx_n_s_EXCEPTION_TYPE_USER_UNHANDLED); + Py_VISIT(traverse_module_state->__pyx_kp_s_Error_in_linecache_checkcache_r); + Py_VISIT(traverse_module_state->__pyx_kp_s_Error_in_linecache_getline_r_s_f); + Py_VISIT(traverse_module_state->__pyx_n_s_ForkSafeLock); + Py_VISIT(traverse_module_state->__pyx_n_s_GeneratorExit); + Py_VISIT(traverse_module_state->__pyx_n_s_IGNORE_EXCEPTION_TAG); + Py_VISIT(traverse_module_state->__pyx_kp_s_IgnoreException); + Py_VISIT(traverse_module_state->__pyx_kp_s_Ignore_exception_s_in_library_s); + Py_VISIT(traverse_module_state->__pyx_n_s_ImportError); + Py_VISIT(traverse_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0); + Py_VISIT(traverse_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2); + Py_VISIT(traverse_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3); + Py_VISIT(traverse_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_4); + Py_VISIT(traverse_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_5); + Py_VISIT(traverse_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_6); + Py_VISIT(traverse_module_state->__pyx_n_s_KeyboardInterrupt); + Py_VISIT(traverse_module_state->__pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER); + Py_VISIT(traverse_module_state->__pyx_n_s_NO_FTRACE); + Py_VISIT(traverse_module_state->__pyx_n_s_NameError); + Py_VISIT(traverse_module_state->__pyx_n_s_None); + Py_VISIT(traverse_module_state->__pyx_kp_s_Not_used_in_sys_monitoring_mode); + Py_VISIT(traverse_module_state->__pyx_n_s_PYDEVD_IPYTHON_CONTEXT); + Py_VISIT(traverse_module_state->__pyx_n_s_PYDEVD_USE_SYS_MONITORING); + Py_VISIT(traverse_module_state->__pyx_n_s_PYDEV_FILE); + Py_VISIT(traverse_module_state->__pyx_n_s_PYTHON_SUSPEND); + Py_VISIT(traverse_module_state->__pyx_n_s_PickleError); + Py_VISIT(traverse_module_state->__pyx_n_s_PyDBAdditionalThreadInfo); + Py_VISIT(traverse_module_state->__pyx_n_s_PyDBAdditionalThreadInfo___reduc); + Py_VISIT(traverse_module_state->__pyx_n_s_PyDBAdditionalThreadInfo___setst); + Py_VISIT(traverse_module_state->__pyx_n_s_PyDBAdditionalThreadInfo__get_re); + Py_VISIT(traverse_module_state->__pyx_n_s_PyDBAdditionalThreadInfo__is_ste); + Py_VISIT(traverse_module_state->__pyx_n_s_PyDBAdditionalThreadInfo_get_top); + Py_VISIT(traverse_module_state->__pyx_n_s_PyDBAdditionalThreadInfo_update); + Py_VISIT(traverse_module_state->__pyx_n_s_PyDBFrame); + Py_VISIT(traverse_module_state->__pyx_n_s_PyDBFrame___reduce_cython); + Py_VISIT(traverse_module_state->__pyx_n_s_PyDBFrame___setstate_cython); + Py_VISIT(traverse_module_state->__pyx_n_s_PyDBFrame_do_wait_suspend); + Py_VISIT(traverse_module_state->__pyx_n_s_PyDBFrame_handle_user_exception); + Py_VISIT(traverse_module_state->__pyx_n_s_PyDBFrame_set_suspend); + Py_VISIT(traverse_module_state->__pyx_n_s_PyDBFrame_trace_dispatch); + Py_VISIT(traverse_module_state->__pyx_n_s_PyDBFrame_trace_exception); + Py_VISIT(traverse_module_state->__pyx_n_s_RETURN_VALUES_DICT); + Py_VISIT(traverse_module_state->__pyx_n_s_RuntimeError); + Py_VISIT(traverse_module_state->__pyx_n_s_STATE_RUN); + Py_VISIT(traverse_module_state->__pyx_n_s_STATE_SUSPEND); + Py_VISIT(traverse_module_state->__pyx_n_s_SUPPORT_GEVENT); + Py_VISIT(traverse_module_state->__pyx_n_s_SafeCallWrapper); + Py_VISIT(traverse_module_state->__pyx_n_s_SafeCallWrapper___reduce_cython); + Py_VISIT(traverse_module_state->__pyx_n_s_SafeCallWrapper___setstate_cytho); + Py_VISIT(traverse_module_state->__pyx_n_s_SafeCallWrapper_get_method_objec); + Py_VISIT(traverse_module_state->__pyx_kp_s_State_s_Stop_s_Cmd_s_Kill_s); + Py_VISIT(traverse_module_state->__pyx_n_s_StopAsyncIteration); + Py_VISIT(traverse_module_state->__pyx_n_s_StopIteration); + Py_VISIT(traverse_module_state->__pyx_kp_s_Stop_inside_ipython_call); + Py_VISIT(traverse_module_state->__pyx_n_s_SystemExit); + Py_VISIT(traverse_module_state->__pyx_n_s_TRACE_PROPERTY); + Py_VISIT(traverse_module_state->__pyx_n_s_Thread); + Py_VISIT(traverse_module_state->__pyx_n_s_ThreadTracer); + Py_VISIT(traverse_module_state->__pyx_n_s_ThreadTracer___reduce_cython); + Py_VISIT(traverse_module_state->__pyx_n_s_ThreadTracer___setstate_cython); + Py_VISIT(traverse_module_state->__pyx_n_s_TopLevelThreadTracerNoBackFrame); + Py_VISIT(traverse_module_state->__pyx_n_s_TopLevelThreadTracerNoBackFrame_2); + Py_VISIT(traverse_module_state->__pyx_n_s_TopLevelThreadTracerNoBackFrame_3); + Py_VISIT(traverse_module_state->__pyx_n_s_TopLevelThreadTracerNoBackFrame_4); + Py_VISIT(traverse_module_state->__pyx_n_s_TopLevelThreadTracerNoBackFrame_5); + Py_VISIT(traverse_module_state->__pyx_n_s_TopLevelThreadTracerOnlyUnhandle); + Py_VISIT(traverse_module_state->__pyx_n_s_TopLevelThreadTracerOnlyUnhandle_2); + Py_VISIT(traverse_module_state->__pyx_n_s_TopLevelThreadTracerOnlyUnhandle_3); + Py_VISIT(traverse_module_state->__pyx_n_s_TopLevelThreadTracerOnlyUnhandle_4); + Py_VISIT(traverse_module_state->__pyx_n_s_TopLevelThreadTracerOnlyUnhandle_5); + Py_VISIT(traverse_module_state->__pyx_n_s_TryExceptContainerObj); + Py_VISIT(traverse_module_state->__pyx_n_s_TryExceptContainerObj___reduce); + Py_VISIT(traverse_module_state->__pyx_n_s_TryExceptContainerObj___setstat); + Py_VISIT(traverse_module_state->__pyx_n_s_USE_CUSTOM_SYS_CURRENT_FRAMES_MA); + Py_VISIT(traverse_module_state->__pyx_kp_s_Unable_to_get_topmost_frame_for); + Py_VISIT(traverse_module_state->__pyx_kp_s__10); + Py_VISIT(traverse_module_state->__pyx_kp_u__10); + Py_VISIT(traverse_module_state->__pyx_n_s__19); + Py_VISIT(traverse_module_state->__pyx_kp_s__4); + Py_VISIT(traverse_module_state->__pyx_kp_s__8); + Py_VISIT(traverse_module_state->__pyx_kp_s__9); + Py_VISIT(traverse_module_state->__pyx_n_s_abs_real_path_and_base); + Py_VISIT(traverse_module_state->__pyx_n_s_absolute_filename); + Py_VISIT(traverse_module_state->__pyx_n_s_active); + Py_VISIT(traverse_module_state->__pyx_n_s_add); + Py_VISIT(traverse_module_state->__pyx_n_s_add_additional_info); + Py_VISIT(traverse_module_state->__pyx_n_s_add_command); + Py_VISIT(traverse_module_state->__pyx_n_s_add_exception_to_frame); + Py_VISIT(traverse_module_state->__pyx_n_s_additional_info); + Py_VISIT(traverse_module_state->__pyx_n_s_any_thread_stepping); + Py_VISIT(traverse_module_state->__pyx_n_s_append); + Py_VISIT(traverse_module_state->__pyx_n_s_apply_files_filter); + Py_VISIT(traverse_module_state->__pyx_n_s_apply_to_settrace); + Py_VISIT(traverse_module_state->__pyx_n_s_arg); + Py_VISIT(traverse_module_state->__pyx_n_s_args); + Py_VISIT(traverse_module_state->__pyx_n_s_args_2); + Py_VISIT(traverse_module_state->__pyx_n_s_asyncio_coroutines); + Py_VISIT(traverse_module_state->__pyx_n_s_basename); + Py_VISIT(traverse_module_state->__pyx_n_s_bootstrap); + Py_VISIT(traverse_module_state->__pyx_n_s_bootstrap_2); + Py_VISIT(traverse_module_state->__pyx_n_s_bootstrap_inner); + Py_VISIT(traverse_module_state->__pyx_n_s_bootstrap_inner_2); + Py_VISIT(traverse_module_state->__pyx_n_s_break_on_caught_exceptions); + Py_VISIT(traverse_module_state->__pyx_n_s_break_on_user_uncaught_exception); + Py_VISIT(traverse_module_state->__pyx_n_s_breakpoints); + Py_VISIT(traverse_module_state->__pyx_n_s_call); + Py_VISIT(traverse_module_state->__pyx_n_s_call_2); + Py_VISIT(traverse_module_state->__pyx_n_s_can_skip); + Py_VISIT(traverse_module_state->__pyx_n_s_canonical_normalized_filename); + Py_VISIT(traverse_module_state->__pyx_kp_s_cell); + Py_VISIT(traverse_module_state->__pyx_n_s_check_excs); + Py_VISIT(traverse_module_state->__pyx_n_s_check_trace_obj); + Py_VISIT(traverse_module_state->__pyx_n_s_checkcache); + Py_VISIT(traverse_module_state->__pyx_n_s_children_variants); + Py_VISIT(traverse_module_state->__pyx_n_s_class_getitem); + Py_VISIT(traverse_module_state->__pyx_n_s_cline_in_traceback); + Py_VISIT(traverse_module_state->__pyx_n_s_cmd_factory); + Py_VISIT(traverse_module_state->__pyx_n_s_cmd_step_into); + Py_VISIT(traverse_module_state->__pyx_n_s_cmd_step_over); + Py_VISIT(traverse_module_state->__pyx_n_s_co_filename); + Py_VISIT(traverse_module_state->__pyx_n_s_co_firstlineno); + Py_VISIT(traverse_module_state->__pyx_n_s_co_flags); + Py_VISIT(traverse_module_state->__pyx_n_s_co_name); + Py_VISIT(traverse_module_state->__pyx_n_s_collect_return_info); + Py_VISIT(traverse_module_state->__pyx_n_s_collect_try_except_info); + Py_VISIT(traverse_module_state->__pyx_n_s_compile); + Py_VISIT(traverse_module_state->__pyx_n_s_condition); + Py_VISIT(traverse_module_state->__pyx_n_s_constant_to_str); + Py_VISIT(traverse_module_state->__pyx_n_s_constructed_tid_to_last_frame); + Py_VISIT(traverse_module_state->__pyx_n_s_container_obj); + Py_VISIT(traverse_module_state->__pyx_n_s_critical); + Py_VISIT(traverse_module_state->__pyx_n_s_curr_stat); + Py_VISIT(traverse_module_state->__pyx_n_s_current_frames); + Py_VISIT(traverse_module_state->__pyx_n_s_custom_key); + Py_VISIT(traverse_module_state->__pyx_n_s_debug); + Py_VISIT(traverse_module_state->__pyx_n_s_dict); + Py_VISIT(traverse_module_state->__pyx_n_s_dict_2); + Py_VISIT(traverse_module_state->__pyx_n_s_dis); + Py_VISIT(traverse_module_state->__pyx_kp_u_disable); + Py_VISIT(traverse_module_state->__pyx_n_s_disable_tracing); + Py_VISIT(traverse_module_state->__pyx_n_s_do_wait_suspend); + Py_VISIT(traverse_module_state->__pyx_kp_u_enable); + Py_VISIT(traverse_module_state->__pyx_n_s_enable_tracing); + Py_VISIT(traverse_module_state->__pyx_n_s_encode); + Py_VISIT(traverse_module_state->__pyx_n_s_endswith); + Py_VISIT(traverse_module_state->__pyx_n_s_enter); + Py_VISIT(traverse_module_state->__pyx_n_s_event); + Py_VISIT(traverse_module_state->__pyx_n_s_exc_break); + Py_VISIT(traverse_module_state->__pyx_n_s_exc_break_caught); + Py_VISIT(traverse_module_state->__pyx_n_s_exc_break_user); + Py_VISIT(traverse_module_state->__pyx_n_s_exc_info); + Py_VISIT(traverse_module_state->__pyx_n_s_exc_lineno); + Py_VISIT(traverse_module_state->__pyx_n_s_except_line); + Py_VISIT(traverse_module_state->__pyx_n_s_exception); + Py_VISIT(traverse_module_state->__pyx_n_s_exception_break); + Py_VISIT(traverse_module_state->__pyx_n_s_exception_breakpoint); + Py_VISIT(traverse_module_state->__pyx_n_s_exception_type); + Py_VISIT(traverse_module_state->__pyx_n_s_exclude_exception_by_filter); + Py_VISIT(traverse_module_state->__pyx_n_s_exec); + Py_VISIT(traverse_module_state->__pyx_n_s_execfile); + Py_VISIT(traverse_module_state->__pyx_n_s_exit); + Py_VISIT(traverse_module_state->__pyx_n_s_expression); + Py_VISIT(traverse_module_state->__pyx_n_s_f); + Py_VISIT(traverse_module_state->__pyx_n_s_f_back); + Py_VISIT(traverse_module_state->__pyx_n_s_f_code); + Py_VISIT(traverse_module_state->__pyx_n_s_f_globals); + Py_VISIT(traverse_module_state->__pyx_n_s_f_lasti); + Py_VISIT(traverse_module_state->__pyx_n_s_f_lineno); + Py_VISIT(traverse_module_state->__pyx_n_s_f_locals); + Py_VISIT(traverse_module_state->__pyx_n_s_f_trace); + Py_VISIT(traverse_module_state->__pyx_n_s_f_unhandled); + Py_VISIT(traverse_module_state->__pyx_n_s_filename); + Py_VISIT(traverse_module_state->__pyx_n_s_filename_to_lines_where_exceptio); + Py_VISIT(traverse_module_state->__pyx_n_s_filename_to_stat_info); + Py_VISIT(traverse_module_state->__pyx_n_s_findlinestarts); + Py_VISIT(traverse_module_state->__pyx_n_s_fix_top_level_trace_and_get_trac); + Py_VISIT(traverse_module_state->__pyx_n_s_force_only_unhandled_tracer); + Py_VISIT(traverse_module_state->__pyx_n_s_frame); + Py_VISIT(traverse_module_state->__pyx_n_s_frame_cache_key); + Py_VISIT(traverse_module_state->__pyx_n_s_frame_id_to_frame); + Py_VISIT(traverse_module_state->__pyx_n_s_frame_skips_cache); + Py_VISIT(traverse_module_state->__pyx_n_s_frame_trace_dispatch); + Py_VISIT(traverse_module_state->__pyx_n_s_from_user_input); + Py_VISIT(traverse_module_state->__pyx_n_s_func_name); + Py_VISIT(traverse_module_state->__pyx_n_s_function_breakpoint_name_to_brea); + Py_VISIT(traverse_module_state->__pyx_kp_u_gc); + Py_VISIT(traverse_module_state->__pyx_n_s_get); + Py_VISIT(traverse_module_state->__pyx_n_s_get_abs_path_real_path_and_base); + Py_VISIT(traverse_module_state->__pyx_n_s_get_breakpoint); + Py_VISIT(traverse_module_state->__pyx_n_s_get_clsname_for_code); + Py_VISIT(traverse_module_state->__pyx_n_s_get_current_thread_id); + Py_VISIT(traverse_module_state->__pyx_n_s_get_exception_breakpoint); + Py_VISIT(traverse_module_state->__pyx_n_s_get_file_type); + Py_VISIT(traverse_module_state->__pyx_n_s_get_global_debugger); + Py_VISIT(traverse_module_state->__pyx_n_s_get_internal_queue_and_event); + Py_VISIT(traverse_module_state->__pyx_n_s_get_method_object); + Py_VISIT(traverse_module_state->__pyx_n_s_get_related_thread); + Py_VISIT(traverse_module_state->__pyx_n_s_get_smart_step_into_variant_from); + Py_VISIT(traverse_module_state->__pyx_n_s_get_thread_id); + Py_VISIT(traverse_module_state->__pyx_n_s_get_topmost_frame); + Py_VISIT(traverse_module_state->__pyx_n_s_get_trace_dispatch_func); + Py_VISIT(traverse_module_state->__pyx_n_s_getline); + Py_VISIT(traverse_module_state->__pyx_n_s_getstate); + Py_VISIT(traverse_module_state->__pyx_n_s_global_cache_frame_skips); + Py_VISIT(traverse_module_state->__pyx_n_s_global_cache_skips); + Py_VISIT(traverse_module_state->__pyx_n_s_global_notify_skipped_step_in_l); + Py_VISIT(traverse_module_state->__pyx_n_s_handle_breakpoint_condition); + Py_VISIT(traverse_module_state->__pyx_n_s_handle_breakpoint_expression); + Py_VISIT(traverse_module_state->__pyx_n_s_handle_exception); + Py_VISIT(traverse_module_state->__pyx_n_s_handle_user_exception); + Py_VISIT(traverse_module_state->__pyx_n_s_has_condition); + Py_VISIT(traverse_module_state->__pyx_n_s_has_plugin_exception_breaks); + Py_VISIT(traverse_module_state->__pyx_n_s_has_plugin_line_breaks); + Py_VISIT(traverse_module_state->__pyx_n_s_i); + Py_VISIT(traverse_module_state->__pyx_n_s_id); + Py_VISIT(traverse_module_state->__pyx_n_s_ident); + Py_VISIT(traverse_module_state->__pyx_n_s_ident_2); + Py_VISIT(traverse_module_state->__pyx_n_s_ignore_exception_trace); + Py_VISIT(traverse_module_state->__pyx_n_s_ignore_exceptions_thrown_in_line); + Py_VISIT(traverse_module_state->__pyx_n_s_ignore_system_exit_code); + Py_VISIT(traverse_module_state->__pyx_n_s_import); + Py_VISIT(traverse_module_state->__pyx_n_s_in_project_scope); + Py_VISIT(traverse_module_state->__pyx_n_s_info); + Py_VISIT(traverse_module_state->__pyx_n_s_initial_trace_obj); + Py_VISIT(traverse_module_state->__pyx_n_s_initializing); + Py_VISIT(traverse_module_state->__pyx_kp_s_invalid); + Py_VISIT(traverse_module_state->__pyx_n_s_is_coroutine); + Py_VISIT(traverse_module_state->__pyx_n_s_is_files_filter_enabled); + Py_VISIT(traverse_module_state->__pyx_n_s_is_line_in_except_block); + Py_VISIT(traverse_module_state->__pyx_n_s_is_line_in_try_block); + Py_VISIT(traverse_module_state->__pyx_n_s_is_logpoint); + Py_VISIT(traverse_module_state->__pyx_n_s_is_stepping); + Py_VISIT(traverse_module_state->__pyx_n_s_is_thread_alive); + Py_VISIT(traverse_module_state->__pyx_n_s_is_unhandled_exception); + Py_VISIT(traverse_module_state->__pyx_n_s_is_unwind); + Py_VISIT(traverse_module_state->__pyx_n_s_is_user_uncaught); + Py_VISIT(traverse_module_state->__pyx_kp_u_isenabled); + Py_VISIT(traverse_module_state->__pyx_n_s_j); + Py_VISIT(traverse_module_state->__pyx_n_s_just_raised); + Py_VISIT(traverse_module_state->__pyx_n_s_kwargs); + Py_VISIT(traverse_module_state->__pyx_kp_s_lambda); + Py_VISIT(traverse_module_state->__pyx_n_s_last_raise_line); + Py_VISIT(traverse_module_state->__pyx_n_s_last_stat); + Py_VISIT(traverse_module_state->__pyx_n_s_line); + Py_VISIT(traverse_module_state->__pyx_n_s_linecache); + Py_VISIT(traverse_module_state->__pyx_n_s_lines); + Py_VISIT(traverse_module_state->__pyx_n_s_lines_ignored); + Py_VISIT(traverse_module_state->__pyx_n_s_linesep); + Py_VISIT(traverse_module_state->__pyx_n_s_main); + Py_VISIT(traverse_module_state->__pyx_n_s_main_2); + Py_VISIT(traverse_module_state->__pyx_n_s_make_console_message); + Py_VISIT(traverse_module_state->__pyx_n_s_make_io_message); + Py_VISIT(traverse_module_state->__pyx_n_s_match); + Py_VISIT(traverse_module_state->__pyx_n_s_maybe_user_uncaught_exc_info); + Py_VISIT(traverse_module_state->__pyx_n_s_merged); + Py_VISIT(traverse_module_state->__pyx_n_s_method_object); + Py_VISIT(traverse_module_state->__pyx_kp_s_module); + Py_VISIT(traverse_module_state->__pyx_n_s_name); + Py_VISIT(traverse_module_state->__pyx_n_s_name_2); + Py_VISIT(traverse_module_state->__pyx_n_s_new); + Py_VISIT(traverse_module_state->__pyx_n_s_next_additional_info); + Py_VISIT(traverse_module_state->__pyx_n_s_notify_on_first_raise_only); + Py_VISIT(traverse_module_state->__pyx_n_s_notify_skipped_step_in_because_o); + Py_VISIT(traverse_module_state->__pyx_n_s_notify_thread_not_alive); + Py_VISIT(traverse_module_state->__pyx_n_s_original_call); + Py_VISIT(traverse_module_state->__pyx_n_s_original_step_cmd); + Py_VISIT(traverse_module_state->__pyx_n_s_os); + Py_VISIT(traverse_module_state->__pyx_n_s_os_path); + Py_VISIT(traverse_module_state->__pyx_n_s_path); + Py_VISIT(traverse_module_state->__pyx_n_s_pickle); + Py_VISIT(traverse_module_state->__pyx_n_s_plugin); + Py_VISIT(traverse_module_state->__pyx_n_s_pop); + Py_VISIT(traverse_module_state->__pyx_n_s_prev_user_uncaught_exc_info); + Py_VISIT(traverse_module_state->__pyx_n_s_py_db); + Py_VISIT(traverse_module_state->__pyx_kp_s_pyc); + Py_VISIT(traverse_module_state->__pyx_n_s_pydb_disposed); + Py_VISIT(traverse_module_state->__pyx_n_s_pydev_bundle); + Py_VISIT(traverse_module_state->__pyx_n_s_pydev_bundle__pydev_saved_modul); + Py_VISIT(traverse_module_state->__pyx_n_s_pydev_bundle_pydev_is_thread_al); + Py_VISIT(traverse_module_state->__pyx_n_s_pydev_bundle_pydev_log); + Py_VISIT(traverse_module_state->__pyx_n_s_pydev_do_not_trace); + Py_VISIT(traverse_module_state->__pyx_kp_s_pydev_execfile_py); + Py_VISIT(traverse_module_state->__pyx_n_s_pydev_log); + Py_VISIT(traverse_module_state->__pyx_n_s_pydev_log_exception); + Py_VISIT(traverse_module_state->__pyx_n_s_pydev_monkey); + Py_VISIT(traverse_module_state->__pyx_n_s_pydevd); + Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_bundle); + Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_bundle_pydevd_bytecode_u); + Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_bundle_pydevd_comm_const); + Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_bundle_pydevd_constants); + Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_bundle_pydevd_cython); + Py_VISIT(traverse_module_state->__pyx_kp_s_pydevd_bundle_pydevd_cython_pyx); + Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_bundle_pydevd_frame_util); + Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_bundle_pydevd_utils); + Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_dont_trace); + Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_file_utils); + Py_VISIT(traverse_module_state->__pyx_kp_s_pydevd_py); + Py_VISIT(traverse_module_state->__pyx_kp_s_pydevd_traceproperty_py); + Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_tracing); + Py_VISIT(traverse_module_state->__pyx_n_s_pyx_PickleError); + Py_VISIT(traverse_module_state->__pyx_n_s_pyx_checksum); + Py_VISIT(traverse_module_state->__pyx_n_s_pyx_result); + Py_VISIT(traverse_module_state->__pyx_n_s_pyx_state); + Py_VISIT(traverse_module_state->__pyx_n_s_pyx_type); + Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle_PyDBAdditionalThr); + Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle_PyDBFrame); + Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle_SafeCallWrapper); + Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle_ThreadTracer); + Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle_TopLevelThreadTra); + Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle_TopLevelThreadTra_2); + Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle__TryExceptContain); + Py_VISIT(traverse_module_state->__pyx_n_s_pyx_vtable); + Py_VISIT(traverse_module_state->__pyx_n_s_qname); + Py_VISIT(traverse_module_state->__pyx_n_s_quitting); + Py_VISIT(traverse_module_state->__pyx_n_s_raise_lines); + Py_VISIT(traverse_module_state->__pyx_n_s_raise_lines_in_except); + Py_VISIT(traverse_module_state->__pyx_n_s_re); + Py_VISIT(traverse_module_state->__pyx_n_s_reduce); + Py_VISIT(traverse_module_state->__pyx_n_s_reduce_cython); + Py_VISIT(traverse_module_state->__pyx_n_s_reduce_ex); + Py_VISIT(traverse_module_state->__pyx_n_s_ref); + Py_VISIT(traverse_module_state->__pyx_n_s_remove_additional_info); + Py_VISIT(traverse_module_state->__pyx_n_s_remove_exception_from_frame); + Py_VISIT(traverse_module_state->__pyx_n_s_remove_return_values_flag); + Py_VISIT(traverse_module_state->__pyx_n_s_result); + Py_VISIT(traverse_module_state->__pyx_n_s_ret); + Py_VISIT(traverse_module_state->__pyx_n_s_return); + Py_VISIT(traverse_module_state->__pyx_n_s_return_line); + Py_VISIT(traverse_module_state->__pyx_n_s_returns); + Py_VISIT(traverse_module_state->__pyx_n_s_rfind); + Py_VISIT(traverse_module_state->__pyx_n_s_run); + Py_VISIT(traverse_module_state->__pyx_kp_s_s_raised_from_within_the_callba); + Py_VISIT(traverse_module_state->__pyx_kp_s_s_s); + Py_VISIT(traverse_module_state->__pyx_n_s_self); + Py_VISIT(traverse_module_state->__pyx_n_s_send_caught_exception_stack); + Py_VISIT(traverse_module_state->__pyx_n_s_send_caught_exception_stack_proc); + Py_VISIT(traverse_module_state->__pyx_n_s_set); + Py_VISIT(traverse_module_state->__pyx_n_s_set_additional_thread_info); + Py_VISIT(traverse_module_state->__pyx_n_s_set_additional_thread_info_lock); + Py_VISIT(traverse_module_state->__pyx_n_s_set_suspend); + Py_VISIT(traverse_module_state->__pyx_n_s_set_trace_for_frame_and_parents); + Py_VISIT(traverse_module_state->__pyx_n_s_setstate); + Py_VISIT(traverse_module_state->__pyx_n_s_setstate_cython); + Py_VISIT(traverse_module_state->__pyx_n_s_should_stop); + Py_VISIT(traverse_module_state->__pyx_n_s_should_stop_on_exception); + Py_VISIT(traverse_module_state->__pyx_n_s_should_trace_hook); + Py_VISIT(traverse_module_state->__pyx_n_s_show_return_values); + Py_VISIT(traverse_module_state->__pyx_n_s_skip_on_exceptions_thrown_in_sam); + Py_VISIT(traverse_module_state->__pyx_n_s_spec); + Py_VISIT(traverse_module_state->__pyx_n_s_st_mtime); + Py_VISIT(traverse_module_state->__pyx_n_s_st_size); + Py_VISIT(traverse_module_state->__pyx_n_s_startswith); + Py_VISIT(traverse_module_state->__pyx_n_s_stat); + Py_VISIT(traverse_module_state->__pyx_n_s_state); + Py_VISIT(traverse_module_state->__pyx_n_s_stop); + Py_VISIT(traverse_module_state->__pyx_n_s_stop_on_unhandled_exception); + Py_VISIT(traverse_module_state->__pyx_n_s_stopped); + Py_VISIT(traverse_module_state->__pyx_kp_s_stringsource); + Py_VISIT(traverse_module_state->__pyx_n_s_suspend); + Py_VISIT(traverse_module_state->__pyx_n_s_suspend_other_threads); + Py_VISIT(traverse_module_state->__pyx_n_s_suspend_policy); + Py_VISIT(traverse_module_state->__pyx_n_s_suspended_at_unhandled); + Py_VISIT(traverse_module_state->__pyx_n_s_sys); + Py_VISIT(traverse_module_state->__pyx_n_s_t); + Py_VISIT(traverse_module_state->__pyx_n_s_tb_frame); + Py_VISIT(traverse_module_state->__pyx_n_s_tb_lineno); + Py_VISIT(traverse_module_state->__pyx_n_s_tb_next); + Py_VISIT(traverse_module_state->__pyx_n_s_test); + Py_VISIT(traverse_module_state->__pyx_n_s_thread); + Py_VISIT(traverse_module_state->__pyx_kp_s_thread__ident_is_None_in__get_re); + Py_VISIT(traverse_module_state->__pyx_n_s_thread_trace_func); + Py_VISIT(traverse_module_state->__pyx_n_s_thread_tracer); + Py_VISIT(traverse_module_state->__pyx_n_s_threading); + Py_VISIT(traverse_module_state->__pyx_n_s_threading_active); + Py_VISIT(traverse_module_state->__pyx_n_s_threading_current_thread); + Py_VISIT(traverse_module_state->__pyx_n_s_threading_get_ident); + Py_VISIT(traverse_module_state->__pyx_n_s_top_level_thread_tracer); + Py_VISIT(traverse_module_state->__pyx_n_s_top_level_thread_tracer_no_back); + Py_VISIT(traverse_module_state->__pyx_n_s_top_level_thread_tracer_unhandle); + Py_VISIT(traverse_module_state->__pyx_n_s_trace); + Py_VISIT(traverse_module_state->__pyx_n_s_trace_dispatch); + Py_VISIT(traverse_module_state->__pyx_n_s_trace_dispatch_and_unhandled_exc); + Py_VISIT(traverse_module_state->__pyx_n_s_trace_exception); + Py_VISIT(traverse_module_state->__pyx_n_s_trace_obj); + Py_VISIT(traverse_module_state->__pyx_n_s_trace_unhandled_exceptions); + Py_VISIT(traverse_module_state->__pyx_n_s_try_exc_info); + Py_VISIT(traverse_module_state->__pyx_n_s_try_except_info); + Py_VISIT(traverse_module_state->__pyx_n_s_try_except_infos); + Py_VISIT(traverse_module_state->__pyx_n_s_update); + Py_VISIT(traverse_module_state->__pyx_n_s_update_stepping_info); + Py_VISIT(traverse_module_state->__pyx_n_s_use_setstate); + Py_VISIT(traverse_module_state->__pyx_kp_s_utf_8); + Py_VISIT(traverse_module_state->__pyx_n_s_valid_try_except_infos); + Py_VISIT(traverse_module_state->__pyx_n_s_value); + Py_VISIT(traverse_module_state->__pyx_n_s_values); + Py_VISIT(traverse_module_state->__pyx_n_s_version); + Py_VISIT(traverse_module_state->__pyx_n_s_was_just_raised); + Py_VISIT(traverse_module_state->__pyx_n_s_weak_thread); + Py_VISIT(traverse_module_state->__pyx_n_s_weakref); + Py_VISIT(traverse_module_state->__pyx_n_s_writer); + Py_VISIT(traverse_module_state->__pyx_int_0); + Py_VISIT(traverse_module_state->__pyx_int_1); + Py_VISIT(traverse_module_state->__pyx_int_2); + Py_VISIT(traverse_module_state->__pyx_int_11); + Py_VISIT(traverse_module_state->__pyx_int_111); + Py_VISIT(traverse_module_state->__pyx_int_137); + Py_VISIT(traverse_module_state->__pyx_int_160); + Py_VISIT(traverse_module_state->__pyx_int_2424557); + Py_VISIT(traverse_module_state->__pyx_int_16751766); + Py_VISIT(traverse_module_state->__pyx_int_18997755); + Py_VISIT(traverse_module_state->__pyx_int_61391470); + Py_VISIT(traverse_module_state->__pyx_int_63705258); + Py_VISIT(traverse_module_state->__pyx_int_64458794); + Py_VISIT(traverse_module_state->__pyx_int_66451433); + Py_VISIT(traverse_module_state->__pyx_int_70528507); + Py_VISIT(traverse_module_state->__pyx_int_84338306); + Py_VISIT(traverse_module_state->__pyx_int_125568891); + Py_VISIT(traverse_module_state->__pyx_int_169093275); + Py_VISIT(traverse_module_state->__pyx_int_171613889); + Py_VISIT(traverse_module_state->__pyx_int_192493205); + Py_VISIT(traverse_module_state->__pyx_int_210464433); + Py_VISIT(traverse_module_state->__pyx_int_221489684); + Py_VISIT(traverse_module_state->__pyx_int_230645316); + Py_VISIT(traverse_module_state->__pyx_int_232881363); + Py_VISIT(traverse_module_state->__pyx_int_255484337); + Py_VISIT(traverse_module_state->__pyx_int_neg_1); + Py_VISIT(traverse_module_state->__pyx_slice__2); + Py_VISIT(traverse_module_state->__pyx_slice__6); + Py_VISIT(traverse_module_state->__pyx_tuple__3); + Py_VISIT(traverse_module_state->__pyx_tuple__5); + Py_VISIT(traverse_module_state->__pyx_tuple__7); + Py_VISIT(traverse_module_state->__pyx_tuple__11); + Py_VISIT(traverse_module_state->__pyx_tuple__12); + Py_VISIT(traverse_module_state->__pyx_tuple__13); + Py_VISIT(traverse_module_state->__pyx_tuple__14); + Py_VISIT(traverse_module_state->__pyx_tuple__15); + Py_VISIT(traverse_module_state->__pyx_tuple__16); + Py_VISIT(traverse_module_state->__pyx_tuple__17); + Py_VISIT(traverse_module_state->__pyx_tuple__18); + Py_VISIT(traverse_module_state->__pyx_tuple__20); + Py_VISIT(traverse_module_state->__pyx_tuple__23); + Py_VISIT(traverse_module_state->__pyx_tuple__26); + Py_VISIT(traverse_module_state->__pyx_tuple__28); + Py_VISIT(traverse_module_state->__pyx_tuple__30); + Py_VISIT(traverse_module_state->__pyx_tuple__32); + Py_VISIT(traverse_module_state->__pyx_tuple__36); + Py_VISIT(traverse_module_state->__pyx_tuple__37); + Py_VISIT(traverse_module_state->__pyx_tuple__39); + Py_VISIT(traverse_module_state->__pyx_tuple__40); + Py_VISIT(traverse_module_state->__pyx_tuple__41); + Py_VISIT(traverse_module_state->__pyx_tuple__42); + Py_VISIT(traverse_module_state->__pyx_tuple__46); + Py_VISIT(traverse_module_state->__pyx_tuple__49); + Py_VISIT(traverse_module_state->__pyx_tuple__51); + Py_VISIT(traverse_module_state->__pyx_tuple__53); + Py_VISIT(traverse_module_state->__pyx_tuple__57); + Py_VISIT(traverse_module_state->__pyx_tuple__59); + Py_VISIT(traverse_module_state->__pyx_tuple__60); + Py_VISIT(traverse_module_state->__pyx_tuple__62); + Py_VISIT(traverse_module_state->__pyx_tuple__67); + Py_VISIT(traverse_module_state->__pyx_tuple__69); + Py_VISIT(traverse_module_state->__pyx_tuple__71); + Py_VISIT(traverse_module_state->__pyx_tuple__76); + Py_VISIT(traverse_module_state->__pyx_tuple__85); + Py_VISIT(traverse_module_state->__pyx_codeobj__21); + Py_VISIT(traverse_module_state->__pyx_codeobj__22); + Py_VISIT(traverse_module_state->__pyx_codeobj__24); + Py_VISIT(traverse_module_state->__pyx_codeobj__25); + Py_VISIT(traverse_module_state->__pyx_codeobj__27); + Py_VISIT(traverse_module_state->__pyx_codeobj__29); + Py_VISIT(traverse_module_state->__pyx_codeobj__31); + Py_VISIT(traverse_module_state->__pyx_codeobj__33); + Py_VISIT(traverse_module_state->__pyx_codeobj__34); + Py_VISIT(traverse_module_state->__pyx_codeobj__35); + Py_VISIT(traverse_module_state->__pyx_codeobj__38); + Py_VISIT(traverse_module_state->__pyx_codeobj__43); + Py_VISIT(traverse_module_state->__pyx_codeobj__44); + Py_VISIT(traverse_module_state->__pyx_codeobj__45); + Py_VISIT(traverse_module_state->__pyx_codeobj__47); + Py_VISIT(traverse_module_state->__pyx_codeobj__48); + Py_VISIT(traverse_module_state->__pyx_codeobj__50); + Py_VISIT(traverse_module_state->__pyx_codeobj__52); + Py_VISIT(traverse_module_state->__pyx_codeobj__54); + Py_VISIT(traverse_module_state->__pyx_codeobj__55); + Py_VISIT(traverse_module_state->__pyx_codeobj__56); + Py_VISIT(traverse_module_state->__pyx_codeobj__58); + Py_VISIT(traverse_module_state->__pyx_codeobj__61); + Py_VISIT(traverse_module_state->__pyx_codeobj__63); + Py_VISIT(traverse_module_state->__pyx_codeobj__64); + Py_VISIT(traverse_module_state->__pyx_codeobj__65); + Py_VISIT(traverse_module_state->__pyx_codeobj__66); + Py_VISIT(traverse_module_state->__pyx_codeobj__68); + Py_VISIT(traverse_module_state->__pyx_codeobj__70); + Py_VISIT(traverse_module_state->__pyx_codeobj__72); + Py_VISIT(traverse_module_state->__pyx_codeobj__73); + Py_VISIT(traverse_module_state->__pyx_codeobj__74); + Py_VISIT(traverse_module_state->__pyx_codeobj__75); + Py_VISIT(traverse_module_state->__pyx_codeobj__77); + Py_VISIT(traverse_module_state->__pyx_codeobj__78); + Py_VISIT(traverse_module_state->__pyx_codeobj__79); + Py_VISIT(traverse_module_state->__pyx_codeobj__80); + Py_VISIT(traverse_module_state->__pyx_codeobj__81); + Py_VISIT(traverse_module_state->__pyx_codeobj__82); + Py_VISIT(traverse_module_state->__pyx_codeobj__83); + Py_VISIT(traverse_module_state->__pyx_codeobj__84); + Py_VISIT(traverse_module_state->__pyx_codeobj__86); + Py_VISIT(traverse_module_state->__pyx_codeobj__87); + Py_VISIT(traverse_module_state->__pyx_codeobj__88); + Py_VISIT(traverse_module_state->__pyx_codeobj__89); + Py_VISIT(traverse_module_state->__pyx_codeobj__90); + Py_VISIT(traverse_module_state->__pyx_codeobj__91); + Py_VISIT(traverse_module_state->__pyx_codeobj__92); + return 0; +} +#endif +/* #### Code section: module_state_defines ### */ +#define __pyx_d __pyx_mstate_global->__pyx_d +#define __pyx_b __pyx_mstate_global->__pyx_b +#define __pyx_cython_runtime __pyx_mstate_global->__pyx_cython_runtime +#define __pyx_empty_tuple __pyx_mstate_global->__pyx_empty_tuple +#define __pyx_empty_bytes __pyx_mstate_global->__pyx_empty_bytes +#define __pyx_empty_unicode __pyx_mstate_global->__pyx_empty_unicode +#ifdef __Pyx_CyFunction_USED +#define __pyx_CyFunctionType __pyx_mstate_global->__pyx_CyFunctionType +#endif +#ifdef __Pyx_FusedFunction_USED +#define __pyx_FusedFunctionType __pyx_mstate_global->__pyx_FusedFunctionType +#endif +#ifdef __Pyx_Generator_USED +#define __pyx_GeneratorType __pyx_mstate_global->__pyx_GeneratorType +#endif +#ifdef __Pyx_IterableCoroutine_USED +#define __pyx_IterableCoroutineType __pyx_mstate_global->__pyx_IterableCoroutineType +#endif +#ifdef __Pyx_Coroutine_USED +#define __pyx_CoroutineAwaitType __pyx_mstate_global->__pyx_CoroutineAwaitType +#endif +#ifdef __Pyx_Coroutine_USED +#define __pyx_CoroutineType __pyx_mstate_global->__pyx_CoroutineType +#endif +#if CYTHON_USE_MODULE_STATE +#endif +#if CYTHON_USE_MODULE_STATE +#endif +#if CYTHON_USE_MODULE_STATE +#endif +#if CYTHON_USE_MODULE_STATE +#endif +#define __pyx_ptype_7cpython_4type_type __pyx_mstate_global->__pyx_ptype_7cpython_4type_type +#if CYTHON_USE_MODULE_STATE +#endif +#if CYTHON_USE_MODULE_STATE +#endif +#if CYTHON_USE_MODULE_STATE +#endif +#if CYTHON_USE_MODULE_STATE +#define __pyx_type_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo __pyx_mstate_global->__pyx_type_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo +#define __pyx_type_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj __pyx_mstate_global->__pyx_type_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj +#define __pyx_type_14_pydevd_bundle_13pydevd_cython_PyDBFrame __pyx_mstate_global->__pyx_type_14_pydevd_bundle_13pydevd_cython_PyDBFrame +#define __pyx_type_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper __pyx_mstate_global->__pyx_type_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper +#define __pyx_type_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions __pyx_mstate_global->__pyx_type_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions +#define __pyx_type_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame __pyx_mstate_global->__pyx_type_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame +#define __pyx_type_14_pydevd_bundle_13pydevd_cython_ThreadTracer __pyx_mstate_global->__pyx_type_14_pydevd_bundle_13pydevd_cython_ThreadTracer +#endif +#define __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo __pyx_mstate_global->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo +#define __pyx_ptype_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj __pyx_mstate_global->__pyx_ptype_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj +#define __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBFrame __pyx_mstate_global->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBFrame +#define __pyx_ptype_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper __pyx_mstate_global->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper +#define __pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions __pyx_mstate_global->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions +#define __pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame __pyx_mstate_global->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame +#define __pyx_ptype_14_pydevd_bundle_13pydevd_cython_ThreadTracer __pyx_mstate_global->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_ThreadTracer +#define __pyx_kp_s_ __pyx_mstate_global->__pyx_kp_s_ +#define __pyx_kp_s_1 __pyx_mstate_global->__pyx_kp_s_1 +#define __pyx_n_s_ALL __pyx_mstate_global->__pyx_n_s_ALL +#define __pyx_n_s_AttributeError __pyx_mstate_global->__pyx_n_s_AttributeError +#define __pyx_n_s_CMD_SET_FUNCTION_BREAK __pyx_mstate_global->__pyx_n_s_CMD_SET_FUNCTION_BREAK +#define __pyx_n_s_DEBUG_START __pyx_mstate_global->__pyx_n_s_DEBUG_START +#define __pyx_n_s_DEBUG_START_PY3K __pyx_mstate_global->__pyx_n_s_DEBUG_START_PY3K +#define __pyx_n_s_EXCEPTION_TYPE_HANDLED __pyx_mstate_global->__pyx_n_s_EXCEPTION_TYPE_HANDLED +#define __pyx_n_s_EXCEPTION_TYPE_USER_UNHANDLED __pyx_mstate_global->__pyx_n_s_EXCEPTION_TYPE_USER_UNHANDLED +#define __pyx_kp_s_Error_in_linecache_checkcache_r __pyx_mstate_global->__pyx_kp_s_Error_in_linecache_checkcache_r +#define __pyx_kp_s_Error_in_linecache_getline_r_s_f __pyx_mstate_global->__pyx_kp_s_Error_in_linecache_getline_r_s_f +#define __pyx_n_s_ForkSafeLock __pyx_mstate_global->__pyx_n_s_ForkSafeLock +#define __pyx_n_s_GeneratorExit __pyx_mstate_global->__pyx_n_s_GeneratorExit +#define __pyx_n_s_IGNORE_EXCEPTION_TAG __pyx_mstate_global->__pyx_n_s_IGNORE_EXCEPTION_TAG +#define __pyx_kp_s_IgnoreException __pyx_mstate_global->__pyx_kp_s_IgnoreException +#define __pyx_kp_s_Ignore_exception_s_in_library_s __pyx_mstate_global->__pyx_kp_s_Ignore_exception_s_in_library_s +#define __pyx_n_s_ImportError __pyx_mstate_global->__pyx_n_s_ImportError +#define __pyx_kp_s_Incompatible_checksums_0x_x_vs_0 __pyx_mstate_global->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0 +#define __pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2 __pyx_mstate_global->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2 +#define __pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3 __pyx_mstate_global->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3 +#define __pyx_kp_s_Incompatible_checksums_0x_x_vs_0_4 __pyx_mstate_global->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_4 +#define __pyx_kp_s_Incompatible_checksums_0x_x_vs_0_5 __pyx_mstate_global->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_5 +#define __pyx_kp_s_Incompatible_checksums_0x_x_vs_0_6 __pyx_mstate_global->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_6 +#define __pyx_n_s_KeyboardInterrupt __pyx_mstate_global->__pyx_n_s_KeyboardInterrupt +#define __pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER __pyx_mstate_global->__pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER +#define __pyx_n_s_NO_FTRACE __pyx_mstate_global->__pyx_n_s_NO_FTRACE +#define __pyx_n_s_NameError __pyx_mstate_global->__pyx_n_s_NameError +#define __pyx_n_s_None __pyx_mstate_global->__pyx_n_s_None +#define __pyx_kp_s_Not_used_in_sys_monitoring_mode __pyx_mstate_global->__pyx_kp_s_Not_used_in_sys_monitoring_mode +#define __pyx_n_s_PYDEVD_IPYTHON_CONTEXT __pyx_mstate_global->__pyx_n_s_PYDEVD_IPYTHON_CONTEXT +#define __pyx_n_s_PYDEVD_USE_SYS_MONITORING __pyx_mstate_global->__pyx_n_s_PYDEVD_USE_SYS_MONITORING +#define __pyx_n_s_PYDEV_FILE __pyx_mstate_global->__pyx_n_s_PYDEV_FILE +#define __pyx_n_s_PYTHON_SUSPEND __pyx_mstate_global->__pyx_n_s_PYTHON_SUSPEND +#define __pyx_n_s_PickleError __pyx_mstate_global->__pyx_n_s_PickleError +#define __pyx_n_s_PyDBAdditionalThreadInfo __pyx_mstate_global->__pyx_n_s_PyDBAdditionalThreadInfo +#define __pyx_n_s_PyDBAdditionalThreadInfo___reduc __pyx_mstate_global->__pyx_n_s_PyDBAdditionalThreadInfo___reduc +#define __pyx_n_s_PyDBAdditionalThreadInfo___setst __pyx_mstate_global->__pyx_n_s_PyDBAdditionalThreadInfo___setst +#define __pyx_n_s_PyDBAdditionalThreadInfo__get_re __pyx_mstate_global->__pyx_n_s_PyDBAdditionalThreadInfo__get_re +#define __pyx_n_s_PyDBAdditionalThreadInfo__is_ste __pyx_mstate_global->__pyx_n_s_PyDBAdditionalThreadInfo__is_ste +#define __pyx_n_s_PyDBAdditionalThreadInfo_get_top __pyx_mstate_global->__pyx_n_s_PyDBAdditionalThreadInfo_get_top +#define __pyx_n_s_PyDBAdditionalThreadInfo_update __pyx_mstate_global->__pyx_n_s_PyDBAdditionalThreadInfo_update +#define __pyx_n_s_PyDBFrame __pyx_mstate_global->__pyx_n_s_PyDBFrame +#define __pyx_n_s_PyDBFrame___reduce_cython __pyx_mstate_global->__pyx_n_s_PyDBFrame___reduce_cython +#define __pyx_n_s_PyDBFrame___setstate_cython __pyx_mstate_global->__pyx_n_s_PyDBFrame___setstate_cython +#define __pyx_n_s_PyDBFrame_do_wait_suspend __pyx_mstate_global->__pyx_n_s_PyDBFrame_do_wait_suspend +#define __pyx_n_s_PyDBFrame_handle_user_exception __pyx_mstate_global->__pyx_n_s_PyDBFrame_handle_user_exception +#define __pyx_n_s_PyDBFrame_set_suspend __pyx_mstate_global->__pyx_n_s_PyDBFrame_set_suspend +#define __pyx_n_s_PyDBFrame_trace_dispatch __pyx_mstate_global->__pyx_n_s_PyDBFrame_trace_dispatch +#define __pyx_n_s_PyDBFrame_trace_exception __pyx_mstate_global->__pyx_n_s_PyDBFrame_trace_exception +#define __pyx_n_s_RETURN_VALUES_DICT __pyx_mstate_global->__pyx_n_s_RETURN_VALUES_DICT +#define __pyx_n_s_RuntimeError __pyx_mstate_global->__pyx_n_s_RuntimeError +#define __pyx_n_s_STATE_RUN __pyx_mstate_global->__pyx_n_s_STATE_RUN +#define __pyx_n_s_STATE_SUSPEND __pyx_mstate_global->__pyx_n_s_STATE_SUSPEND +#define __pyx_n_s_SUPPORT_GEVENT __pyx_mstate_global->__pyx_n_s_SUPPORT_GEVENT +#define __pyx_n_s_SafeCallWrapper __pyx_mstate_global->__pyx_n_s_SafeCallWrapper +#define __pyx_n_s_SafeCallWrapper___reduce_cython __pyx_mstate_global->__pyx_n_s_SafeCallWrapper___reduce_cython +#define __pyx_n_s_SafeCallWrapper___setstate_cytho __pyx_mstate_global->__pyx_n_s_SafeCallWrapper___setstate_cytho +#define __pyx_n_s_SafeCallWrapper_get_method_objec __pyx_mstate_global->__pyx_n_s_SafeCallWrapper_get_method_objec +#define __pyx_kp_s_State_s_Stop_s_Cmd_s_Kill_s __pyx_mstate_global->__pyx_kp_s_State_s_Stop_s_Cmd_s_Kill_s +#define __pyx_n_s_StopAsyncIteration __pyx_mstate_global->__pyx_n_s_StopAsyncIteration +#define __pyx_n_s_StopIteration __pyx_mstate_global->__pyx_n_s_StopIteration +#define __pyx_kp_s_Stop_inside_ipython_call __pyx_mstate_global->__pyx_kp_s_Stop_inside_ipython_call +#define __pyx_n_s_SystemExit __pyx_mstate_global->__pyx_n_s_SystemExit +#define __pyx_n_s_TRACE_PROPERTY __pyx_mstate_global->__pyx_n_s_TRACE_PROPERTY +#define __pyx_n_s_Thread __pyx_mstate_global->__pyx_n_s_Thread +#define __pyx_n_s_ThreadTracer __pyx_mstate_global->__pyx_n_s_ThreadTracer +#define __pyx_n_s_ThreadTracer___reduce_cython __pyx_mstate_global->__pyx_n_s_ThreadTracer___reduce_cython +#define __pyx_n_s_ThreadTracer___setstate_cython __pyx_mstate_global->__pyx_n_s_ThreadTracer___setstate_cython +#define __pyx_n_s_TopLevelThreadTracerNoBackFrame __pyx_mstate_global->__pyx_n_s_TopLevelThreadTracerNoBackFrame +#define __pyx_n_s_TopLevelThreadTracerNoBackFrame_2 __pyx_mstate_global->__pyx_n_s_TopLevelThreadTracerNoBackFrame_2 +#define __pyx_n_s_TopLevelThreadTracerNoBackFrame_3 __pyx_mstate_global->__pyx_n_s_TopLevelThreadTracerNoBackFrame_3 +#define __pyx_n_s_TopLevelThreadTracerNoBackFrame_4 __pyx_mstate_global->__pyx_n_s_TopLevelThreadTracerNoBackFrame_4 +#define __pyx_n_s_TopLevelThreadTracerNoBackFrame_5 __pyx_mstate_global->__pyx_n_s_TopLevelThreadTracerNoBackFrame_5 +#define __pyx_n_s_TopLevelThreadTracerOnlyUnhandle __pyx_mstate_global->__pyx_n_s_TopLevelThreadTracerOnlyUnhandle +#define __pyx_n_s_TopLevelThreadTracerOnlyUnhandle_2 __pyx_mstate_global->__pyx_n_s_TopLevelThreadTracerOnlyUnhandle_2 +#define __pyx_n_s_TopLevelThreadTracerOnlyUnhandle_3 __pyx_mstate_global->__pyx_n_s_TopLevelThreadTracerOnlyUnhandle_3 +#define __pyx_n_s_TopLevelThreadTracerOnlyUnhandle_4 __pyx_mstate_global->__pyx_n_s_TopLevelThreadTracerOnlyUnhandle_4 +#define __pyx_n_s_TopLevelThreadTracerOnlyUnhandle_5 __pyx_mstate_global->__pyx_n_s_TopLevelThreadTracerOnlyUnhandle_5 +#define __pyx_n_s_TryExceptContainerObj __pyx_mstate_global->__pyx_n_s_TryExceptContainerObj +#define __pyx_n_s_TryExceptContainerObj___reduce __pyx_mstate_global->__pyx_n_s_TryExceptContainerObj___reduce +#define __pyx_n_s_TryExceptContainerObj___setstat __pyx_mstate_global->__pyx_n_s_TryExceptContainerObj___setstat +#define __pyx_n_s_USE_CUSTOM_SYS_CURRENT_FRAMES_MA __pyx_mstate_global->__pyx_n_s_USE_CUSTOM_SYS_CURRENT_FRAMES_MA +#define __pyx_kp_s_Unable_to_get_topmost_frame_for __pyx_mstate_global->__pyx_kp_s_Unable_to_get_topmost_frame_for +#define __pyx_kp_s__10 __pyx_mstate_global->__pyx_kp_s__10 +#define __pyx_kp_u__10 __pyx_mstate_global->__pyx_kp_u__10 +#define __pyx_n_s__19 __pyx_mstate_global->__pyx_n_s__19 +#define __pyx_kp_s__4 __pyx_mstate_global->__pyx_kp_s__4 +#define __pyx_kp_s__8 __pyx_mstate_global->__pyx_kp_s__8 +#define __pyx_kp_s__9 __pyx_mstate_global->__pyx_kp_s__9 +#define __pyx_n_s_abs_real_path_and_base __pyx_mstate_global->__pyx_n_s_abs_real_path_and_base +#define __pyx_n_s_absolute_filename __pyx_mstate_global->__pyx_n_s_absolute_filename +#define __pyx_n_s_active __pyx_mstate_global->__pyx_n_s_active +#define __pyx_n_s_add __pyx_mstate_global->__pyx_n_s_add +#define __pyx_n_s_add_additional_info __pyx_mstate_global->__pyx_n_s_add_additional_info +#define __pyx_n_s_add_command __pyx_mstate_global->__pyx_n_s_add_command +#define __pyx_n_s_add_exception_to_frame __pyx_mstate_global->__pyx_n_s_add_exception_to_frame +#define __pyx_n_s_additional_info __pyx_mstate_global->__pyx_n_s_additional_info +#define __pyx_n_s_any_thread_stepping __pyx_mstate_global->__pyx_n_s_any_thread_stepping +#define __pyx_n_s_append __pyx_mstate_global->__pyx_n_s_append +#define __pyx_n_s_apply_files_filter __pyx_mstate_global->__pyx_n_s_apply_files_filter +#define __pyx_n_s_apply_to_settrace __pyx_mstate_global->__pyx_n_s_apply_to_settrace +#define __pyx_n_s_arg __pyx_mstate_global->__pyx_n_s_arg +#define __pyx_n_s_args __pyx_mstate_global->__pyx_n_s_args +#define __pyx_n_s_args_2 __pyx_mstate_global->__pyx_n_s_args_2 +#define __pyx_n_s_asyncio_coroutines __pyx_mstate_global->__pyx_n_s_asyncio_coroutines +#define __pyx_n_s_basename __pyx_mstate_global->__pyx_n_s_basename +#define __pyx_n_s_bootstrap __pyx_mstate_global->__pyx_n_s_bootstrap +#define __pyx_n_s_bootstrap_2 __pyx_mstate_global->__pyx_n_s_bootstrap_2 +#define __pyx_n_s_bootstrap_inner __pyx_mstate_global->__pyx_n_s_bootstrap_inner +#define __pyx_n_s_bootstrap_inner_2 __pyx_mstate_global->__pyx_n_s_bootstrap_inner_2 +#define __pyx_n_s_break_on_caught_exceptions __pyx_mstate_global->__pyx_n_s_break_on_caught_exceptions +#define __pyx_n_s_break_on_user_uncaught_exception __pyx_mstate_global->__pyx_n_s_break_on_user_uncaught_exception +#define __pyx_n_s_breakpoints __pyx_mstate_global->__pyx_n_s_breakpoints +#define __pyx_n_s_call __pyx_mstate_global->__pyx_n_s_call +#define __pyx_n_s_call_2 __pyx_mstate_global->__pyx_n_s_call_2 +#define __pyx_n_s_can_skip __pyx_mstate_global->__pyx_n_s_can_skip +#define __pyx_n_s_canonical_normalized_filename __pyx_mstate_global->__pyx_n_s_canonical_normalized_filename +#define __pyx_kp_s_cell __pyx_mstate_global->__pyx_kp_s_cell +#define __pyx_n_s_check_excs __pyx_mstate_global->__pyx_n_s_check_excs +#define __pyx_n_s_check_trace_obj __pyx_mstate_global->__pyx_n_s_check_trace_obj +#define __pyx_n_s_checkcache __pyx_mstate_global->__pyx_n_s_checkcache +#define __pyx_n_s_children_variants __pyx_mstate_global->__pyx_n_s_children_variants +#define __pyx_n_s_class_getitem __pyx_mstate_global->__pyx_n_s_class_getitem +#define __pyx_n_s_cline_in_traceback __pyx_mstate_global->__pyx_n_s_cline_in_traceback +#define __pyx_n_s_cmd_factory __pyx_mstate_global->__pyx_n_s_cmd_factory +#define __pyx_n_s_cmd_step_into __pyx_mstate_global->__pyx_n_s_cmd_step_into +#define __pyx_n_s_cmd_step_over __pyx_mstate_global->__pyx_n_s_cmd_step_over +#define __pyx_n_s_co_filename __pyx_mstate_global->__pyx_n_s_co_filename +#define __pyx_n_s_co_firstlineno __pyx_mstate_global->__pyx_n_s_co_firstlineno +#define __pyx_n_s_co_flags __pyx_mstate_global->__pyx_n_s_co_flags +#define __pyx_n_s_co_name __pyx_mstate_global->__pyx_n_s_co_name +#define __pyx_n_s_collect_return_info __pyx_mstate_global->__pyx_n_s_collect_return_info +#define __pyx_n_s_collect_try_except_info __pyx_mstate_global->__pyx_n_s_collect_try_except_info +#define __pyx_n_s_compile __pyx_mstate_global->__pyx_n_s_compile +#define __pyx_n_s_condition __pyx_mstate_global->__pyx_n_s_condition +#define __pyx_n_s_constant_to_str __pyx_mstate_global->__pyx_n_s_constant_to_str +#define __pyx_n_s_constructed_tid_to_last_frame __pyx_mstate_global->__pyx_n_s_constructed_tid_to_last_frame +#define __pyx_n_s_container_obj __pyx_mstate_global->__pyx_n_s_container_obj +#define __pyx_n_s_critical __pyx_mstate_global->__pyx_n_s_critical +#define __pyx_n_s_curr_stat __pyx_mstate_global->__pyx_n_s_curr_stat +#define __pyx_n_s_current_frames __pyx_mstate_global->__pyx_n_s_current_frames +#define __pyx_n_s_custom_key __pyx_mstate_global->__pyx_n_s_custom_key +#define __pyx_n_s_debug __pyx_mstate_global->__pyx_n_s_debug +#define __pyx_n_s_dict __pyx_mstate_global->__pyx_n_s_dict +#define __pyx_n_s_dict_2 __pyx_mstate_global->__pyx_n_s_dict_2 +#define __pyx_n_s_dis __pyx_mstate_global->__pyx_n_s_dis +#define __pyx_kp_u_disable __pyx_mstate_global->__pyx_kp_u_disable +#define __pyx_n_s_disable_tracing __pyx_mstate_global->__pyx_n_s_disable_tracing +#define __pyx_n_s_do_wait_suspend __pyx_mstate_global->__pyx_n_s_do_wait_suspend +#define __pyx_kp_u_enable __pyx_mstate_global->__pyx_kp_u_enable +#define __pyx_n_s_enable_tracing __pyx_mstate_global->__pyx_n_s_enable_tracing +#define __pyx_n_s_encode __pyx_mstate_global->__pyx_n_s_encode +#define __pyx_n_s_endswith __pyx_mstate_global->__pyx_n_s_endswith +#define __pyx_n_s_enter __pyx_mstate_global->__pyx_n_s_enter +#define __pyx_n_s_event __pyx_mstate_global->__pyx_n_s_event +#define __pyx_n_s_exc_break __pyx_mstate_global->__pyx_n_s_exc_break +#define __pyx_n_s_exc_break_caught __pyx_mstate_global->__pyx_n_s_exc_break_caught +#define __pyx_n_s_exc_break_user __pyx_mstate_global->__pyx_n_s_exc_break_user +#define __pyx_n_s_exc_info __pyx_mstate_global->__pyx_n_s_exc_info +#define __pyx_n_s_exc_lineno __pyx_mstate_global->__pyx_n_s_exc_lineno +#define __pyx_n_s_except_line __pyx_mstate_global->__pyx_n_s_except_line +#define __pyx_n_s_exception __pyx_mstate_global->__pyx_n_s_exception +#define __pyx_n_s_exception_break __pyx_mstate_global->__pyx_n_s_exception_break +#define __pyx_n_s_exception_breakpoint __pyx_mstate_global->__pyx_n_s_exception_breakpoint +#define __pyx_n_s_exception_type __pyx_mstate_global->__pyx_n_s_exception_type +#define __pyx_n_s_exclude_exception_by_filter __pyx_mstate_global->__pyx_n_s_exclude_exception_by_filter +#define __pyx_n_s_exec __pyx_mstate_global->__pyx_n_s_exec +#define __pyx_n_s_execfile __pyx_mstate_global->__pyx_n_s_execfile +#define __pyx_n_s_exit __pyx_mstate_global->__pyx_n_s_exit +#define __pyx_n_s_expression __pyx_mstate_global->__pyx_n_s_expression +#define __pyx_n_s_f __pyx_mstate_global->__pyx_n_s_f +#define __pyx_n_s_f_back __pyx_mstate_global->__pyx_n_s_f_back +#define __pyx_n_s_f_code __pyx_mstate_global->__pyx_n_s_f_code +#define __pyx_n_s_f_globals __pyx_mstate_global->__pyx_n_s_f_globals +#define __pyx_n_s_f_lasti __pyx_mstate_global->__pyx_n_s_f_lasti +#define __pyx_n_s_f_lineno __pyx_mstate_global->__pyx_n_s_f_lineno +#define __pyx_n_s_f_locals __pyx_mstate_global->__pyx_n_s_f_locals +#define __pyx_n_s_f_trace __pyx_mstate_global->__pyx_n_s_f_trace +#define __pyx_n_s_f_unhandled __pyx_mstate_global->__pyx_n_s_f_unhandled +#define __pyx_n_s_filename __pyx_mstate_global->__pyx_n_s_filename +#define __pyx_n_s_filename_to_lines_where_exceptio __pyx_mstate_global->__pyx_n_s_filename_to_lines_where_exceptio +#define __pyx_n_s_filename_to_stat_info __pyx_mstate_global->__pyx_n_s_filename_to_stat_info +#define __pyx_n_s_findlinestarts __pyx_mstate_global->__pyx_n_s_findlinestarts +#define __pyx_n_s_fix_top_level_trace_and_get_trac __pyx_mstate_global->__pyx_n_s_fix_top_level_trace_and_get_trac +#define __pyx_n_s_force_only_unhandled_tracer __pyx_mstate_global->__pyx_n_s_force_only_unhandled_tracer +#define __pyx_n_s_frame __pyx_mstate_global->__pyx_n_s_frame +#define __pyx_n_s_frame_cache_key __pyx_mstate_global->__pyx_n_s_frame_cache_key +#define __pyx_n_s_frame_id_to_frame __pyx_mstate_global->__pyx_n_s_frame_id_to_frame +#define __pyx_n_s_frame_skips_cache __pyx_mstate_global->__pyx_n_s_frame_skips_cache +#define __pyx_n_s_frame_trace_dispatch __pyx_mstate_global->__pyx_n_s_frame_trace_dispatch +#define __pyx_n_s_from_user_input __pyx_mstate_global->__pyx_n_s_from_user_input +#define __pyx_n_s_func_name __pyx_mstate_global->__pyx_n_s_func_name +#define __pyx_n_s_function_breakpoint_name_to_brea __pyx_mstate_global->__pyx_n_s_function_breakpoint_name_to_brea +#define __pyx_kp_u_gc __pyx_mstate_global->__pyx_kp_u_gc +#define __pyx_n_s_get __pyx_mstate_global->__pyx_n_s_get +#define __pyx_n_s_get_abs_path_real_path_and_base __pyx_mstate_global->__pyx_n_s_get_abs_path_real_path_and_base +#define __pyx_n_s_get_breakpoint __pyx_mstate_global->__pyx_n_s_get_breakpoint +#define __pyx_n_s_get_clsname_for_code __pyx_mstate_global->__pyx_n_s_get_clsname_for_code +#define __pyx_n_s_get_current_thread_id __pyx_mstate_global->__pyx_n_s_get_current_thread_id +#define __pyx_n_s_get_exception_breakpoint __pyx_mstate_global->__pyx_n_s_get_exception_breakpoint +#define __pyx_n_s_get_file_type __pyx_mstate_global->__pyx_n_s_get_file_type +#define __pyx_n_s_get_global_debugger __pyx_mstate_global->__pyx_n_s_get_global_debugger +#define __pyx_n_s_get_internal_queue_and_event __pyx_mstate_global->__pyx_n_s_get_internal_queue_and_event +#define __pyx_n_s_get_method_object __pyx_mstate_global->__pyx_n_s_get_method_object +#define __pyx_n_s_get_related_thread __pyx_mstate_global->__pyx_n_s_get_related_thread +#define __pyx_n_s_get_smart_step_into_variant_from __pyx_mstate_global->__pyx_n_s_get_smart_step_into_variant_from +#define __pyx_n_s_get_thread_id __pyx_mstate_global->__pyx_n_s_get_thread_id +#define __pyx_n_s_get_topmost_frame __pyx_mstate_global->__pyx_n_s_get_topmost_frame +#define __pyx_n_s_get_trace_dispatch_func __pyx_mstate_global->__pyx_n_s_get_trace_dispatch_func +#define __pyx_n_s_getline __pyx_mstate_global->__pyx_n_s_getline +#define __pyx_n_s_getstate __pyx_mstate_global->__pyx_n_s_getstate +#define __pyx_n_s_global_cache_frame_skips __pyx_mstate_global->__pyx_n_s_global_cache_frame_skips +#define __pyx_n_s_global_cache_skips __pyx_mstate_global->__pyx_n_s_global_cache_skips +#define __pyx_n_s_global_notify_skipped_step_in_l __pyx_mstate_global->__pyx_n_s_global_notify_skipped_step_in_l +#define __pyx_n_s_handle_breakpoint_condition __pyx_mstate_global->__pyx_n_s_handle_breakpoint_condition +#define __pyx_n_s_handle_breakpoint_expression __pyx_mstate_global->__pyx_n_s_handle_breakpoint_expression +#define __pyx_n_s_handle_exception __pyx_mstate_global->__pyx_n_s_handle_exception +#define __pyx_n_s_handle_user_exception __pyx_mstate_global->__pyx_n_s_handle_user_exception +#define __pyx_n_s_has_condition __pyx_mstate_global->__pyx_n_s_has_condition +#define __pyx_n_s_has_plugin_exception_breaks __pyx_mstate_global->__pyx_n_s_has_plugin_exception_breaks +#define __pyx_n_s_has_plugin_line_breaks __pyx_mstate_global->__pyx_n_s_has_plugin_line_breaks +#define __pyx_n_s_i __pyx_mstate_global->__pyx_n_s_i +#define __pyx_n_s_id __pyx_mstate_global->__pyx_n_s_id +#define __pyx_n_s_ident __pyx_mstate_global->__pyx_n_s_ident +#define __pyx_n_s_ident_2 __pyx_mstate_global->__pyx_n_s_ident_2 +#define __pyx_n_s_ignore_exception_trace __pyx_mstate_global->__pyx_n_s_ignore_exception_trace +#define __pyx_n_s_ignore_exceptions_thrown_in_line __pyx_mstate_global->__pyx_n_s_ignore_exceptions_thrown_in_line +#define __pyx_n_s_ignore_system_exit_code __pyx_mstate_global->__pyx_n_s_ignore_system_exit_code +#define __pyx_n_s_import __pyx_mstate_global->__pyx_n_s_import +#define __pyx_n_s_in_project_scope __pyx_mstate_global->__pyx_n_s_in_project_scope +#define __pyx_n_s_info __pyx_mstate_global->__pyx_n_s_info +#define __pyx_n_s_initial_trace_obj __pyx_mstate_global->__pyx_n_s_initial_trace_obj +#define __pyx_n_s_initializing __pyx_mstate_global->__pyx_n_s_initializing +#define __pyx_kp_s_invalid __pyx_mstate_global->__pyx_kp_s_invalid +#define __pyx_n_s_is_coroutine __pyx_mstate_global->__pyx_n_s_is_coroutine +#define __pyx_n_s_is_files_filter_enabled __pyx_mstate_global->__pyx_n_s_is_files_filter_enabled +#define __pyx_n_s_is_line_in_except_block __pyx_mstate_global->__pyx_n_s_is_line_in_except_block +#define __pyx_n_s_is_line_in_try_block __pyx_mstate_global->__pyx_n_s_is_line_in_try_block +#define __pyx_n_s_is_logpoint __pyx_mstate_global->__pyx_n_s_is_logpoint +#define __pyx_n_s_is_stepping __pyx_mstate_global->__pyx_n_s_is_stepping +#define __pyx_n_s_is_thread_alive __pyx_mstate_global->__pyx_n_s_is_thread_alive +#define __pyx_n_s_is_unhandled_exception __pyx_mstate_global->__pyx_n_s_is_unhandled_exception +#define __pyx_n_s_is_unwind __pyx_mstate_global->__pyx_n_s_is_unwind +#define __pyx_n_s_is_user_uncaught __pyx_mstate_global->__pyx_n_s_is_user_uncaught +#define __pyx_kp_u_isenabled __pyx_mstate_global->__pyx_kp_u_isenabled +#define __pyx_n_s_j __pyx_mstate_global->__pyx_n_s_j +#define __pyx_n_s_just_raised __pyx_mstate_global->__pyx_n_s_just_raised +#define __pyx_n_s_kwargs __pyx_mstate_global->__pyx_n_s_kwargs +#define __pyx_kp_s_lambda __pyx_mstate_global->__pyx_kp_s_lambda +#define __pyx_n_s_last_raise_line __pyx_mstate_global->__pyx_n_s_last_raise_line +#define __pyx_n_s_last_stat __pyx_mstate_global->__pyx_n_s_last_stat +#define __pyx_n_s_line __pyx_mstate_global->__pyx_n_s_line +#define __pyx_n_s_linecache __pyx_mstate_global->__pyx_n_s_linecache +#define __pyx_n_s_lines __pyx_mstate_global->__pyx_n_s_lines +#define __pyx_n_s_lines_ignored __pyx_mstate_global->__pyx_n_s_lines_ignored +#define __pyx_n_s_linesep __pyx_mstate_global->__pyx_n_s_linesep +#define __pyx_n_s_main __pyx_mstate_global->__pyx_n_s_main +#define __pyx_n_s_main_2 __pyx_mstate_global->__pyx_n_s_main_2 +#define __pyx_n_s_make_console_message __pyx_mstate_global->__pyx_n_s_make_console_message +#define __pyx_n_s_make_io_message __pyx_mstate_global->__pyx_n_s_make_io_message +#define __pyx_n_s_match __pyx_mstate_global->__pyx_n_s_match +#define __pyx_n_s_maybe_user_uncaught_exc_info __pyx_mstate_global->__pyx_n_s_maybe_user_uncaught_exc_info +#define __pyx_n_s_merged __pyx_mstate_global->__pyx_n_s_merged +#define __pyx_n_s_method_object __pyx_mstate_global->__pyx_n_s_method_object +#define __pyx_kp_s_module __pyx_mstate_global->__pyx_kp_s_module +#define __pyx_n_s_name __pyx_mstate_global->__pyx_n_s_name +#define __pyx_n_s_name_2 __pyx_mstate_global->__pyx_n_s_name_2 +#define __pyx_n_s_new __pyx_mstate_global->__pyx_n_s_new +#define __pyx_n_s_next_additional_info __pyx_mstate_global->__pyx_n_s_next_additional_info +#define __pyx_n_s_notify_on_first_raise_only __pyx_mstate_global->__pyx_n_s_notify_on_first_raise_only +#define __pyx_n_s_notify_skipped_step_in_because_o __pyx_mstate_global->__pyx_n_s_notify_skipped_step_in_because_o +#define __pyx_n_s_notify_thread_not_alive __pyx_mstate_global->__pyx_n_s_notify_thread_not_alive +#define __pyx_n_s_original_call __pyx_mstate_global->__pyx_n_s_original_call +#define __pyx_n_s_original_step_cmd __pyx_mstate_global->__pyx_n_s_original_step_cmd +#define __pyx_n_s_os __pyx_mstate_global->__pyx_n_s_os +#define __pyx_n_s_os_path __pyx_mstate_global->__pyx_n_s_os_path +#define __pyx_n_s_path __pyx_mstate_global->__pyx_n_s_path +#define __pyx_n_s_pickle __pyx_mstate_global->__pyx_n_s_pickle +#define __pyx_n_s_plugin __pyx_mstate_global->__pyx_n_s_plugin +#define __pyx_n_s_pop __pyx_mstate_global->__pyx_n_s_pop +#define __pyx_n_s_prev_user_uncaught_exc_info __pyx_mstate_global->__pyx_n_s_prev_user_uncaught_exc_info +#define __pyx_n_s_py_db __pyx_mstate_global->__pyx_n_s_py_db +#define __pyx_kp_s_pyc __pyx_mstate_global->__pyx_kp_s_pyc +#define __pyx_n_s_pydb_disposed __pyx_mstate_global->__pyx_n_s_pydb_disposed +#define __pyx_n_s_pydev_bundle __pyx_mstate_global->__pyx_n_s_pydev_bundle +#define __pyx_n_s_pydev_bundle__pydev_saved_modul __pyx_mstate_global->__pyx_n_s_pydev_bundle__pydev_saved_modul +#define __pyx_n_s_pydev_bundle_pydev_is_thread_al __pyx_mstate_global->__pyx_n_s_pydev_bundle_pydev_is_thread_al +#define __pyx_n_s_pydev_bundle_pydev_log __pyx_mstate_global->__pyx_n_s_pydev_bundle_pydev_log +#define __pyx_n_s_pydev_do_not_trace __pyx_mstate_global->__pyx_n_s_pydev_do_not_trace +#define __pyx_kp_s_pydev_execfile_py __pyx_mstate_global->__pyx_kp_s_pydev_execfile_py +#define __pyx_n_s_pydev_log __pyx_mstate_global->__pyx_n_s_pydev_log +#define __pyx_n_s_pydev_log_exception __pyx_mstate_global->__pyx_n_s_pydev_log_exception +#define __pyx_n_s_pydev_monkey __pyx_mstate_global->__pyx_n_s_pydev_monkey +#define __pyx_n_s_pydevd __pyx_mstate_global->__pyx_n_s_pydevd +#define __pyx_n_s_pydevd_bundle __pyx_mstate_global->__pyx_n_s_pydevd_bundle +#define __pyx_n_s_pydevd_bundle_pydevd_bytecode_u __pyx_mstate_global->__pyx_n_s_pydevd_bundle_pydevd_bytecode_u +#define __pyx_n_s_pydevd_bundle_pydevd_comm_const __pyx_mstate_global->__pyx_n_s_pydevd_bundle_pydevd_comm_const +#define __pyx_n_s_pydevd_bundle_pydevd_constants __pyx_mstate_global->__pyx_n_s_pydevd_bundle_pydevd_constants +#define __pyx_n_s_pydevd_bundle_pydevd_cython __pyx_mstate_global->__pyx_n_s_pydevd_bundle_pydevd_cython +#define __pyx_kp_s_pydevd_bundle_pydevd_cython_pyx __pyx_mstate_global->__pyx_kp_s_pydevd_bundle_pydevd_cython_pyx +#define __pyx_n_s_pydevd_bundle_pydevd_frame_util __pyx_mstate_global->__pyx_n_s_pydevd_bundle_pydevd_frame_util +#define __pyx_n_s_pydevd_bundle_pydevd_utils __pyx_mstate_global->__pyx_n_s_pydevd_bundle_pydevd_utils +#define __pyx_n_s_pydevd_dont_trace __pyx_mstate_global->__pyx_n_s_pydevd_dont_trace +#define __pyx_n_s_pydevd_file_utils __pyx_mstate_global->__pyx_n_s_pydevd_file_utils +#define __pyx_kp_s_pydevd_py __pyx_mstate_global->__pyx_kp_s_pydevd_py +#define __pyx_kp_s_pydevd_traceproperty_py __pyx_mstate_global->__pyx_kp_s_pydevd_traceproperty_py +#define __pyx_n_s_pydevd_tracing __pyx_mstate_global->__pyx_n_s_pydevd_tracing +#define __pyx_n_s_pyx_PickleError __pyx_mstate_global->__pyx_n_s_pyx_PickleError +#define __pyx_n_s_pyx_checksum __pyx_mstate_global->__pyx_n_s_pyx_checksum +#define __pyx_n_s_pyx_result __pyx_mstate_global->__pyx_n_s_pyx_result +#define __pyx_n_s_pyx_state __pyx_mstate_global->__pyx_n_s_pyx_state +#define __pyx_n_s_pyx_type __pyx_mstate_global->__pyx_n_s_pyx_type +#define __pyx_n_s_pyx_unpickle_PyDBAdditionalThr __pyx_mstate_global->__pyx_n_s_pyx_unpickle_PyDBAdditionalThr +#define __pyx_n_s_pyx_unpickle_PyDBFrame __pyx_mstate_global->__pyx_n_s_pyx_unpickle_PyDBFrame +#define __pyx_n_s_pyx_unpickle_SafeCallWrapper __pyx_mstate_global->__pyx_n_s_pyx_unpickle_SafeCallWrapper +#define __pyx_n_s_pyx_unpickle_ThreadTracer __pyx_mstate_global->__pyx_n_s_pyx_unpickle_ThreadTracer +#define __pyx_n_s_pyx_unpickle_TopLevelThreadTra __pyx_mstate_global->__pyx_n_s_pyx_unpickle_TopLevelThreadTra +#define __pyx_n_s_pyx_unpickle_TopLevelThreadTra_2 __pyx_mstate_global->__pyx_n_s_pyx_unpickle_TopLevelThreadTra_2 +#define __pyx_n_s_pyx_unpickle__TryExceptContain __pyx_mstate_global->__pyx_n_s_pyx_unpickle__TryExceptContain +#define __pyx_n_s_pyx_vtable __pyx_mstate_global->__pyx_n_s_pyx_vtable +#define __pyx_n_s_qname __pyx_mstate_global->__pyx_n_s_qname +#define __pyx_n_s_quitting __pyx_mstate_global->__pyx_n_s_quitting +#define __pyx_n_s_raise_lines __pyx_mstate_global->__pyx_n_s_raise_lines +#define __pyx_n_s_raise_lines_in_except __pyx_mstate_global->__pyx_n_s_raise_lines_in_except +#define __pyx_n_s_re __pyx_mstate_global->__pyx_n_s_re +#define __pyx_n_s_reduce __pyx_mstate_global->__pyx_n_s_reduce +#define __pyx_n_s_reduce_cython __pyx_mstate_global->__pyx_n_s_reduce_cython +#define __pyx_n_s_reduce_ex __pyx_mstate_global->__pyx_n_s_reduce_ex +#define __pyx_n_s_ref __pyx_mstate_global->__pyx_n_s_ref +#define __pyx_n_s_remove_additional_info __pyx_mstate_global->__pyx_n_s_remove_additional_info +#define __pyx_n_s_remove_exception_from_frame __pyx_mstate_global->__pyx_n_s_remove_exception_from_frame +#define __pyx_n_s_remove_return_values_flag __pyx_mstate_global->__pyx_n_s_remove_return_values_flag +#define __pyx_n_s_result __pyx_mstate_global->__pyx_n_s_result +#define __pyx_n_s_ret __pyx_mstate_global->__pyx_n_s_ret +#define __pyx_n_s_return __pyx_mstate_global->__pyx_n_s_return +#define __pyx_n_s_return_line __pyx_mstate_global->__pyx_n_s_return_line +#define __pyx_n_s_returns __pyx_mstate_global->__pyx_n_s_returns +#define __pyx_n_s_rfind __pyx_mstate_global->__pyx_n_s_rfind +#define __pyx_n_s_run __pyx_mstate_global->__pyx_n_s_run +#define __pyx_kp_s_s_raised_from_within_the_callba __pyx_mstate_global->__pyx_kp_s_s_raised_from_within_the_callba +#define __pyx_kp_s_s_s __pyx_mstate_global->__pyx_kp_s_s_s +#define __pyx_n_s_self __pyx_mstate_global->__pyx_n_s_self +#define __pyx_n_s_send_caught_exception_stack __pyx_mstate_global->__pyx_n_s_send_caught_exception_stack +#define __pyx_n_s_send_caught_exception_stack_proc __pyx_mstate_global->__pyx_n_s_send_caught_exception_stack_proc +#define __pyx_n_s_set __pyx_mstate_global->__pyx_n_s_set +#define __pyx_n_s_set_additional_thread_info __pyx_mstate_global->__pyx_n_s_set_additional_thread_info +#define __pyx_n_s_set_additional_thread_info_lock __pyx_mstate_global->__pyx_n_s_set_additional_thread_info_lock +#define __pyx_n_s_set_suspend __pyx_mstate_global->__pyx_n_s_set_suspend +#define __pyx_n_s_set_trace_for_frame_and_parents __pyx_mstate_global->__pyx_n_s_set_trace_for_frame_and_parents +#define __pyx_n_s_setstate __pyx_mstate_global->__pyx_n_s_setstate +#define __pyx_n_s_setstate_cython __pyx_mstate_global->__pyx_n_s_setstate_cython +#define __pyx_n_s_should_stop __pyx_mstate_global->__pyx_n_s_should_stop +#define __pyx_n_s_should_stop_on_exception __pyx_mstate_global->__pyx_n_s_should_stop_on_exception +#define __pyx_n_s_should_trace_hook __pyx_mstate_global->__pyx_n_s_should_trace_hook +#define __pyx_n_s_show_return_values __pyx_mstate_global->__pyx_n_s_show_return_values +#define __pyx_n_s_skip_on_exceptions_thrown_in_sam __pyx_mstate_global->__pyx_n_s_skip_on_exceptions_thrown_in_sam +#define __pyx_n_s_spec __pyx_mstate_global->__pyx_n_s_spec +#define __pyx_n_s_st_mtime __pyx_mstate_global->__pyx_n_s_st_mtime +#define __pyx_n_s_st_size __pyx_mstate_global->__pyx_n_s_st_size +#define __pyx_n_s_startswith __pyx_mstate_global->__pyx_n_s_startswith +#define __pyx_n_s_stat __pyx_mstate_global->__pyx_n_s_stat +#define __pyx_n_s_state __pyx_mstate_global->__pyx_n_s_state +#define __pyx_n_s_stop __pyx_mstate_global->__pyx_n_s_stop +#define __pyx_n_s_stop_on_unhandled_exception __pyx_mstate_global->__pyx_n_s_stop_on_unhandled_exception +#define __pyx_n_s_stopped __pyx_mstate_global->__pyx_n_s_stopped +#define __pyx_kp_s_stringsource __pyx_mstate_global->__pyx_kp_s_stringsource +#define __pyx_n_s_suspend __pyx_mstate_global->__pyx_n_s_suspend +#define __pyx_n_s_suspend_other_threads __pyx_mstate_global->__pyx_n_s_suspend_other_threads +#define __pyx_n_s_suspend_policy __pyx_mstate_global->__pyx_n_s_suspend_policy +#define __pyx_n_s_suspended_at_unhandled __pyx_mstate_global->__pyx_n_s_suspended_at_unhandled +#define __pyx_n_s_sys __pyx_mstate_global->__pyx_n_s_sys +#define __pyx_n_s_t __pyx_mstate_global->__pyx_n_s_t +#define __pyx_n_s_tb_frame __pyx_mstate_global->__pyx_n_s_tb_frame +#define __pyx_n_s_tb_lineno __pyx_mstate_global->__pyx_n_s_tb_lineno +#define __pyx_n_s_tb_next __pyx_mstate_global->__pyx_n_s_tb_next +#define __pyx_n_s_test __pyx_mstate_global->__pyx_n_s_test +#define __pyx_n_s_thread __pyx_mstate_global->__pyx_n_s_thread +#define __pyx_kp_s_thread__ident_is_None_in__get_re __pyx_mstate_global->__pyx_kp_s_thread__ident_is_None_in__get_re +#define __pyx_n_s_thread_trace_func __pyx_mstate_global->__pyx_n_s_thread_trace_func +#define __pyx_n_s_thread_tracer __pyx_mstate_global->__pyx_n_s_thread_tracer +#define __pyx_n_s_threading __pyx_mstate_global->__pyx_n_s_threading +#define __pyx_n_s_threading_active __pyx_mstate_global->__pyx_n_s_threading_active +#define __pyx_n_s_threading_current_thread __pyx_mstate_global->__pyx_n_s_threading_current_thread +#define __pyx_n_s_threading_get_ident __pyx_mstate_global->__pyx_n_s_threading_get_ident +#define __pyx_n_s_top_level_thread_tracer __pyx_mstate_global->__pyx_n_s_top_level_thread_tracer +#define __pyx_n_s_top_level_thread_tracer_no_back __pyx_mstate_global->__pyx_n_s_top_level_thread_tracer_no_back +#define __pyx_n_s_top_level_thread_tracer_unhandle __pyx_mstate_global->__pyx_n_s_top_level_thread_tracer_unhandle +#define __pyx_n_s_trace __pyx_mstate_global->__pyx_n_s_trace +#define __pyx_n_s_trace_dispatch __pyx_mstate_global->__pyx_n_s_trace_dispatch +#define __pyx_n_s_trace_dispatch_and_unhandled_exc __pyx_mstate_global->__pyx_n_s_trace_dispatch_and_unhandled_exc +#define __pyx_n_s_trace_exception __pyx_mstate_global->__pyx_n_s_trace_exception +#define __pyx_n_s_trace_obj __pyx_mstate_global->__pyx_n_s_trace_obj +#define __pyx_n_s_trace_unhandled_exceptions __pyx_mstate_global->__pyx_n_s_trace_unhandled_exceptions +#define __pyx_n_s_try_exc_info __pyx_mstate_global->__pyx_n_s_try_exc_info +#define __pyx_n_s_try_except_info __pyx_mstate_global->__pyx_n_s_try_except_info +#define __pyx_n_s_try_except_infos __pyx_mstate_global->__pyx_n_s_try_except_infos +#define __pyx_n_s_update __pyx_mstate_global->__pyx_n_s_update +#define __pyx_n_s_update_stepping_info __pyx_mstate_global->__pyx_n_s_update_stepping_info +#define __pyx_n_s_use_setstate __pyx_mstate_global->__pyx_n_s_use_setstate +#define __pyx_kp_s_utf_8 __pyx_mstate_global->__pyx_kp_s_utf_8 +#define __pyx_n_s_valid_try_except_infos __pyx_mstate_global->__pyx_n_s_valid_try_except_infos +#define __pyx_n_s_value __pyx_mstate_global->__pyx_n_s_value +#define __pyx_n_s_values __pyx_mstate_global->__pyx_n_s_values +#define __pyx_n_s_version __pyx_mstate_global->__pyx_n_s_version +#define __pyx_n_s_was_just_raised __pyx_mstate_global->__pyx_n_s_was_just_raised +#define __pyx_n_s_weak_thread __pyx_mstate_global->__pyx_n_s_weak_thread +#define __pyx_n_s_weakref __pyx_mstate_global->__pyx_n_s_weakref +#define __pyx_n_s_writer __pyx_mstate_global->__pyx_n_s_writer +#define __pyx_int_0 __pyx_mstate_global->__pyx_int_0 +#define __pyx_int_1 __pyx_mstate_global->__pyx_int_1 +#define __pyx_int_2 __pyx_mstate_global->__pyx_int_2 +#define __pyx_int_11 __pyx_mstate_global->__pyx_int_11 +#define __pyx_int_111 __pyx_mstate_global->__pyx_int_111 +#define __pyx_int_137 __pyx_mstate_global->__pyx_int_137 +#define __pyx_int_160 __pyx_mstate_global->__pyx_int_160 +#define __pyx_int_2424557 __pyx_mstate_global->__pyx_int_2424557 +#define __pyx_int_16751766 __pyx_mstate_global->__pyx_int_16751766 +#define __pyx_int_18997755 __pyx_mstate_global->__pyx_int_18997755 +#define __pyx_int_61391470 __pyx_mstate_global->__pyx_int_61391470 +#define __pyx_int_63705258 __pyx_mstate_global->__pyx_int_63705258 +#define __pyx_int_64458794 __pyx_mstate_global->__pyx_int_64458794 +#define __pyx_int_66451433 __pyx_mstate_global->__pyx_int_66451433 +#define __pyx_int_70528507 __pyx_mstate_global->__pyx_int_70528507 +#define __pyx_int_84338306 __pyx_mstate_global->__pyx_int_84338306 +#define __pyx_int_125568891 __pyx_mstate_global->__pyx_int_125568891 +#define __pyx_int_169093275 __pyx_mstate_global->__pyx_int_169093275 +#define __pyx_int_171613889 __pyx_mstate_global->__pyx_int_171613889 +#define __pyx_int_192493205 __pyx_mstate_global->__pyx_int_192493205 +#define __pyx_int_210464433 __pyx_mstate_global->__pyx_int_210464433 +#define __pyx_int_221489684 __pyx_mstate_global->__pyx_int_221489684 +#define __pyx_int_230645316 __pyx_mstate_global->__pyx_int_230645316 +#define __pyx_int_232881363 __pyx_mstate_global->__pyx_int_232881363 +#define __pyx_int_255484337 __pyx_mstate_global->__pyx_int_255484337 +#define __pyx_int_neg_1 __pyx_mstate_global->__pyx_int_neg_1 +#define __pyx_slice__2 __pyx_mstate_global->__pyx_slice__2 +#define __pyx_slice__6 __pyx_mstate_global->__pyx_slice__6 +#define __pyx_tuple__3 __pyx_mstate_global->__pyx_tuple__3 +#define __pyx_tuple__5 __pyx_mstate_global->__pyx_tuple__5 +#define __pyx_tuple__7 __pyx_mstate_global->__pyx_tuple__7 +#define __pyx_tuple__11 __pyx_mstate_global->__pyx_tuple__11 +#define __pyx_tuple__12 __pyx_mstate_global->__pyx_tuple__12 +#define __pyx_tuple__13 __pyx_mstate_global->__pyx_tuple__13 +#define __pyx_tuple__14 __pyx_mstate_global->__pyx_tuple__14 +#define __pyx_tuple__15 __pyx_mstate_global->__pyx_tuple__15 +#define __pyx_tuple__16 __pyx_mstate_global->__pyx_tuple__16 +#define __pyx_tuple__17 __pyx_mstate_global->__pyx_tuple__17 +#define __pyx_tuple__18 __pyx_mstate_global->__pyx_tuple__18 +#define __pyx_tuple__20 __pyx_mstate_global->__pyx_tuple__20 +#define __pyx_tuple__23 __pyx_mstate_global->__pyx_tuple__23 +#define __pyx_tuple__26 __pyx_mstate_global->__pyx_tuple__26 +#define __pyx_tuple__28 __pyx_mstate_global->__pyx_tuple__28 +#define __pyx_tuple__30 __pyx_mstate_global->__pyx_tuple__30 +#define __pyx_tuple__32 __pyx_mstate_global->__pyx_tuple__32 +#define __pyx_tuple__36 __pyx_mstate_global->__pyx_tuple__36 +#define __pyx_tuple__37 __pyx_mstate_global->__pyx_tuple__37 +#define __pyx_tuple__39 __pyx_mstate_global->__pyx_tuple__39 +#define __pyx_tuple__40 __pyx_mstate_global->__pyx_tuple__40 +#define __pyx_tuple__41 __pyx_mstate_global->__pyx_tuple__41 +#define __pyx_tuple__42 __pyx_mstate_global->__pyx_tuple__42 +#define __pyx_tuple__46 __pyx_mstate_global->__pyx_tuple__46 +#define __pyx_tuple__49 __pyx_mstate_global->__pyx_tuple__49 +#define __pyx_tuple__51 __pyx_mstate_global->__pyx_tuple__51 +#define __pyx_tuple__53 __pyx_mstate_global->__pyx_tuple__53 +#define __pyx_tuple__57 __pyx_mstate_global->__pyx_tuple__57 +#define __pyx_tuple__59 __pyx_mstate_global->__pyx_tuple__59 +#define __pyx_tuple__60 __pyx_mstate_global->__pyx_tuple__60 +#define __pyx_tuple__62 __pyx_mstate_global->__pyx_tuple__62 +#define __pyx_tuple__67 __pyx_mstate_global->__pyx_tuple__67 +#define __pyx_tuple__69 __pyx_mstate_global->__pyx_tuple__69 +#define __pyx_tuple__71 __pyx_mstate_global->__pyx_tuple__71 +#define __pyx_tuple__76 __pyx_mstate_global->__pyx_tuple__76 +#define __pyx_tuple__85 __pyx_mstate_global->__pyx_tuple__85 +#define __pyx_codeobj__21 __pyx_mstate_global->__pyx_codeobj__21 +#define __pyx_codeobj__22 __pyx_mstate_global->__pyx_codeobj__22 +#define __pyx_codeobj__24 __pyx_mstate_global->__pyx_codeobj__24 +#define __pyx_codeobj__25 __pyx_mstate_global->__pyx_codeobj__25 +#define __pyx_codeobj__27 __pyx_mstate_global->__pyx_codeobj__27 +#define __pyx_codeobj__29 __pyx_mstate_global->__pyx_codeobj__29 +#define __pyx_codeobj__31 __pyx_mstate_global->__pyx_codeobj__31 +#define __pyx_codeobj__33 __pyx_mstate_global->__pyx_codeobj__33 +#define __pyx_codeobj__34 __pyx_mstate_global->__pyx_codeobj__34 +#define __pyx_codeobj__35 __pyx_mstate_global->__pyx_codeobj__35 +#define __pyx_codeobj__38 __pyx_mstate_global->__pyx_codeobj__38 +#define __pyx_codeobj__43 __pyx_mstate_global->__pyx_codeobj__43 +#define __pyx_codeobj__44 __pyx_mstate_global->__pyx_codeobj__44 +#define __pyx_codeobj__45 __pyx_mstate_global->__pyx_codeobj__45 +#define __pyx_codeobj__47 __pyx_mstate_global->__pyx_codeobj__47 +#define __pyx_codeobj__48 __pyx_mstate_global->__pyx_codeobj__48 +#define __pyx_codeobj__50 __pyx_mstate_global->__pyx_codeobj__50 +#define __pyx_codeobj__52 __pyx_mstate_global->__pyx_codeobj__52 +#define __pyx_codeobj__54 __pyx_mstate_global->__pyx_codeobj__54 +#define __pyx_codeobj__55 __pyx_mstate_global->__pyx_codeobj__55 +#define __pyx_codeobj__56 __pyx_mstate_global->__pyx_codeobj__56 +#define __pyx_codeobj__58 __pyx_mstate_global->__pyx_codeobj__58 +#define __pyx_codeobj__61 __pyx_mstate_global->__pyx_codeobj__61 +#define __pyx_codeobj__63 __pyx_mstate_global->__pyx_codeobj__63 +#define __pyx_codeobj__64 __pyx_mstate_global->__pyx_codeobj__64 +#define __pyx_codeobj__65 __pyx_mstate_global->__pyx_codeobj__65 +#define __pyx_codeobj__66 __pyx_mstate_global->__pyx_codeobj__66 +#define __pyx_codeobj__68 __pyx_mstate_global->__pyx_codeobj__68 +#define __pyx_codeobj__70 __pyx_mstate_global->__pyx_codeobj__70 +#define __pyx_codeobj__72 __pyx_mstate_global->__pyx_codeobj__72 +#define __pyx_codeobj__73 __pyx_mstate_global->__pyx_codeobj__73 +#define __pyx_codeobj__74 __pyx_mstate_global->__pyx_codeobj__74 +#define __pyx_codeobj__75 __pyx_mstate_global->__pyx_codeobj__75 +#define __pyx_codeobj__77 __pyx_mstate_global->__pyx_codeobj__77 +#define __pyx_codeobj__78 __pyx_mstate_global->__pyx_codeobj__78 +#define __pyx_codeobj__79 __pyx_mstate_global->__pyx_codeobj__79 +#define __pyx_codeobj__80 __pyx_mstate_global->__pyx_codeobj__80 +#define __pyx_codeobj__81 __pyx_mstate_global->__pyx_codeobj__81 +#define __pyx_codeobj__82 __pyx_mstate_global->__pyx_codeobj__82 +#define __pyx_codeobj__83 __pyx_mstate_global->__pyx_codeobj__83 +#define __pyx_codeobj__84 __pyx_mstate_global->__pyx_codeobj__84 +#define __pyx_codeobj__86 __pyx_mstate_global->__pyx_codeobj__86 +#define __pyx_codeobj__87 __pyx_mstate_global->__pyx_codeobj__87 +#define __pyx_codeobj__88 __pyx_mstate_global->__pyx_codeobj__88 +#define __pyx_codeobj__89 __pyx_mstate_global->__pyx_codeobj__89 +#define __pyx_codeobj__90 __pyx_mstate_global->__pyx_codeobj__90 +#define __pyx_codeobj__91 __pyx_mstate_global->__pyx_codeobj__91 +#define __pyx_codeobj__92 __pyx_mstate_global->__pyx_codeobj__92 +/* #### Code section: module_code ### */ + +/* "_pydevd_bundle/pydevd_cython.pyx":76 + * # fmt: on + * + * def __init__(self): # <<<<<<<<<<<<<< + * self.pydev_state = STATE_RUN # STATE_RUN or STATE_SUSPEND + * self.pydev_step_stop = None + */ + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { + __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1;} + if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo___init__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo___init__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__init__", 1); + + /* "_pydevd_bundle/pydevd_cython.pyx":77 + * + * def __init__(self): + * self.pydev_state = STATE_RUN # STATE_RUN or STATE_SUSPEND # <<<<<<<<<<<<<< + * self.pydev_step_stop = None + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_STATE_RUN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 77, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 77, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_self->pydev_state = __pyx_t_2; + + /* "_pydevd_bundle/pydevd_cython.pyx":78 + * def __init__(self): + * self.pydev_state = STATE_RUN # STATE_RUN or STATE_SUSPEND + * self.pydev_step_stop = None # <<<<<<<<<<<<<< + * + * # Note: we have `pydev_original_step_cmd` and `pydev_step_cmd` because the original is to + */ + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->pydev_step_stop); + __Pyx_DECREF(__pyx_v_self->pydev_step_stop); + __pyx_v_self->pydev_step_stop = Py_None; + + /* "_pydevd_bundle/pydevd_cython.pyx":86 + * # method the strategy is changed to a step in). + * + * self.pydev_original_step_cmd = -1 # Something as CMD_STEP_INTO, CMD_STEP_OVER, etc. # <<<<<<<<<<<<<< + * self.pydev_step_cmd = -1 # Something as CMD_STEP_INTO, CMD_STEP_OVER, etc. + * + */ + __pyx_v_self->pydev_original_step_cmd = -1; + + /* "_pydevd_bundle/pydevd_cython.pyx":87 + * + * self.pydev_original_step_cmd = -1 # Something as CMD_STEP_INTO, CMD_STEP_OVER, etc. + * self.pydev_step_cmd = -1 # Something as CMD_STEP_INTO, CMD_STEP_OVER, etc. # <<<<<<<<<<<<<< + * + * self.pydev_notify_kill = False + */ + __pyx_v_self->pydev_step_cmd = -1; + + /* "_pydevd_bundle/pydevd_cython.pyx":89 + * self.pydev_step_cmd = -1 # Something as CMD_STEP_INTO, CMD_STEP_OVER, etc. + * + * self.pydev_notify_kill = False # <<<<<<<<<<<<<< + * self.pydev_django_resolve_frame = False + * self.pydev_call_from_jinja2 = None + */ + __pyx_v_self->pydev_notify_kill = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":90 + * + * self.pydev_notify_kill = False + * self.pydev_django_resolve_frame = False # <<<<<<<<<<<<<< + * self.pydev_call_from_jinja2 = None + * self.pydev_call_inside_jinja2 = None + */ + __pyx_v_self->pydev_django_resolve_frame = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":91 + * self.pydev_notify_kill = False + * self.pydev_django_resolve_frame = False + * self.pydev_call_from_jinja2 = None # <<<<<<<<<<<<<< + * self.pydev_call_inside_jinja2 = None + * self.is_tracing = 0 + */ + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->pydev_call_from_jinja2); + __Pyx_DECREF(__pyx_v_self->pydev_call_from_jinja2); + __pyx_v_self->pydev_call_from_jinja2 = Py_None; + + /* "_pydevd_bundle/pydevd_cython.pyx":92 + * self.pydev_django_resolve_frame = False + * self.pydev_call_from_jinja2 = None + * self.pydev_call_inside_jinja2 = None # <<<<<<<<<<<<<< + * self.is_tracing = 0 + * self.conditional_breakpoint_exception = None + */ + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->pydev_call_inside_jinja2); + __Pyx_DECREF(__pyx_v_self->pydev_call_inside_jinja2); + __pyx_v_self->pydev_call_inside_jinja2 = Py_None; + + /* "_pydevd_bundle/pydevd_cython.pyx":93 + * self.pydev_call_from_jinja2 = None + * self.pydev_call_inside_jinja2 = None + * self.is_tracing = 0 # <<<<<<<<<<<<<< + * self.conditional_breakpoint_exception = None + * self.pydev_message = "" + */ + __pyx_v_self->is_tracing = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":94 + * self.pydev_call_inside_jinja2 = None + * self.is_tracing = 0 + * self.conditional_breakpoint_exception = None # <<<<<<<<<<<<<< + * self.pydev_message = "" + * self.suspend_type = PYTHON_SUSPEND + */ + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->conditional_breakpoint_exception); + __Pyx_DECREF(__pyx_v_self->conditional_breakpoint_exception); + __pyx_v_self->conditional_breakpoint_exception = ((PyObject*)Py_None); + + /* "_pydevd_bundle/pydevd_cython.pyx":95 + * self.is_tracing = 0 + * self.conditional_breakpoint_exception = None + * self.pydev_message = "" # <<<<<<<<<<<<<< + * self.suspend_type = PYTHON_SUSPEND + * self.pydev_next_line = -1 + */ + __Pyx_INCREF(__pyx_kp_s_); + __Pyx_GIVEREF(__pyx_kp_s_); + __Pyx_GOTREF(__pyx_v_self->pydev_message); + __Pyx_DECREF(__pyx_v_self->pydev_message); + __pyx_v_self->pydev_message = __pyx_kp_s_; + + /* "_pydevd_bundle/pydevd_cython.pyx":96 + * self.conditional_breakpoint_exception = None + * self.pydev_message = "" + * self.suspend_type = PYTHON_SUSPEND # <<<<<<<<<<<<<< + * self.pydev_next_line = -1 + * self.pydev_func_name = ".invalid." # Must match the type in cython + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_PYTHON_SUSPEND); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 96, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 96, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_self->suspend_type = __pyx_t_2; + + /* "_pydevd_bundle/pydevd_cython.pyx":97 + * self.pydev_message = "" + * self.suspend_type = PYTHON_SUSPEND + * self.pydev_next_line = -1 # <<<<<<<<<<<<<< + * self.pydev_func_name = ".invalid." # Must match the type in cython + * self.suspended_at_unhandled = False + */ + __pyx_v_self->pydev_next_line = -1; + + /* "_pydevd_bundle/pydevd_cython.pyx":98 + * self.suspend_type = PYTHON_SUSPEND + * self.pydev_next_line = -1 + * self.pydev_func_name = ".invalid." # Must match the type in cython # <<<<<<<<<<<<<< + * self.suspended_at_unhandled = False + * self.trace_suspend_type = "trace" # 'trace' or 'frame_eval' + */ + __Pyx_INCREF(__pyx_kp_s_invalid); + __Pyx_GIVEREF(__pyx_kp_s_invalid); + __Pyx_GOTREF(__pyx_v_self->pydev_func_name); + __Pyx_DECREF(__pyx_v_self->pydev_func_name); + __pyx_v_self->pydev_func_name = __pyx_kp_s_invalid; + + /* "_pydevd_bundle/pydevd_cython.pyx":99 + * self.pydev_next_line = -1 + * self.pydev_func_name = ".invalid." # Must match the type in cython + * self.suspended_at_unhandled = False # <<<<<<<<<<<<<< + * self.trace_suspend_type = "trace" # 'trace' or 'frame_eval' + * self.top_level_thread_tracer_no_back_frames = [] + */ + __pyx_v_self->suspended_at_unhandled = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":100 + * self.pydev_func_name = ".invalid." # Must match the type in cython + * self.suspended_at_unhandled = False + * self.trace_suspend_type = "trace" # 'trace' or 'frame_eval' # <<<<<<<<<<<<<< + * self.top_level_thread_tracer_no_back_frames = [] + * self.top_level_thread_tracer_unhandled = None + */ + __Pyx_INCREF(__pyx_n_s_trace); + __Pyx_GIVEREF(__pyx_n_s_trace); + __Pyx_GOTREF(__pyx_v_self->trace_suspend_type); + __Pyx_DECREF(__pyx_v_self->trace_suspend_type); + __pyx_v_self->trace_suspend_type = __pyx_n_s_trace; + + /* "_pydevd_bundle/pydevd_cython.pyx":101 + * self.suspended_at_unhandled = False + * self.trace_suspend_type = "trace" # 'trace' or 'frame_eval' + * self.top_level_thread_tracer_no_back_frames = [] # <<<<<<<<<<<<<< + * self.top_level_thread_tracer_unhandled = None + * self.thread_tracer = None + */ + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 101, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v_self->top_level_thread_tracer_no_back_frames); + __Pyx_DECREF(__pyx_v_self->top_level_thread_tracer_no_back_frames); + __pyx_v_self->top_level_thread_tracer_no_back_frames = __pyx_t_1; + __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":102 + * self.trace_suspend_type = "trace" # 'trace' or 'frame_eval' + * self.top_level_thread_tracer_no_back_frames = [] + * self.top_level_thread_tracer_unhandled = None # <<<<<<<<<<<<<< + * self.thread_tracer = None + * self.step_in_initial_location = None + */ + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->top_level_thread_tracer_unhandled); + __Pyx_DECREF(__pyx_v_self->top_level_thread_tracer_unhandled); + __pyx_v_self->top_level_thread_tracer_unhandled = Py_None; + + /* "_pydevd_bundle/pydevd_cython.pyx":103 + * self.top_level_thread_tracer_no_back_frames = [] + * self.top_level_thread_tracer_unhandled = None + * self.thread_tracer = None # <<<<<<<<<<<<<< + * self.step_in_initial_location = None + * self.pydev_smart_parent_offset = -1 + */ + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->thread_tracer); + __Pyx_DECREF(__pyx_v_self->thread_tracer); + __pyx_v_self->thread_tracer = Py_None; + + /* "_pydevd_bundle/pydevd_cython.pyx":104 + * self.top_level_thread_tracer_unhandled = None + * self.thread_tracer = None + * self.step_in_initial_location = None # <<<<<<<<<<<<<< + * self.pydev_smart_parent_offset = -1 + * self.pydev_smart_child_offset = -1 + */ + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->step_in_initial_location); + __Pyx_DECREF(__pyx_v_self->step_in_initial_location); + __pyx_v_self->step_in_initial_location = Py_None; + + /* "_pydevd_bundle/pydevd_cython.pyx":105 + * self.thread_tracer = None + * self.step_in_initial_location = None + * self.pydev_smart_parent_offset = -1 # <<<<<<<<<<<<<< + * self.pydev_smart_child_offset = -1 + * self.pydev_smart_step_into_variants = () + */ + __pyx_v_self->pydev_smart_parent_offset = -1; + + /* "_pydevd_bundle/pydevd_cython.pyx":106 + * self.step_in_initial_location = None + * self.pydev_smart_parent_offset = -1 + * self.pydev_smart_child_offset = -1 # <<<<<<<<<<<<<< + * self.pydev_smart_step_into_variants = () + * self.target_id_to_smart_step_into_variant = {} + */ + __pyx_v_self->pydev_smart_child_offset = -1; + + /* "_pydevd_bundle/pydevd_cython.pyx":107 + * self.pydev_smart_parent_offset = -1 + * self.pydev_smart_child_offset = -1 + * self.pydev_smart_step_into_variants = () # <<<<<<<<<<<<<< + * self.target_id_to_smart_step_into_variant = {} + * + */ + __Pyx_INCREF(__pyx_empty_tuple); + __Pyx_GIVEREF(__pyx_empty_tuple); + __Pyx_GOTREF(__pyx_v_self->pydev_smart_step_into_variants); + __Pyx_DECREF(__pyx_v_self->pydev_smart_step_into_variants); + __pyx_v_self->pydev_smart_step_into_variants = __pyx_empty_tuple; + + /* "_pydevd_bundle/pydevd_cython.pyx":108 + * self.pydev_smart_child_offset = -1 + * self.pydev_smart_step_into_variants = () + * self.target_id_to_smart_step_into_variant = {} # <<<<<<<<<<<<<< + * + * # Flag to indicate ipython use-case where each line will be executed as a call/line/return + */ + __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 108, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v_self->target_id_to_smart_step_into_variant); + __Pyx_DECREF(__pyx_v_self->target_id_to_smart_step_into_variant); + __pyx_v_self->target_id_to_smart_step_into_variant = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":120 + * # + * # See: https://github.com/microsoft/debugpy/issues/869#issuecomment-1132141003 + * self.pydev_use_scoped_step_frame = False # <<<<<<<<<<<<<< + * self.weak_thread = None + * + */ + __pyx_v_self->pydev_use_scoped_step_frame = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":121 + * # See: https://github.com/microsoft/debugpy/issues/869#issuecomment-1132141003 + * self.pydev_use_scoped_step_frame = False + * self.weak_thread = None # <<<<<<<<<<<<<< + * + * # Purpose: detect if this thread is suspended and actually in the wait loop + */ + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->weak_thread); + __Pyx_DECREF(__pyx_v_self->weak_thread); + __pyx_v_self->weak_thread = Py_None; + + /* "_pydevd_bundle/pydevd_cython.pyx":126 + * # at this time (otherwise it may be suspended but still didn't reach a point. + * # to pause). + * self.is_in_wait_loop = False # <<<<<<<<<<<<<< + * + * # fmt: off + */ + __pyx_v_self->is_in_wait_loop = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":76 + * # fmt: on + * + * def __init__(self): # <<<<<<<<<<<<<< + * self.pydev_state = STATE_RUN # STATE_RUN or STATE_SUSPEND + * self.pydev_step_stop = None + */ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":130 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cpdef object _get_related_thread(self): # <<<<<<<<<<<<<< + * # ELSE + * # def _get_related_thread(self): + */ + +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_3_get_related_thread(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo__get_related_thread(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, int __pyx_skip_dispatch) { + PyObject *__pyx_v_thread = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + unsigned int __pyx_t_5; + int __pyx_t_6; + int __pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_get_related_thread", 1); + /* Check if called by wrapper */ + if (unlikely(__pyx_skip_dispatch)) ; + /* Check if overridden in Python */ + else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) { + #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS + static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT; + if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) { + PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self)); + #endif + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_related_thread); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 130, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!__Pyx_IsSameCFunction(__pyx_t_1, (void*) __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_3_get_related_thread)) { + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_t_1); + __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 130, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + goto __pyx_L0; + } + #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS + __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self)); + __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self)); + if (unlikely(__pyx_typedict_guard != __pyx_tp_dict_version)) { + __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT; + } + #endif + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS + } + #endif + } + + /* "_pydevd_bundle/pydevd_cython.pyx":135 + * # ENDIF + * # fmt: on + * if self.pydev_notify_kill: # Already killed # <<<<<<<<<<<<<< + * return None + * + */ + if (__pyx_v_self->pydev_notify_kill) { + + /* "_pydevd_bundle/pydevd_cython.pyx":136 + * # fmt: on + * if self.pydev_notify_kill: # Already killed + * return None # <<<<<<<<<<<<<< + * + * if self.weak_thread is None: + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":135 + * # ENDIF + * # fmt: on + * if self.pydev_notify_kill: # Already killed # <<<<<<<<<<<<<< + * return None + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":138 + * return None + * + * if self.weak_thread is None: # <<<<<<<<<<<<<< + * return None + * + */ + __pyx_t_6 = (__pyx_v_self->weak_thread == Py_None); + if (__pyx_t_6) { + + /* "_pydevd_bundle/pydevd_cython.pyx":139 + * + * if self.weak_thread is None: + * return None # <<<<<<<<<<<<<< + * + * thread = self.weak_thread() + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":138 + * return None + * + * if self.weak_thread is None: # <<<<<<<<<<<<<< + * return None + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":141 + * return None + * + * thread = self.weak_thread() # <<<<<<<<<<<<<< + * if thread is None: + * return False + */ + __Pyx_INCREF(__pyx_v_self->weak_thread); + __pyx_t_2 = __pyx_v_self->weak_thread; __pyx_t_3 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 141, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_v_thread = __pyx_t_1; + __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":142 + * + * thread = self.weak_thread() + * if thread is None: # <<<<<<<<<<<<<< + * return False + * + */ + __pyx_t_6 = (__pyx_v_thread == Py_None); + if (__pyx_t_6) { + + /* "_pydevd_bundle/pydevd_cython.pyx":143 + * thread = self.weak_thread() + * if thread is None: + * return False # <<<<<<<<<<<<<< + * + * if not is_thread_alive(thread): + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(Py_False); + __pyx_r = Py_False; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":142 + * + * thread = self.weak_thread() + * if thread is None: # <<<<<<<<<<<<<< + * return False + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":145 + * return False + * + * if not is_thread_alive(thread): # <<<<<<<<<<<<<< + * return None + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_is_thread_alive); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 145, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_thread}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 145, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 145, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_7 = (!__pyx_t_6); + if (__pyx_t_7) { + + /* "_pydevd_bundle/pydevd_cython.pyx":146 + * + * if not is_thread_alive(thread): + * return None # <<<<<<<<<<<<<< + * + * if thread._ident is None: # Can this happen? + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":145 + * return False + * + * if not is_thread_alive(thread): # <<<<<<<<<<<<<< + * return None + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":148 + * return None + * + * if thread._ident is None: # Can this happen? # <<<<<<<<<<<<<< + * pydev_log.critical("thread._ident is None in _get_related_thread!") + * return None + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_thread, __pyx_n_s_ident); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 148, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_7 = (__pyx_t_1 == Py_None); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_7) { + + /* "_pydevd_bundle/pydevd_cython.pyx":149 + * + * if thread._ident is None: # Can this happen? + * pydev_log.critical("thread._ident is None in _get_related_thread!") # <<<<<<<<<<<<<< + * return None + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 149, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_critical); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 149, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_kp_s_thread__ident_is_None_in__get_re}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 149, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":150 + * if thread._ident is None: # Can this happen? + * pydev_log.critical("thread._ident is None in _get_related_thread!") + * return None # <<<<<<<<<<<<<< + * + * if threading._active.get(thread._ident) is not thread: + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":148 + * return None + * + * if thread._ident is None: # Can this happen? # <<<<<<<<<<<<<< + * pydev_log.critical("thread._ident is None in _get_related_thread!") + * return None + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":152 + * return None + * + * if threading._active.get(thread._ident) is not thread: # <<<<<<<<<<<<<< + * return None + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_threading); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 152, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_active); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 152, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 152, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_thread, __pyx_n_s_ident); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 152, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_2}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 152, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_t_7 = (__pyx_t_1 != __pyx_v_thread); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_7) { + + /* "_pydevd_bundle/pydevd_cython.pyx":153 + * + * if threading._active.get(thread._ident) is not thread: + * return None # <<<<<<<<<<<<<< + * + * return thread + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":152 + * return None + * + * if threading._active.get(thread._ident) is not thread: # <<<<<<<<<<<<<< + * return None + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":155 + * return None + * + * return thread # <<<<<<<<<<<<<< + * + * # fmt: off + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_thread); + __pyx_r = __pyx_v_thread; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":130 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cpdef object _get_related_thread(self): # <<<<<<<<<<<<<< + * # ELSE + * # def _get_related_thread(self): + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo._get_related_thread", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_thread); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_3_get_related_thread(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_3_get_related_thread = {"_get_related_thread", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_3_get_related_thread, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_3_get_related_thread(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("_get_related_thread (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { + __Pyx_RaiseArgtupleInvalid("_get_related_thread", 1, 0, 0, __pyx_nargs); return NULL;} + if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_get_related_thread", 0))) return NULL; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_2_get_related_thread(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_2_get_related_thread(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_get_related_thread", 1); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __pyx_f_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo__get_related_thread(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 130, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo._get_related_thread", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":159 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cpdef bint _is_stepping(self): # <<<<<<<<<<<<<< + * # ELSE + * # def _is_stepping(self): + */ + +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_5_is_stepping(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static int __pyx_f_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo__is_stepping(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, int __pyx_skip_dispatch) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + unsigned int __pyx_t_5; + int __pyx_t_6; + int __pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_is_stepping", 1); + /* Check if called by wrapper */ + if (unlikely(__pyx_skip_dispatch)) ; + /* Check if overridden in Python */ + else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) { + #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS + static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT; + if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) { + PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self)); + #endif + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_is_stepping); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 159, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!__Pyx_IsSameCFunction(__pyx_t_1, (void*) __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_5_is_stepping)) { + __Pyx_INCREF(__pyx_t_1); + __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 159, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 159, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __pyx_t_6; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + goto __pyx_L0; + } + #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS + __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self)); + __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self)); + if (unlikely(__pyx_typedict_guard != __pyx_tp_dict_version)) { + __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT; + } + #endif + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS + } + #endif + } + + /* "_pydevd_bundle/pydevd_cython.pyx":164 + * # ENDIF + * # fmt: on + * if self.pydev_state == STATE_RUN and self.pydev_step_cmd != -1: # <<<<<<<<<<<<<< + * # This means actually stepping in a step operation. + * return True + */ + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 164, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_STATE_RUN); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 164, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 164, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 164, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_7) { + } else { + __pyx_t_6 = __pyx_t_7; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_7 = (__pyx_v_self->pydev_step_cmd != -1L); + __pyx_t_6 = __pyx_t_7; + __pyx_L4_bool_binop_done:; + if (__pyx_t_6) { + + /* "_pydevd_bundle/pydevd_cython.pyx":166 + * if self.pydev_state == STATE_RUN and self.pydev_step_cmd != -1: + * # This means actually stepping in a step operation. + * return True # <<<<<<<<<<<<<< + * + * if self.pydev_state == STATE_SUSPEND and self.is_in_wait_loop: + */ + __pyx_r = 1; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":164 + * # ENDIF + * # fmt: on + * if self.pydev_state == STATE_RUN and self.pydev_step_cmd != -1: # <<<<<<<<<<<<<< + * # This means actually stepping in a step operation. + * return True + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":168 + * return True + * + * if self.pydev_state == STATE_SUSPEND and self.is_in_wait_loop: # <<<<<<<<<<<<<< + * # This means stepping because it was suspended but still didn't + * # reach a suspension point. + */ + __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_state); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 168, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_STATE_SUSPEND); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 168, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = PyObject_RichCompare(__pyx_t_3, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 168, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 168, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_7) { + } else { + __pyx_t_6 = __pyx_t_7; + goto __pyx_L7_bool_binop_done; + } + __pyx_t_6 = __pyx_v_self->is_in_wait_loop; + __pyx_L7_bool_binop_done:; + if (__pyx_t_6) { + + /* "_pydevd_bundle/pydevd_cython.pyx":171 + * # This means stepping because it was suspended but still didn't + * # reach a suspension point. + * return True # <<<<<<<<<<<<<< + * + * return False + */ + __pyx_r = 1; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":168 + * return True + * + * if self.pydev_state == STATE_SUSPEND and self.is_in_wait_loop: # <<<<<<<<<<<<<< + * # This means stepping because it was suspended but still didn't + * # reach a suspension point. + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":173 + * return True + * + * return False # <<<<<<<<<<<<<< + * + * # fmt: off + */ + __pyx_r = 0; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":159 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cpdef bint _is_stepping(self): # <<<<<<<<<<<<<< + * # ELSE + * # def _is_stepping(self): + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo._is_stepping", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_5_is_stepping(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_5_is_stepping = {"_is_stepping", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_5_is_stepping, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_5_is_stepping(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("_is_stepping (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { + __Pyx_RaiseArgtupleInvalid("_is_stepping", 1, 0, 0, __pyx_nargs); return NULL;} + if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_is_stepping", 0))) return NULL; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_4_is_stepping(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_4_is_stepping(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_is_stepping", 1); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __pyx_f_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo__is_stepping(__pyx_v_self, 1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 159, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 159, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo._is_stepping", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":177 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cpdef get_topmost_frame(self, thread): # <<<<<<<<<<<<<< + * # ELSE + * # def get_topmost_frame(self, thread): + */ + +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_7get_topmost_frame(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_get_topmost_frame(CYTHON_UNUSED struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_thread, int __pyx_skip_dispatch) { + PyObject *__pyx_v_current_frames = NULL; + PyObject *__pyx_v_topmost_frame = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + unsigned int __pyx_t_5; + int __pyx_t_6; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get_topmost_frame", 1); + /* Check if called by wrapper */ + if (unlikely(__pyx_skip_dispatch)) ; + /* Check if overridden in Python */ + else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) { + #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS + static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT; + if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) { + PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self)); + #endif + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_topmost_frame); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 177, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!__Pyx_IsSameCFunction(__pyx_t_1, (void*) __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_7get_topmost_frame)) { + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_t_1); + __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_thread}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 177, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + goto __pyx_L0; + } + #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS + __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self)); + __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self)); + if (unlikely(__pyx_typedict_guard != __pyx_tp_dict_version)) { + __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT; + } + #endif + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS + } + #endif + } + + /* "_pydevd_bundle/pydevd_cython.pyx":188 + * """ + * # sys._current_frames(): dictionary with thread id -> topmost frame + * current_frames = _current_frames() # <<<<<<<<<<<<<< + * topmost_frame = current_frames.get(thread._ident) + * if topmost_frame is None: + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_current_frames); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 188, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 188, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_v_current_frames = __pyx_t_1; + __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":189 + * # sys._current_frames(): dictionary with thread id -> topmost frame + * current_frames = _current_frames() + * topmost_frame = current_frames.get(thread._ident) # <<<<<<<<<<<<<< + * if topmost_frame is None: + * # Note: this is expected for dummy threads (so, getting the topmost frame should be + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_current_frames, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 189, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_thread, __pyx_n_s_ident); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 189, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 189, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_v_topmost_frame = __pyx_t_1; + __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":190 + * current_frames = _current_frames() + * topmost_frame = current_frames.get(thread._ident) + * if topmost_frame is None: # <<<<<<<<<<<<<< + * # Note: this is expected for dummy threads (so, getting the topmost frame should be + * # treated as optional). + */ + __pyx_t_6 = (__pyx_v_topmost_frame == Py_None); + if (__pyx_t_6) { + + /* "_pydevd_bundle/pydevd_cython.pyx":193 + * # Note: this is expected for dummy threads (so, getting the topmost frame should be + * # treated as optional). + * pydev_log.info( # <<<<<<<<<<<<<< + * "Unable to get topmost frame for thread: %s, thread.ident: %s, id(thread): %s\nCurrent frames: %s.\n" "GEVENT_SUPPORT: %s", + * thread, + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 193, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_info); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 193, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":196 + * "Unable to get topmost frame for thread: %s, thread.ident: %s, id(thread): %s\nCurrent frames: %s.\n" "GEVENT_SUPPORT: %s", + * thread, + * thread.ident, # <<<<<<<<<<<<<< + * id(thread), + * current_frames, + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_thread, __pyx_n_s_ident_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 196, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + + /* "_pydevd_bundle/pydevd_cython.pyx":197 + * thread, + * thread.ident, + * id(thread), # <<<<<<<<<<<<<< + * current_frames, + * SUPPORT_GEVENT, + */ + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, __pyx_v_thread); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 197, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + + /* "_pydevd_bundle/pydevd_cython.pyx":199 + * id(thread), + * current_frames, + * SUPPORT_GEVENT, # <<<<<<<<<<<<<< + * ) + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_SUPPORT_GEVENT); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 199, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[7] = {__pyx_t_8, __pyx_kp_s_Unable_to_get_topmost_frame_for, __pyx_v_thread, __pyx_t_2, __pyx_t_4, __pyx_v_current_frames, __pyx_t_7}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 6+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 193, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":190 + * current_frames = _current_frames() + * topmost_frame = current_frames.get(thread._ident) + * if topmost_frame is None: # <<<<<<<<<<<<<< + * # Note: this is expected for dummy threads (so, getting the topmost frame should be + * # treated as optional). + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":202 + * ) + * + * return topmost_frame # <<<<<<<<<<<<<< + * + * # fmt: off + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_topmost_frame); + __pyx_r = __pyx_v_topmost_frame; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":177 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cpdef get_topmost_frame(self, thread): # <<<<<<<<<<<<<< + * # ELSE + * # def get_topmost_frame(self, thread): + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.get_topmost_frame", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_current_frames); + __Pyx_XDECREF(__pyx_v_topmost_frame); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_7get_topmost_frame(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_6get_topmost_frame, "\n Gets the topmost frame for the given thread. Note that it may be None\n and callers should remove the reference to the frame as soon as possible\n to avoid disturbing user code.\n "); +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_7get_topmost_frame = {"get_topmost_frame", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_7get_topmost_frame, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_6get_topmost_frame}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_7get_topmost_frame(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_thread = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_topmost_frame (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_thread,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_thread)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 177, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "get_topmost_frame") < 0)) __PYX_ERR(0, 177, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + } + __pyx_v_thread = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("get_topmost_frame", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 177, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.get_topmost_frame", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_6get_topmost_frame(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), __pyx_v_thread); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_6get_topmost_frame(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_thread) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get_topmost_frame", 1); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __pyx_f_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_get_topmost_frame(__pyx_v_self, __pyx_v_thread, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 177, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.get_topmost_frame", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":206 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cpdef update_stepping_info(self): # <<<<<<<<<<<<<< + * # ELSE + * # def update_stepping_info(self): + */ + +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_9update_stepping_info(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_update_stepping_info(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, int __pyx_skip_dispatch) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + unsigned int __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("update_stepping_info", 1); + /* Check if called by wrapper */ + if (unlikely(__pyx_skip_dispatch)) ; + /* Check if overridden in Python */ + else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) { + #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS + static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT; + if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) { + PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self)); + #endif + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_update_stepping_info); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 206, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!__Pyx_IsSameCFunction(__pyx_t_1, (void*) __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_9update_stepping_info)) { + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_t_1); + __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 206, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + goto __pyx_L0; + } + #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS + __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self)); + __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self)); + if (unlikely(__pyx_typedict_guard != __pyx_tp_dict_version)) { + __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT; + } + #endif + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS + } + #endif + } + + /* "_pydevd_bundle/pydevd_cython.pyx":211 + * # ENDIF + * # fmt: on + * _update_stepping_info(self) # <<<<<<<<<<<<<< + * + * def __str__(self): + */ + __pyx_t_1 = __pyx_f_14_pydevd_bundle_13pydevd_cython__update_stepping_info(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 211, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":206 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cpdef update_stepping_info(self): # <<<<<<<<<<<<<< + * # ELSE + * # def update_stepping_info(self): + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.update_stepping_info", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_9update_stepping_info(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_9update_stepping_info = {"update_stepping_info", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_9update_stepping_info, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_9update_stepping_info(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("update_stepping_info (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { + __Pyx_RaiseArgtupleInvalid("update_stepping_info", 1, 0, 0, __pyx_nargs); return NULL;} + if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "update_stepping_info", 0))) return NULL; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_8update_stepping_info(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_8update_stepping_info(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("update_stepping_info", 1); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __pyx_f_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_update_stepping_info(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 206, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.update_stepping_info", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":213 + * _update_stepping_info(self) + * + * def __str__(self): # <<<<<<<<<<<<<< + * return "State:%s Stop:%s Cmd: %s Kill:%s" % (self.pydev_state, self.pydev_step_stop, self.pydev_step_cmd, self.pydev_notify_kill) + * + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11__str__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11__str__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__str__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_10__str__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_10__str__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__str__", 1); + + /* "_pydevd_bundle/pydevd_cython.pyx":214 + * + * def __str__(self): + * return "State:%s Stop:%s Cmd: %s Kill:%s" % (self.pydev_state, self.pydev_step_stop, self.pydev_step_cmd, self.pydev_notify_kill) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 214, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_step_cmd); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 214, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_v_self->pydev_notify_kill); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 214, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 214, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1)) __PYX_ERR(0, 214, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_self->pydev_step_stop); + __Pyx_GIVEREF(__pyx_v_self->pydev_step_stop); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_self->pydev_step_stop)) __PYX_ERR(0, 214, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_2)) __PYX_ERR(0, 214, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_3); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_t_3)) __PYX_ERR(0, 214, __pyx_L1_error); + __pyx_t_1 = 0; + __pyx_t_2 = 0; + __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_State_s_Stop_s_Cmd_s_Kill_s, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 214, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":213 + * _update_stepping_info(self) + * + * def __str__(self): # <<<<<<<<<<<<<< + * return "State:%s Stop:%s Cmd: %s Kill:%s" % (self.pydev_state, self.pydev_step_stop, self.pydev_step_cmd, self.pydev_notify_kill) + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pxd":2 + * cdef class PyDBAdditionalThreadInfo: + * cdef public int pydev_state # <<<<<<<<<<<<<< + * cdef public object pydev_step_stop # Actually, it's a frame or None + * cdef public int pydev_original_step_cmd + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11pydev_state_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11pydev_state_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11pydev_state___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11pydev_state___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.pydev_state.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11pydev_state_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11pydev_state_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11pydev_state_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11pydev_state_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + int __pyx_t_1; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 2, __pyx_L1_error) + __pyx_v_self->pydev_state = __pyx_t_1; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.pydev_state.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pxd":3 + * cdef class PyDBAdditionalThreadInfo: + * cdef public int pydev_state + * cdef public object pydev_step_stop # Actually, it's a frame or None # <<<<<<<<<<<<<< + * cdef public int pydev_original_step_cmd + * cdef public int pydev_step_cmd + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_step_stop_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_step_stop_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_step_stop___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_step_stop___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->pydev_step_stop); + __pyx_r = __pyx_v_self->pydev_step_stop; + goto __pyx_L0; + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_step_stop_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_step_stop_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_step_stop_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_step_stop_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__", 1); + __Pyx_INCREF(__pyx_v_value); + __Pyx_GIVEREF(__pyx_v_value); + __Pyx_GOTREF(__pyx_v_self->pydev_step_stop); + __Pyx_DECREF(__pyx_v_self->pydev_step_stop); + __pyx_v_self->pydev_step_stop = __pyx_v_value; + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_step_stop_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_step_stop_5__del__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_step_stop_4__del__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_step_stop_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 1); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->pydev_step_stop); + __Pyx_DECREF(__pyx_v_self->pydev_step_stop); + __pyx_v_self->pydev_step_stop = Py_None; + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pxd":4 + * cdef public int pydev_state + * cdef public object pydev_step_stop # Actually, it's a frame or None + * cdef public int pydev_original_step_cmd # <<<<<<<<<<<<<< + * cdef public int pydev_step_cmd + * cdef public bint pydev_notify_kill + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_23pydev_original_step_cmd_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_23pydev_original_step_cmd_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_23pydev_original_step_cmd___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_23pydev_original_step_cmd___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_original_step_cmd); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.pydev_original_step_cmd.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_23pydev_original_step_cmd_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_23pydev_original_step_cmd_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_23pydev_original_step_cmd_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_23pydev_original_step_cmd_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + int __pyx_t_1; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 4, __pyx_L1_error) + __pyx_v_self->pydev_original_step_cmd = __pyx_t_1; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.pydev_original_step_cmd.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pxd":5 + * cdef public object pydev_step_stop # Actually, it's a frame or None + * cdef public int pydev_original_step_cmd + * cdef public int pydev_step_cmd # <<<<<<<<<<<<<< + * cdef public bint pydev_notify_kill + * cdef public object pydev_smart_step_stop # Actually, it's a frame or None + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_14pydev_step_cmd_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_14pydev_step_cmd_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_14pydev_step_cmd___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_14pydev_step_cmd___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_step_cmd); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.pydev_step_cmd.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_14pydev_step_cmd_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_14pydev_step_cmd_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_14pydev_step_cmd_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_14pydev_step_cmd_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + int __pyx_t_1; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 5, __pyx_L1_error) + __pyx_v_self->pydev_step_cmd = __pyx_t_1; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.pydev_step_cmd.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pxd":6 + * cdef public int pydev_original_step_cmd + * cdef public int pydev_step_cmd + * cdef public bint pydev_notify_kill # <<<<<<<<<<<<<< + * cdef public object pydev_smart_step_stop # Actually, it's a frame or None + * cdef public bint pydev_django_resolve_frame + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_17pydev_notify_kill_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_17pydev_notify_kill_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_17pydev_notify_kill___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_17pydev_notify_kill___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->pydev_notify_kill); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.pydev_notify_kill.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_17pydev_notify_kill_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_17pydev_notify_kill_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_17pydev_notify_kill_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_17pydev_notify_kill_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + int __pyx_t_1; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 6, __pyx_L1_error) + __pyx_v_self->pydev_notify_kill = __pyx_t_1; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.pydev_notify_kill.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pxd":7 + * cdef public int pydev_step_cmd + * cdef public bint pydev_notify_kill + * cdef public object pydev_smart_step_stop # Actually, it's a frame or None # <<<<<<<<<<<<<< + * cdef public bint pydev_django_resolve_frame + * cdef public object pydev_call_from_jinja2 + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_21pydev_smart_step_stop_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_21pydev_smart_step_stop_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_21pydev_smart_step_stop___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_21pydev_smart_step_stop___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->pydev_smart_step_stop); + __pyx_r = __pyx_v_self->pydev_smart_step_stop; + goto __pyx_L0; + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_21pydev_smart_step_stop_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_21pydev_smart_step_stop_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_21pydev_smart_step_stop_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_21pydev_smart_step_stop_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__", 1); + __Pyx_INCREF(__pyx_v_value); + __Pyx_GIVEREF(__pyx_v_value); + __Pyx_GOTREF(__pyx_v_self->pydev_smart_step_stop); + __Pyx_DECREF(__pyx_v_self->pydev_smart_step_stop); + __pyx_v_self->pydev_smart_step_stop = __pyx_v_value; + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_21pydev_smart_step_stop_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_21pydev_smart_step_stop_5__del__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_21pydev_smart_step_stop_4__del__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_21pydev_smart_step_stop_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 1); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->pydev_smart_step_stop); + __Pyx_DECREF(__pyx_v_self->pydev_smart_step_stop); + __pyx_v_self->pydev_smart_step_stop = Py_None; + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pxd":8 + * cdef public bint pydev_notify_kill + * cdef public object pydev_smart_step_stop # Actually, it's a frame or None + * cdef public bint pydev_django_resolve_frame # <<<<<<<<<<<<<< + * cdef public object pydev_call_from_jinja2 + * cdef public object pydev_call_inside_jinja2 + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_26pydev_django_resolve_frame_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_26pydev_django_resolve_frame_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_26pydev_django_resolve_frame___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_26pydev_django_resolve_frame___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->pydev_django_resolve_frame); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.pydev_django_resolve_frame.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_26pydev_django_resolve_frame_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_26pydev_django_resolve_frame_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_26pydev_django_resolve_frame_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_26pydev_django_resolve_frame_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + int __pyx_t_1; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 8, __pyx_L1_error) + __pyx_v_self->pydev_django_resolve_frame = __pyx_t_1; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.pydev_django_resolve_frame.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pxd":9 + * cdef public object pydev_smart_step_stop # Actually, it's a frame or None + * cdef public bint pydev_django_resolve_frame + * cdef public object pydev_call_from_jinja2 # <<<<<<<<<<<<<< + * cdef public object pydev_call_inside_jinja2 + * cdef public int is_tracing + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22pydev_call_from_jinja2_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22pydev_call_from_jinja2_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22pydev_call_from_jinja2___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22pydev_call_from_jinja2___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->pydev_call_from_jinja2); + __pyx_r = __pyx_v_self->pydev_call_from_jinja2; + goto __pyx_L0; + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22pydev_call_from_jinja2_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22pydev_call_from_jinja2_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22pydev_call_from_jinja2_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22pydev_call_from_jinja2_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__", 1); + __Pyx_INCREF(__pyx_v_value); + __Pyx_GIVEREF(__pyx_v_value); + __Pyx_GOTREF(__pyx_v_self->pydev_call_from_jinja2); + __Pyx_DECREF(__pyx_v_self->pydev_call_from_jinja2); + __pyx_v_self->pydev_call_from_jinja2 = __pyx_v_value; + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22pydev_call_from_jinja2_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22pydev_call_from_jinja2_5__del__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22pydev_call_from_jinja2_4__del__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22pydev_call_from_jinja2_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 1); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->pydev_call_from_jinja2); + __Pyx_DECREF(__pyx_v_self->pydev_call_from_jinja2); + __pyx_v_self->pydev_call_from_jinja2 = Py_None; + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pxd":10 + * cdef public bint pydev_django_resolve_frame + * cdef public object pydev_call_from_jinja2 + * cdef public object pydev_call_inside_jinja2 # <<<<<<<<<<<<<< + * cdef public int is_tracing + * cdef public tuple conditional_breakpoint_exception + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_call_inside_jinja2_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_call_inside_jinja2_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_call_inside_jinja2___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_call_inside_jinja2___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->pydev_call_inside_jinja2); + __pyx_r = __pyx_v_self->pydev_call_inside_jinja2; + goto __pyx_L0; + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_call_inside_jinja2_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_call_inside_jinja2_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_call_inside_jinja2_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_call_inside_jinja2_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__", 1); + __Pyx_INCREF(__pyx_v_value); + __Pyx_GIVEREF(__pyx_v_value); + __Pyx_GOTREF(__pyx_v_self->pydev_call_inside_jinja2); + __Pyx_DECREF(__pyx_v_self->pydev_call_inside_jinja2); + __pyx_v_self->pydev_call_inside_jinja2 = __pyx_v_value; + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_call_inside_jinja2_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_call_inside_jinja2_5__del__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_call_inside_jinja2_4__del__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_call_inside_jinja2_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 1); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->pydev_call_inside_jinja2); + __Pyx_DECREF(__pyx_v_self->pydev_call_inside_jinja2); + __pyx_v_self->pydev_call_inside_jinja2 = Py_None; + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pxd":11 + * cdef public object pydev_call_from_jinja2 + * cdef public object pydev_call_inside_jinja2 + * cdef public int is_tracing # <<<<<<<<<<<<<< + * cdef public tuple conditional_breakpoint_exception + * cdef public str pydev_message + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_10is_tracing_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_10is_tracing_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_10is_tracing___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_10is_tracing___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->is_tracing); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 11, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.is_tracing.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_10is_tracing_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_10is_tracing_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_10is_tracing_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_10is_tracing_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + int __pyx_t_1; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 11, __pyx_L1_error) + __pyx_v_self->is_tracing = __pyx_t_1; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.is_tracing.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pxd":12 + * cdef public object pydev_call_inside_jinja2 + * cdef public int is_tracing + * cdef public tuple conditional_breakpoint_exception # <<<<<<<<<<<<<< + * cdef public str pydev_message + * cdef public int suspend_type + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_32conditional_breakpoint_exception_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_32conditional_breakpoint_exception_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_32conditional_breakpoint_exception___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_32conditional_breakpoint_exception___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->conditional_breakpoint_exception); + __pyx_r = __pyx_v_self->conditional_breakpoint_exception; + goto __pyx_L0; + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_32conditional_breakpoint_exception_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_32conditional_breakpoint_exception_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_32conditional_breakpoint_exception_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_32conditional_breakpoint_exception_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__set__", 1); + if (!(likely(PyTuple_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v_value))) __PYX_ERR(1, 12, __pyx_L1_error) + __pyx_t_1 = __pyx_v_value; + __Pyx_INCREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v_self->conditional_breakpoint_exception); + __Pyx_DECREF(__pyx_v_self->conditional_breakpoint_exception); + __pyx_v_self->conditional_breakpoint_exception = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.conditional_breakpoint_exception.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_32conditional_breakpoint_exception_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_32conditional_breakpoint_exception_5__del__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_32conditional_breakpoint_exception_4__del__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_32conditional_breakpoint_exception_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 1); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->conditional_breakpoint_exception); + __Pyx_DECREF(__pyx_v_self->conditional_breakpoint_exception); + __pyx_v_self->conditional_breakpoint_exception = ((PyObject*)Py_None); + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pxd":13 + * cdef public int is_tracing + * cdef public tuple conditional_breakpoint_exception + * cdef public str pydev_message # <<<<<<<<<<<<<< + * cdef public int suspend_type + * cdef public int pydev_next_line + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13pydev_message_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13pydev_message_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13pydev_message___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13pydev_message___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->pydev_message); + __pyx_r = __pyx_v_self->pydev_message; + goto __pyx_L0; + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13pydev_message_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13pydev_message_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13pydev_message_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13pydev_message_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__set__", 1); + if (!(likely(PyString_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_v_value))) __PYX_ERR(1, 13, __pyx_L1_error) + __pyx_t_1 = __pyx_v_value; + __Pyx_INCREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v_self->pydev_message); + __Pyx_DECREF(__pyx_v_self->pydev_message); + __pyx_v_self->pydev_message = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.pydev_message.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13pydev_message_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13pydev_message_5__del__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13pydev_message_4__del__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13pydev_message_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 1); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->pydev_message); + __Pyx_DECREF(__pyx_v_self->pydev_message); + __pyx_v_self->pydev_message = ((PyObject*)Py_None); + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pxd":14 + * cdef public tuple conditional_breakpoint_exception + * cdef public str pydev_message + * cdef public int suspend_type # <<<<<<<<<<<<<< + * cdef public int pydev_next_line + * cdef public str pydev_func_name + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_12suspend_type_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_12suspend_type_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_12suspend_type___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_12suspend_type___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->suspend_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.suspend_type.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_12suspend_type_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_12suspend_type_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_12suspend_type_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_12suspend_type_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + int __pyx_t_1; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 14, __pyx_L1_error) + __pyx_v_self->suspend_type = __pyx_t_1; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.suspend_type.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pxd":15 + * cdef public str pydev_message + * cdef public int suspend_type + * cdef public int pydev_next_line # <<<<<<<<<<<<<< + * cdef public str pydev_func_name + * cdef public bint suspended_at_unhandled + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_next_line_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_next_line_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_next_line___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_next_line___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_next_line); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.pydev_next_line.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_next_line_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_next_line_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_next_line_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_next_line_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + int __pyx_t_1; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 15, __pyx_L1_error) + __pyx_v_self->pydev_next_line = __pyx_t_1; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.pydev_next_line.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pxd":16 + * cdef public int suspend_type + * cdef public int pydev_next_line + * cdef public str pydev_func_name # <<<<<<<<<<<<<< + * cdef public bint suspended_at_unhandled + * cdef public str trace_suspend_type + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_func_name_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_func_name_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_func_name___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_func_name___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->pydev_func_name); + __pyx_r = __pyx_v_self->pydev_func_name; + goto __pyx_L0; + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_func_name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_func_name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_func_name_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_func_name_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__set__", 1); + if (!(likely(PyString_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_v_value))) __PYX_ERR(1, 16, __pyx_L1_error) + __pyx_t_1 = __pyx_v_value; + __Pyx_INCREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v_self->pydev_func_name); + __Pyx_DECREF(__pyx_v_self->pydev_func_name); + __pyx_v_self->pydev_func_name = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.pydev_func_name.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_func_name_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_func_name_5__del__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_func_name_4__del__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_func_name_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 1); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->pydev_func_name); + __Pyx_DECREF(__pyx_v_self->pydev_func_name); + __pyx_v_self->pydev_func_name = ((PyObject*)Py_None); + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pxd":17 + * cdef public int pydev_next_line + * cdef public str pydev_func_name + * cdef public bint suspended_at_unhandled # <<<<<<<<<<<<<< + * cdef public str trace_suspend_type + * cdef public object top_level_thread_tracer_no_back_frames + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22suspended_at_unhandled_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22suspended_at_unhandled_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22suspended_at_unhandled___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22suspended_at_unhandled___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->suspended_at_unhandled); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.suspended_at_unhandled.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22suspended_at_unhandled_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22suspended_at_unhandled_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22suspended_at_unhandled_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22suspended_at_unhandled_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + int __pyx_t_1; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 17, __pyx_L1_error) + __pyx_v_self->suspended_at_unhandled = __pyx_t_1; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.suspended_at_unhandled.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pxd":18 + * cdef public str pydev_func_name + * cdef public bint suspended_at_unhandled + * cdef public str trace_suspend_type # <<<<<<<<<<<<<< + * cdef public object top_level_thread_tracer_no_back_frames + * cdef public object top_level_thread_tracer_unhandled + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_18trace_suspend_type_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_18trace_suspend_type_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_18trace_suspend_type___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_18trace_suspend_type___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->trace_suspend_type); + __pyx_r = __pyx_v_self->trace_suspend_type; + goto __pyx_L0; + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_18trace_suspend_type_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_18trace_suspend_type_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_18trace_suspend_type_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_18trace_suspend_type_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__set__", 1); + if (!(likely(PyString_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_v_value))) __PYX_ERR(1, 18, __pyx_L1_error) + __pyx_t_1 = __pyx_v_value; + __Pyx_INCREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v_self->trace_suspend_type); + __Pyx_DECREF(__pyx_v_self->trace_suspend_type); + __pyx_v_self->trace_suspend_type = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.trace_suspend_type.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_18trace_suspend_type_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_18trace_suspend_type_5__del__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_18trace_suspend_type_4__del__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_18trace_suspend_type_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 1); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->trace_suspend_type); + __Pyx_DECREF(__pyx_v_self->trace_suspend_type); + __pyx_v_self->trace_suspend_type = ((PyObject*)Py_None); + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pxd":19 + * cdef public bint suspended_at_unhandled + * cdef public str trace_suspend_type + * cdef public object top_level_thread_tracer_no_back_frames # <<<<<<<<<<<<<< + * cdef public object top_level_thread_tracer_unhandled + * cdef public object thread_tracer + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_38top_level_thread_tracer_no_back_frames_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_38top_level_thread_tracer_no_back_frames_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_38top_level_thread_tracer_no_back_frames___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_38top_level_thread_tracer_no_back_frames___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->top_level_thread_tracer_no_back_frames); + __pyx_r = __pyx_v_self->top_level_thread_tracer_no_back_frames; + goto __pyx_L0; + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_38top_level_thread_tracer_no_back_frames_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_38top_level_thread_tracer_no_back_frames_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_38top_level_thread_tracer_no_back_frames_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_38top_level_thread_tracer_no_back_frames_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__", 1); + __Pyx_INCREF(__pyx_v_value); + __Pyx_GIVEREF(__pyx_v_value); + __Pyx_GOTREF(__pyx_v_self->top_level_thread_tracer_no_back_frames); + __Pyx_DECREF(__pyx_v_self->top_level_thread_tracer_no_back_frames); + __pyx_v_self->top_level_thread_tracer_no_back_frames = __pyx_v_value; + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_38top_level_thread_tracer_no_back_frames_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_38top_level_thread_tracer_no_back_frames_5__del__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_38top_level_thread_tracer_no_back_frames_4__del__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_38top_level_thread_tracer_no_back_frames_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 1); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->top_level_thread_tracer_no_back_frames); + __Pyx_DECREF(__pyx_v_self->top_level_thread_tracer_no_back_frames); + __pyx_v_self->top_level_thread_tracer_no_back_frames = Py_None; + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pxd":20 + * cdef public str trace_suspend_type + * cdef public object top_level_thread_tracer_no_back_frames + * cdef public object top_level_thread_tracer_unhandled # <<<<<<<<<<<<<< + * cdef public object thread_tracer + * cdef public object step_in_initial_location + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_33top_level_thread_tracer_unhandled_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_33top_level_thread_tracer_unhandled_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_33top_level_thread_tracer_unhandled___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_33top_level_thread_tracer_unhandled___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->top_level_thread_tracer_unhandled); + __pyx_r = __pyx_v_self->top_level_thread_tracer_unhandled; + goto __pyx_L0; + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_33top_level_thread_tracer_unhandled_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_33top_level_thread_tracer_unhandled_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_33top_level_thread_tracer_unhandled_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_33top_level_thread_tracer_unhandled_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__", 1); + __Pyx_INCREF(__pyx_v_value); + __Pyx_GIVEREF(__pyx_v_value); + __Pyx_GOTREF(__pyx_v_self->top_level_thread_tracer_unhandled); + __Pyx_DECREF(__pyx_v_self->top_level_thread_tracer_unhandled); + __pyx_v_self->top_level_thread_tracer_unhandled = __pyx_v_value; + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_33top_level_thread_tracer_unhandled_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_33top_level_thread_tracer_unhandled_5__del__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_33top_level_thread_tracer_unhandled_4__del__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_33top_level_thread_tracer_unhandled_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 1); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->top_level_thread_tracer_unhandled); + __Pyx_DECREF(__pyx_v_self->top_level_thread_tracer_unhandled); + __pyx_v_self->top_level_thread_tracer_unhandled = Py_None; + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pxd":21 + * cdef public object top_level_thread_tracer_no_back_frames + * cdef public object top_level_thread_tracer_unhandled + * cdef public object thread_tracer # <<<<<<<<<<<<<< + * cdef public object step_in_initial_location + * cdef public int pydev_smart_parent_offset + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13thread_tracer_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13thread_tracer_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13thread_tracer___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13thread_tracer___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->thread_tracer); + __pyx_r = __pyx_v_self->thread_tracer; + goto __pyx_L0; + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13thread_tracer_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13thread_tracer_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13thread_tracer_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13thread_tracer_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__", 1); + __Pyx_INCREF(__pyx_v_value); + __Pyx_GIVEREF(__pyx_v_value); + __Pyx_GOTREF(__pyx_v_self->thread_tracer); + __Pyx_DECREF(__pyx_v_self->thread_tracer); + __pyx_v_self->thread_tracer = __pyx_v_value; + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13thread_tracer_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13thread_tracer_5__del__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13thread_tracer_4__del__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13thread_tracer_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 1); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->thread_tracer); + __Pyx_DECREF(__pyx_v_self->thread_tracer); + __pyx_v_self->thread_tracer = Py_None; + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pxd":22 + * cdef public object top_level_thread_tracer_unhandled + * cdef public object thread_tracer + * cdef public object step_in_initial_location # <<<<<<<<<<<<<< + * cdef public int pydev_smart_parent_offset + * cdef public int pydev_smart_child_offset + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24step_in_initial_location_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24step_in_initial_location_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24step_in_initial_location___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24step_in_initial_location___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->step_in_initial_location); + __pyx_r = __pyx_v_self->step_in_initial_location; + goto __pyx_L0; + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24step_in_initial_location_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24step_in_initial_location_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24step_in_initial_location_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24step_in_initial_location_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__", 1); + __Pyx_INCREF(__pyx_v_value); + __Pyx_GIVEREF(__pyx_v_value); + __Pyx_GOTREF(__pyx_v_self->step_in_initial_location); + __Pyx_DECREF(__pyx_v_self->step_in_initial_location); + __pyx_v_self->step_in_initial_location = __pyx_v_value; + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24step_in_initial_location_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24step_in_initial_location_5__del__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24step_in_initial_location_4__del__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24step_in_initial_location_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 1); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->step_in_initial_location); + __Pyx_DECREF(__pyx_v_self->step_in_initial_location); + __pyx_v_self->step_in_initial_location = Py_None; + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pxd":23 + * cdef public object thread_tracer + * cdef public object step_in_initial_location + * cdef public int pydev_smart_parent_offset # <<<<<<<<<<<<<< + * cdef public int pydev_smart_child_offset + * cdef public tuple pydev_smart_step_into_variants + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_25pydev_smart_parent_offset_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_25pydev_smart_parent_offset_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_25pydev_smart_parent_offset___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_25pydev_smart_parent_offset___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_smart_parent_offset); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 23, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.pydev_smart_parent_offset.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_25pydev_smart_parent_offset_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_25pydev_smart_parent_offset_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_25pydev_smart_parent_offset_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_25pydev_smart_parent_offset_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + int __pyx_t_1; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 23, __pyx_L1_error) + __pyx_v_self->pydev_smart_parent_offset = __pyx_t_1; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.pydev_smart_parent_offset.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pxd":24 + * cdef public object step_in_initial_location + * cdef public int pydev_smart_parent_offset + * cdef public int pydev_smart_child_offset # <<<<<<<<<<<<<< + * cdef public tuple pydev_smart_step_into_variants + * cdef public dict target_id_to_smart_step_into_variant + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_smart_child_offset_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_smart_child_offset_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_smart_child_offset___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_smart_child_offset___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_smart_child_offset); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 24, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.pydev_smart_child_offset.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_smart_child_offset_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_smart_child_offset_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_smart_child_offset_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_smart_child_offset_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + int __pyx_t_1; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 24, __pyx_L1_error) + __pyx_v_self->pydev_smart_child_offset = __pyx_t_1; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.pydev_smart_child_offset.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pxd":25 + * cdef public int pydev_smart_parent_offset + * cdef public int pydev_smart_child_offset + * cdef public tuple pydev_smart_step_into_variants # <<<<<<<<<<<<<< + * cdef public dict target_id_to_smart_step_into_variant + * cdef public bint pydev_use_scoped_step_frame + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_30pydev_smart_step_into_variants_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_30pydev_smart_step_into_variants_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_30pydev_smart_step_into_variants___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_30pydev_smart_step_into_variants___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->pydev_smart_step_into_variants); + __pyx_r = __pyx_v_self->pydev_smart_step_into_variants; + goto __pyx_L0; + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_30pydev_smart_step_into_variants_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_30pydev_smart_step_into_variants_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_30pydev_smart_step_into_variants_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_30pydev_smart_step_into_variants_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__set__", 1); + if (!(likely(PyTuple_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v_value))) __PYX_ERR(1, 25, __pyx_L1_error) + __pyx_t_1 = __pyx_v_value; + __Pyx_INCREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v_self->pydev_smart_step_into_variants); + __Pyx_DECREF(__pyx_v_self->pydev_smart_step_into_variants); + __pyx_v_self->pydev_smart_step_into_variants = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.pydev_smart_step_into_variants.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_30pydev_smart_step_into_variants_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_30pydev_smart_step_into_variants_5__del__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_30pydev_smart_step_into_variants_4__del__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_30pydev_smart_step_into_variants_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 1); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->pydev_smart_step_into_variants); + __Pyx_DECREF(__pyx_v_self->pydev_smart_step_into_variants); + __pyx_v_self->pydev_smart_step_into_variants = ((PyObject*)Py_None); + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pxd":26 + * cdef public int pydev_smart_child_offset + * cdef public tuple pydev_smart_step_into_variants + * cdef public dict target_id_to_smart_step_into_variant # <<<<<<<<<<<<<< + * cdef public bint pydev_use_scoped_step_frame + * cdef public object weak_thread + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_36target_id_to_smart_step_into_variant_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_36target_id_to_smart_step_into_variant_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_36target_id_to_smart_step_into_variant___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_36target_id_to_smart_step_into_variant___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->target_id_to_smart_step_into_variant); + __pyx_r = __pyx_v_self->target_id_to_smart_step_into_variant; + goto __pyx_L0; + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_36target_id_to_smart_step_into_variant_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_36target_id_to_smart_step_into_variant_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_36target_id_to_smart_step_into_variant_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_36target_id_to_smart_step_into_variant_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__set__", 1); + if (!(likely(PyDict_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_v_value))) __PYX_ERR(1, 26, __pyx_L1_error) + __pyx_t_1 = __pyx_v_value; + __Pyx_INCREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v_self->target_id_to_smart_step_into_variant); + __Pyx_DECREF(__pyx_v_self->target_id_to_smart_step_into_variant); + __pyx_v_self->target_id_to_smart_step_into_variant = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.target_id_to_smart_step_into_variant.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_36target_id_to_smart_step_into_variant_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_36target_id_to_smart_step_into_variant_5__del__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_36target_id_to_smart_step_into_variant_4__del__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_36target_id_to_smart_step_into_variant_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 1); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->target_id_to_smart_step_into_variant); + __Pyx_DECREF(__pyx_v_self->target_id_to_smart_step_into_variant); + __pyx_v_self->target_id_to_smart_step_into_variant = ((PyObject*)Py_None); + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pxd":27 + * cdef public tuple pydev_smart_step_into_variants + * cdef public dict target_id_to_smart_step_into_variant + * cdef public bint pydev_use_scoped_step_frame # <<<<<<<<<<<<<< + * cdef public object weak_thread + * cdef public bint is_in_wait_loop + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_27pydev_use_scoped_step_frame_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_27pydev_use_scoped_step_frame_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_27pydev_use_scoped_step_frame___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_27pydev_use_scoped_step_frame___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->pydev_use_scoped_step_frame); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 27, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.pydev_use_scoped_step_frame.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_27pydev_use_scoped_step_frame_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_27pydev_use_scoped_step_frame_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_27pydev_use_scoped_step_frame_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_27pydev_use_scoped_step_frame_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + int __pyx_t_1; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 27, __pyx_L1_error) + __pyx_v_self->pydev_use_scoped_step_frame = __pyx_t_1; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.pydev_use_scoped_step_frame.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pxd":28 + * cdef public dict target_id_to_smart_step_into_variant + * cdef public bint pydev_use_scoped_step_frame + * cdef public object weak_thread # <<<<<<<<<<<<<< + * cdef public bint is_in_wait_loop + * + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11weak_thread_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11weak_thread_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11weak_thread___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11weak_thread___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->weak_thread); + __pyx_r = __pyx_v_self->weak_thread; + goto __pyx_L0; + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11weak_thread_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11weak_thread_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11weak_thread_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11weak_thread_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__", 1); + __Pyx_INCREF(__pyx_v_value); + __Pyx_GIVEREF(__pyx_v_value); + __Pyx_GOTREF(__pyx_v_self->weak_thread); + __Pyx_DECREF(__pyx_v_self->weak_thread); + __pyx_v_self->weak_thread = __pyx_v_value; + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11weak_thread_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11weak_thread_5__del__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11weak_thread_4__del__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11weak_thread_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 1); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->weak_thread); + __Pyx_DECREF(__pyx_v_self->weak_thread); + __pyx_v_self->weak_thread = Py_None; + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pxd":29 + * cdef public bint pydev_use_scoped_step_frame + * cdef public object weak_thread + * cdef public bint is_in_wait_loop # <<<<<<<<<<<<<< + * + * cpdef get_topmost_frame(self, thread) + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15is_in_wait_loop_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15is_in_wait_loop_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15is_in_wait_loop___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15is_in_wait_loop___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->is_in_wait_loop); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 29, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.is_in_wait_loop.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15is_in_wait_loop_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15is_in_wait_loop_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15is_in_wait_loop_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15is_in_wait_loop_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + int __pyx_t_1; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 29, __pyx_L1_error) + __pyx_v_self->is_in_wait_loop = __pyx_t_1; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.is_in_wait_loop.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { + __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} + if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_12__reduce_cython__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_12__reduce_cython__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self) { + PyObject *__pyx_v_state = 0; + PyObject *__pyx_v__dict = 0; + int __pyx_v_use_setstate; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + PyObject *__pyx_t_11 = NULL; + PyObject *__pyx_t_12 = NULL; + PyObject *__pyx_t_13 = NULL; + PyObject *__pyx_t_14 = NULL; + int __pyx_t_15; + int __pyx_t_16; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__reduce_cython__", 1); + + /* "(tree fragment)":5 + * cdef object _dict + * cdef bint use_setstate + * state = (self.conditional_breakpoint_exception, self.is_in_wait_loop, self.is_tracing, self.pydev_call_from_jinja2, self.pydev_call_inside_jinja2, self.pydev_django_resolve_frame, self.pydev_func_name, self.pydev_message, self.pydev_next_line, self.pydev_notify_kill, self.pydev_original_step_cmd, self.pydev_smart_child_offset, self.pydev_smart_parent_offset, self.pydev_smart_step_into_variants, self.pydev_smart_step_stop, self.pydev_state, self.pydev_step_cmd, self.pydev_step_stop, self.pydev_use_scoped_step_frame, self.step_in_initial_location, self.suspend_type, self.suspended_at_unhandled, self.target_id_to_smart_step_into_variant, self.thread_tracer, self.top_level_thread_tracer_no_back_frames, self.top_level_thread_tracer_unhandled, self.trace_suspend_type, self.weak_thread) # <<<<<<<<<<<<<< + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: + */ + __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->is_in_wait_loop); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->is_tracing); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_v_self->pydev_django_resolve_frame); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_next_line); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_v_self->pydev_notify_kill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_original_step_cmd); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_smart_child_offset); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_smart_parent_offset); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_state); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_10 = __Pyx_PyInt_From_int(__pyx_v_self->pydev_step_cmd); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_11 = __Pyx_PyBool_FromLong(__pyx_v_self->pydev_use_scoped_step_frame); if (unlikely(!__pyx_t_11)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_12 = __Pyx_PyInt_From_int(__pyx_v_self->suspend_type); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __pyx_t_13 = __Pyx_PyBool_FromLong(__pyx_v_self->suspended_at_unhandled); if (unlikely(!__pyx_t_13)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_14 = PyTuple_New(28); if (unlikely(!__pyx_t_14)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_INCREF(__pyx_v_self->conditional_breakpoint_exception); + __Pyx_GIVEREF(__pyx_v_self->conditional_breakpoint_exception); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_v_self->conditional_breakpoint_exception)) __PYX_ERR(2, 5, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_t_1)) __PYX_ERR(2, 5, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 2, __pyx_t_2)) __PYX_ERR(2, 5, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_self->pydev_call_from_jinja2); + __Pyx_GIVEREF(__pyx_v_self->pydev_call_from_jinja2); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 3, __pyx_v_self->pydev_call_from_jinja2)) __PYX_ERR(2, 5, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_self->pydev_call_inside_jinja2); + __Pyx_GIVEREF(__pyx_v_self->pydev_call_inside_jinja2); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 4, __pyx_v_self->pydev_call_inside_jinja2)) __PYX_ERR(2, 5, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_3); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 5, __pyx_t_3)) __PYX_ERR(2, 5, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_self->pydev_func_name); + __Pyx_GIVEREF(__pyx_v_self->pydev_func_name); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 6, __pyx_v_self->pydev_func_name)) __PYX_ERR(2, 5, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_self->pydev_message); + __Pyx_GIVEREF(__pyx_v_self->pydev_message); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 7, __pyx_v_self->pydev_message)) __PYX_ERR(2, 5, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_4); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 8, __pyx_t_4)) __PYX_ERR(2, 5, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_5); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 9, __pyx_t_5)) __PYX_ERR(2, 5, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_6); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 10, __pyx_t_6)) __PYX_ERR(2, 5, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_7); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 11, __pyx_t_7)) __PYX_ERR(2, 5, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_8); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 12, __pyx_t_8)) __PYX_ERR(2, 5, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_self->pydev_smart_step_into_variants); + __Pyx_GIVEREF(__pyx_v_self->pydev_smart_step_into_variants); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 13, __pyx_v_self->pydev_smart_step_into_variants)) __PYX_ERR(2, 5, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_self->pydev_smart_step_stop); + __Pyx_GIVEREF(__pyx_v_self->pydev_smart_step_stop); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 14, __pyx_v_self->pydev_smart_step_stop)) __PYX_ERR(2, 5, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_9); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 15, __pyx_t_9)) __PYX_ERR(2, 5, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_10); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 16, __pyx_t_10)) __PYX_ERR(2, 5, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_self->pydev_step_stop); + __Pyx_GIVEREF(__pyx_v_self->pydev_step_stop); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 17, __pyx_v_self->pydev_step_stop)) __PYX_ERR(2, 5, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_11); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 18, __pyx_t_11)) __PYX_ERR(2, 5, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_self->step_in_initial_location); + __Pyx_GIVEREF(__pyx_v_self->step_in_initial_location); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 19, __pyx_v_self->step_in_initial_location)) __PYX_ERR(2, 5, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_12); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 20, __pyx_t_12)) __PYX_ERR(2, 5, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_13); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 21, __pyx_t_13)) __PYX_ERR(2, 5, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_self->target_id_to_smart_step_into_variant); + __Pyx_GIVEREF(__pyx_v_self->target_id_to_smart_step_into_variant); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 22, __pyx_v_self->target_id_to_smart_step_into_variant)) __PYX_ERR(2, 5, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_self->thread_tracer); + __Pyx_GIVEREF(__pyx_v_self->thread_tracer); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 23, __pyx_v_self->thread_tracer)) __PYX_ERR(2, 5, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_self->top_level_thread_tracer_no_back_frames); + __Pyx_GIVEREF(__pyx_v_self->top_level_thread_tracer_no_back_frames); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 24, __pyx_v_self->top_level_thread_tracer_no_back_frames)) __PYX_ERR(2, 5, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_self->top_level_thread_tracer_unhandled); + __Pyx_GIVEREF(__pyx_v_self->top_level_thread_tracer_unhandled); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 25, __pyx_v_self->top_level_thread_tracer_unhandled)) __PYX_ERR(2, 5, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_self->trace_suspend_type); + __Pyx_GIVEREF(__pyx_v_self->trace_suspend_type); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 26, __pyx_v_self->trace_suspend_type)) __PYX_ERR(2, 5, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_self->weak_thread); + __Pyx_GIVEREF(__pyx_v_self->weak_thread); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 27, __pyx_v_self->weak_thread)) __PYX_ERR(2, 5, __pyx_L1_error); + __pyx_t_1 = 0; + __pyx_t_2 = 0; + __pyx_t_3 = 0; + __pyx_t_4 = 0; + __pyx_t_5 = 0; + __pyx_t_6 = 0; + __pyx_t_7 = 0; + __pyx_t_8 = 0; + __pyx_t_9 = 0; + __pyx_t_10 = 0; + __pyx_t_11 = 0; + __pyx_t_12 = 0; + __pyx_t_13 = 0; + __pyx_v_state = ((PyObject*)__pyx_t_14); + __pyx_t_14 = 0; + + /* "(tree fragment)":6 + * cdef bint use_setstate + * state = (self.conditional_breakpoint_exception, self.is_in_wait_loop, self.is_tracing, self.pydev_call_from_jinja2, self.pydev_call_inside_jinja2, self.pydev_django_resolve_frame, self.pydev_func_name, self.pydev_message, self.pydev_next_line, self.pydev_notify_kill, self.pydev_original_step_cmd, self.pydev_smart_child_offset, self.pydev_smart_parent_offset, self.pydev_smart_step_into_variants, self.pydev_smart_step_stop, self.pydev_state, self.pydev_step_cmd, self.pydev_step_stop, self.pydev_use_scoped_step_frame, self.step_in_initial_location, self.suspend_type, self.suspended_at_unhandled, self.target_id_to_smart_step_into_variant, self.thread_tracer, self.top_level_thread_tracer_no_back_frames, self.top_level_thread_tracer_unhandled, self.trace_suspend_type, self.weak_thread) + * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< + * if _dict is not None: + * state += (_dict,) + */ + __pyx_t_14 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_14)) __PYX_ERR(2, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_v__dict = __pyx_t_14; + __pyx_t_14 = 0; + + /* "(tree fragment)":7 + * state = (self.conditional_breakpoint_exception, self.is_in_wait_loop, self.is_tracing, self.pydev_call_from_jinja2, self.pydev_call_inside_jinja2, self.pydev_django_resolve_frame, self.pydev_func_name, self.pydev_message, self.pydev_next_line, self.pydev_notify_kill, self.pydev_original_step_cmd, self.pydev_smart_child_offset, self.pydev_smart_parent_offset, self.pydev_smart_step_into_variants, self.pydev_smart_step_stop, self.pydev_state, self.pydev_step_cmd, self.pydev_step_stop, self.pydev_use_scoped_step_frame, self.step_in_initial_location, self.suspend_type, self.suspended_at_unhandled, self.target_id_to_smart_step_into_variant, self.thread_tracer, self.top_level_thread_tracer_no_back_frames, self.top_level_thread_tracer_unhandled, self.trace_suspend_type, self.weak_thread) + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: # <<<<<<<<<<<<<< + * state += (_dict,) + * use_setstate = True + */ + __pyx_t_15 = (__pyx_v__dict != Py_None); + if (__pyx_t_15) { + + /* "(tree fragment)":8 + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: + * state += (_dict,) # <<<<<<<<<<<<<< + * use_setstate = True + * else: + */ + __pyx_t_14 = PyTuple_New(1); if (unlikely(!__pyx_t_14)) __PYX_ERR(2, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_INCREF(__pyx_v__dict); + __Pyx_GIVEREF(__pyx_v__dict); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_v__dict)) __PYX_ERR(2, 8, __pyx_L1_error); + __pyx_t_13 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_14); if (unlikely(!__pyx_t_13)) __PYX_ERR(2, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_13)); + __pyx_t_13 = 0; + + /* "(tree fragment)":9 + * if _dict is not None: + * state += (_dict,) + * use_setstate = True # <<<<<<<<<<<<<< + * else: + * use_setstate = self.conditional_breakpoint_exception is not None or self.pydev_call_from_jinja2 is not None or self.pydev_call_inside_jinja2 is not None or self.pydev_func_name is not None or self.pydev_message is not None or self.pydev_smart_step_into_variants is not None or self.pydev_smart_step_stop is not None or self.pydev_step_stop is not None or self.step_in_initial_location is not None or self.target_id_to_smart_step_into_variant is not None or self.thread_tracer is not None or self.top_level_thread_tracer_no_back_frames is not None or self.top_level_thread_tracer_unhandled is not None or self.trace_suspend_type is not None or self.weak_thread is not None + */ + __pyx_v_use_setstate = 1; + + /* "(tree fragment)":7 + * state = (self.conditional_breakpoint_exception, self.is_in_wait_loop, self.is_tracing, self.pydev_call_from_jinja2, self.pydev_call_inside_jinja2, self.pydev_django_resolve_frame, self.pydev_func_name, self.pydev_message, self.pydev_next_line, self.pydev_notify_kill, self.pydev_original_step_cmd, self.pydev_smart_child_offset, self.pydev_smart_parent_offset, self.pydev_smart_step_into_variants, self.pydev_smart_step_stop, self.pydev_state, self.pydev_step_cmd, self.pydev_step_stop, self.pydev_use_scoped_step_frame, self.step_in_initial_location, self.suspend_type, self.suspended_at_unhandled, self.target_id_to_smart_step_into_variant, self.thread_tracer, self.top_level_thread_tracer_no_back_frames, self.top_level_thread_tracer_unhandled, self.trace_suspend_type, self.weak_thread) + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: # <<<<<<<<<<<<<< + * state += (_dict,) + * use_setstate = True + */ + goto __pyx_L3; + } + + /* "(tree fragment)":11 + * use_setstate = True + * else: + * use_setstate = self.conditional_breakpoint_exception is not None or self.pydev_call_from_jinja2 is not None or self.pydev_call_inside_jinja2 is not None or self.pydev_func_name is not None or self.pydev_message is not None or self.pydev_smart_step_into_variants is not None or self.pydev_smart_step_stop is not None or self.pydev_step_stop is not None or self.step_in_initial_location is not None or self.target_id_to_smart_step_into_variant is not None or self.thread_tracer is not None or self.top_level_thread_tracer_no_back_frames is not None or self.top_level_thread_tracer_unhandled is not None or self.trace_suspend_type is not None or self.weak_thread is not None # <<<<<<<<<<<<<< + * if use_setstate: + * return __pyx_unpickle_PyDBAdditionalThreadInfo, (type(self), 0xd33aa14, None), state + */ + /*else*/ { + __pyx_t_16 = (__pyx_v_self->conditional_breakpoint_exception != ((PyObject*)Py_None)); + if (!__pyx_t_16) { + } else { + __pyx_t_15 = __pyx_t_16; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_16 = (__pyx_v_self->pydev_call_from_jinja2 != Py_None); + if (!__pyx_t_16) { + } else { + __pyx_t_15 = __pyx_t_16; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_16 = (__pyx_v_self->pydev_call_inside_jinja2 != Py_None); + if (!__pyx_t_16) { + } else { + __pyx_t_15 = __pyx_t_16; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_16 = (__pyx_v_self->pydev_func_name != ((PyObject*)Py_None)); + if (!__pyx_t_16) { + } else { + __pyx_t_15 = __pyx_t_16; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_16 = (__pyx_v_self->pydev_message != ((PyObject*)Py_None)); + if (!__pyx_t_16) { + } else { + __pyx_t_15 = __pyx_t_16; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_16 = (__pyx_v_self->pydev_smart_step_into_variants != ((PyObject*)Py_None)); + if (!__pyx_t_16) { + } else { + __pyx_t_15 = __pyx_t_16; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_16 = (__pyx_v_self->pydev_smart_step_stop != Py_None); + if (!__pyx_t_16) { + } else { + __pyx_t_15 = __pyx_t_16; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_16 = (__pyx_v_self->pydev_step_stop != Py_None); + if (!__pyx_t_16) { + } else { + __pyx_t_15 = __pyx_t_16; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_16 = (__pyx_v_self->step_in_initial_location != Py_None); + if (!__pyx_t_16) { + } else { + __pyx_t_15 = __pyx_t_16; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_16 = (__pyx_v_self->target_id_to_smart_step_into_variant != ((PyObject*)Py_None)); + if (!__pyx_t_16) { + } else { + __pyx_t_15 = __pyx_t_16; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_16 = (__pyx_v_self->thread_tracer != Py_None); + if (!__pyx_t_16) { + } else { + __pyx_t_15 = __pyx_t_16; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_16 = (__pyx_v_self->top_level_thread_tracer_no_back_frames != Py_None); + if (!__pyx_t_16) { + } else { + __pyx_t_15 = __pyx_t_16; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_16 = (__pyx_v_self->top_level_thread_tracer_unhandled != Py_None); + if (!__pyx_t_16) { + } else { + __pyx_t_15 = __pyx_t_16; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_16 = (__pyx_v_self->trace_suspend_type != ((PyObject*)Py_None)); + if (!__pyx_t_16) { + } else { + __pyx_t_15 = __pyx_t_16; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_16 = (__pyx_v_self->weak_thread != Py_None); + __pyx_t_15 = __pyx_t_16; + __pyx_L4_bool_binop_done:; + __pyx_v_use_setstate = __pyx_t_15; + } + __pyx_L3:; + + /* "(tree fragment)":12 + * else: + * use_setstate = self.conditional_breakpoint_exception is not None or self.pydev_call_from_jinja2 is not None or self.pydev_call_inside_jinja2 is not None or self.pydev_func_name is not None or self.pydev_message is not None or self.pydev_smart_step_into_variants is not None or self.pydev_smart_step_stop is not None or self.pydev_step_stop is not None or self.step_in_initial_location is not None or self.target_id_to_smart_step_into_variant is not None or self.thread_tracer is not None or self.top_level_thread_tracer_no_back_frames is not None or self.top_level_thread_tracer_unhandled is not None or self.trace_suspend_type is not None or self.weak_thread is not None + * if use_setstate: # <<<<<<<<<<<<<< + * return __pyx_unpickle_PyDBAdditionalThreadInfo, (type(self), 0xd33aa14, None), state + * else: + */ + if (__pyx_v_use_setstate) { + + /* "(tree fragment)":13 + * use_setstate = self.conditional_breakpoint_exception is not None or self.pydev_call_from_jinja2 is not None or self.pydev_call_inside_jinja2 is not None or self.pydev_func_name is not None or self.pydev_message is not None or self.pydev_smart_step_into_variants is not None or self.pydev_smart_step_stop is not None or self.pydev_step_stop is not None or self.step_in_initial_location is not None or self.target_id_to_smart_step_into_variant is not None or self.thread_tracer is not None or self.top_level_thread_tracer_no_back_frames is not None or self.top_level_thread_tracer_unhandled is not None or self.trace_suspend_type is not None or self.weak_thread is not None + * if use_setstate: + * return __pyx_unpickle_PyDBAdditionalThreadInfo, (type(self), 0xd33aa14, None), state # <<<<<<<<<<<<<< + * else: + * return __pyx_unpickle_PyDBAdditionalThreadInfo, (type(self), 0xd33aa14, state) + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_pyx_unpickle_PyDBAdditionalThr); if (unlikely(!__pyx_t_13)) __PYX_ERR(2, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_14 = PyTuple_New(3); if (unlikely(!__pyx_t_14)) __PYX_ERR(2, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(2, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_int_221489684); + __Pyx_GIVEREF(__pyx_int_221489684); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_int_221489684)) __PYX_ERR(2, 13, __pyx_L1_error); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 2, Py_None)) __PYX_ERR(2, 13, __pyx_L1_error); + __pyx_t_12 = PyTuple_New(3); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_GIVEREF(__pyx_t_13); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_13)) __PYX_ERR(2, 13, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_14); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_14)) __PYX_ERR(2, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_state); + __Pyx_GIVEREF(__pyx_v_state); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 2, __pyx_v_state)) __PYX_ERR(2, 13, __pyx_L1_error); + __pyx_t_13 = 0; + __pyx_t_14 = 0; + __pyx_r = __pyx_t_12; + __pyx_t_12 = 0; + goto __pyx_L0; + + /* "(tree fragment)":12 + * else: + * use_setstate = self.conditional_breakpoint_exception is not None or self.pydev_call_from_jinja2 is not None or self.pydev_call_inside_jinja2 is not None or self.pydev_func_name is not None or self.pydev_message is not None or self.pydev_smart_step_into_variants is not None or self.pydev_smart_step_stop is not None or self.pydev_step_stop is not None or self.step_in_initial_location is not None or self.target_id_to_smart_step_into_variant is not None or self.thread_tracer is not None or self.top_level_thread_tracer_no_back_frames is not None or self.top_level_thread_tracer_unhandled is not None or self.trace_suspend_type is not None or self.weak_thread is not None + * if use_setstate: # <<<<<<<<<<<<<< + * return __pyx_unpickle_PyDBAdditionalThreadInfo, (type(self), 0xd33aa14, None), state + * else: + */ + } + + /* "(tree fragment)":15 + * return __pyx_unpickle_PyDBAdditionalThreadInfo, (type(self), 0xd33aa14, None), state + * else: + * return __pyx_unpickle_PyDBAdditionalThreadInfo, (type(self), 0xd33aa14, state) # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * __pyx_unpickle_PyDBAdditionalThreadInfo__set_state(self, __pyx_state) + */ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_pyx_unpickle_PyDBAdditionalThr); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __pyx_t_14 = PyTuple_New(3); if (unlikely(!__pyx_t_14)) __PYX_ERR(2, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(2, 15, __pyx_L1_error); + __Pyx_INCREF(__pyx_int_221489684); + __Pyx_GIVEREF(__pyx_int_221489684); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_int_221489684)) __PYX_ERR(2, 15, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_state); + __Pyx_GIVEREF(__pyx_v_state); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 2, __pyx_v_state)) __PYX_ERR(2, 15, __pyx_L1_error); + __pyx_t_13 = PyTuple_New(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(2, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_GIVEREF(__pyx_t_12); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_12)) __PYX_ERR(2, 15, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_14); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_t_14)) __PYX_ERR(2, 15, __pyx_L1_error); + __pyx_t_12 = 0; + __pyx_t_14 = 0; + __pyx_r = __pyx_t_13; + __pyx_t_13 = 0; + goto __pyx_L0; + } + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_XDECREF(__pyx_t_11); + __Pyx_XDECREF(__pyx_t_12); + __Pyx_XDECREF(__pyx_t_13); + __Pyx_XDECREF(__pyx_t_14); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_state); + __Pyx_XDECREF(__pyx_v__dict); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":16 + * else: + * return __pyx_unpickle_PyDBAdditionalThreadInfo, (type(self), 0xd33aa14, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_PyDBAdditionalThreadInfo__set_state(self, __pyx_state) + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 16, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(2, 16, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + } + __pyx_v___pyx_state = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 16, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_14__setstate_cython__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_self), __pyx_v___pyx_state); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_14__setstate_cython__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_self, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__setstate_cython__", 1); + + /* "(tree fragment)":17 + * return __pyx_unpickle_PyDBAdditionalThreadInfo, (type(self), 0xd33aa14, state) + * def __setstate_cython__(self, __pyx_state): + * __pyx_unpickle_PyDBAdditionalThreadInfo__set_state(self, __pyx_state) # <<<<<<<<<<<<<< + */ + if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(2, 17, __pyx_L1_error) + __pyx_t_1 = __pyx_f_14_pydevd_bundle_13pydevd_cython___pyx_unpickle_PyDBAdditionalThreadInfo__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle_PyDBAdditionalThreadInfo, (type(self), 0xd33aa14, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_PyDBAdditionalThreadInfo__set_state(self, __pyx_state) + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":223 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cpdef set_additional_thread_info(thread): # <<<<<<<<<<<<<< + * # ELSE + * # def set_additional_thread_info(thread): + */ + +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_1set_additional_thread_info(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_set_additional_thread_info(PyObject *__pyx_v_thread, CYTHON_UNUSED int __pyx_skip_dispatch) { + PyObject *__pyx_v_additional_info = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + int __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + PyObject *__pyx_t_11 = NULL; + PyObject *__pyx_t_12 = NULL; + unsigned int __pyx_t_13; + PyObject *__pyx_t_14 = NULL; + PyObject *__pyx_t_15 = NULL; + PyObject *__pyx_t_16 = NULL; + PyObject *__pyx_t_17 = NULL; + PyObject *__pyx_t_18 = NULL; + PyObject *__pyx_t_19 = NULL; + int __pyx_t_20; + int __pyx_t_21; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("set_additional_thread_info", 1); + + /* "_pydevd_bundle/pydevd_cython.pyx":228 + * # ENDIF + * # fmt: on + * try: # <<<<<<<<<<<<<< + * additional_info = thread.additional_info + * if additional_info is None: + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + + /* "_pydevd_bundle/pydevd_cython.pyx":229 + * # fmt: on + * try: + * additional_info = thread.additional_info # <<<<<<<<<<<<<< + * if additional_info is None: + * raise AttributeError() + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_thread, __pyx_n_s_additional_info); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 229, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_v_additional_info = __pyx_t_4; + __pyx_t_4 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":230 + * try: + * additional_info = thread.additional_info + * if additional_info is None: # <<<<<<<<<<<<<< + * raise AttributeError() + * except: + */ + __pyx_t_5 = (__pyx_v_additional_info == Py_None); + if (unlikely(__pyx_t_5)) { + + /* "_pydevd_bundle/pydevd_cython.pyx":231 + * additional_info = thread.additional_info + * if additional_info is None: + * raise AttributeError() # <<<<<<<<<<<<<< + * except: + * with _set_additional_thread_info_lock: + */ + __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_builtin_AttributeError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 231, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_Raise(__pyx_t_4, 0, 0, 0); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __PYX_ERR(0, 231, __pyx_L3_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":230 + * try: + * additional_info = thread.additional_info + * if additional_info is None: # <<<<<<<<<<<<<< + * raise AttributeError() + * except: + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":228 + * # ENDIF + * # fmt: on + * try: # <<<<<<<<<<<<<< + * additional_info = thread.additional_info + * if additional_info is None: + */ + } + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L8_try_end; + __pyx_L3_error:; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":232 + * if additional_info is None: + * raise AttributeError() + * except: # <<<<<<<<<<<<<< + * with _set_additional_thread_info_lock: + * # If it's not there, set it within a lock to avoid any racing + */ + /*except:*/ { + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.set_additional_thread_info", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(0, 232, __pyx_L5_except_error) + __Pyx_XGOTREF(__pyx_t_4); + __Pyx_XGOTREF(__pyx_t_6); + __Pyx_XGOTREF(__pyx_t_7); + + /* "_pydevd_bundle/pydevd_cython.pyx":233 + * raise AttributeError() + * except: + * with _set_additional_thread_info_lock: # <<<<<<<<<<<<<< + * # If it's not there, set it within a lock to avoid any racing + * # conditions. + */ + /*with:*/ { + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_set_additional_thread_info_lock); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 233, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9 = __Pyx_PyObject_LookupSpecial(__pyx_t_8, __pyx_n_s_exit); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 233, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_11 = __Pyx_PyObject_LookupSpecial(__pyx_t_8, __pyx_n_s_enter); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 233, __pyx_L12_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_12 = NULL; + __pyx_t_13 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_11))) { + __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_11); + if (likely(__pyx_t_12)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); + __Pyx_INCREF(__pyx_t_12); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_11, function); + __pyx_t_13 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_12, NULL}; + __pyx_t_10 = __Pyx_PyObject_FastCall(__pyx_t_11, __pyx_callargs+1-__pyx_t_13, 0+__pyx_t_13); + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 233, __pyx_L12_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + } + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + /*try:*/ { + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16); + __Pyx_XGOTREF(__pyx_t_14); + __Pyx_XGOTREF(__pyx_t_15); + __Pyx_XGOTREF(__pyx_t_16); + /*try:*/ { + + /* "_pydevd_bundle/pydevd_cython.pyx":236 + * # If it's not there, set it within a lock to avoid any racing + * # conditions. + * try: # <<<<<<<<<<<<<< + * additional_info = thread.additional_info + * except: + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19); + __Pyx_XGOTREF(__pyx_t_17); + __Pyx_XGOTREF(__pyx_t_18); + __Pyx_XGOTREF(__pyx_t_19); + /*try:*/ { + + /* "_pydevd_bundle/pydevd_cython.pyx":237 + * # conditions. + * try: + * additional_info = thread.additional_info # <<<<<<<<<<<<<< + * except: + * additional_info = None + */ + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_thread, __pyx_n_s_additional_info); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 237, __pyx_L26_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_XDECREF_SET(__pyx_v_additional_info, __pyx_t_8); + __pyx_t_8 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":236 + * # If it's not there, set it within a lock to avoid any racing + * # conditions. + * try: # <<<<<<<<<<<<<< + * additional_info = thread.additional_info + * except: + */ + } + __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; + __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0; + __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0; + goto __pyx_L33_try_end; + __pyx_L26_error:; + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":238 + * try: + * additional_info = thread.additional_info + * except: # <<<<<<<<<<<<<< + * additional_info = None + * + */ + /*except:*/ { + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.set_additional_thread_info", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_10, &__pyx_t_11) < 0) __PYX_ERR(0, 238, __pyx_L28_except_error) + __Pyx_XGOTREF(__pyx_t_8); + __Pyx_XGOTREF(__pyx_t_10); + __Pyx_XGOTREF(__pyx_t_11); + + /* "_pydevd_bundle/pydevd_cython.pyx":239 + * additional_info = thread.additional_info + * except: + * additional_info = None # <<<<<<<<<<<<<< + * + * if additional_info is None: + */ + __Pyx_INCREF(Py_None); + __Pyx_XDECREF_SET(__pyx_v_additional_info, Py_None); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + goto __pyx_L27_exception_handled; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":236 + * # If it's not there, set it within a lock to avoid any racing + * # conditions. + * try: # <<<<<<<<<<<<<< + * additional_info = thread.additional_info + * except: + */ + __pyx_L28_except_error:; + __Pyx_XGIVEREF(__pyx_t_17); + __Pyx_XGIVEREF(__pyx_t_18); + __Pyx_XGIVEREF(__pyx_t_19); + __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19); + goto __pyx_L18_error; + __pyx_L27_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_17); + __Pyx_XGIVEREF(__pyx_t_18); + __Pyx_XGIVEREF(__pyx_t_19); + __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19); + __pyx_L33_try_end:; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":241 + * additional_info = None + * + * if additional_info is None: # <<<<<<<<<<<<<< + * # Note: don't call PyDBAdditionalThreadInfo constructor at this + * # point as it can piggy-back into the debugger which could + */ + __pyx_t_5 = (__pyx_v_additional_info == Py_None); + if (__pyx_t_5) { + + /* "_pydevd_bundle/pydevd_cython.pyx":246 + * # get here again, rather get the global ref which was pre-created + * # and add a new entry only after we set thread.additional_info. + * additional_info = _next_additional_info[0] # <<<<<<<<<<<<<< + * thread.additional_info = additional_info + * additional_info.weak_thread = weakref.ref(thread) + */ + __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_next_additional_info); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 246, __pyx_L18_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_10 = __Pyx_GetItemInt(__pyx_t_11, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 246, __pyx_L18_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF_SET(__pyx_v_additional_info, __pyx_t_10); + __pyx_t_10 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":247 + * # and add a new entry only after we set thread.additional_info. + * additional_info = _next_additional_info[0] + * thread.additional_info = additional_info # <<<<<<<<<<<<<< + * additional_info.weak_thread = weakref.ref(thread) + * add_additional_info(additional_info) + */ + if (__Pyx_PyObject_SetAttrStr(__pyx_v_thread, __pyx_n_s_additional_info, __pyx_v_additional_info) < 0) __PYX_ERR(0, 247, __pyx_L18_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":248 + * additional_info = _next_additional_info[0] + * thread.additional_info = additional_info + * additional_info.weak_thread = weakref.ref(thread) # <<<<<<<<<<<<<< + * add_additional_info(additional_info) + * del _next_additional_info[:] + */ + __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_weakref); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 248, __pyx_L18_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_ref); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 248, __pyx_L18_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = NULL; + __pyx_t_13 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + __pyx_t_13 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_v_thread}; + __pyx_t_10 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_13, 1+__pyx_t_13); + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 248, __pyx_L18_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + if (__Pyx_PyObject_SetAttrStr(__pyx_v_additional_info, __pyx_n_s_weak_thread, __pyx_t_10) < 0) __PYX_ERR(0, 248, __pyx_L18_error) + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":249 + * thread.additional_info = additional_info + * additional_info.weak_thread = weakref.ref(thread) + * add_additional_info(additional_info) # <<<<<<<<<<<<<< + * del _next_additional_info[:] + * _next_additional_info.append(PyDBAdditionalThreadInfo()) + */ + if (!(likely(((__pyx_v_additional_info) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_additional_info, __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo))))) __PYX_ERR(0, 249, __pyx_L18_error) + __pyx_t_10 = __pyx_f_14_pydevd_bundle_13pydevd_cython_add_additional_info(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_additional_info), 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 249, __pyx_L18_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":250 + * additional_info.weak_thread = weakref.ref(thread) + * add_additional_info(additional_info) + * del _next_additional_info[:] # <<<<<<<<<<<<<< + * _next_additional_info.append(PyDBAdditionalThreadInfo()) + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_next_additional_info); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 250, __pyx_L18_error) + __Pyx_GOTREF(__pyx_t_10); + if (__Pyx_PyObject_DelSlice(__pyx_t_10, 0, 0, NULL, NULL, &__pyx_slice__2, 0, 0, 1) < 0) __PYX_ERR(0, 250, __pyx_L18_error) + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":251 + * add_additional_info(additional_info) + * del _next_additional_info[:] + * _next_additional_info.append(PyDBAdditionalThreadInfo()) # <<<<<<<<<<<<<< + * + * return additional_info + */ + __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_next_additional_info); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 251, __pyx_L18_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_8 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 251, __pyx_L18_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_20 = __Pyx_PyObject_Append(__pyx_t_10, __pyx_t_8); if (unlikely(__pyx_t_20 == ((int)-1))) __PYX_ERR(0, 251, __pyx_L18_error) + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":241 + * additional_info = None + * + * if additional_info is None: # <<<<<<<<<<<<<< + * # Note: don't call PyDBAdditionalThreadInfo constructor at this + * # point as it can piggy-back into the debugger which could + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":233 + * raise AttributeError() + * except: + * with _set_additional_thread_info_lock: # <<<<<<<<<<<<<< + * # If it's not there, set it within a lock to avoid any racing + * # conditions. + */ + } + __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; + __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; + goto __pyx_L25_try_end; + __pyx_L18_error:; + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + /*except:*/ { + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.set_additional_thread_info", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_10, &__pyx_t_11) < 0) __PYX_ERR(0, 233, __pyx_L20_except_error) + __Pyx_XGOTREF(__pyx_t_8); + __Pyx_XGOTREF(__pyx_t_10); + __Pyx_XGOTREF(__pyx_t_11); + __pyx_t_12 = PyTuple_Pack(3, __pyx_t_8, __pyx_t_10, __pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 233, __pyx_L20_except_error) + __Pyx_GOTREF(__pyx_t_12); + __pyx_t_19 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_12, NULL); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 233, __pyx_L20_except_error) + __Pyx_GOTREF(__pyx_t_19); + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_19); + __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; + if (__pyx_t_5 < 0) __PYX_ERR(0, 233, __pyx_L20_except_error) + __pyx_t_21 = (!__pyx_t_5); + if (unlikely(__pyx_t_21)) { + __Pyx_GIVEREF(__pyx_t_8); + __Pyx_GIVEREF(__pyx_t_10); + __Pyx_XGIVEREF(__pyx_t_11); + __Pyx_ErrRestoreWithState(__pyx_t_8, __pyx_t_10, __pyx_t_11); + __pyx_t_8 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; + __PYX_ERR(0, 233, __pyx_L20_except_error) + } + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + goto __pyx_L19_exception_handled; + } + __pyx_L20_except_error:; + __Pyx_XGIVEREF(__pyx_t_14); + __Pyx_XGIVEREF(__pyx_t_15); + __Pyx_XGIVEREF(__pyx_t_16); + __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16); + goto __pyx_L5_except_error; + __pyx_L19_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_14); + __Pyx_XGIVEREF(__pyx_t_15); + __Pyx_XGIVEREF(__pyx_t_16); + __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16); + __pyx_L25_try_end:; + } + } + /*finally:*/ { + /*normal exit:*/{ + if (__pyx_t_9) { + __pyx_t_16 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__3, NULL); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 233, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_16); + __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; + } + goto __pyx_L17; + } + __pyx_L17:; + } + goto __pyx_L40; + __pyx_L12_error:; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + goto __pyx_L5_except_error; + __pyx_L40:; + } + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + goto __pyx_L4_exception_handled; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":228 + * # ENDIF + * # fmt: on + * try: # <<<<<<<<<<<<<< + * additional_info = thread.additional_info + * if additional_info is None: + */ + __pyx_L5_except_error:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L1_error; + __pyx_L4_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + __pyx_L8_try_end:; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":253 + * _next_additional_info.append(PyDBAdditionalThreadInfo()) + * + * return additional_info # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + if (unlikely(!__pyx_v_additional_info)) { __Pyx_RaiseUnboundLocalError("additional_info"); __PYX_ERR(0, 253, __pyx_L1_error) } + __Pyx_INCREF(__pyx_v_additional_info); + __pyx_r = __pyx_v_additional_info; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":223 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cpdef set_additional_thread_info(thread): # <<<<<<<<<<<<<< + * # ELSE + * # def set_additional_thread_info(thread): + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_XDECREF(__pyx_t_11); + __Pyx_XDECREF(__pyx_t_12); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.set_additional_thread_info", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_additional_info); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_1set_additional_thread_info(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_1set_additional_thread_info = {"set_additional_thread_info", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_1set_additional_thread_info, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_1set_additional_thread_info(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_thread = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("set_additional_thread_info (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_thread,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_thread)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 223, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "set_additional_thread_info") < 0)) __PYX_ERR(0, 223, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + } + __pyx_v_thread = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("set_additional_thread_info", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 223, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.set_additional_thread_info", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_set_additional_thread_info(__pyx_self, __pyx_v_thread); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_set_additional_thread_info(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_thread) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("set_additional_thread_info", 1); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __pyx_f_14_pydevd_bundle_13pydevd_cython_set_additional_thread_info(__pyx_v_thread, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 223, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.set_additional_thread_info", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":272 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cdef _update_stepping_info(PyDBAdditionalThreadInfo info): # <<<<<<<<<<<<<< + * # ELSE + * # def _update_stepping_info(info): + */ + +static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython__update_stepping_info(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_info) { + PyObject *__pyx_v_new_all_infos = NULL; + PyObject *__pyx_v_new_stepping = NULL; + PyObject *__pyx_v_py_db = NULL; + PyObject *__pyx_v_thread = NULL; + PyObject *__pyx_v_thread_id = NULL; + CYTHON_UNUSED PyObject *__pyx_v__queue = NULL; + PyObject *__pyx_v_event = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + unsigned int __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + Py_ssize_t __pyx_t_9; + Py_ssize_t __pyx_t_10; + int __pyx_t_11; + int __pyx_t_12; + int __pyx_t_13; + int __pyx_t_14; + PyObject *__pyx_t_15 = NULL; + PyObject *__pyx_t_16 = NULL; + int __pyx_t_17; + int __pyx_t_18; + PyObject *(*__pyx_t_19)(PyObject *); + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_update_stepping_info", 0); + __Pyx_INCREF((PyObject *)__pyx_v_info); + + /* "_pydevd_bundle/pydevd_cython.pyx":281 + * global _all_infos + * + * with _update_infos_lock: # <<<<<<<<<<<<<< + * # Removes entries that are no longer valid. + * new_all_infos = set() + */ + /*with:*/ { + __pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_14_pydevd_bundle_13pydevd_cython__update_infos_lock, __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 281, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_14_pydevd_bundle_13pydevd_cython__update_infos_lock, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 281, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 281, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + /*try:*/ { + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8); + __Pyx_XGOTREF(__pyx_t_6); + __Pyx_XGOTREF(__pyx_t_7); + __Pyx_XGOTREF(__pyx_t_8); + /*try:*/ { + + /* "_pydevd_bundle/pydevd_cython.pyx":283 + * with _update_infos_lock: + * # Removes entries that are no longer valid. + * new_all_infos = set() # <<<<<<<<<<<<<< + * for info in _all_infos: + * if info._get_related_thread() is not None: + */ + __pyx_t_2 = PySet_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 283, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_v_new_all_infos = ((PyObject*)__pyx_t_2); + __pyx_t_2 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":284 + * # Removes entries that are no longer valid. + * new_all_infos = set() + * for info in _all_infos: # <<<<<<<<<<<<<< + * if info._get_related_thread() is not None: + * new_all_infos.add(info) + */ + __pyx_t_9 = 0; + __pyx_t_3 = __Pyx_set_iterator(__pyx_v_14_pydevd_bundle_13pydevd_cython__all_infos, 1, (&__pyx_t_10), (&__pyx_t_11)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 284, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_2); + __pyx_t_2 = __pyx_t_3; + __pyx_t_3 = 0; + while (1) { + __pyx_t_12 = __Pyx_set_iter_next(__pyx_t_2, __pyx_t_10, &__pyx_t_9, &__pyx_t_3, __pyx_t_11); + if (unlikely(__pyx_t_12 == 0)) break; + if (unlikely(__pyx_t_12 == -1)) __PYX_ERR(0, 284, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_3); + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo))))) __PYX_ERR(0, 284, __pyx_L7_error) + __Pyx_DECREF_SET(__pyx_v_info, ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_t_3)); + __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":285 + * new_all_infos = set() + * for info in _all_infos: + * if info._get_related_thread() is not None: # <<<<<<<<<<<<<< + * new_all_infos.add(info) + * _all_infos = new_all_infos + */ + __pyx_t_3 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_info->__pyx_vtab)->_get_related_thread(__pyx_v_info, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 285, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_13 = (__pyx_t_3 != Py_None); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_13) { + + /* "_pydevd_bundle/pydevd_cython.pyx":286 + * for info in _all_infos: + * if info._get_related_thread() is not None: + * new_all_infos.add(info) # <<<<<<<<<<<<<< + * _all_infos = new_all_infos + * + */ + __pyx_t_14 = PySet_Add(__pyx_v_new_all_infos, ((PyObject *)__pyx_v_info)); if (unlikely(__pyx_t_14 == ((int)-1))) __PYX_ERR(0, 286, __pyx_L7_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":285 + * new_all_infos = set() + * for info in _all_infos: + * if info._get_related_thread() is not None: # <<<<<<<<<<<<<< + * new_all_infos.add(info) + * _all_infos = new_all_infos + */ + } + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":287 + * if info._get_related_thread() is not None: + * new_all_infos.add(info) + * _all_infos = new_all_infos # <<<<<<<<<<<<<< + * + * new_stepping = set() + */ + __Pyx_INCREF(__pyx_v_new_all_infos); + __Pyx_XGOTREF(__pyx_v_14_pydevd_bundle_13pydevd_cython__all_infos); + __Pyx_DECREF_SET(__pyx_v_14_pydevd_bundle_13pydevd_cython__all_infos, __pyx_v_new_all_infos); + __Pyx_GIVEREF(__pyx_v_new_all_infos); + + /* "_pydevd_bundle/pydevd_cython.pyx":289 + * _all_infos = new_all_infos + * + * new_stepping = set() # <<<<<<<<<<<<<< + * for info in _all_infos: + * if info._is_stepping(): + */ + __pyx_t_2 = PySet_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 289, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_v_new_stepping = ((PyObject*)__pyx_t_2); + __pyx_t_2 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":290 + * + * new_stepping = set() + * for info in _all_infos: # <<<<<<<<<<<<<< + * if info._is_stepping(): + * new_stepping.add(info) + */ + __pyx_t_10 = 0; + __pyx_t_3 = __Pyx_set_iterator(__pyx_v_14_pydevd_bundle_13pydevd_cython__all_infos, 1, (&__pyx_t_9), (&__pyx_t_11)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 290, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_2); + __pyx_t_2 = __pyx_t_3; + __pyx_t_3 = 0; + while (1) { + __pyx_t_12 = __Pyx_set_iter_next(__pyx_t_2, __pyx_t_9, &__pyx_t_10, &__pyx_t_3, __pyx_t_11); + if (unlikely(__pyx_t_12 == 0)) break; + if (unlikely(__pyx_t_12 == -1)) __PYX_ERR(0, 290, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_3); + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo))))) __PYX_ERR(0, 290, __pyx_L7_error) + __Pyx_DECREF_SET(__pyx_v_info, ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_t_3)); + __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":291 + * new_stepping = set() + * for info in _all_infos: + * if info._is_stepping(): # <<<<<<<<<<<<<< + * new_stepping.add(info) + * _infos_stepping = new_stepping + */ + __pyx_t_13 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_info->__pyx_vtab)->_is_stepping(__pyx_v_info, 0); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 291, __pyx_L7_error) + if (__pyx_t_13) { + + /* "_pydevd_bundle/pydevd_cython.pyx":292 + * for info in _all_infos: + * if info._is_stepping(): + * new_stepping.add(info) # <<<<<<<<<<<<<< + * _infos_stepping = new_stepping + * + */ + __pyx_t_14 = PySet_Add(__pyx_v_new_stepping, ((PyObject *)__pyx_v_info)); if (unlikely(__pyx_t_14 == ((int)-1))) __PYX_ERR(0, 292, __pyx_L7_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":291 + * new_stepping = set() + * for info in _all_infos: + * if info._is_stepping(): # <<<<<<<<<<<<<< + * new_stepping.add(info) + * _infos_stepping = new_stepping + */ + } + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":293 + * if info._is_stepping(): + * new_stepping.add(info) + * _infos_stepping = new_stepping # <<<<<<<<<<<<<< + * + * py_db = get_global_debugger() + */ + __Pyx_INCREF(__pyx_v_new_stepping); + __Pyx_XGOTREF(__pyx_v_14_pydevd_bundle_13pydevd_cython__infos_stepping); + __Pyx_DECREF_SET(__pyx_v_14_pydevd_bundle_13pydevd_cython__infos_stepping, __pyx_v_new_stepping); + __Pyx_GIVEREF(__pyx_v_new_stepping); + + /* "_pydevd_bundle/pydevd_cython.pyx":281 + * global _all_infos + * + * with _update_infos_lock: # <<<<<<<<<<<<<< + * # Removes entries that are no longer valid. + * new_all_infos = set() + */ + } + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + goto __pyx_L12_try_end; + __pyx_L7_error:; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + /*except:*/ { + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython._update_stepping_info", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(0, 281, __pyx_L9_except_error) + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_4); + __pyx_t_15 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 281, __pyx_L9_except_error) + __Pyx_GOTREF(__pyx_t_15); + __pyx_t_16 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_15, NULL); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; + if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 281, __pyx_L9_except_error) + __Pyx_GOTREF(__pyx_t_16); + __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_16); + __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; + if (__pyx_t_13 < 0) __PYX_ERR(0, 281, __pyx_L9_except_error) + __pyx_t_17 = (!__pyx_t_13); + if (unlikely(__pyx_t_17)) { + __Pyx_GIVEREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_3); + __Pyx_XGIVEREF(__pyx_t_4); + __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_3, __pyx_t_4); + __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; + __PYX_ERR(0, 281, __pyx_L9_except_error) + } + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + goto __pyx_L8_exception_handled; + } + __pyx_L9_except_error:; + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8); + goto __pyx_L1_error; + __pyx_L8_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8); + __pyx_L12_try_end:; + } + } + /*finally:*/ { + /*normal exit:*/{ + if (__pyx_t_1) { + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__3, NULL); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 281, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + goto __pyx_L6; + } + __pyx_L6:; + } + goto __pyx_L22; + __pyx_L3_error:; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + goto __pyx_L1_error; + __pyx_L22:; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":295 + * _infos_stepping = new_stepping + * + * py_db = get_global_debugger() # <<<<<<<<<<<<<< + * if py_db is not None and not py_db.pydb_disposed: + * thread = info.weak_thread() + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_get_global_debugger); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 295, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 295, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_v_py_db = __pyx_t_4; + __pyx_t_4 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":296 + * + * py_db = get_global_debugger() + * if py_db is not None and not py_db.pydb_disposed: # <<<<<<<<<<<<<< + * thread = info.weak_thread() + * if thread is not None: + */ + __pyx_t_13 = (__pyx_v_py_db != Py_None); + if (__pyx_t_13) { + } else { + __pyx_t_17 = __pyx_t_13; + goto __pyx_L24_bool_binop_done; + } + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_pydb_disposed); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 296, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(0, 296, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_18 = (!__pyx_t_13); + __pyx_t_17 = __pyx_t_18; + __pyx_L24_bool_binop_done:; + if (__pyx_t_17) { + + /* "_pydevd_bundle/pydevd_cython.pyx":297 + * py_db = get_global_debugger() + * if py_db is not None and not py_db.pydb_disposed: + * thread = info.weak_thread() # <<<<<<<<<<<<<< + * if thread is not None: + * thread_id = get_thread_id(thread) + */ + __Pyx_INCREF(__pyx_v_info->weak_thread); + __pyx_t_3 = __pyx_v_info->weak_thread; __pyx_t_2 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 297, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_v_thread = __pyx_t_4; + __pyx_t_4 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":298 + * if py_db is not None and not py_db.pydb_disposed: + * thread = info.weak_thread() + * if thread is not None: # <<<<<<<<<<<<<< + * thread_id = get_thread_id(thread) + * _queue, event = py_db.get_internal_queue_and_event(thread_id) + */ + __pyx_t_17 = (__pyx_v_thread != Py_None); + if (__pyx_t_17) { + + /* "_pydevd_bundle/pydevd_cython.pyx":299 + * thread = info.weak_thread() + * if thread is not None: + * thread_id = get_thread_id(thread) # <<<<<<<<<<<<<< + * _queue, event = py_db.get_internal_queue_and_event(thread_id) + * event.set() + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_get_thread_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 299, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_thread}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 299, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_v_thread_id = __pyx_t_4; + __pyx_t_4 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":300 + * if thread is not None: + * thread_id = get_thread_id(thread) + * _queue, event = py_db.get_internal_queue_and_event(thread_id) # <<<<<<<<<<<<<< + * event.set() + * + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_get_internal_queue_and_event); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 300, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_thread_id}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 300, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) { + PyObject* sequence = __pyx_t_4; + Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); + if (unlikely(size != 2)) { + if (size > 2) __Pyx_RaiseTooManyValuesError(2); + else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); + __PYX_ERR(0, 300, __pyx_L1_error) + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + if (likely(PyTuple_CheckExact(sequence))) { + __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); + __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); + } else { + __pyx_t_3 = PyList_GET_ITEM(sequence, 0); + __pyx_t_2 = PyList_GET_ITEM(sequence, 1); + } + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + #else + __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 300, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 300, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #endif + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else { + Py_ssize_t index = -1; + __pyx_t_15 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 300, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_15); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_19 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_15); + index = 0; __pyx_t_3 = __pyx_t_19(__pyx_t_15); if (unlikely(!__pyx_t_3)) goto __pyx_L27_unpacking_failed; + __Pyx_GOTREF(__pyx_t_3); + index = 1; __pyx_t_2 = __pyx_t_19(__pyx_t_15); if (unlikely(!__pyx_t_2)) goto __pyx_L27_unpacking_failed; + __Pyx_GOTREF(__pyx_t_2); + if (__Pyx_IternextUnpackEndCheck(__pyx_t_19(__pyx_t_15), 2) < 0) __PYX_ERR(0, 300, __pyx_L1_error) + __pyx_t_19 = NULL; + __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; + goto __pyx_L28_unpacking_done; + __pyx_L27_unpacking_failed:; + __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; + __pyx_t_19 = NULL; + if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); + __PYX_ERR(0, 300, __pyx_L1_error) + __pyx_L28_unpacking_done:; + } + __pyx_v__queue = __pyx_t_3; + __pyx_t_3 = 0; + __pyx_v_event = __pyx_t_2; + __pyx_t_2 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":301 + * thread_id = get_thread_id(thread) + * _queue, event = py_db.get_internal_queue_and_event(thread_id) + * event.set() # <<<<<<<<<<<<<< + * + * # fmt: off + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_event, __pyx_n_s_set); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 301, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 301, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":298 + * if py_db is not None and not py_db.pydb_disposed: + * thread = info.weak_thread() + * if thread is not None: # <<<<<<<<<<<<<< + * thread_id = get_thread_id(thread) + * _queue, event = py_db.get_internal_queue_and_event(thread_id) + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":296 + * + * py_db = get_global_debugger() + * if py_db is not None and not py_db.pydb_disposed: # <<<<<<<<<<<<<< + * thread = info.weak_thread() + * if thread is not None: + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":272 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cdef _update_stepping_info(PyDBAdditionalThreadInfo info): # <<<<<<<<<<<<<< + * # ELSE + * # def _update_stepping_info(info): + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_15); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython._update_stepping_info", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_new_all_infos); + __Pyx_XDECREF(__pyx_v_new_stepping); + __Pyx_XDECREF(__pyx_v_py_db); + __Pyx_XDECREF(__pyx_v_thread); + __Pyx_XDECREF(__pyx_v_thread_id); + __Pyx_XDECREF(__pyx_v__queue); + __Pyx_XDECREF(__pyx_v_event); + __Pyx_XDECREF((PyObject *)__pyx_v_info); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":305 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cpdef add_additional_info(PyDBAdditionalThreadInfo info): # <<<<<<<<<<<<<< + * # ELSE + * # def add_additional_info(info): + */ + +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_3add_additional_info(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_add_additional_info(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_info, CYTHON_UNUSED int __pyx_skip_dispatch) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + unsigned int __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + int __pyx_t_9; + int __pyx_t_10; + PyObject *__pyx_t_11 = NULL; + PyObject *__pyx_t_12 = NULL; + int __pyx_t_13; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("add_additional_info", 1); + + /* "_pydevd_bundle/pydevd_cython.pyx":310 + * # ENDIF + * # fmt: on + * with _update_infos_lock: # <<<<<<<<<<<<<< + * _all_infos.add(info) + * if info._is_stepping(): + */ + /*with:*/ { + __pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_14_pydevd_bundle_13pydevd_cython__update_infos_lock, __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 310, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_14_pydevd_bundle_13pydevd_cython__update_infos_lock, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 310, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 310, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + /*try:*/ { + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8); + __Pyx_XGOTREF(__pyx_t_6); + __Pyx_XGOTREF(__pyx_t_7); + __Pyx_XGOTREF(__pyx_t_8); + /*try:*/ { + + /* "_pydevd_bundle/pydevd_cython.pyx":311 + * # fmt: on + * with _update_infos_lock: + * _all_infos.add(info) # <<<<<<<<<<<<<< + * if info._is_stepping(): + * _infos_stepping.add(info) + */ + if (unlikely(__pyx_v_14_pydevd_bundle_13pydevd_cython__all_infos == Py_None)) { + PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "add"); + __PYX_ERR(0, 311, __pyx_L7_error) + } + __pyx_t_9 = PySet_Add(__pyx_v_14_pydevd_bundle_13pydevd_cython__all_infos, ((PyObject *)__pyx_v_info)); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 311, __pyx_L7_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":312 + * with _update_infos_lock: + * _all_infos.add(info) + * if info._is_stepping(): # <<<<<<<<<<<<<< + * _infos_stepping.add(info) + * + */ + __pyx_t_10 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_info->__pyx_vtab)->_is_stepping(__pyx_v_info, 0); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 312, __pyx_L7_error) + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":313 + * _all_infos.add(info) + * if info._is_stepping(): + * _infos_stepping.add(info) # <<<<<<<<<<<<<< + * + * # fmt: off + */ + if (unlikely(__pyx_v_14_pydevd_bundle_13pydevd_cython__infos_stepping == Py_None)) { + PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "add"); + __PYX_ERR(0, 313, __pyx_L7_error) + } + __pyx_t_9 = PySet_Add(__pyx_v_14_pydevd_bundle_13pydevd_cython__infos_stepping, ((PyObject *)__pyx_v_info)); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 313, __pyx_L7_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":312 + * with _update_infos_lock: + * _all_infos.add(info) + * if info._is_stepping(): # <<<<<<<<<<<<<< + * _infos_stepping.add(info) + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":310 + * # ENDIF + * # fmt: on + * with _update_infos_lock: # <<<<<<<<<<<<<< + * _all_infos.add(info) + * if info._is_stepping(): + */ + } + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + goto __pyx_L12_try_end; + __pyx_L7_error:; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + /*except:*/ { + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.add_additional_info", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(0, 310, __pyx_L9_except_error) + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_4); + __pyx_t_11 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 310, __pyx_L9_except_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_11, NULL); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 310, __pyx_L9_except_error) + __Pyx_GOTREF(__pyx_t_12); + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_12); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + if (__pyx_t_10 < 0) __PYX_ERR(0, 310, __pyx_L9_except_error) + __pyx_t_13 = (!__pyx_t_10); + if (unlikely(__pyx_t_13)) { + __Pyx_GIVEREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_3); + __Pyx_XGIVEREF(__pyx_t_4); + __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_3, __pyx_t_4); + __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; + __PYX_ERR(0, 310, __pyx_L9_except_error) + } + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + goto __pyx_L8_exception_handled; + } + __pyx_L9_except_error:; + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8); + goto __pyx_L1_error; + __pyx_L8_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8); + __pyx_L12_try_end:; + } + } + /*finally:*/ { + /*normal exit:*/{ + if (__pyx_t_1) { + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__3, NULL); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 310, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + goto __pyx_L6; + } + __pyx_L6:; + } + goto __pyx_L17; + __pyx_L3_error:; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + goto __pyx_L1_error; + __pyx_L17:; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":305 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cpdef add_additional_info(PyDBAdditionalThreadInfo info): # <<<<<<<<<<<<<< + * # ELSE + * # def add_additional_info(info): + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_11); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.add_additional_info", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_3add_additional_info(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_3add_additional_info = {"add_additional_info", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_3add_additional_info, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_3add_additional_info(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_info = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("add_additional_info (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_info,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 305, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "add_additional_info") < 0)) __PYX_ERR(0, 305, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + } + __pyx_v_info = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("add_additional_info", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 305, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.add_additional_info", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo, 1, "info", 0))) __PYX_ERR(0, 305, __pyx_L1_error) + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_2add_additional_info(__pyx_self, __pyx_v_info); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + __pyx_L0:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_2add_additional_info(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_info) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("add_additional_info", 1); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __pyx_f_14_pydevd_bundle_13pydevd_cython_add_additional_info(__pyx_v_info, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 305, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.add_additional_info", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":317 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cpdef remove_additional_info(PyDBAdditionalThreadInfo info): # <<<<<<<<<<<<<< + * # ELSE + * # def remove_additional_info(info): + */ + +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_5remove_additional_info(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_remove_additional_info(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_info, CYTHON_UNUSED int __pyx_skip_dispatch) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + unsigned int __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + int __pyx_t_9; + PyObject *__pyx_t_10 = NULL; + PyObject *__pyx_t_11 = NULL; + int __pyx_t_12; + int __pyx_t_13; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("remove_additional_info", 1); + + /* "_pydevd_bundle/pydevd_cython.pyx":322 + * # ENDIF + * # fmt: on + * with _update_infos_lock: # <<<<<<<<<<<<<< + * _all_infos.discard(info) + * _infos_stepping.discard(info) + */ + /*with:*/ { + __pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_14_pydevd_bundle_13pydevd_cython__update_infos_lock, __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 322, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_14_pydevd_bundle_13pydevd_cython__update_infos_lock, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 322, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 322, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + /*try:*/ { + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8); + __Pyx_XGOTREF(__pyx_t_6); + __Pyx_XGOTREF(__pyx_t_7); + __Pyx_XGOTREF(__pyx_t_8); + /*try:*/ { + + /* "_pydevd_bundle/pydevd_cython.pyx":323 + * # fmt: on + * with _update_infos_lock: + * _all_infos.discard(info) # <<<<<<<<<<<<<< + * _infos_stepping.discard(info) + * + */ + if (unlikely(__pyx_v_14_pydevd_bundle_13pydevd_cython__all_infos == Py_None)) { + PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "discard"); + __PYX_ERR(0, 323, __pyx_L7_error) + } + __pyx_t_9 = __Pyx_PySet_Discard(__pyx_v_14_pydevd_bundle_13pydevd_cython__all_infos, ((PyObject *)__pyx_v_info)); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 323, __pyx_L7_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":324 + * with _update_infos_lock: + * _all_infos.discard(info) + * _infos_stepping.discard(info) # <<<<<<<<<<<<<< + * + * + */ + if (unlikely(__pyx_v_14_pydevd_bundle_13pydevd_cython__infos_stepping == Py_None)) { + PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "discard"); + __PYX_ERR(0, 324, __pyx_L7_error) + } + __pyx_t_9 = __Pyx_PySet_Discard(__pyx_v_14_pydevd_bundle_13pydevd_cython__infos_stepping, ((PyObject *)__pyx_v_info)); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 324, __pyx_L7_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":322 + * # ENDIF + * # fmt: on + * with _update_infos_lock: # <<<<<<<<<<<<<< + * _all_infos.discard(info) + * _infos_stepping.discard(info) + */ + } + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + goto __pyx_L12_try_end; + __pyx_L7_error:; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + /*except:*/ { + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.remove_additional_info", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(0, 322, __pyx_L9_except_error) + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_4); + __pyx_t_10 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 322, __pyx_L9_except_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_10, NULL); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 322, __pyx_L9_except_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_11); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + if (__pyx_t_12 < 0) __PYX_ERR(0, 322, __pyx_L9_except_error) + __pyx_t_13 = (!__pyx_t_12); + if (unlikely(__pyx_t_13)) { + __Pyx_GIVEREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_3); + __Pyx_XGIVEREF(__pyx_t_4); + __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_3, __pyx_t_4); + __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; + __PYX_ERR(0, 322, __pyx_L9_except_error) + } + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + goto __pyx_L8_exception_handled; + } + __pyx_L9_except_error:; + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8); + goto __pyx_L1_error; + __pyx_L8_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8); + __pyx_L12_try_end:; + } + } + /*finally:*/ { + /*normal exit:*/{ + if (__pyx_t_1) { + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__3, NULL); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 322, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + goto __pyx_L6; + } + __pyx_L6:; + } + goto __pyx_L16; + __pyx_L3_error:; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + goto __pyx_L1_error; + __pyx_L16:; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":317 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cpdef remove_additional_info(PyDBAdditionalThreadInfo info): # <<<<<<<<<<<<<< + * # ELSE + * # def remove_additional_info(info): + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.remove_additional_info", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_5remove_additional_info(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_5remove_additional_info = {"remove_additional_info", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_5remove_additional_info, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_5remove_additional_info(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_info = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("remove_additional_info (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_info,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 317, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "remove_additional_info") < 0)) __PYX_ERR(0, 317, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + } + __pyx_v_info = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("remove_additional_info", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 317, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.remove_additional_info", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo, 1, "info", 0))) __PYX_ERR(0, 317, __pyx_L1_error) + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_4remove_additional_info(__pyx_self, __pyx_v_info); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + __pyx_L0:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_4remove_additional_info(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_info) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("remove_additional_info", 1); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __pyx_f_14_pydevd_bundle_13pydevd_cython_remove_additional_info(__pyx_v_info, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 317, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.remove_additional_info", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":329 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cpdef bint any_thread_stepping(): # <<<<<<<<<<<<<< + * # ELSE + * # def any_thread_stepping(): + */ + +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_7any_thread_stepping(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static int __pyx_f_14_pydevd_bundle_13pydevd_cython_any_thread_stepping(CYTHON_UNUSED int __pyx_skip_dispatch) { + int __pyx_r; + int __pyx_t_1; + + /* "_pydevd_bundle/pydevd_cython.pyx":334 + * # ENDIF + * # fmt: on + * return bool(_infos_stepping) # <<<<<<<<<<<<<< + * import linecache + * import os.path + */ + __pyx_t_1 = (__pyx_v_14_pydevd_bundle_13pydevd_cython__infos_stepping != Py_None)&&(PySet_GET_SIZE(__pyx_v_14_pydevd_bundle_13pydevd_cython__infos_stepping) != 0); + __pyx_r = (!(!__pyx_t_1)); + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":329 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cpdef bint any_thread_stepping(): # <<<<<<<<<<<<<< + * # ELSE + * # def any_thread_stepping(): + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_7any_thread_stepping(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_7any_thread_stepping = {"any_thread_stepping", (PyCFunction)__pyx_pw_14_pydevd_bundle_13pydevd_cython_7any_thread_stepping, METH_NOARGS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_7any_thread_stepping(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("any_thread_stepping (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_6any_thread_stepping(__pyx_self); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_6any_thread_stepping(CYTHON_UNUSED PyObject *__pyx_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("any_thread_stepping", 1); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __pyx_f_14_pydevd_bundle_13pydevd_cython_any_thread_stepping(0); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 329, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 329, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.any_thread_stepping", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":359 + * except ImportError: + * + * def get_smart_step_into_variant_from_frame_offset(*args, **kwargs): # <<<<<<<<<<<<<< + * return None + * + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9get_smart_step_into_variant_from_frame_offset(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_9get_smart_step_into_variant_from_frame_offset = {"get_smart_step_into_variant_from_frame_offset", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_9get_smart_step_into_variant_from_frame_offset, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9get_smart_step_into_variant_from_frame_offset(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + CYTHON_UNUSED PyObject *__pyx_v_args = 0; + CYTHON_UNUSED PyObject *__pyx_v_kwargs = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_smart_step_into_variant_from_frame_offset (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "get_smart_step_into_variant_from_frame_offset", 1))) return NULL; + __Pyx_INCREF(__pyx_args); + __pyx_v_args = __pyx_args; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_8get_smart_step_into_variant_from_frame_offset(__pyx_self, __pyx_v_args, __pyx_v_kwargs); + + /* function exit code */ + __Pyx_DECREF(__pyx_v_args); + __Pyx_XDECREF(__pyx_v_kwargs); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_8get_smart_step_into_variant_from_frame_offset(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_args, CYTHON_UNUSED PyObject *__pyx_v_kwargs) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_smart_step_into_variant_from_frame_offset", 1); + + /* "_pydevd_bundle/pydevd_cython.pyx":360 + * + * def get_smart_step_into_variant_from_frame_offset(*args, **kwargs): + * return None # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":359 + * except ImportError: + * + * def get_smart_step_into_variant_from_frame_offset(*args, **kwargs): # <<<<<<<<<<<<<< + * return None + * + */ + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":396 + * + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * def is_unhandled_exception(container_obj, py_db, frame, int last_raise_line, set raise_lines): # <<<<<<<<<<<<<< + * # ELSE + * # def is_unhandled_exception(container_obj, py_db, frame, last_raise_line, raise_lines): + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_11is_unhandled_exception(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_11is_unhandled_exception = {"is_unhandled_exception", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_11is_unhandled_exception, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_11is_unhandled_exception(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_container_obj = 0; + PyObject *__pyx_v_py_db = 0; + PyObject *__pyx_v_frame = 0; + int __pyx_v_last_raise_line; + PyObject *__pyx_v_raise_lines = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[5] = {0,0,0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("is_unhandled_exception (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_container_obj,&__pyx_n_s_py_db,&__pyx_n_s_frame,&__pyx_n_s_last_raise_line,&__pyx_n_s_raise_lines,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4); + CYTHON_FALLTHROUGH; + case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); + CYTHON_FALLTHROUGH; + case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_container_obj)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 396, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_py_db)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 396, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("is_unhandled_exception", 1, 5, 5, 1); __PYX_ERR(0, 396, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_frame)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 396, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("is_unhandled_exception", 1, 5, 5, 2); __PYX_ERR(0, 396, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 3: + if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_last_raise_line)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[3]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 396, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("is_unhandled_exception", 1, 5, 5, 3); __PYX_ERR(0, 396, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 4: + if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_raise_lines)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[4]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 396, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("is_unhandled_exception", 1, 5, 5, 4); __PYX_ERR(0, 396, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "is_unhandled_exception") < 0)) __PYX_ERR(0, 396, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 5)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); + values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4); + } + __pyx_v_container_obj = values[0]; + __pyx_v_py_db = values[1]; + __pyx_v_frame = values[2]; + __pyx_v_last_raise_line = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_last_raise_line == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 396, __pyx_L3_error) + __pyx_v_raise_lines = ((PyObject*)values[4]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("is_unhandled_exception", 1, 5, 5, __pyx_nargs); __PYX_ERR(0, 396, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.is_unhandled_exception", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_raise_lines), (&PySet_Type), 1, "raise_lines", 1))) __PYX_ERR(0, 396, __pyx_L1_error) + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_10is_unhandled_exception(__pyx_self, __pyx_v_container_obj, __pyx_v_py_db, __pyx_v_frame, __pyx_v_last_raise_line, __pyx_v_raise_lines); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + __pyx_L0:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_10is_unhandled_exception(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_container_obj, PyObject *__pyx_v_py_db, PyObject *__pyx_v_frame, int __pyx_v_last_raise_line, PyObject *__pyx_v_raise_lines) { + PyObject *__pyx_v_try_except_infos = NULL; + PyObject *__pyx_v_valid_try_except_infos = NULL; + PyObject *__pyx_v_try_except_info = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + unsigned int __pyx_t_6; + int __pyx_t_7; + Py_ssize_t __pyx_t_8; + PyObject *(*__pyx_t_9)(PyObject *); + PyObject *__pyx_t_10 = NULL; + int __pyx_t_11; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("is_unhandled_exception", 1); + + /* "_pydevd_bundle/pydevd_cython.pyx":400 + * # def is_unhandled_exception(container_obj, py_db, frame, last_raise_line, raise_lines): + * # ENDIF + * if frame.f_lineno in raise_lines: # <<<<<<<<<<<<<< + * return True + * + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 400, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (unlikely(__pyx_v_raise_lines == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); + __PYX_ERR(0, 400, __pyx_L1_error) + } + __pyx_t_2 = (__Pyx_PySet_ContainsTF(__pyx_t_1, __pyx_v_raise_lines, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 400, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_2) { + + /* "_pydevd_bundle/pydevd_cython.pyx":401 + * # ENDIF + * if frame.f_lineno in raise_lines: + * return True # <<<<<<<<<<<<<< + * + * else: + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(Py_True); + __pyx_r = Py_True; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":400 + * # def is_unhandled_exception(container_obj, py_db, frame, last_raise_line, raise_lines): + * # ENDIF + * if frame.f_lineno in raise_lines: # <<<<<<<<<<<<<< + * return True + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":404 + * + * else: + * try_except_infos = container_obj.try_except_infos # <<<<<<<<<<<<<< + * if try_except_infos is None: + * container_obj.try_except_infos = try_except_infos = py_db.collect_try_except_info(frame.f_code) + */ + /*else*/ { + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_container_obj, __pyx_n_s_try_except_infos); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 404, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_try_except_infos = __pyx_t_1; + __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":405 + * else: + * try_except_infos = container_obj.try_except_infos + * if try_except_infos is None: # <<<<<<<<<<<<<< + * container_obj.try_except_infos = try_except_infos = py_db.collect_try_except_info(frame.f_code) + * + */ + __pyx_t_2 = (__pyx_v_try_except_infos == Py_None); + if (__pyx_t_2) { + + /* "_pydevd_bundle/pydevd_cython.pyx":406 + * try_except_infos = container_obj.try_except_infos + * if try_except_infos is None: + * container_obj.try_except_infos = try_except_infos = py_db.collect_try_except_info(frame.f_code) # <<<<<<<<<<<<<< + * + * if not try_except_infos: + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_collect_try_except_info); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 406, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 406, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = NULL; + __pyx_t_6 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_6 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_4}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 406, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + if (__Pyx_PyObject_SetAttrStr(__pyx_v_container_obj, __pyx_n_s_try_except_infos, __pyx_t_1) < 0) __PYX_ERR(0, 406, __pyx_L1_error) + __Pyx_INCREF(__pyx_t_1); + __Pyx_DECREF_SET(__pyx_v_try_except_infos, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":405 + * else: + * try_except_infos = container_obj.try_except_infos + * if try_except_infos is None: # <<<<<<<<<<<<<< + * container_obj.try_except_infos = try_except_infos = py_db.collect_try_except_info(frame.f_code) + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":408 + * container_obj.try_except_infos = try_except_infos = py_db.collect_try_except_info(frame.f_code) + * + * if not try_except_infos: # <<<<<<<<<<<<<< + * # Consider the last exception as unhandled because there's no try..except in it. + * return True + */ + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_try_except_infos); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 408, __pyx_L1_error) + __pyx_t_7 = (!__pyx_t_2); + if (__pyx_t_7) { + + /* "_pydevd_bundle/pydevd_cython.pyx":410 + * if not try_except_infos: + * # Consider the last exception as unhandled because there's no try..except in it. + * return True # <<<<<<<<<<<<<< + * else: + * # Now, consider only the try..except for the raise + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(Py_True); + __pyx_r = Py_True; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":408 + * container_obj.try_except_infos = try_except_infos = py_db.collect_try_except_info(frame.f_code) + * + * if not try_except_infos: # <<<<<<<<<<<<<< + * # Consider the last exception as unhandled because there's no try..except in it. + * return True + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":413 + * else: + * # Now, consider only the try..except for the raise + * valid_try_except_infos = [] # <<<<<<<<<<<<<< + * for try_except_info in try_except_infos: + * if try_except_info.is_line_in_try_block(last_raise_line): + */ + /*else*/ { + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 413, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_valid_try_except_infos = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":414 + * # Now, consider only the try..except for the raise + * valid_try_except_infos = [] + * for try_except_info in try_except_infos: # <<<<<<<<<<<<<< + * if try_except_info.is_line_in_try_block(last_raise_line): + * valid_try_except_infos.append(try_except_info) + */ + if (likely(PyList_CheckExact(__pyx_v_try_except_infos)) || PyTuple_CheckExact(__pyx_v_try_except_infos)) { + __pyx_t_1 = __pyx_v_try_except_infos; __Pyx_INCREF(__pyx_t_1); + __pyx_t_8 = 0; + __pyx_t_9 = NULL; + } else { + __pyx_t_8 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_try_except_infos); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 414, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 414, __pyx_L1_error) + } + for (;;) { + if (likely(!__pyx_t_9)) { + if (likely(PyList_CheckExact(__pyx_t_1))) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); + #if !CYTHON_ASSUME_SAFE_MACROS + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 414, __pyx_L1_error) + #endif + if (__pyx_t_8 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(0, 414, __pyx_L1_error) + #else + __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 414, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #endif + } else { + { + Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1); + #if !CYTHON_ASSUME_SAFE_MACROS + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 414, __pyx_L1_error) + #endif + if (__pyx_t_8 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(0, 414, __pyx_L1_error) + #else + __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 414, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #endif + } + } else { + __pyx_t_3 = __pyx_t_9(__pyx_t_1); + if (unlikely(!__pyx_t_3)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(0, 414, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_XDECREF_SET(__pyx_v_try_except_info, __pyx_t_3); + __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":415 + * valid_try_except_infos = [] + * for try_except_info in try_except_infos: + * if try_except_info.is_line_in_try_block(last_raise_line): # <<<<<<<<<<<<<< + * valid_try_except_infos.append(try_except_info) + * + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_try_except_info, __pyx_n_s_is_line_in_try_block); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 415, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_last_raise_line); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 415, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_10 = NULL; + __pyx_t_6 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_10)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_10); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_6 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_t_5}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6); + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 415, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 415, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_7) { + + /* "_pydevd_bundle/pydevd_cython.pyx":416 + * for try_except_info in try_except_infos: + * if try_except_info.is_line_in_try_block(last_raise_line): + * valid_try_except_infos.append(try_except_info) # <<<<<<<<<<<<<< + * + * if not valid_try_except_infos: + */ + __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_valid_try_except_infos, __pyx_v_try_except_info); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 416, __pyx_L1_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":415 + * valid_try_except_infos = [] + * for try_except_info in try_except_infos: + * if try_except_info.is_line_in_try_block(last_raise_line): # <<<<<<<<<<<<<< + * valid_try_except_infos.append(try_except_info) + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":414 + * # Now, consider only the try..except for the raise + * valid_try_except_infos = [] + * for try_except_info in try_except_infos: # <<<<<<<<<<<<<< + * if try_except_info.is_line_in_try_block(last_raise_line): + * valid_try_except_infos.append(try_except_info) + */ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":418 + * valid_try_except_infos.append(try_except_info) + * + * if not valid_try_except_infos: # <<<<<<<<<<<<<< + * return True + * + */ + __pyx_t_7 = (PyList_GET_SIZE(__pyx_v_valid_try_except_infos) != 0); + __pyx_t_2 = (!__pyx_t_7); + if (__pyx_t_2) { + + /* "_pydevd_bundle/pydevd_cython.pyx":419 + * + * if not valid_try_except_infos: + * return True # <<<<<<<<<<<<<< + * + * else: + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(Py_True); + __pyx_r = Py_True; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":418 + * valid_try_except_infos.append(try_except_info) + * + * if not valid_try_except_infos: # <<<<<<<<<<<<<< + * return True + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":426 + * # where one try..except is inside the other with only a raise + * # and it's gotten in the except line. + * for try_except_info in try_except_infos: # <<<<<<<<<<<<<< + * if try_except_info.is_line_in_except_block(frame.f_lineno): + * if frame.f_lineno == try_except_info.except_line or frame.f_lineno in try_except_info.raise_lines_in_except: + */ + /*else*/ { + if (likely(PyList_CheckExact(__pyx_v_try_except_infos)) || PyTuple_CheckExact(__pyx_v_try_except_infos)) { + __pyx_t_1 = __pyx_v_try_except_infos; __Pyx_INCREF(__pyx_t_1); + __pyx_t_8 = 0; + __pyx_t_9 = NULL; + } else { + __pyx_t_8 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_try_except_infos); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 426, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 426, __pyx_L1_error) + } + for (;;) { + if (likely(!__pyx_t_9)) { + if (likely(PyList_CheckExact(__pyx_t_1))) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); + #if !CYTHON_ASSUME_SAFE_MACROS + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 426, __pyx_L1_error) + #endif + if (__pyx_t_8 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(0, 426, __pyx_L1_error) + #else + __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 426, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #endif + } else { + { + Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1); + #if !CYTHON_ASSUME_SAFE_MACROS + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 426, __pyx_L1_error) + #endif + if (__pyx_t_8 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(0, 426, __pyx_L1_error) + #else + __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 426, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #endif + } + } else { + __pyx_t_3 = __pyx_t_9(__pyx_t_1); + if (unlikely(!__pyx_t_3)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(0, 426, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_XDECREF_SET(__pyx_v_try_except_info, __pyx_t_3); + __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":427 + * # and it's gotten in the except line. + * for try_except_info in try_except_infos: + * if try_except_info.is_line_in_except_block(frame.f_lineno): # <<<<<<<<<<<<<< + * if frame.f_lineno == try_except_info.except_line or frame.f_lineno in try_except_info.raise_lines_in_except: + * # In a raise inside a try..except block or some except which doesn't + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_try_except_info, __pyx_n_s_is_line_in_except_block); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 427, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 427, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_10 = NULL; + __pyx_t_6 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_10)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_10); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_6 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_t_5}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6); + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 427, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 427, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_2) { + + /* "_pydevd_bundle/pydevd_cython.pyx":428 + * for try_except_info in try_except_infos: + * if try_except_info.is_line_in_except_block(frame.f_lineno): + * if frame.f_lineno == try_except_info.except_line or frame.f_lineno in try_except_info.raise_lines_in_except: # <<<<<<<<<<<<<< + * # In a raise inside a try..except block or some except which doesn't + * # match the raised exception. + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 428, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_try_except_info, __pyx_n_s_except_line); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 428, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = PyObject_RichCompare(__pyx_t_3, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 428, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 428, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (!__pyx_t_7) { + } else { + __pyx_t_2 = __pyx_t_7; + goto __pyx_L15_bool_binop_done; + } + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 428, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_try_except_info, __pyx_n_s_raise_lines_in_except); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 428, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_7 = (__Pyx_PySequence_ContainsTF(__pyx_t_5, __pyx_t_4, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 428, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_2 = __pyx_t_7; + __pyx_L15_bool_binop_done:; + if (__pyx_t_2) { + + /* "_pydevd_bundle/pydevd_cython.pyx":431 + * # In a raise inside a try..except block or some except which doesn't + * # match the raised exception. + * return True # <<<<<<<<<<<<<< + * return False + * + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(Py_True); + __pyx_r = Py_True; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":428 + * for try_except_info in try_except_infos: + * if try_except_info.is_line_in_except_block(frame.f_lineno): + * if frame.f_lineno == try_except_info.except_line or frame.f_lineno in try_except_info.raise_lines_in_except: # <<<<<<<<<<<<<< + * # In a raise inside a try..except block or some except which doesn't + * # match the raised exception. + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":427 + * # and it's gotten in the except line. + * for try_except_info in try_except_infos: + * if try_except_info.is_line_in_except_block(frame.f_lineno): # <<<<<<<<<<<<<< + * if frame.f_lineno == try_except_info.except_line or frame.f_lineno in try_except_info.raise_lines_in_except: + * # In a raise inside a try..except block or some except which doesn't + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":426 + * # where one try..except is inside the other with only a raise + * # and it's gotten in the except line. + * for try_except_info in try_except_infos: # <<<<<<<<<<<<<< + * if try_except_info.is_line_in_except_block(frame.f_lineno): + * if frame.f_lineno == try_except_info.except_line or frame.f_lineno in try_except_info.raise_lines_in_except: + */ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + } + } + + /* "_pydevd_bundle/pydevd_cython.pyx":432 + * # match the raised exception. + * return True + * return False # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(Py_False); + __pyx_r = Py_False; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":396 + * + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * def is_unhandled_exception(container_obj, py_db, frame, int last_raise_line, set raise_lines): # <<<<<<<<<<<<<< + * # ELSE + * # def is_unhandled_exception(container_obj, py_db, frame, last_raise_line, raise_lines): + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.is_unhandled_exception", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_try_except_infos); + __Pyx_XDECREF(__pyx_v_valid_try_except_infos); + __Pyx_XDECREF(__pyx_v_try_except_info); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":438 + * cdef class _TryExceptContainerObj: + * cdef public list try_except_infos; + * def __init__(self): # <<<<<<<<<<<<<< + * self.try_except_infos = None + * # ELSE + */ + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { + __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1;} + if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj___init__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj___init__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__init__", 1); + + /* "_pydevd_bundle/pydevd_cython.pyx":439 + * cdef public list try_except_infos; + * def __init__(self): + * self.try_except_infos = None # <<<<<<<<<<<<<< + * # ELSE + * # class _TryExceptContainerObj(object): + */ + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->try_except_infos); + __Pyx_DECREF(__pyx_v_self->try_except_infos); + __pyx_v_self->try_except_infos = ((PyObject*)Py_None); + + /* "_pydevd_bundle/pydevd_cython.pyx":438 + * cdef class _TryExceptContainerObj: + * cdef public list try_except_infos; + * def __init__(self): # <<<<<<<<<<<<<< + * self.try_except_infos = None + * # ELSE + */ + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":437 + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cdef class _TryExceptContainerObj: + * cdef public list try_except_infos; # <<<<<<<<<<<<<< + * def __init__(self): + * self.try_except_infos = None + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_16try_except_infos_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_16try_except_infos_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_16try_except_infos___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_16try_except_infos___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->try_except_infos); + __pyx_r = __pyx_v_self->try_except_infos; + goto __pyx_L0; + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_16try_except_infos_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_16try_except_infos_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_16try_except_infos_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_16try_except_infos_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__set__", 1); + if (!(likely(PyList_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_v_value))) __PYX_ERR(0, 437, __pyx_L1_error) + __pyx_t_1 = __pyx_v_value; + __Pyx_INCREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v_self->try_except_infos); + __Pyx_DECREF(__pyx_v_self->try_except_infos); + __pyx_v_self->try_except_infos = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython._TryExceptContainerObj.try_except_infos.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_16try_except_infos_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_16try_except_infos_5__del__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_16try_except_infos_4__del__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_16try_except_infos_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 1); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->try_except_infos); + __Pyx_DECREF(__pyx_v_self->try_except_infos); + __pyx_v_self->try_except_infos = ((PyObject*)Py_None); + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_3__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_3__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { + __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} + if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_2__reduce_cython__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_2__reduce_cython__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *__pyx_v_self) { + PyObject *__pyx_v_state = 0; + PyObject *__pyx_v__dict = 0; + int __pyx_v_use_setstate; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__reduce_cython__", 1); + + /* "(tree fragment)":5 + * cdef object _dict + * cdef bint use_setstate + * state = (self.try_except_infos,) # <<<<<<<<<<<<<< + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: + */ + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_v_self->try_except_infos); + __Pyx_GIVEREF(__pyx_v_self->try_except_infos); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->try_except_infos)) __PYX_ERR(2, 5, __pyx_L1_error); + __pyx_v_state = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "(tree fragment)":6 + * cdef bint use_setstate + * state = (self.try_except_infos,) + * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< + * if _dict is not None: + * state += (_dict,) + */ + __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v__dict = __pyx_t_1; + __pyx_t_1 = 0; + + /* "(tree fragment)":7 + * state = (self.try_except_infos,) + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: # <<<<<<<<<<<<<< + * state += (_dict,) + * use_setstate = True + */ + __pyx_t_2 = (__pyx_v__dict != Py_None); + if (__pyx_t_2) { + + /* "(tree fragment)":8 + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: + * state += (_dict,) # <<<<<<<<<<<<<< + * use_setstate = True + * else: + */ + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_v__dict); + __Pyx_GIVEREF(__pyx_v__dict); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict)) __PYX_ERR(2, 8, __pyx_L1_error); + __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_3)); + __pyx_t_3 = 0; + + /* "(tree fragment)":9 + * if _dict is not None: + * state += (_dict,) + * use_setstate = True # <<<<<<<<<<<<<< + * else: + * use_setstate = self.try_except_infos is not None + */ + __pyx_v_use_setstate = 1; + + /* "(tree fragment)":7 + * state = (self.try_except_infos,) + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: # <<<<<<<<<<<<<< + * state += (_dict,) + * use_setstate = True + */ + goto __pyx_L3; + } + + /* "(tree fragment)":11 + * use_setstate = True + * else: + * use_setstate = self.try_except_infos is not None # <<<<<<<<<<<<<< + * if use_setstate: + * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xdbf5e44, None), state + */ + /*else*/ { + __pyx_t_2 = (__pyx_v_self->try_except_infos != ((PyObject*)Py_None)); + __pyx_v_use_setstate = __pyx_t_2; + } + __pyx_L3:; + + /* "(tree fragment)":12 + * else: + * use_setstate = self.try_except_infos is not None + * if use_setstate: # <<<<<<<<<<<<<< + * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xdbf5e44, None), state + * else: + */ + if (__pyx_v_use_setstate) { + + /* "(tree fragment)":13 + * use_setstate = self.try_except_infos is not None + * if use_setstate: + * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xdbf5e44, None), state # <<<<<<<<<<<<<< + * else: + * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xdbf5e44, state) + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyx_unpickle__TryExceptContain); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(2, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_int_230645316); + __Pyx_GIVEREF(__pyx_int_230645316); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_230645316)) __PYX_ERR(2, 13, __pyx_L1_error); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None)) __PYX_ERR(2, 13, __pyx_L1_error); + __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_3); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3)) __PYX_ERR(2, 13, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1)) __PYX_ERR(2, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_state); + __Pyx_GIVEREF(__pyx_v_state); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_state)) __PYX_ERR(2, 13, __pyx_L1_error); + __pyx_t_3 = 0; + __pyx_t_1 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + + /* "(tree fragment)":12 + * else: + * use_setstate = self.try_except_infos is not None + * if use_setstate: # <<<<<<<<<<<<<< + * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xdbf5e44, None), state + * else: + */ + } + + /* "(tree fragment)":15 + * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xdbf5e44, None), state + * else: + * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xdbf5e44, state) # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * __pyx_unpickle__TryExceptContainerObj__set_state(self, __pyx_state) + */ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle__TryExceptContain); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(2, 15, __pyx_L1_error); + __Pyx_INCREF(__pyx_int_230645316); + __Pyx_GIVEREF(__pyx_int_230645316); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_230645316)) __PYX_ERR(2, 15, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_state); + __Pyx_GIVEREF(__pyx_v_state); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state)) __PYX_ERR(2, 15, __pyx_L1_error); + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_4); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4)) __PYX_ERR(2, 15, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(2, 15, __pyx_L1_error); + __pyx_t_4 = 0; + __pyx_t_1 = 0; + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + } + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython._TryExceptContainerObj.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_state); + __Pyx_XDECREF(__pyx_v__dict); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":16 + * else: + * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xdbf5e44, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle__TryExceptContainerObj__set_state(self, __pyx_state) + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_5__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_5__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 16, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(2, 16, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + } + __pyx_v___pyx_state = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 16, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython._TryExceptContainerObj.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_4__setstate_cython__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *)__pyx_v_self), __pyx_v___pyx_state); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_4__setstate_cython__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *__pyx_v_self, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__setstate_cython__", 1); + + /* "(tree fragment)":17 + * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xdbf5e44, state) + * def __setstate_cython__(self, __pyx_state): + * __pyx_unpickle__TryExceptContainerObj__set_state(self, __pyx_state) # <<<<<<<<<<<<<< + */ + if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(2, 17, __pyx_L1_error) + __pyx_t_1 = __pyx_f_14_pydevd_bundle_13pydevd_cython___pyx_unpickle__TryExceptContainerObj__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xdbf5e44, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle__TryExceptContainerObj__set_state(self, __pyx_state) + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython._TryExceptContainerObj.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":471 + * cdef int should_skip + * cdef object exc_info + * def __init__(self, tuple args): # <<<<<<<<<<<<<< + * self._args = args # In the cython version we don't need to pass the frame + * self.should_skip = -1 # On cythonized version, put in instance. + */ + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_args = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_args,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_args)) != 0)) { + (void)__Pyx_Arg_NewRef_VARARGS(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 471, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(0, 471, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); + } + __pyx_v_args = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 471, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return -1; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_args), (&PyTuple_Type), 1, "args", 1))) __PYX_ERR(0, 471, __pyx_L1_error) + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame___init__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self), __pyx_v_args); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = -1; + __pyx_L0:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame___init__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_args) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__init__", 1); + + /* "_pydevd_bundle/pydevd_cython.pyx":472 + * cdef object exc_info + * def __init__(self, tuple args): + * self._args = args # In the cython version we don't need to pass the frame # <<<<<<<<<<<<<< + * self.should_skip = -1 # On cythonized version, put in instance. + * self.exc_info = () + */ + __Pyx_INCREF(__pyx_v_args); + __Pyx_GIVEREF(__pyx_v_args); + __Pyx_GOTREF(__pyx_v_self->_args); + __Pyx_DECREF(__pyx_v_self->_args); + __pyx_v_self->_args = __pyx_v_args; + + /* "_pydevd_bundle/pydevd_cython.pyx":473 + * def __init__(self, tuple args): + * self._args = args # In the cython version we don't need to pass the frame + * self.should_skip = -1 # On cythonized version, put in instance. # <<<<<<<<<<<<<< + * self.exc_info = () + * # ELSE + */ + __pyx_v_self->should_skip = -1; + + /* "_pydevd_bundle/pydevd_cython.pyx":474 + * self._args = args # In the cython version we don't need to pass the frame + * self.should_skip = -1 # On cythonized version, put in instance. + * self.exc_info = () # <<<<<<<<<<<<<< + * # ELSE + * # should_skip = -1 # Default value in class (put in instance on set). + */ + __Pyx_INCREF(__pyx_empty_tuple); + __Pyx_GIVEREF(__pyx_empty_tuple); + __Pyx_GOTREF(__pyx_v_self->exc_info); + __Pyx_DECREF(__pyx_v_self->exc_info); + __pyx_v_self->exc_info = __pyx_empty_tuple; + + /* "_pydevd_bundle/pydevd_cython.pyx":471 + * cdef int should_skip + * cdef object exc_info + * def __init__(self, tuple args): # <<<<<<<<<<<<<< + * self._args = args # In the cython version we don't need to pass the frame + * self.should_skip = -1 # On cythonized version, put in instance. + */ + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":492 + * # ENDIF + * + * def set_suspend(self, *args, **kwargs): # <<<<<<<<<<<<<< + * self._args[0].set_suspend(*args, **kwargs) + * + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_3set_suspend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_3set_suspend = {"set_suspend", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_3set_suspend, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_3set_suspend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_args = 0; + PyObject *__pyx_v_kwargs = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("set_suspend (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "set_suspend", 1))) return NULL; + if (unlikely(__pyx_kwds)) { + __pyx_v_kwargs = __Pyx_KwargsAsDict_VARARGS(__pyx_kwds, __pyx_kwvalues); + if (unlikely(!__pyx_v_kwargs)) return NULL; + __Pyx_GOTREF(__pyx_v_kwargs); + } else { + __pyx_v_kwargs = PyDict_New(); + if (unlikely(!__pyx_v_kwargs)) return NULL; + __Pyx_GOTREF(__pyx_v_kwargs); + } + __Pyx_INCREF(__pyx_args); + __pyx_v_args = __pyx_args; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_2set_suspend(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs); + + /* function exit code */ + __Pyx_DECREF(__pyx_v_args); + __Pyx_DECREF(__pyx_v_kwargs); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_2set_suspend(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("set_suspend", 1); + + /* "_pydevd_bundle/pydevd_cython.pyx":493 + * + * def set_suspend(self, *args, **kwargs): + * self._args[0].set_suspend(*args, **kwargs) # <<<<<<<<<<<<<< + * + * def do_wait_suspend(self, *args, **kwargs): + */ + if (unlikely(__pyx_v_self->_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 493, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 493, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_set_suspend); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 493, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 493, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_v_args, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 493, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":492 + * # ENDIF + * + * def set_suspend(self, *args, **kwargs): # <<<<<<<<<<<<<< + * self._args[0].set_suspend(*args, **kwargs) + * + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.set_suspend", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":495 + * self._args[0].set_suspend(*args, **kwargs) + * + * def do_wait_suspend(self, *args, **kwargs): # <<<<<<<<<<<<<< + * self._args[0].do_wait_suspend(*args, **kwargs) + * + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_5do_wait_suspend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_5do_wait_suspend = {"do_wait_suspend", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_5do_wait_suspend, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_5do_wait_suspend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_args = 0; + PyObject *__pyx_v_kwargs = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("do_wait_suspend (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "do_wait_suspend", 1))) return NULL; + if (unlikely(__pyx_kwds)) { + __pyx_v_kwargs = __Pyx_KwargsAsDict_VARARGS(__pyx_kwds, __pyx_kwvalues); + if (unlikely(!__pyx_v_kwargs)) return NULL; + __Pyx_GOTREF(__pyx_v_kwargs); + } else { + __pyx_v_kwargs = PyDict_New(); + if (unlikely(!__pyx_v_kwargs)) return NULL; + __Pyx_GOTREF(__pyx_v_kwargs); + } + __Pyx_INCREF(__pyx_args); + __pyx_v_args = __pyx_args; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_4do_wait_suspend(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs); + + /* function exit code */ + __Pyx_DECREF(__pyx_v_args); + __Pyx_DECREF(__pyx_v_kwargs); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_4do_wait_suspend(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("do_wait_suspend", 1); + + /* "_pydevd_bundle/pydevd_cython.pyx":496 + * + * def do_wait_suspend(self, *args, **kwargs): + * self._args[0].do_wait_suspend(*args, **kwargs) # <<<<<<<<<<<<<< + * + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + */ + if (unlikely(__pyx_v_self->_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 496, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 496, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_do_wait_suspend); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 496, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 496, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_v_args, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 496, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":495 + * self._args[0].set_suspend(*args, **kwargs) + * + * def do_wait_suspend(self, *args, **kwargs): # <<<<<<<<<<<<<< + * self._args[0].do_wait_suspend(*args, **kwargs) + * + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.do_wait_suspend", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":499 + * + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * def trace_exception(self, frame, str event, arg): # <<<<<<<<<<<<<< + * cdef bint should_stop; + * cdef tuple exc_info; + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_7trace_exception(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_7trace_exception = {"trace_exception", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_7trace_exception, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_7trace_exception(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_frame = 0; + PyObject *__pyx_v_event = 0; + PyObject *__pyx_v_arg = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("trace_exception (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_frame,&__pyx_n_s_event,&__pyx_n_s_arg,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_frame)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 499, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_event)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 499, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("trace_exception", 1, 3, 3, 1); __PYX_ERR(0, 499, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_arg)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 499, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("trace_exception", 1, 3, 3, 2); __PYX_ERR(0, 499, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "trace_exception") < 0)) __PYX_ERR(0, 499, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 3)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + } + __pyx_v_frame = values[0]; + __pyx_v_event = ((PyObject*)values[1]); + __pyx_v_arg = values[2]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("trace_exception", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 499, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.trace_exception", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_event), (&PyString_Type), 1, "event", 1))) __PYX_ERR(0, 499, __pyx_L1_error) + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_6trace_exception(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self), __pyx_v_frame, __pyx_v_event, __pyx_v_arg); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + __pyx_L0:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_6trace_exception(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_frame, PyObject *__pyx_v_event, PyObject *__pyx_v_arg) { + int __pyx_v_should_stop; + PyObject *__pyx_v_exc_info = 0; + PyObject *__pyx_v_frame_skips_cache = NULL; + PyObject *__pyx_v_frame_cache_key = NULL; + PyObject *__pyx_v_custom_key = NULL; + PyObject *__pyx_v_container_obj = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + unsigned int __pyx_t_8; + PyObject *(*__pyx_t_9)(PyObject *); + int __pyx_t_10; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("trace_exception", 0); + __Pyx_INCREF(__pyx_v_frame); + + /* "_pydevd_bundle/pydevd_cython.pyx":505 + * # def trace_exception(self, frame, event, arg): + * # ENDIF + * if event == "exception": # <<<<<<<<<<<<<< + * should_stop, frame, exc_info = should_stop_on_exception(self._args[0], self._args[2], frame, self._args[3], arg, self.exc_info) + * self.exc_info = exc_info + */ + __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_exception, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 505, __pyx_L1_error) + if (__pyx_t_1) { + + /* "_pydevd_bundle/pydevd_cython.pyx":506 + * # ENDIF + * if event == "exception": + * should_stop, frame, exc_info = should_stop_on_exception(self._args[0], self._args[2], frame, self._args[3], arg, self.exc_info) # <<<<<<<<<<<<<< + * self.exc_info = exc_info + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_should_stop_on_exception); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 506, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (unlikely(__pyx_v_self->_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 506, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 506, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (unlikely(__pyx_v_self->_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 506, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 506, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (unlikely(__pyx_v_self->_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 506, __pyx_L1_error) + } + __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 506, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = NULL; + __pyx_t_8 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_8 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[7] = {__pyx_t_7, __pyx_t_4, __pyx_t_5, __pyx_v_frame, __pyx_t_6, __pyx_v_arg, __pyx_v_self->exc_info}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_8, 6+__pyx_t_8); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 506, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { + PyObject* sequence = __pyx_t_2; + Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); + if (unlikely(size != 3)) { + if (size > 3) __Pyx_RaiseTooManyValuesError(3); + else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); + __PYX_ERR(0, 506, __pyx_L1_error) + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + if (likely(PyTuple_CheckExact(sequence))) { + __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); + __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); + __pyx_t_5 = PyTuple_GET_ITEM(sequence, 2); + } else { + __pyx_t_3 = PyList_GET_ITEM(sequence, 0); + __pyx_t_6 = PyList_GET_ITEM(sequence, 1); + __pyx_t_5 = PyList_GET_ITEM(sequence, 2); + } + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(__pyx_t_5); + #else + __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 506, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 506, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_5 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 506, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #endif + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else { + Py_ssize_t index = -1; + __pyx_t_4 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 506, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); + index = 0; __pyx_t_3 = __pyx_t_9(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L4_unpacking_failed; + __Pyx_GOTREF(__pyx_t_3); + index = 1; __pyx_t_6 = __pyx_t_9(__pyx_t_4); if (unlikely(!__pyx_t_6)) goto __pyx_L4_unpacking_failed; + __Pyx_GOTREF(__pyx_t_6); + index = 2; __pyx_t_5 = __pyx_t_9(__pyx_t_4); if (unlikely(!__pyx_t_5)) goto __pyx_L4_unpacking_failed; + __Pyx_GOTREF(__pyx_t_5); + if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_4), 3) < 0) __PYX_ERR(0, 506, __pyx_L1_error) + __pyx_t_9 = NULL; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + goto __pyx_L5_unpacking_done; + __pyx_L4_unpacking_failed:; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_9 = NULL; + if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); + __PYX_ERR(0, 506, __pyx_L1_error) + __pyx_L5_unpacking_done:; + } + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 506, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (!(likely(PyTuple_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_5))) __PYX_ERR(0, 506, __pyx_L1_error) + __pyx_v_should_stop = __pyx_t_1; + __Pyx_DECREF_SET(__pyx_v_frame, __pyx_t_6); + __pyx_t_6 = 0; + __pyx_v_exc_info = ((PyObject*)__pyx_t_5); + __pyx_t_5 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":507 + * if event == "exception": + * should_stop, frame, exc_info = should_stop_on_exception(self._args[0], self._args[2], frame, self._args[3], arg, self.exc_info) + * self.exc_info = exc_info # <<<<<<<<<<<<<< + * + * if should_stop: + */ + __Pyx_INCREF(__pyx_v_exc_info); + __Pyx_GIVEREF(__pyx_v_exc_info); + __Pyx_GOTREF(__pyx_v_self->exc_info); + __Pyx_DECREF(__pyx_v_self->exc_info); + __pyx_v_self->exc_info = __pyx_v_exc_info; + + /* "_pydevd_bundle/pydevd_cython.pyx":509 + * self.exc_info = exc_info + * + * if should_stop: # <<<<<<<<<<<<<< + * if handle_exception(self._args[0], self._args[3], frame, arg, EXCEPTION_TYPE_HANDLED): + * return self.trace_dispatch + */ + if (__pyx_v_should_stop) { + + /* "_pydevd_bundle/pydevd_cython.pyx":510 + * + * if should_stop: + * if handle_exception(self._args[0], self._args[3], frame, arg, EXCEPTION_TYPE_HANDLED): # <<<<<<<<<<<<<< + * return self.trace_dispatch + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_handle_exception); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 510, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (unlikely(__pyx_v_self->_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 510, __pyx_L1_error) + } + __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 510, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (unlikely(__pyx_v_self->_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 510, __pyx_L1_error) + } + __pyx_t_3 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 510, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_EXCEPTION_TYPE_HANDLED); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 510, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_7 = NULL; + __pyx_t_8 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_8 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[6] = {__pyx_t_7, __pyx_t_6, __pyx_t_3, __pyx_v_frame, __pyx_v_arg, __pyx_t_4}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 5+__pyx_t_8); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 510, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 510, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__pyx_t_1) { + + /* "_pydevd_bundle/pydevd_cython.pyx":511 + * if should_stop: + * if handle_exception(self._args[0], self._args[3], frame, arg, EXCEPTION_TYPE_HANDLED): + * return self.trace_dispatch # <<<<<<<<<<<<<< + * + * elif event == "return": + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 511, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":510 + * + * if should_stop: + * if handle_exception(self._args[0], self._args[3], frame, arg, EXCEPTION_TYPE_HANDLED): # <<<<<<<<<<<<<< + * return self.trace_dispatch + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":509 + * self.exc_info = exc_info + * + * if should_stop: # <<<<<<<<<<<<<< + * if handle_exception(self._args[0], self._args[3], frame, arg, EXCEPTION_TYPE_HANDLED): + * return self.trace_dispatch + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":505 + * # def trace_exception(self, frame, event, arg): + * # ENDIF + * if event == "exception": # <<<<<<<<<<<<<< + * should_stop, frame, exc_info = should_stop_on_exception(self._args[0], self._args[2], frame, self._args[3], arg, self.exc_info) + * self.exc_info = exc_info + */ + goto __pyx_L3; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":513 + * return self.trace_dispatch + * + * elif event == "return": # <<<<<<<<<<<<<< + * exc_info = self.exc_info + * if exc_info and arg is None: + */ + __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_return, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 513, __pyx_L1_error) + if (__pyx_t_1) { + + /* "_pydevd_bundle/pydevd_cython.pyx":514 + * + * elif event == "return": + * exc_info = self.exc_info # <<<<<<<<<<<<<< + * if exc_info and arg is None: + * frame_skips_cache, frame_cache_key = self._args[4], self._args[5] + */ + if (!(likely(PyTuple_CheckExact(__pyx_v_self->exc_info))||((__pyx_v_self->exc_info) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v_self->exc_info))) __PYX_ERR(0, 514, __pyx_L1_error) + __pyx_t_2 = __pyx_v_self->exc_info; + __Pyx_INCREF(__pyx_t_2); + __pyx_v_exc_info = ((PyObject*)__pyx_t_2); + __pyx_t_2 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":515 + * elif event == "return": + * exc_info = self.exc_info + * if exc_info and arg is None: # <<<<<<<<<<<<<< + * frame_skips_cache, frame_cache_key = self._args[4], self._args[5] + * custom_key = (frame_cache_key, "try_exc_info") + */ + __pyx_t_10 = (__pyx_v_exc_info != Py_None)&&(PyTuple_GET_SIZE(__pyx_v_exc_info) != 0); + if (__pyx_t_10) { + } else { + __pyx_t_1 = __pyx_t_10; + goto __pyx_L9_bool_binop_done; + } + __pyx_t_10 = (__pyx_v_arg == Py_None); + __pyx_t_1 = __pyx_t_10; + __pyx_L9_bool_binop_done:; + if (__pyx_t_1) { + + /* "_pydevd_bundle/pydevd_cython.pyx":516 + * exc_info = self.exc_info + * if exc_info and arg is None: + * frame_skips_cache, frame_cache_key = self._args[4], self._args[5] # <<<<<<<<<<<<<< + * custom_key = (frame_cache_key, "try_exc_info") + * container_obj = frame_skips_cache.get(custom_key) + */ + if (unlikely(__pyx_v_self->_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 516, __pyx_L1_error) + } + __pyx_t_2 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 516, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (unlikely(__pyx_v_self->_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 516, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 5, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 516, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_v_frame_skips_cache = __pyx_t_2; + __pyx_t_2 = 0; + __pyx_v_frame_cache_key = __pyx_t_5; + __pyx_t_5 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":517 + * if exc_info and arg is None: + * frame_skips_cache, frame_cache_key = self._args[4], self._args[5] + * custom_key = (frame_cache_key, "try_exc_info") # <<<<<<<<<<<<<< + * container_obj = frame_skips_cache.get(custom_key) + * if container_obj is None: + */ + __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 517, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_INCREF(__pyx_v_frame_cache_key); + __Pyx_GIVEREF(__pyx_v_frame_cache_key); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_frame_cache_key)) __PYX_ERR(0, 517, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_try_exc_info); + __Pyx_GIVEREF(__pyx_n_s_try_exc_info); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_n_s_try_exc_info)) __PYX_ERR(0, 517, __pyx_L1_error); + __pyx_v_custom_key = ((PyObject*)__pyx_t_5); + __pyx_t_5 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":518 + * frame_skips_cache, frame_cache_key = self._args[4], self._args[5] + * custom_key = (frame_cache_key, "try_exc_info") + * container_obj = frame_skips_cache.get(custom_key) # <<<<<<<<<<<<<< + * if container_obj is None: + * container_obj = frame_skips_cache[custom_key] = _TryExceptContainerObj() + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame_skips_cache, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 518, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = NULL; + __pyx_t_8 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_8 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_custom_key}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 518, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_v_container_obj = __pyx_t_5; + __pyx_t_5 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":519 + * custom_key = (frame_cache_key, "try_exc_info") + * container_obj = frame_skips_cache.get(custom_key) + * if container_obj is None: # <<<<<<<<<<<<<< + * container_obj = frame_skips_cache[custom_key] = _TryExceptContainerObj() + * if is_unhandled_exception(container_obj, self._args[0], frame, exc_info[1], exc_info[2]) and self.handle_user_exception( + */ + __pyx_t_1 = (__pyx_v_container_obj == Py_None); + if (__pyx_t_1) { + + /* "_pydevd_bundle/pydevd_cython.pyx":520 + * container_obj = frame_skips_cache.get(custom_key) + * if container_obj is None: + * container_obj = frame_skips_cache[custom_key] = _TryExceptContainerObj() # <<<<<<<<<<<<<< + * if is_unhandled_exception(container_obj, self._args[0], frame, exc_info[1], exc_info[2]) and self.handle_user_exception( + * frame + */ + __pyx_t_5 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 520, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_INCREF(__pyx_t_5); + __Pyx_DECREF_SET(__pyx_v_container_obj, __pyx_t_5); + if (unlikely((PyObject_SetItem(__pyx_v_frame_skips_cache, __pyx_v_custom_key, __pyx_t_5) < 0))) __PYX_ERR(0, 520, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":519 + * custom_key = (frame_cache_key, "try_exc_info") + * container_obj = frame_skips_cache.get(custom_key) + * if container_obj is None: # <<<<<<<<<<<<<< + * container_obj = frame_skips_cache[custom_key] = _TryExceptContainerObj() + * if is_unhandled_exception(container_obj, self._args[0], frame, exc_info[1], exc_info[2]) and self.handle_user_exception( + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":521 + * if container_obj is None: + * container_obj = frame_skips_cache[custom_key] = _TryExceptContainerObj() + * if is_unhandled_exception(container_obj, self._args[0], frame, exc_info[1], exc_info[2]) and self.handle_user_exception( # <<<<<<<<<<<<<< + * frame + * ): + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_is_unhandled_exception); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 521, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (unlikely(__pyx_v_self->_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 521, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 521, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (unlikely(__pyx_v_exc_info == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 521, __pyx_L1_error) + } + __pyx_t_3 = __Pyx_GetItemInt_Tuple(__pyx_v_exc_info, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 521, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (unlikely(__pyx_v_exc_info == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 521, __pyx_L1_error) + } + __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v_exc_info, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 521, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = NULL; + __pyx_t_8 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_8 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[6] = {__pyx_t_7, __pyx_v_container_obj, __pyx_t_4, __pyx_v_frame, __pyx_t_3, __pyx_t_6}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_8, 5+__pyx_t_8); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 521, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 521, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (__pyx_t_10) { + } else { + __pyx_t_1 = __pyx_t_10; + goto __pyx_L13_bool_binop_done; + } + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_handle_user_exception); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 521, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + + /* "_pydevd_bundle/pydevd_cython.pyx":522 + * container_obj = frame_skips_cache[custom_key] = _TryExceptContainerObj() + * if is_unhandled_exception(container_obj, self._args[0], frame, exc_info[1], exc_info[2]) and self.handle_user_exception( + * frame # <<<<<<<<<<<<<< + * ): + * return self.trace_dispatch + */ + __pyx_t_6 = NULL; + __pyx_t_8 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_8 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_frame}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 521, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":521 + * if container_obj is None: + * container_obj = frame_skips_cache[custom_key] = _TryExceptContainerObj() + * if is_unhandled_exception(container_obj, self._args[0], frame, exc_info[1], exc_info[2]) and self.handle_user_exception( # <<<<<<<<<<<<<< + * frame + * ): + */ + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 521, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_1 = __pyx_t_10; + __pyx_L13_bool_binop_done:; + if (__pyx_t_1) { + + /* "_pydevd_bundle/pydevd_cython.pyx":524 + * frame + * ): + * return self.trace_dispatch # <<<<<<<<<<<<<< + * + * return self.trace_exception + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 524, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_r = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":521 + * if container_obj is None: + * container_obj = frame_skips_cache[custom_key] = _TryExceptContainerObj() + * if is_unhandled_exception(container_obj, self._args[0], frame, exc_info[1], exc_info[2]) and self.handle_user_exception( # <<<<<<<<<<<<<< + * frame + * ): + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":515 + * elif event == "return": + * exc_info = self.exc_info + * if exc_info and arg is None: # <<<<<<<<<<<<<< + * frame_skips_cache, frame_cache_key = self._args[4], self._args[5] + * custom_key = (frame_cache_key, "try_exc_info") + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":513 + * return self.trace_dispatch + * + * elif event == "return": # <<<<<<<<<<<<<< + * exc_info = self.exc_info + * if exc_info and arg is None: + */ + } + __pyx_L3:; + + /* "_pydevd_bundle/pydevd_cython.pyx":526 + * return self.trace_dispatch + * + * return self.trace_exception # <<<<<<<<<<<<<< + * + * def handle_user_exception(self, frame): + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_exception); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 526, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_r = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":499 + * + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * def trace_exception(self, frame, str event, arg): # <<<<<<<<<<<<<< + * cdef bint should_stop; + * cdef tuple exc_info; + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.trace_exception", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_exc_info); + __Pyx_XDECREF(__pyx_v_frame_skips_cache); + __Pyx_XDECREF(__pyx_v_frame_cache_key); + __Pyx_XDECREF(__pyx_v_custom_key); + __Pyx_XDECREF(__pyx_v_container_obj); + __Pyx_XDECREF(__pyx_v_frame); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":528 + * return self.trace_exception + * + * def handle_user_exception(self, frame): # <<<<<<<<<<<<<< + * exc_info = self.exc_info + * if exc_info: + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_9handle_user_exception(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_9handle_user_exception = {"handle_user_exception", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_9handle_user_exception, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_9handle_user_exception(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_frame = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("handle_user_exception (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_frame,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_frame)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 528, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "handle_user_exception") < 0)) __PYX_ERR(0, 528, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + } + __pyx_v_frame = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("handle_user_exception", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 528, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.handle_user_exception", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_8handle_user_exception(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self), __pyx_v_frame); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_8handle_user_exception(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_frame) { + PyObject *__pyx_v_exc_info = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + unsigned int __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("handle_user_exception", 1); + + /* "_pydevd_bundle/pydevd_cython.pyx":529 + * + * def handle_user_exception(self, frame): + * exc_info = self.exc_info # <<<<<<<<<<<<<< + * if exc_info: + * return handle_exception(self._args[0], self._args[3], frame, exc_info[0], EXCEPTION_TYPE_USER_UNHANDLED) + */ + __pyx_t_1 = __pyx_v_self->exc_info; + __Pyx_INCREF(__pyx_t_1); + __pyx_v_exc_info = __pyx_t_1; + __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":530 + * def handle_user_exception(self, frame): + * exc_info = self.exc_info + * if exc_info: # <<<<<<<<<<<<<< + * return handle_exception(self._args[0], self._args[3], frame, exc_info[0], EXCEPTION_TYPE_USER_UNHANDLED) + * return False + */ + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_exc_info); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 530, __pyx_L1_error) + if (__pyx_t_2) { + + /* "_pydevd_bundle/pydevd_cython.pyx":531 + * exc_info = self.exc_info + * if exc_info: + * return handle_exception(self._args[0], self._args[3], frame, exc_info[0], EXCEPTION_TYPE_USER_UNHANDLED) # <<<<<<<<<<<<<< + * return False + * + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_handle_exception); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 531, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (unlikely(__pyx_v_self->_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 531, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 531, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (unlikely(__pyx_v_self->_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 531, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 531, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_exc_info, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 531, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_EXCEPTION_TYPE_USER_UNHANDLED); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 531, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[6] = {__pyx_t_8, __pyx_t_4, __pyx_t_5, __pyx_v_frame, __pyx_t_6, __pyx_t_7}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_9, 5+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 531, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":530 + * def handle_user_exception(self, frame): + * exc_info = self.exc_info + * if exc_info: # <<<<<<<<<<<<<< + * return handle_exception(self._args[0], self._args[3], frame, exc_info[0], EXCEPTION_TYPE_USER_UNHANDLED) + * return False + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":532 + * if exc_info: + * return handle_exception(self._args[0], self._args[3], frame, exc_info[0], EXCEPTION_TYPE_USER_UNHANDLED) + * return False # <<<<<<<<<<<<<< + * + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(Py_False); + __pyx_r = Py_False; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":528 + * return self.trace_exception + * + * def handle_user_exception(self, frame): # <<<<<<<<<<<<<< + * exc_info = self.exc_info + * if exc_info: + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.handle_user_exception", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_exc_info); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":535 + * + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cdef get_func_name(self, frame): # <<<<<<<<<<<<<< + * cdef str func_name + * # ELSE + */ + +static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_get_func_name(CYTHON_UNUSED struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_frame) { + PyObject *__pyx_v_func_name = 0; + PyObject *__pyx_v_code_obj = NULL; + PyObject *__pyx_v_cls_name = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + unsigned int __pyx_t_7; + int __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + PyObject *__pyx_t_11 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get_func_name", 1); + + /* "_pydevd_bundle/pydevd_cython.pyx":540 + * # def get_func_name(self, frame): + * # ENDIF + * code_obj = frame.f_code # <<<<<<<<<<<<<< + * func_name = code_obj.co_name + * try: + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 540, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_code_obj = __pyx_t_1; + __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":541 + * # ENDIF + * code_obj = frame.f_code + * func_name = code_obj.co_name # <<<<<<<<<<<<<< + * try: + * cls_name = get_clsname_for_code(code_obj, frame) + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_code_obj, __pyx_n_s_co_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 541, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_1))) __PYX_ERR(0, 541, __pyx_L1_error) + __pyx_v_func_name = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":542 + * code_obj = frame.f_code + * func_name = code_obj.co_name + * try: # <<<<<<<<<<<<<< + * cls_name = get_clsname_for_code(code_obj, frame) + * if cls_name is not None: + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_4); + /*try:*/ { + + /* "_pydevd_bundle/pydevd_cython.pyx":543 + * func_name = code_obj.co_name + * try: + * cls_name = get_clsname_for_code(code_obj, frame) # <<<<<<<<<<<<<< + * if cls_name is not None: + * return "%s.%s" % (cls_name, func_name) + */ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_get_clsname_for_code); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 543, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_v_code_obj, __pyx_v_frame}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 2+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 543, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __pyx_v_cls_name = __pyx_t_1; + __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":544 + * try: + * cls_name = get_clsname_for_code(code_obj, frame) + * if cls_name is not None: # <<<<<<<<<<<<<< + * return "%s.%s" % (cls_name, func_name) + * else: + */ + __pyx_t_8 = (__pyx_v_cls_name != Py_None); + if (__pyx_t_8) { + + /* "_pydevd_bundle/pydevd_cython.pyx":545 + * cls_name = get_clsname_for_code(code_obj, frame) + * if cls_name is not None: + * return "%s.%s" % (cls_name, func_name) # <<<<<<<<<<<<<< + * else: + * return func_name + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 545, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_v_cls_name); + __Pyx_GIVEREF(__pyx_v_cls_name); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_cls_name)) __PYX_ERR(0, 545, __pyx_L3_error); + __Pyx_INCREF(__pyx_v_func_name); + __Pyx_GIVEREF(__pyx_v_func_name); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_func_name)) __PYX_ERR(0, 545, __pyx_L3_error); + __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_s_s, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 545, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L7_try_return; + + /* "_pydevd_bundle/pydevd_cython.pyx":544 + * try: + * cls_name = get_clsname_for_code(code_obj, frame) + * if cls_name is not None: # <<<<<<<<<<<<<< + * return "%s.%s" % (cls_name, func_name) + * else: + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":547 + * return "%s.%s" % (cls_name, func_name) + * else: + * return func_name # <<<<<<<<<<<<<< + * except: + * pydev_log.exception() + */ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_func_name); + __pyx_r = __pyx_v_func_name; + goto __pyx_L7_try_return; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":542 + * code_obj = frame.f_code + * func_name = code_obj.co_name + * try: # <<<<<<<<<<<<<< + * cls_name = get_clsname_for_code(code_obj, frame) + * if cls_name is not None: + */ + } + __pyx_L3_error:; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":548 + * else: + * return func_name + * except: # <<<<<<<<<<<<<< + * pydev_log.exception() + * return func_name + */ + /*except:*/ { + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.get_func_name", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_1, &__pyx_t_6) < 0) __PYX_ERR(0, 548, __pyx_L5_except_error) + __Pyx_XGOTREF(__pyx_t_5); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_6); + + /* "_pydevd_bundle/pydevd_cython.pyx":549 + * return func_name + * except: + * pydev_log.exception() # <<<<<<<<<<<<<< + * return func_name + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 549, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_exception); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 549, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_t_10 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_11))) { + __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_11); + if (likely(__pyx_t_10)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); + __Pyx_INCREF(__pyx_t_10); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_11, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_10, NULL}; + __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_11, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 549, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + } + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":550 + * except: + * pydev_log.exception() + * return func_name # <<<<<<<<<<<<<< + * + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_func_name); + __pyx_r = __pyx_v_func_name; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + goto __pyx_L6_except_return; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":542 + * code_obj = frame.f_code + * func_name = code_obj.co_name + * try: # <<<<<<<<<<<<<< + * cls_name = get_clsname_for_code(code_obj, frame) + * if cls_name is not None: + */ + __pyx_L5_except_error:; + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_XGIVEREF(__pyx_t_4); + __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); + goto __pyx_L1_error; + __pyx_L7_try_return:; + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_XGIVEREF(__pyx_t_4); + __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); + goto __pyx_L0; + __pyx_L6_except_return:; + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_XGIVEREF(__pyx_t_4); + __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); + goto __pyx_L0; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":535 + * + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cdef get_func_name(self, frame): # <<<<<<<<<<<<<< + * cdef str func_name + * # ELSE + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_XDECREF(__pyx_t_11); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.get_func_name", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_func_name); + __Pyx_XDECREF(__pyx_v_code_obj); + __Pyx_XDECREF(__pyx_v_cls_name); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":553 + * + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cdef _show_return_values(self, frame, arg): # <<<<<<<<<<<<<< + * # ELSE + * # def _show_return_values(self, frame, arg): + */ + +static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame__show_return_values(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_frame, PyObject *__pyx_v_arg) { + PyObject *__pyx_v_f_locals_back = NULL; + PyObject *__pyx_v_return_values_dict = NULL; + PyObject *__pyx_v_name = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + int __pyx_t_6; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + unsigned int __pyx_t_9; + PyObject *__pyx_t_10 = NULL; + PyObject *__pyx_t_11 = NULL; + int __pyx_t_12; + int __pyx_t_13; + char const *__pyx_t_14; + PyObject *__pyx_t_15 = NULL; + PyObject *__pyx_t_16 = NULL; + PyObject *__pyx_t_17 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_show_return_values", 1); + + /* "_pydevd_bundle/pydevd_cython.pyx":557 + * # def _show_return_values(self, frame, arg): + * # ENDIF + * try: # <<<<<<<<<<<<<< + * try: + * f_locals_back = getattr(frame.f_back, "f_locals", None) + */ + /*try:*/ { + + /* "_pydevd_bundle/pydevd_cython.pyx":558 + * # ENDIF + * try: + * try: # <<<<<<<<<<<<<< + * f_locals_back = getattr(frame.f_back, "f_locals", None) + * if f_locals_back is not None: + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + + /* "_pydevd_bundle/pydevd_cython.pyx":559 + * try: + * try: + * f_locals_back = getattr(frame.f_back, "f_locals", None) # <<<<<<<<<<<<<< + * if f_locals_back is not None: + * return_values_dict = f_locals_back.get(RETURN_VALUES_DICT, None) + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 559, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_GetAttr3(__pyx_t_4, __pyx_n_s_f_locals, Py_None); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 559, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_v_f_locals_back = __pyx_t_5; + __pyx_t_5 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":560 + * try: + * f_locals_back = getattr(frame.f_back, "f_locals", None) + * if f_locals_back is not None: # <<<<<<<<<<<<<< + * return_values_dict = f_locals_back.get(RETURN_VALUES_DICT, None) + * if return_values_dict is None: + */ + __pyx_t_6 = (__pyx_v_f_locals_back != Py_None); + if (__pyx_t_6) { + + /* "_pydevd_bundle/pydevd_cython.pyx":561 + * f_locals_back = getattr(frame.f_back, "f_locals", None) + * if f_locals_back is not None: + * return_values_dict = f_locals_back.get(RETURN_VALUES_DICT, None) # <<<<<<<<<<<<<< + * if return_values_dict is None: + * return_values_dict = {} + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f_locals_back, __pyx_n_s_get); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 561, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_RETURN_VALUES_DICT); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 561, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_8, __pyx_t_7, Py_None}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_9, 2+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 561, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __pyx_v_return_values_dict = __pyx_t_5; + __pyx_t_5 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":562 + * if f_locals_back is not None: + * return_values_dict = f_locals_back.get(RETURN_VALUES_DICT, None) + * if return_values_dict is None: # <<<<<<<<<<<<<< + * return_values_dict = {} + * f_locals_back[RETURN_VALUES_DICT] = return_values_dict + */ + __pyx_t_6 = (__pyx_v_return_values_dict == Py_None); + if (__pyx_t_6) { + + /* "_pydevd_bundle/pydevd_cython.pyx":563 + * return_values_dict = f_locals_back.get(RETURN_VALUES_DICT, None) + * if return_values_dict is None: + * return_values_dict = {} # <<<<<<<<<<<<<< + * f_locals_back[RETURN_VALUES_DICT] = return_values_dict + * name = self.get_func_name(frame) + */ + __pyx_t_5 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 563, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF_SET(__pyx_v_return_values_dict, __pyx_t_5); + __pyx_t_5 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":564 + * if return_values_dict is None: + * return_values_dict = {} + * f_locals_back[RETURN_VALUES_DICT] = return_values_dict # <<<<<<<<<<<<<< + * name = self.get_func_name(frame) + * return_values_dict[name] = arg + */ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_RETURN_VALUES_DICT); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 564, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_5); + if (unlikely((PyObject_SetItem(__pyx_v_f_locals_back, __pyx_t_5, __pyx_v_return_values_dict) < 0))) __PYX_ERR(0, 564, __pyx_L6_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":562 + * if f_locals_back is not None: + * return_values_dict = f_locals_back.get(RETURN_VALUES_DICT, None) + * if return_values_dict is None: # <<<<<<<<<<<<<< + * return_values_dict = {} + * f_locals_back[RETURN_VALUES_DICT] = return_values_dict + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":565 + * return_values_dict = {} + * f_locals_back[RETURN_VALUES_DICT] = return_values_dict + * name = self.get_func_name(frame) # <<<<<<<<<<<<<< + * return_values_dict[name] = arg + * except: + */ + __pyx_t_5 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->get_func_name(__pyx_v_self, __pyx_v_frame); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 565, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_v_name = __pyx_t_5; + __pyx_t_5 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":566 + * f_locals_back[RETURN_VALUES_DICT] = return_values_dict + * name = self.get_func_name(frame) + * return_values_dict[name] = arg # <<<<<<<<<<<<<< + * except: + * pydev_log.exception() + */ + if (unlikely((PyObject_SetItem(__pyx_v_return_values_dict, __pyx_v_name, __pyx_v_arg) < 0))) __PYX_ERR(0, 566, __pyx_L6_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":560 + * try: + * f_locals_back = getattr(frame.f_back, "f_locals", None) + * if f_locals_back is not None: # <<<<<<<<<<<<<< + * return_values_dict = f_locals_back.get(RETURN_VALUES_DICT, None) + * if return_values_dict is None: + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":558 + * # ENDIF + * try: + * try: # <<<<<<<<<<<<<< + * f_locals_back = getattr(frame.f_back, "f_locals", None) + * if f_locals_back is not None: + */ + } + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L11_try_end; + __pyx_L6_error:; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":567 + * name = self.get_func_name(frame) + * return_values_dict[name] = arg + * except: # <<<<<<<<<<<<<< + * pydev_log.exception() + * finally: + */ + /*except:*/ { + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame._show_return_values", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_7) < 0) __PYX_ERR(0, 567, __pyx_L8_except_error) + __Pyx_XGOTREF(__pyx_t_5); + __Pyx_XGOTREF(__pyx_t_4); + __Pyx_XGOTREF(__pyx_t_7); + + /* "_pydevd_bundle/pydevd_cython.pyx":568 + * return_values_dict[name] = arg + * except: + * pydev_log.exception() # <<<<<<<<<<<<<< + * finally: + * f_locals_back = None + */ + __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 568, __pyx_L8_except_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_exception); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 568, __pyx_L8_except_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_t_10 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_11))) { + __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_11); + if (likely(__pyx_t_10)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); + __Pyx_INCREF(__pyx_t_10); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_11, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_10, NULL}; + __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_11, __pyx_callargs+1-__pyx_t_9, 0+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 568, __pyx_L8_except_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + } + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + goto __pyx_L7_exception_handled; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":558 + * # ENDIF + * try: + * try: # <<<<<<<<<<<<<< + * f_locals_back = getattr(frame.f_back, "f_locals", None) + * if f_locals_back is not None: + */ + __pyx_L8_except_error:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L4_error; + __pyx_L7_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + __pyx_L11_try_end:; + } + } + + /* "_pydevd_bundle/pydevd_cython.pyx":570 + * pydev_log.exception() + * finally: + * f_locals_back = None # <<<<<<<<<<<<<< + * + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + */ + /*finally:*/ { + /*normal exit:*/{ + __Pyx_INCREF(Py_None); + __Pyx_XDECREF_SET(__pyx_v_f_locals_back, Py_None); + goto __pyx_L5; + } + __pyx_L4_error:; + /*exception exit:*/{ + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1) < 0)) __Pyx_ErrFetch(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_15); + __Pyx_XGOTREF(__pyx_t_16); + __Pyx_XGOTREF(__pyx_t_17); + __pyx_t_12 = __pyx_lineno; __pyx_t_13 = __pyx_clineno; __pyx_t_14 = __pyx_filename; + { + __Pyx_INCREF(Py_None); + __Pyx_XDECREF_SET(__pyx_v_f_locals_back, Py_None); + } + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_15); + __Pyx_XGIVEREF(__pyx_t_16); + __Pyx_XGIVEREF(__pyx_t_17); + __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17); + } + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_ErrRestore(__pyx_t_3, __pyx_t_2, __pyx_t_1); + __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; + __pyx_lineno = __pyx_t_12; __pyx_clineno = __pyx_t_13; __pyx_filename = __pyx_t_14; + goto __pyx_L1_error; + } + __pyx_L5:; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":553 + * + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cdef _show_return_values(self, frame, arg): # <<<<<<<<<<<<<< + * # ELSE + * # def _show_return_values(self, frame, arg): + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_XDECREF(__pyx_t_11); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame._show_return_values", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_f_locals_back); + __Pyx_XDECREF(__pyx_v_return_values_dict); + __Pyx_XDECREF(__pyx_v_name); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":573 + * + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cdef _remove_return_values(self, py_db, frame): # <<<<<<<<<<<<<< + * # ELSE + * # def _remove_return_values(self, py_db, frame): + */ + +static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame__remove_return_values(CYTHON_UNUSED struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_py_db, PyObject *__pyx_v_frame) { + PyObject *__pyx_v_f_locals_back = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + unsigned int __pyx_t_8; + int __pyx_t_9; + PyObject *__pyx_t_10 = NULL; + PyObject *__pyx_t_11 = NULL; + int __pyx_t_12; + int __pyx_t_13; + char const *__pyx_t_14; + PyObject *__pyx_t_15 = NULL; + PyObject *__pyx_t_16 = NULL; + PyObject *__pyx_t_17 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_remove_return_values", 1); + + /* "_pydevd_bundle/pydevd_cython.pyx":577 + * # def _remove_return_values(self, py_db, frame): + * # ENDIF + * try: # <<<<<<<<<<<<<< + * try: + * # Showing return values was turned off, we should remove them from locals dict. + */ + /*try:*/ { + + /* "_pydevd_bundle/pydevd_cython.pyx":578 + * # ENDIF + * try: + * try: # <<<<<<<<<<<<<< + * # Showing return values was turned off, we should remove them from locals dict. + * # The values can be in the current frame or in the back one + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + + /* "_pydevd_bundle/pydevd_cython.pyx":581 + * # Showing return values was turned off, we should remove them from locals dict. + * # The values can be in the current frame or in the back one + * frame.f_locals.pop(RETURN_VALUES_DICT, None) # <<<<<<<<<<<<<< + * + * f_locals_back = getattr(frame.f_back, "f_locals", None) + */ + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_locals); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 581, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_pop); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 581, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_RETURN_VALUES_DICT); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 581, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_7 = NULL; + __pyx_t_8 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_8 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_t_5, Py_None}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 581, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":583 + * frame.f_locals.pop(RETURN_VALUES_DICT, None) + * + * f_locals_back = getattr(frame.f_back, "f_locals", None) # <<<<<<<<<<<<<< + * if f_locals_back is not None: + * f_locals_back.pop(RETURN_VALUES_DICT, None) + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 583, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = __Pyx_GetAttr3(__pyx_t_4, __pyx_n_s_f_locals, Py_None); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 583, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_v_f_locals_back = __pyx_t_6; + __pyx_t_6 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":584 + * + * f_locals_back = getattr(frame.f_back, "f_locals", None) + * if f_locals_back is not None: # <<<<<<<<<<<<<< + * f_locals_back.pop(RETURN_VALUES_DICT, None) + * except: + */ + __pyx_t_9 = (__pyx_v_f_locals_back != Py_None); + if (__pyx_t_9) { + + /* "_pydevd_bundle/pydevd_cython.pyx":585 + * f_locals_back = getattr(frame.f_back, "f_locals", None) + * if f_locals_back is not None: + * f_locals_back.pop(RETURN_VALUES_DICT, None) # <<<<<<<<<<<<<< + * except: + * pydev_log.exception() + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f_locals_back, __pyx_n_s_pop); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 585, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_RETURN_VALUES_DICT); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 585, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_7 = NULL; + __pyx_t_8 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_8 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_t_5, Py_None}; + __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 585, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":584 + * + * f_locals_back = getattr(frame.f_back, "f_locals", None) + * if f_locals_back is not None: # <<<<<<<<<<<<<< + * f_locals_back.pop(RETURN_VALUES_DICT, None) + * except: + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":578 + * # ENDIF + * try: + * try: # <<<<<<<<<<<<<< + * # Showing return values was turned off, we should remove them from locals dict. + * # The values can be in the current frame or in the back one + */ + } + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L11_try_end; + __pyx_L6_error:; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":586 + * if f_locals_back is not None: + * f_locals_back.pop(RETURN_VALUES_DICT, None) + * except: # <<<<<<<<<<<<<< + * pydev_log.exception() + * finally: + */ + /*except:*/ { + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame._remove_return_values", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_4, &__pyx_t_5) < 0) __PYX_ERR(0, 586, __pyx_L8_except_error) + __Pyx_XGOTREF(__pyx_t_6); + __Pyx_XGOTREF(__pyx_t_4); + __Pyx_XGOTREF(__pyx_t_5); + + /* "_pydevd_bundle/pydevd_cython.pyx":587 + * f_locals_back.pop(RETURN_VALUES_DICT, None) + * except: + * pydev_log.exception() # <<<<<<<<<<<<<< + * finally: + * f_locals_back = None + */ + __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 587, __pyx_L8_except_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_exception); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 587, __pyx_L8_except_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_t_10 = NULL; + __pyx_t_8 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_11))) { + __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_11); + if (likely(__pyx_t_10)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); + __Pyx_INCREF(__pyx_t_10); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_11, function); + __pyx_t_8 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_10, NULL}; + __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_11, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8); + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 587, __pyx_L8_except_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + } + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + goto __pyx_L7_exception_handled; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":578 + * # ENDIF + * try: + * try: # <<<<<<<<<<<<<< + * # Showing return values was turned off, we should remove them from locals dict. + * # The values can be in the current frame or in the back one + */ + __pyx_L8_except_error:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L4_error; + __pyx_L7_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + __pyx_L11_try_end:; + } + } + + /* "_pydevd_bundle/pydevd_cython.pyx":589 + * pydev_log.exception() + * finally: + * f_locals_back = None # <<<<<<<<<<<<<< + * + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + */ + /*finally:*/ { + /*normal exit:*/{ + __Pyx_INCREF(Py_None); + __Pyx_XDECREF_SET(__pyx_v_f_locals_back, Py_None); + goto __pyx_L5; + } + __pyx_L4_error:; + /*exception exit:*/{ + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1) < 0)) __Pyx_ErrFetch(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_15); + __Pyx_XGOTREF(__pyx_t_16); + __Pyx_XGOTREF(__pyx_t_17); + __pyx_t_12 = __pyx_lineno; __pyx_t_13 = __pyx_clineno; __pyx_t_14 = __pyx_filename; + { + __Pyx_INCREF(Py_None); + __Pyx_XDECREF_SET(__pyx_v_f_locals_back, Py_None); + } + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_15); + __Pyx_XGIVEREF(__pyx_t_16); + __Pyx_XGIVEREF(__pyx_t_17); + __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17); + } + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_ErrRestore(__pyx_t_3, __pyx_t_2, __pyx_t_1); + __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; + __pyx_lineno = __pyx_t_12; __pyx_clineno = __pyx_t_13; __pyx_filename = __pyx_t_14; + goto __pyx_L1_error; + } + __pyx_L5:; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":573 + * + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cdef _remove_return_values(self, py_db, frame): # <<<<<<<<<<<<<< + * # ELSE + * # def _remove_return_values(self, py_db, frame): + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_XDECREF(__pyx_t_11); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame._remove_return_values", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_f_locals_back); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":592 + * + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cdef _get_unfiltered_back_frame(self, py_db, frame): # <<<<<<<<<<<<<< + * # ELSE + * # def _get_unfiltered_back_frame(self, py_db, frame): + */ + +static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame__get_unfiltered_back_frame(CYTHON_UNUSED struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_py_db, PyObject *__pyx_v_frame) { + PyObject *__pyx_v_f = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + int __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + unsigned int __pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_get_unfiltered_back_frame", 1); + + /* "_pydevd_bundle/pydevd_cython.pyx":596 + * # def _get_unfiltered_back_frame(self, py_db, frame): + * # ENDIF + * f = frame.f_back # <<<<<<<<<<<<<< + * while f is not None: + * if not py_db.is_files_filter_enabled: + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 596, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_f = __pyx_t_1; + __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":597 + * # ENDIF + * f = frame.f_back + * while f is not None: # <<<<<<<<<<<<<< + * if not py_db.is_files_filter_enabled: + * return f + */ + while (1) { + __pyx_t_2 = (__pyx_v_f != Py_None); + if (!__pyx_t_2) break; + + /* "_pydevd_bundle/pydevd_cython.pyx":598 + * f = frame.f_back + * while f is not None: + * if not py_db.is_files_filter_enabled: # <<<<<<<<<<<<<< + * return f + * + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_is_files_filter_enabled); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 598, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 598, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_3 = (!__pyx_t_2); + if (__pyx_t_3) { + + /* "_pydevd_bundle/pydevd_cython.pyx":599 + * while f is not None: + * if not py_db.is_files_filter_enabled: + * return f # <<<<<<<<<<<<<< + * + * else: + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_f); + __pyx_r = __pyx_v_f; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":598 + * f = frame.f_back + * while f is not None: + * if not py_db.is_files_filter_enabled: # <<<<<<<<<<<<<< + * return f + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":602 + * + * else: + * if py_db.apply_files_filter(f, f.f_code.co_filename, False): # <<<<<<<<<<<<<< + * f = f.f_back + * + */ + /*else*/ { + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_apply_files_filter); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 602, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_f_code); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 602, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 602, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[4] = {__pyx_t_5, __pyx_v_f, __pyx_t_6, Py_False}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_7, 3+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 602, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 602, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_3) { + + /* "_pydevd_bundle/pydevd_cython.pyx":603 + * else: + * if py_db.apply_files_filter(f, f.f_code.co_filename, False): + * f = f.f_back # <<<<<<<<<<<<<< + * + * else: + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_f_back); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 603, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF_SET(__pyx_v_f, __pyx_t_1); + __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":602 + * + * else: + * if py_db.apply_files_filter(f, f.f_code.co_filename, False): # <<<<<<<<<<<<<< + * f = f.f_back + * + */ + goto __pyx_L6; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":606 + * + * else: + * return f # <<<<<<<<<<<<<< + * + * return f + */ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_f); + __pyx_r = __pyx_v_f; + goto __pyx_L0; + } + __pyx_L6:; + } + } + + /* "_pydevd_bundle/pydevd_cython.pyx":608 + * return f + * + * return f # <<<<<<<<<<<<<< + * + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_f); + __pyx_r = __pyx_v_f; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":592 + * + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cdef _get_unfiltered_back_frame(self, py_db, frame): # <<<<<<<<<<<<<< + * # ELSE + * # def _get_unfiltered_back_frame(self, py_db, frame): + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame._get_unfiltered_back_frame", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_f); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":611 + * + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cdef _is_same_frame(self, target_frame, current_frame): # <<<<<<<<<<<<<< + * cdef PyDBAdditionalThreadInfo info; + * # ELSE + */ + +static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame__is_same_frame(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_target_frame, PyObject *__pyx_v_current_frame) { + struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_info = 0; + PyObject *__pyx_v_f = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_is_same_frame", 1); + + /* "_pydevd_bundle/pydevd_cython.pyx":616 + * # def _is_same_frame(self, target_frame, current_frame): + * # ENDIF + * if target_frame is current_frame: # <<<<<<<<<<<<<< + * return True + * + */ + __pyx_t_1 = (__pyx_v_target_frame == __pyx_v_current_frame); + if (__pyx_t_1) { + + /* "_pydevd_bundle/pydevd_cython.pyx":617 + * # ENDIF + * if target_frame is current_frame: + * return True # <<<<<<<<<<<<<< + * + * info = self._args[2] + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(Py_True); + __pyx_r = Py_True; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":616 + * # def _is_same_frame(self, target_frame, current_frame): + * # ENDIF + * if target_frame is current_frame: # <<<<<<<<<<<<<< + * return True + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":619 + * return True + * + * info = self._args[2] # <<<<<<<<<<<<<< + * if info.pydev_use_scoped_step_frame: + * # If using scoped step we don't check the target, we just need to check + */ + if (unlikely(__pyx_v_self->_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 619, __pyx_L1_error) + } + __pyx_t_2 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 619, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo))))) __PYX_ERR(0, 619, __pyx_L1_error) + __pyx_v_info = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_t_2); + __pyx_t_2 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":620 + * + * info = self._args[2] + * if info.pydev_use_scoped_step_frame: # <<<<<<<<<<<<<< + * # If using scoped step we don't check the target, we just need to check + * # if the current matches the same heuristic where the target was defined. + */ + if (__pyx_v_info->pydev_use_scoped_step_frame) { + + /* "_pydevd_bundle/pydevd_cython.pyx":623 + * # If using scoped step we don't check the target, we just need to check + * # if the current matches the same heuristic where the target was defined. + * if target_frame is not None and current_frame is not None: # <<<<<<<<<<<<<< + * if target_frame.f_code.co_filename == current_frame.f_code.co_filename: + * # The co_name may be different (it may include the line number), but + */ + __pyx_t_3 = (__pyx_v_target_frame != Py_None); + if (__pyx_t_3) { + } else { + __pyx_t_1 = __pyx_t_3; + goto __pyx_L6_bool_binop_done; + } + __pyx_t_3 = (__pyx_v_current_frame != Py_None); + __pyx_t_1 = __pyx_t_3; + __pyx_L6_bool_binop_done:; + if (__pyx_t_1) { + + /* "_pydevd_bundle/pydevd_cython.pyx":624 + * # if the current matches the same heuristic where the target was defined. + * if target_frame is not None and current_frame is not None: + * if target_frame.f_code.co_filename == current_frame.f_code.co_filename: # <<<<<<<<<<<<<< + * # The co_name may be different (it may include the line number), but + * # the filename must still be the same. + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_target_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 624, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 624, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_current_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 624, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 624, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyObject_RichCompare(__pyx_t_4, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 624, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 624, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__pyx_t_1) { + + /* "_pydevd_bundle/pydevd_cython.pyx":627 + * # The co_name may be different (it may include the line number), but + * # the filename must still be the same. + * f = current_frame.f_back # <<<<<<<<<<<<<< + * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]: + * f = f.f_back + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_current_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 627, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_v_f = __pyx_t_2; + __pyx_t_2 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":628 + * # the filename must still be the same. + * f = current_frame.f_back + * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]: # <<<<<<<<<<<<<< + * f = f.f_back + * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]: + */ + __pyx_t_3 = (__pyx_v_f != Py_None); + if (__pyx_t_3) { + } else { + __pyx_t_1 = __pyx_t_3; + goto __pyx_L10_bool_binop_done; + } + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_f_code); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 628, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_co_name); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 628, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_PYDEVD_IPYTHON_CONTEXT); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 628, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_2, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 628, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyObject_RichCompare(__pyx_t_5, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 628, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 628, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_1 = __pyx_t_3; + __pyx_L10_bool_binop_done:; + if (__pyx_t_1) { + + /* "_pydevd_bundle/pydevd_cython.pyx":629 + * f = current_frame.f_back + * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]: + * f = f.f_back # <<<<<<<<<<<<<< + * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]: + * return True + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_f_back); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 629, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF_SET(__pyx_v_f, __pyx_t_2); + __pyx_t_2 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":630 + * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]: + * f = f.f_back + * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]: # <<<<<<<<<<<<<< + * return True + * + */ + __pyx_t_3 = (__pyx_v_f != Py_None); + if (__pyx_t_3) { + } else { + __pyx_t_1 = __pyx_t_3; + goto __pyx_L13_bool_binop_done; + } + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_f_code); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 630, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_co_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 630, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_PYDEVD_IPYTHON_CONTEXT); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 630, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_2, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 630, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyObject_RichCompare(__pyx_t_4, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 630, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 630, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_1 = __pyx_t_3; + __pyx_L13_bool_binop_done:; + if (__pyx_t_1) { + + /* "_pydevd_bundle/pydevd_cython.pyx":631 + * f = f.f_back + * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]: + * return True # <<<<<<<<<<<<<< + * + * return False + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(Py_True); + __pyx_r = Py_True; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":630 + * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]: + * f = f.f_back + * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]: # <<<<<<<<<<<<<< + * return True + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":628 + * # the filename must still be the same. + * f = current_frame.f_back + * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]: # <<<<<<<<<<<<<< + * f = f.f_back + * if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]: + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":624 + * # if the current matches the same heuristic where the target was defined. + * if target_frame is not None and current_frame is not None: + * if target_frame.f_code.co_filename == current_frame.f_code.co_filename: # <<<<<<<<<<<<<< + * # The co_name may be different (it may include the line number), but + * # the filename must still be the same. + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":623 + * # If using scoped step we don't check the target, we just need to check + * # if the current matches the same heuristic where the target was defined. + * if target_frame is not None and current_frame is not None: # <<<<<<<<<<<<<< + * if target_frame.f_code.co_filename == current_frame.f_code.co_filename: + * # The co_name may be different (it may include the line number), but + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":620 + * + * info = self._args[2] + * if info.pydev_use_scoped_step_frame: # <<<<<<<<<<<<<< + * # If using scoped step we don't check the target, we just need to check + * # if the current matches the same heuristic where the target was defined. + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":633 + * return True + * + * return False # <<<<<<<<<<<<<< + * + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(Py_False); + __pyx_r = Py_False; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":611 + * + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cdef _is_same_frame(self, target_frame, current_frame): # <<<<<<<<<<<<<< + * cdef PyDBAdditionalThreadInfo info; + * # ELSE + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame._is_same_frame", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_info); + __Pyx_XDECREF(__pyx_v_f); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":636 + * + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cpdef trace_dispatch(self, frame, str event, arg): # <<<<<<<<<<<<<< + * cdef tuple abs_path_canonical_path_and_base; + * cdef bint is_exception_event; + */ + +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_11trace_dispatch(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_trace_dispatch(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_frame, PyObject *__pyx_v_event, PyObject *__pyx_v_arg, int __pyx_skip_dispatch) { + PyObject *__pyx_v_abs_path_canonical_path_and_base = 0; + int __pyx_v_is_exception_event; + int __pyx_v_has_exception_breakpoints; + int __pyx_v_can_skip; + int __pyx_v_stop; + int __pyx_v_stop_on_plugin_breakpoint; + struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_info = 0; + int __pyx_v_step_cmd; + int __pyx_v_line; + int __pyx_v_is_line; + int __pyx_v_is_call; + int __pyx_v_is_return; + int __pyx_v_should_stop; + PyObject *__pyx_v_breakpoints_for_file = 0; + PyObject *__pyx_v_stop_info = 0; + PyObject *__pyx_v_curr_func_name = 0; + PyObject *__pyx_v_frame_skips_cache = 0; + PyObject *__pyx_v_frame_cache_key = 0; + PyObject *__pyx_v_line_cache_key = 0; + int __pyx_v_breakpoints_in_line_cache; + int __pyx_v_breakpoints_in_frame_cache; + int __pyx_v_has_breakpoint_in_frame; + int __pyx_v_bp_line; + PyObject *__pyx_v_bp = 0; + int __pyx_v_pydev_smart_parent_offset; + int __pyx_v_pydev_smart_child_offset; + PyObject *__pyx_v_pydev_smart_step_into_variants = 0; + PyObject *__pyx_v_py_db = NULL; + PyObject *__pyx_v_thread = NULL; + PyObject *__pyx_v_plugin_manager = NULL; + PyObject *__pyx_v_stop_frame = NULL; + PyObject *__pyx_v_function_breakpoint_on_call_event = NULL; + PyObject *__pyx_v_returns_cache_key = NULL; + PyObject *__pyx_v_return_lines = NULL; + PyObject *__pyx_v_x = NULL; + PyObject *__pyx_v_f = NULL; + PyObject *__pyx_v_exc_info = NULL; + PyObject *__pyx_v_func_lines = NULL; + PyObject *__pyx_v_offset_and_lineno = NULL; + PyObject *__pyx_v_breakpoint = NULL; + PyObject *__pyx_v_stop_reason = NULL; + PyObject *__pyx_v_bp_type = NULL; + PyObject *__pyx_v_new_frame = NULL; + PyObject *__pyx_v_result = NULL; + PyObject *__pyx_v_eval_result = NULL; + PyObject *__pyx_v_cmd = NULL; + PyObject *__pyx_v_exc = NULL; + long __pyx_v_should_skip; + PyObject *__pyx_v_plugin_stop = NULL; + PyObject *__pyx_v_force_check_project_scope = NULL; + PyObject *__pyx_v_filename = NULL; + PyObject *__pyx_v_f2 = NULL; + PyObject *__pyx_v_back = NULL; + PyObject *__pyx_v_smart_step_into_variant = NULL; + PyObject *__pyx_v_children_variants = NULL; + PyObject *__pyx_v_f_code = NULL; + PyObject *__pyx_v_back_absolute_filename = NULL; + CYTHON_UNUSED PyObject *__pyx_v__ = NULL; + PyObject *__pyx_v_base = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + unsigned int __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + int __pyx_t_9; + int __pyx_t_10; + int __pyx_t_11; + int __pyx_t_12; + Py_ssize_t __pyx_t_13; + PyObject *(*__pyx_t_14)(PyObject *); + PyObject *(*__pyx_t_15)(PyObject *); + int __pyx_t_16; + PyObject *__pyx_t_17 = NULL; + PyObject *__pyx_t_18 = NULL; + PyObject *__pyx_t_19 = NULL; + int __pyx_t_20; + Py_ssize_t __pyx_t_21; + PyObject *__pyx_t_22 = NULL; + char const *__pyx_t_23; + PyObject *__pyx_t_24 = NULL; + PyObject *__pyx_t_25 = NULL; + PyObject *__pyx_t_26 = NULL; + PyObject *__pyx_t_27 = NULL; + PyObject *__pyx_t_28 = NULL; + PyObject *__pyx_t_29 = NULL; + char const *__pyx_t_30; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("trace_dispatch", 0); + __Pyx_INCREF(__pyx_v_frame); + /* Check if called by wrapper */ + if (unlikely(__pyx_skip_dispatch)) ; + /* Check if overridden in Python */ + else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) { + #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS + static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT; + if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) { + PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self)); + #endif + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 636, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!__Pyx_IsSameCFunction(__pyx_t_1, (void*) __pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_11trace_dispatch)) { + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_t_1); + __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[4] = {__pyx_t_4, __pyx_v_frame, __pyx_v_event, __pyx_v_arg}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 636, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + goto __pyx_L0; + } + #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS + __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self)); + __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self)); + if (unlikely(__pyx_typedict_guard != __pyx_tp_dict_version)) { + __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT; + } + #endif + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS + } + #endif + } + + /* "_pydevd_bundle/pydevd_cython.pyx":676 + * # generation be better split among what each part does). + * + * try: # <<<<<<<<<<<<<< + * # DEBUG = '_debugger_case_yield_from.py' in frame.f_code.co_filename + * py_db, abs_path_canonical_path_and_base, info, thread, frame_skips_cache, frame_cache_key = self._args + */ + /*try:*/ { + + /* "_pydevd_bundle/pydevd_cython.pyx":678 + * try: + * # DEBUG = '_debugger_case_yield_from.py' in frame.f_code.co_filename + * py_db, abs_path_canonical_path_and_base, info, thread, frame_skips_cache, frame_cache_key = self._args # <<<<<<<<<<<<<< + * # if DEBUG: print('frame trace_dispatch %s %s %s %s %s %s, stop: %s' % (frame.f_lineno, frame.f_code.co_name, frame.f_code.co_filename, event, constant_to_str(info.pydev_step_cmd), arg, info.pydev_step_stop)) + * info.is_tracing += 1 + */ + __pyx_t_1 = __pyx_v_self->_args; + __Pyx_INCREF(__pyx_t_1); + if (likely(__pyx_t_1 != Py_None)) { + PyObject* sequence = __pyx_t_1; + Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); + if (unlikely(size != 6)) { + if (size > 6) __Pyx_RaiseTooManyValuesError(6); + else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); + __PYX_ERR(0, 678, __pyx_L4_error) + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); + __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); + __pyx_t_4 = PyTuple_GET_ITEM(sequence, 2); + __pyx_t_6 = PyTuple_GET_ITEM(sequence, 3); + __pyx_t_7 = PyTuple_GET_ITEM(sequence, 4); + __pyx_t_8 = PyTuple_GET_ITEM(sequence, 5); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(__pyx_t_8); + #else + { + Py_ssize_t i; + PyObject** temps[6] = {&__pyx_t_2,&__pyx_t_3,&__pyx_t_4,&__pyx_t_6,&__pyx_t_7,&__pyx_t_8}; + for (i=0; i < 6; i++) { + PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 678, __pyx_L4_error) + __Pyx_GOTREF(item); + *(temps[i]) = item; + } + } + #endif + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } else { + __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(0, 678, __pyx_L4_error) + } + if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_3))) __PYX_ERR(0, 678, __pyx_L4_error) + if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo))))) __PYX_ERR(0, 678, __pyx_L4_error) + if (!(likely(PyDict_CheckExact(__pyx_t_7))||((__pyx_t_7) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_7))) __PYX_ERR(0, 678, __pyx_L4_error) + __pyx_v_py_db = __pyx_t_2; + __pyx_t_2 = 0; + __pyx_v_abs_path_canonical_path_and_base = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + __pyx_v_info = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_t_4); + __pyx_t_4 = 0; + __pyx_v_thread = __pyx_t_6; + __pyx_t_6 = 0; + __pyx_v_frame_skips_cache = ((PyObject*)__pyx_t_7); + __pyx_t_7 = 0; + __pyx_v_frame_cache_key = __pyx_t_8; + __pyx_t_8 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":680 + * py_db, abs_path_canonical_path_and_base, info, thread, frame_skips_cache, frame_cache_key = self._args + * # if DEBUG: print('frame trace_dispatch %s %s %s %s %s %s, stop: %s' % (frame.f_lineno, frame.f_code.co_name, frame.f_code.co_filename, event, constant_to_str(info.pydev_step_cmd), arg, info.pydev_step_stop)) + * info.is_tracing += 1 # <<<<<<<<<<<<<< + * + * # TODO: This shouldn't be needed. The fact that frame.f_lineno + */ + __pyx_v_info->is_tracing = (__pyx_v_info->is_tracing + 1); + + /* "_pydevd_bundle/pydevd_cython.pyx":685 + * # is None seems like a bug in Python 3.11. + * # Reported in: https://github.com/python/cpython/issues/94485 + * line = frame.f_lineno or 0 # Workaround or case where frame.f_lineno is None # <<<<<<<<<<<<<< + * line_cache_key = (frame_cache_key, line) + * + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 685, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 685, __pyx_L4_error) + if (!__pyx_t_10) { + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } else { + __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 685, __pyx_L4_error) + __pyx_t_9 = __pyx_t_11; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + goto __pyx_L6_bool_binop_done; + } + __pyx_t_9 = 0; + __pyx_L6_bool_binop_done:; + __pyx_v_line = __pyx_t_9; + + /* "_pydevd_bundle/pydevd_cython.pyx":686 + * # Reported in: https://github.com/python/cpython/issues/94485 + * line = frame.f_lineno or 0 # Workaround or case where frame.f_lineno is None + * line_cache_key = (frame_cache_key, line) # <<<<<<<<<<<<<< + * + * if py_db.pydb_disposed: + */ + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_line); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 686, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 686, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_INCREF(__pyx_v_frame_cache_key); + __Pyx_GIVEREF(__pyx_v_frame_cache_key); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_frame_cache_key)) __PYX_ERR(0, 686, __pyx_L4_error); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_1)) __PYX_ERR(0, 686, __pyx_L4_error); + __pyx_t_1 = 0; + __pyx_v_line_cache_key = ((PyObject*)__pyx_t_8); + __pyx_t_8 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":688 + * line_cache_key = (frame_cache_key, line) + * + * if py_db.pydb_disposed: # <<<<<<<<<<<<<< + * return None if event == "call" else NO_FTRACE + * + */ + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_pydb_disposed); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 688, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 688, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":689 + * + * if py_db.pydb_disposed: + * return None if event == "call" else NO_FTRACE # <<<<<<<<<<<<<< + * + * plugin_manager = py_db.plugin + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_10 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_call, Py_EQ)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 689, __pyx_L4_error) + if (__pyx_t_10) { + __Pyx_INCREF(Py_None); + __pyx_t_8 = Py_None; + } else { + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 689, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_8 = __pyx_t_1; + __pyx_t_1 = 0; + } + __pyx_r = __pyx_t_8; + __pyx_t_8 = 0; + goto __pyx_L3_return; + + /* "_pydevd_bundle/pydevd_cython.pyx":688 + * line_cache_key = (frame_cache_key, line) + * + * if py_db.pydb_disposed: # <<<<<<<<<<<<<< + * return None if event == "call" else NO_FTRACE + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":691 + * return None if event == "call" else NO_FTRACE + * + * plugin_manager = py_db.plugin # <<<<<<<<<<<<<< + * has_exception_breakpoints = ( + * py_db.break_on_caught_exceptions or py_db.break_on_user_uncaught_exceptions or py_db.has_plugin_exception_breaks + */ + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_plugin); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 691, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_v_plugin_manager = __pyx_t_8; + __pyx_t_8 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":693 + * plugin_manager = py_db.plugin + * has_exception_breakpoints = ( + * py_db.break_on_caught_exceptions or py_db.break_on_user_uncaught_exceptions or py_db.has_plugin_exception_breaks # <<<<<<<<<<<<<< + * ) + * + */ + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_break_on_caught_exceptions); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 693, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 693, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (!__pyx_t_12) { + } else { + __pyx_t_10 = __pyx_t_12; + goto __pyx_L9_bool_binop_done; + } + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_break_on_user_uncaught_exception); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 693, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 693, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (!__pyx_t_12) { + } else { + __pyx_t_10 = __pyx_t_12; + goto __pyx_L9_bool_binop_done; + } + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_has_plugin_exception_breaks); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 693, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 693, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_10 = __pyx_t_12; + __pyx_L9_bool_binop_done:; + __pyx_v_has_exception_breakpoints = __pyx_t_10; + + /* "_pydevd_bundle/pydevd_cython.pyx":696 + * ) + * + * stop_frame = info.pydev_step_stop # <<<<<<<<<<<<<< + * step_cmd = info.pydev_step_cmd + * function_breakpoint_on_call_event = None + */ + __pyx_t_8 = __pyx_v_info->pydev_step_stop; + __Pyx_INCREF(__pyx_t_8); + __pyx_v_stop_frame = __pyx_t_8; + __pyx_t_8 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":697 + * + * stop_frame = info.pydev_step_stop + * step_cmd = info.pydev_step_cmd # <<<<<<<<<<<<<< + * function_breakpoint_on_call_event = None + * + */ + __pyx_t_9 = __pyx_v_info->pydev_step_cmd; + __pyx_v_step_cmd = __pyx_t_9; + + /* "_pydevd_bundle/pydevd_cython.pyx":698 + * stop_frame = info.pydev_step_stop + * step_cmd = info.pydev_step_cmd + * function_breakpoint_on_call_event = None # <<<<<<<<<<<<<< + * + * if frame.f_code.co_flags & 0xA0: # 0xa0 == CO_GENERATOR = 0x20 | CO_COROUTINE = 0x80 + */ + __Pyx_INCREF(Py_None); + __pyx_v_function_breakpoint_on_call_event = Py_None; + + /* "_pydevd_bundle/pydevd_cython.pyx":700 + * function_breakpoint_on_call_event = None + * + * if frame.f_code.co_flags & 0xA0: # 0xa0 == CO_GENERATOR = 0x20 | CO_COROUTINE = 0x80 # <<<<<<<<<<<<<< + * # Dealing with coroutines and generators: + * # When in a coroutine we change the perceived event to the debugger because + */ + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 700, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_co_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 700, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = __Pyx_PyInt_AndObjC(__pyx_t_1, __pyx_int_160, 0xA0, 0, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 700, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 700, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":704 + * # When in a coroutine we change the perceived event to the debugger because + * # a call, StopIteration exception and return are usually just pausing/unpausing it. + * if event == "line": # <<<<<<<<<<<<<< + * is_line = True + * is_call = False + */ + __pyx_t_10 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_line, Py_EQ)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 704, __pyx_L4_error) + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":705 + * # a call, StopIteration exception and return are usually just pausing/unpausing it. + * if event == "line": + * is_line = True # <<<<<<<<<<<<<< + * is_call = False + * is_return = False + */ + __pyx_v_is_line = 1; + + /* "_pydevd_bundle/pydevd_cython.pyx":706 + * if event == "line": + * is_line = True + * is_call = False # <<<<<<<<<<<<<< + * is_return = False + * is_exception_event = False + */ + __pyx_v_is_call = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":707 + * is_line = True + * is_call = False + * is_return = False # <<<<<<<<<<<<<< + * is_exception_event = False + * + */ + __pyx_v_is_return = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":708 + * is_call = False + * is_return = False + * is_exception_event = False # <<<<<<<<<<<<<< + * + * elif event == "return": + */ + __pyx_v_is_exception_event = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":704 + * # When in a coroutine we change the perceived event to the debugger because + * # a call, StopIteration exception and return are usually just pausing/unpausing it. + * if event == "line": # <<<<<<<<<<<<<< + * is_line = True + * is_call = False + */ + goto __pyx_L13; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":710 + * is_exception_event = False + * + * elif event == "return": # <<<<<<<<<<<<<< + * is_line = False + * is_call = False + */ + __pyx_t_10 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_return, Py_EQ)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 710, __pyx_L4_error) + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":711 + * + * elif event == "return": + * is_line = False # <<<<<<<<<<<<<< + * is_call = False + * is_return = True + */ + __pyx_v_is_line = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":712 + * elif event == "return": + * is_line = False + * is_call = False # <<<<<<<<<<<<<< + * is_return = True + * is_exception_event = False + */ + __pyx_v_is_call = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":713 + * is_line = False + * is_call = False + * is_return = True # <<<<<<<<<<<<<< + * is_exception_event = False + * + */ + __pyx_v_is_return = 1; + + /* "_pydevd_bundle/pydevd_cython.pyx":714 + * is_call = False + * is_return = True + * is_exception_event = False # <<<<<<<<<<<<<< + * + * returns_cache_key = (frame_cache_key, "returns") + */ + __pyx_v_is_exception_event = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":716 + * is_exception_event = False + * + * returns_cache_key = (frame_cache_key, "returns") # <<<<<<<<<<<<<< + * return_lines = frame_skips_cache.get(returns_cache_key) + * if return_lines is None: + */ + __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 716, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_INCREF(__pyx_v_frame_cache_key); + __Pyx_GIVEREF(__pyx_v_frame_cache_key); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_frame_cache_key)) __PYX_ERR(0, 716, __pyx_L4_error); + __Pyx_INCREF(__pyx_n_s_returns); + __Pyx_GIVEREF(__pyx_n_s_returns); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_n_s_returns)) __PYX_ERR(0, 716, __pyx_L4_error); + __pyx_v_returns_cache_key = ((PyObject*)__pyx_t_8); + __pyx_t_8 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":717 + * + * returns_cache_key = (frame_cache_key, "returns") + * return_lines = frame_skips_cache.get(returns_cache_key) # <<<<<<<<<<<<<< + * if return_lines is None: + * # Note: we're collecting the return lines by inspecting the bytecode as + */ + if (unlikely(__pyx_v_frame_skips_cache == Py_None)) { + PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get"); + __PYX_ERR(0, 717, __pyx_L4_error) + } + __pyx_t_8 = __Pyx_PyDict_GetItemDefault(__pyx_v_frame_skips_cache, __pyx_v_returns_cache_key, Py_None); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 717, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_v_return_lines = __pyx_t_8; + __pyx_t_8 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":718 + * returns_cache_key = (frame_cache_key, "returns") + * return_lines = frame_skips_cache.get(returns_cache_key) + * if return_lines is None: # <<<<<<<<<<<<<< + * # Note: we're collecting the return lines by inspecting the bytecode as + * # there are multiple returns and multiple stop iterations when awaiting and + */ + __pyx_t_10 = (__pyx_v_return_lines == Py_None); + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":723 + * # it doesn't give any clear indication when a coroutine or generator is + * # finishing or just pausing. + * return_lines = set() # <<<<<<<<<<<<<< + * for x in py_db.collect_return_info(frame.f_code): + * # Note: cython does not support closures in cpdefs (so we can't use + */ + __pyx_t_8 = PySet_New(0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 723, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF_SET(__pyx_v_return_lines, __pyx_t_8); + __pyx_t_8 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":724 + * # finishing or just pausing. + * return_lines = set() + * for x in py_db.collect_return_info(frame.f_code): # <<<<<<<<<<<<<< + * # Note: cython does not support closures in cpdefs (so we can't use + * # a list comprehension). + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_collect_return_info); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 724, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 724, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_6 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_7}; + __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 724, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + if (likely(PyList_CheckExact(__pyx_t_8)) || PyTuple_CheckExact(__pyx_t_8)) { + __pyx_t_1 = __pyx_t_8; __Pyx_INCREF(__pyx_t_1); + __pyx_t_13 = 0; + __pyx_t_14 = NULL; + } else { + __pyx_t_13 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 724, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_14 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 724, __pyx_L4_error) + } + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + for (;;) { + if (likely(!__pyx_t_14)) { + if (likely(PyList_CheckExact(__pyx_t_1))) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); + #if !CYTHON_ASSUME_SAFE_MACROS + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 724, __pyx_L4_error) + #endif + if (__pyx_t_13 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_8 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_13); __Pyx_INCREF(__pyx_t_8); __pyx_t_13++; if (unlikely((0 < 0))) __PYX_ERR(0, 724, __pyx_L4_error) + #else + __pyx_t_8 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 724, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + #endif + } else { + { + Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1); + #if !CYTHON_ASSUME_SAFE_MACROS + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 724, __pyx_L4_error) + #endif + if (__pyx_t_13 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_13); __Pyx_INCREF(__pyx_t_8); __pyx_t_13++; if (unlikely((0 < 0))) __PYX_ERR(0, 724, __pyx_L4_error) + #else + __pyx_t_8 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 724, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + #endif + } + } else { + __pyx_t_8 = __pyx_t_14(__pyx_t_1); + if (unlikely(!__pyx_t_8)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(0, 724, __pyx_L4_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_8); + } + __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_8); + __pyx_t_8 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":727 + * # Note: cython does not support closures in cpdefs (so we can't use + * # a list comprehension). + * return_lines.add(x.return_line) # <<<<<<<<<<<<<< + * + * frame_skips_cache[returns_cache_key] = return_lines + */ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_return_lines, __pyx_n_s_add); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 727, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_return_line); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 727, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_6}; + __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 727, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":724 + * # finishing or just pausing. + * return_lines = set() + * for x in py_db.collect_return_info(frame.f_code): # <<<<<<<<<<<<<< + * # Note: cython does not support closures in cpdefs (so we can't use + * # a list comprehension). + */ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":729 + * return_lines.add(x.return_line) + * + * frame_skips_cache[returns_cache_key] = return_lines # <<<<<<<<<<<<<< + * + * if line not in return_lines: + */ + if (unlikely(__pyx_v_frame_skips_cache == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 729, __pyx_L4_error) + } + if (unlikely((PyDict_SetItem(__pyx_v_frame_skips_cache, __pyx_v_returns_cache_key, __pyx_v_return_lines) < 0))) __PYX_ERR(0, 729, __pyx_L4_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":718 + * returns_cache_key = (frame_cache_key, "returns") + * return_lines = frame_skips_cache.get(returns_cache_key) + * if return_lines is None: # <<<<<<<<<<<<<< + * # Note: we're collecting the return lines by inspecting the bytecode as + * # there are multiple returns and multiple stop iterations when awaiting and + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":731 + * frame_skips_cache[returns_cache_key] = return_lines + * + * if line not in return_lines: # <<<<<<<<<<<<<< + * # Not really a return (coroutine/generator paused). + * return self.trace_dispatch + */ + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_line); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 731, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_10 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_v_return_lines, Py_NE)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 731, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":733 + * if line not in return_lines: + * # Not really a return (coroutine/generator paused). + * return self.trace_dispatch # <<<<<<<<<<<<<< + * else: + * if self.exc_info: + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 733, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L3_return; + + /* "_pydevd_bundle/pydevd_cython.pyx":731 + * frame_skips_cache[returns_cache_key] = return_lines + * + * if line not in return_lines: # <<<<<<<<<<<<<< + * # Not really a return (coroutine/generator paused). + * return self.trace_dispatch + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":735 + * return self.trace_dispatch + * else: + * if self.exc_info: # <<<<<<<<<<<<<< + * self.handle_user_exception(frame) + * return self.trace_dispatch + */ + /*else*/ { + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_self->exc_info); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 735, __pyx_L4_error) + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":736 + * else: + * if self.exc_info: + * self.handle_user_exception(frame) # <<<<<<<<<<<<<< + * return self.trace_dispatch + * + */ + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_handle_user_exception); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 736, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_7 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_frame}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 736, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":737 + * if self.exc_info: + * self.handle_user_exception(frame) + * return self.trace_dispatch # <<<<<<<<<<<<<< + * + * # Tricky handling: usually when we're on a frame which is about to exit + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 737, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L3_return; + + /* "_pydevd_bundle/pydevd_cython.pyx":735 + * return self.trace_dispatch + * else: + * if self.exc_info: # <<<<<<<<<<<<<< + * self.handle_user_exception(frame) + * return self.trace_dispatch + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":755 + * # as the return shouldn't mean that we've actually completed executing a + * # frame in this case). + * if stop_frame is frame and not info.pydev_use_scoped_step_frame: # <<<<<<<<<<<<<< + * if step_cmd in (108, 159, 107, 144): + * f = self._get_unfiltered_back_frame(py_db, frame) + */ + __pyx_t_12 = (__pyx_v_stop_frame == __pyx_v_frame); + if (__pyx_t_12) { + } else { + __pyx_t_10 = __pyx_t_12; + goto __pyx_L21_bool_binop_done; + } + __pyx_t_12 = (!__pyx_v_info->pydev_use_scoped_step_frame); + __pyx_t_10 = __pyx_t_12; + __pyx_L21_bool_binop_done:; + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":756 + * # frame in this case). + * if stop_frame is frame and not info.pydev_use_scoped_step_frame: + * if step_cmd in (108, 159, 107, 144): # <<<<<<<<<<<<<< + * f = self._get_unfiltered_back_frame(py_db, frame) + * if f is not None: + */ + switch (__pyx_v_step_cmd) { + case 0x6C: + case 0x9F: + case 0x6B: + case 0x90: + + /* "_pydevd_bundle/pydevd_cython.pyx":757 + * if stop_frame is frame and not info.pydev_use_scoped_step_frame: + * if step_cmd in (108, 159, 107, 144): + * f = self._get_unfiltered_back_frame(py_db, frame) # <<<<<<<<<<<<<< + * if f is not None: + * info.pydev_step_cmd = 206 + */ + __pyx_t_1 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_get_unfiltered_back_frame(__pyx_v_self, __pyx_v_py_db, __pyx_v_frame); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 757, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_f = __pyx_t_1; + __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":758 + * if step_cmd in (108, 159, 107, 144): + * f = self._get_unfiltered_back_frame(py_db, frame) + * if f is not None: # <<<<<<<<<<<<<< + * info.pydev_step_cmd = 206 + * info.pydev_step_stop = f + */ + __pyx_t_10 = (__pyx_v_f != Py_None); + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":759 + * f = self._get_unfiltered_back_frame(py_db, frame) + * if f is not None: + * info.pydev_step_cmd = 206 # <<<<<<<<<<<<<< + * info.pydev_step_stop = f + * else: + */ + __pyx_v_info->pydev_step_cmd = 0xCE; + + /* "_pydevd_bundle/pydevd_cython.pyx":760 + * if f is not None: + * info.pydev_step_cmd = 206 + * info.pydev_step_stop = f # <<<<<<<<<<<<<< + * else: + * if step_cmd == 108: + */ + __Pyx_INCREF(__pyx_v_f); + __Pyx_GIVEREF(__pyx_v_f); + __Pyx_GOTREF(__pyx_v_info->pydev_step_stop); + __Pyx_DECREF(__pyx_v_info->pydev_step_stop); + __pyx_v_info->pydev_step_stop = __pyx_v_f; + + /* "_pydevd_bundle/pydevd_cython.pyx":758 + * if step_cmd in (108, 159, 107, 144): + * f = self._get_unfiltered_back_frame(py_db, frame) + * if f is not None: # <<<<<<<<<<<<<< + * info.pydev_step_cmd = 206 + * info.pydev_step_stop = f + */ + goto __pyx_L23; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":762 + * info.pydev_step_stop = f + * else: + * if step_cmd == 108: # <<<<<<<<<<<<<< + * info.pydev_step_cmd = 107 + * info.pydev_step_stop = None + */ + /*else*/ { + + /* "_pydevd_bundle/pydevd_cython.pyx":766 + * info.pydev_step_stop = None + * + * elif step_cmd == 159: # <<<<<<<<<<<<<< + * info.pydev_step_cmd = 144 + * info.pydev_step_stop = None + */ + switch (__pyx_v_step_cmd) { + case 0x6C: + + /* "_pydevd_bundle/pydevd_cython.pyx":763 + * else: + * if step_cmd == 108: + * info.pydev_step_cmd = 107 # <<<<<<<<<<<<<< + * info.pydev_step_stop = None + * + */ + __pyx_v_info->pydev_step_cmd = 0x6B; + + /* "_pydevd_bundle/pydevd_cython.pyx":764 + * if step_cmd == 108: + * info.pydev_step_cmd = 107 + * info.pydev_step_stop = None # <<<<<<<<<<<<<< + * + * elif step_cmd == 159: + */ + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_info->pydev_step_stop); + __Pyx_DECREF(__pyx_v_info->pydev_step_stop); + __pyx_v_info->pydev_step_stop = Py_None; + + /* "_pydevd_bundle/pydevd_cython.pyx":762 + * info.pydev_step_stop = f + * else: + * if step_cmd == 108: # <<<<<<<<<<<<<< + * info.pydev_step_cmd = 107 + * info.pydev_step_stop = None + */ + break; + case 0x9F: + + /* "_pydevd_bundle/pydevd_cython.pyx":767 + * + * elif step_cmd == 159: + * info.pydev_step_cmd = 144 # <<<<<<<<<<<<<< + * info.pydev_step_stop = None + * + */ + __pyx_v_info->pydev_step_cmd = 0x90; + + /* "_pydevd_bundle/pydevd_cython.pyx":768 + * elif step_cmd == 159: + * info.pydev_step_cmd = 144 + * info.pydev_step_stop = None # <<<<<<<<<<<<<< + * + * elif step_cmd == 206: + */ + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_info->pydev_step_stop); + __Pyx_DECREF(__pyx_v_info->pydev_step_stop); + __pyx_v_info->pydev_step_stop = Py_None; + + /* "_pydevd_bundle/pydevd_cython.pyx":766 + * info.pydev_step_stop = None + * + * elif step_cmd == 159: # <<<<<<<<<<<<<< + * info.pydev_step_cmd = 144 + * info.pydev_step_stop = None + */ + break; + default: break; + } + } + __pyx_L23:; + + /* "_pydevd_bundle/pydevd_cython.pyx":756 + * # frame in this case). + * if stop_frame is frame and not info.pydev_use_scoped_step_frame: + * if step_cmd in (108, 159, 107, 144): # <<<<<<<<<<<<<< + * f = self._get_unfiltered_back_frame(py_db, frame) + * if f is not None: + */ + break; + case 0xCE: + + /* "_pydevd_bundle/pydevd_cython.pyx":772 + * elif step_cmd == 206: + * # We're exiting this one, so, mark the new coroutine context. + * f = self._get_unfiltered_back_frame(py_db, frame) # <<<<<<<<<<<<<< + * if f is not None: + * info.pydev_step_stop = f + */ + __pyx_t_1 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_get_unfiltered_back_frame(__pyx_v_self, __pyx_v_py_db, __pyx_v_frame); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 772, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_f = __pyx_t_1; + __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":773 + * # We're exiting this one, so, mark the new coroutine context. + * f = self._get_unfiltered_back_frame(py_db, frame) + * if f is not None: # <<<<<<<<<<<<<< + * info.pydev_step_stop = f + * else: + */ + __pyx_t_10 = (__pyx_v_f != Py_None); + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":774 + * f = self._get_unfiltered_back_frame(py_db, frame) + * if f is not None: + * info.pydev_step_stop = f # <<<<<<<<<<<<<< + * else: + * info.pydev_step_cmd = 107 + */ + __Pyx_INCREF(__pyx_v_f); + __Pyx_GIVEREF(__pyx_v_f); + __Pyx_GOTREF(__pyx_v_info->pydev_step_stop); + __Pyx_DECREF(__pyx_v_info->pydev_step_stop); + __pyx_v_info->pydev_step_stop = __pyx_v_f; + + /* "_pydevd_bundle/pydevd_cython.pyx":773 + * # We're exiting this one, so, mark the new coroutine context. + * f = self._get_unfiltered_back_frame(py_db, frame) + * if f is not None: # <<<<<<<<<<<<<< + * info.pydev_step_stop = f + * else: + */ + goto __pyx_L24; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":776 + * info.pydev_step_stop = f + * else: + * info.pydev_step_cmd = 107 # <<<<<<<<<<<<<< + * info.pydev_step_stop = None + * + */ + /*else*/ { + __pyx_v_info->pydev_step_cmd = 0x6B; + + /* "_pydevd_bundle/pydevd_cython.pyx":777 + * else: + * info.pydev_step_cmd = 107 + * info.pydev_step_stop = None # <<<<<<<<<<<<<< + * + * elif event == "exception": + */ + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_info->pydev_step_stop); + __Pyx_DECREF(__pyx_v_info->pydev_step_stop); + __pyx_v_info->pydev_step_stop = Py_None; + } + __pyx_L24:; + + /* "_pydevd_bundle/pydevd_cython.pyx":770 + * info.pydev_step_stop = None + * + * elif step_cmd == 206: # <<<<<<<<<<<<<< + * # We're exiting this one, so, mark the new coroutine context. + * f = self._get_unfiltered_back_frame(py_db, frame) + */ + break; + default: break; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":755 + * # as the return shouldn't mean that we've actually completed executing a + * # frame in this case). + * if stop_frame is frame and not info.pydev_use_scoped_step_frame: # <<<<<<<<<<<<<< + * if step_cmd in (108, 159, 107, 144): + * f = self._get_unfiltered_back_frame(py_db, frame) + */ + } + } + + /* "_pydevd_bundle/pydevd_cython.pyx":710 + * is_exception_event = False + * + * elif event == "return": # <<<<<<<<<<<<<< + * is_line = False + * is_call = False + */ + goto __pyx_L13; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":779 + * info.pydev_step_stop = None + * + * elif event == "exception": # <<<<<<<<<<<<<< + * breakpoints_for_file = None + * if has_exception_breakpoints: + */ + __pyx_t_10 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_exception, Py_EQ)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 779, __pyx_L4_error) + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":780 + * + * elif event == "exception": + * breakpoints_for_file = None # <<<<<<<<<<<<<< + * if has_exception_breakpoints: + * should_stop, frame, exc_info = should_stop_on_exception( + */ + __Pyx_INCREF(Py_None); + __pyx_v_breakpoints_for_file = ((PyObject*)Py_None); + + /* "_pydevd_bundle/pydevd_cython.pyx":781 + * elif event == "exception": + * breakpoints_for_file = None + * if has_exception_breakpoints: # <<<<<<<<<<<<<< + * should_stop, frame, exc_info = should_stop_on_exception( + * self._args[0], self._args[2], frame, self._args[3], arg, self.exc_info + */ + if (__pyx_v_has_exception_breakpoints) { + + /* "_pydevd_bundle/pydevd_cython.pyx":782 + * breakpoints_for_file = None + * if has_exception_breakpoints: + * should_stop, frame, exc_info = should_stop_on_exception( # <<<<<<<<<<<<<< + * self._args[0], self._args[2], frame, self._args[3], arg, self.exc_info + * ) + */ + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_should_stop_on_exception); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 782, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + + /* "_pydevd_bundle/pydevd_cython.pyx":783 + * if has_exception_breakpoints: + * should_stop, frame, exc_info = should_stop_on_exception( + * self._args[0], self._args[2], frame, self._args[3], arg, self.exc_info # <<<<<<<<<<<<<< + * ) + * self.exc_info = exc_info + */ + if (unlikely(__pyx_v_self->_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 783, __pyx_L4_error) + } + __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 783, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + if (unlikely(__pyx_v_self->_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 783, __pyx_L4_error) + } + __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 783, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + if (unlikely(__pyx_v_self->_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 783, __pyx_L4_error) + } + __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 783, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[7] = {__pyx_t_3, __pyx_t_7, __pyx_t_6, __pyx_v_frame, __pyx_t_4, __pyx_v_arg, __pyx_v_self->exc_info}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_5, 6+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 782, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { + PyObject* sequence = __pyx_t_1; + Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); + if (unlikely(size != 3)) { + if (size > 3) __Pyx_RaiseTooManyValuesError(3); + else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); + __PYX_ERR(0, 782, __pyx_L4_error) + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + if (likely(PyTuple_CheckExact(sequence))) { + __pyx_t_8 = PyTuple_GET_ITEM(sequence, 0); + __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); + __pyx_t_6 = PyTuple_GET_ITEM(sequence, 2); + } else { + __pyx_t_8 = PyList_GET_ITEM(sequence, 0); + __pyx_t_4 = PyList_GET_ITEM(sequence, 1); + __pyx_t_6 = PyList_GET_ITEM(sequence, 2); + } + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(__pyx_t_6); + #else + __pyx_t_8 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 782, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 782, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 782, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + #endif + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } else { + Py_ssize_t index = -1; + __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 782, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_15 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_7); + index = 0; __pyx_t_8 = __pyx_t_15(__pyx_t_7); if (unlikely(!__pyx_t_8)) goto __pyx_L26_unpacking_failed; + __Pyx_GOTREF(__pyx_t_8); + index = 1; __pyx_t_4 = __pyx_t_15(__pyx_t_7); if (unlikely(!__pyx_t_4)) goto __pyx_L26_unpacking_failed; + __Pyx_GOTREF(__pyx_t_4); + index = 2; __pyx_t_6 = __pyx_t_15(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L26_unpacking_failed; + __Pyx_GOTREF(__pyx_t_6); + if (__Pyx_IternextUnpackEndCheck(__pyx_t_15(__pyx_t_7), 3) < 0) __PYX_ERR(0, 782, __pyx_L4_error) + __pyx_t_15 = NULL; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + goto __pyx_L27_unpacking_done; + __pyx_L26_unpacking_failed:; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_15 = NULL; + if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); + __PYX_ERR(0, 782, __pyx_L4_error) + __pyx_L27_unpacking_done:; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":782 + * breakpoints_for_file = None + * if has_exception_breakpoints: + * should_stop, frame, exc_info = should_stop_on_exception( # <<<<<<<<<<<<<< + * self._args[0], self._args[2], frame, self._args[3], arg, self.exc_info + * ) + */ + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 782, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_v_should_stop = __pyx_t_10; + __Pyx_DECREF_SET(__pyx_v_frame, __pyx_t_4); + __pyx_t_4 = 0; + __pyx_v_exc_info = __pyx_t_6; + __pyx_t_6 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":785 + * self._args[0], self._args[2], frame, self._args[3], arg, self.exc_info + * ) + * self.exc_info = exc_info # <<<<<<<<<<<<<< + * if should_stop: + * if handle_exception(self._args[0], self._args[3], frame, arg, EXCEPTION_TYPE_HANDLED): + */ + __Pyx_INCREF(__pyx_v_exc_info); + __Pyx_GIVEREF(__pyx_v_exc_info); + __Pyx_GOTREF(__pyx_v_self->exc_info); + __Pyx_DECREF(__pyx_v_self->exc_info); + __pyx_v_self->exc_info = __pyx_v_exc_info; + + /* "_pydevd_bundle/pydevd_cython.pyx":786 + * ) + * self.exc_info = exc_info + * if should_stop: # <<<<<<<<<<<<<< + * if handle_exception(self._args[0], self._args[3], frame, arg, EXCEPTION_TYPE_HANDLED): + * return self.trace_dispatch + */ + if (__pyx_v_should_stop) { + + /* "_pydevd_bundle/pydevd_cython.pyx":787 + * self.exc_info = exc_info + * if should_stop: + * if handle_exception(self._args[0], self._args[3], frame, arg, EXCEPTION_TYPE_HANDLED): # <<<<<<<<<<<<<< + * return self.trace_dispatch + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_handle_exception); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 787, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + if (unlikely(__pyx_v_self->_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 787, __pyx_L4_error) + } + __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 787, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + if (unlikely(__pyx_v_self->_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 787, __pyx_L4_error) + } + __pyx_t_8 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 787, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_EXCEPTION_TYPE_HANDLED); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 787, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[6] = {__pyx_t_3, __pyx_t_4, __pyx_t_8, __pyx_v_frame, __pyx_v_arg, __pyx_t_7}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 5+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 787, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 787, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":788 + * if should_stop: + * if handle_exception(self._args[0], self._args[3], frame, arg, EXCEPTION_TYPE_HANDLED): + * return self.trace_dispatch # <<<<<<<<<<<<<< + * + * return self.trace_dispatch + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 788, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L3_return; + + /* "_pydevd_bundle/pydevd_cython.pyx":787 + * self.exc_info = exc_info + * if should_stop: + * if handle_exception(self._args[0], self._args[3], frame, arg, EXCEPTION_TYPE_HANDLED): # <<<<<<<<<<<<<< + * return self.trace_dispatch + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":786 + * ) + * self.exc_info = exc_info + * if should_stop: # <<<<<<<<<<<<<< + * if handle_exception(self._args[0], self._args[3], frame, arg, EXCEPTION_TYPE_HANDLED): + * return self.trace_dispatch + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":781 + * elif event == "exception": + * breakpoints_for_file = None + * if has_exception_breakpoints: # <<<<<<<<<<<<<< + * should_stop, frame, exc_info = should_stop_on_exception( + * self._args[0], self._args[2], frame, self._args[3], arg, self.exc_info + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":790 + * return self.trace_dispatch + * + * return self.trace_dispatch # <<<<<<<<<<<<<< + * else: + * # event == 'call' or event == 'c_XXX' + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 790, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L3_return; + + /* "_pydevd_bundle/pydevd_cython.pyx":779 + * info.pydev_step_stop = None + * + * elif event == "exception": # <<<<<<<<<<<<<< + * breakpoints_for_file = None + * if has_exception_breakpoints: + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":793 + * else: + * # event == 'call' or event == 'c_XXX' + * return self.trace_dispatch # <<<<<<<<<<<<<< + * + * else: # Not coroutine nor generator + */ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 793, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L3_return; + } + __pyx_L13:; + + /* "_pydevd_bundle/pydevd_cython.pyx":700 + * function_breakpoint_on_call_event = None + * + * if frame.f_code.co_flags & 0xA0: # 0xa0 == CO_GENERATOR = 0x20 | CO_COROUTINE = 0x80 # <<<<<<<<<<<<<< + * # Dealing with coroutines and generators: + * # When in a coroutine we change the perceived event to the debugger because + */ + goto __pyx_L12; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":796 + * + * else: # Not coroutine nor generator + * if event == "line": # <<<<<<<<<<<<<< + * is_line = True + * is_call = False + */ + /*else*/ { + __pyx_t_10 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_line, Py_EQ)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 796, __pyx_L4_error) + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":797 + * else: # Not coroutine nor generator + * if event == "line": + * is_line = True # <<<<<<<<<<<<<< + * is_call = False + * is_return = False + */ + __pyx_v_is_line = 1; + + /* "_pydevd_bundle/pydevd_cython.pyx":798 + * if event == "line": + * is_line = True + * is_call = False # <<<<<<<<<<<<<< + * is_return = False + * is_exception_event = False + */ + __pyx_v_is_call = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":799 + * is_line = True + * is_call = False + * is_return = False # <<<<<<<<<<<<<< + * is_exception_event = False + * + */ + __pyx_v_is_return = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":800 + * is_call = False + * is_return = False + * is_exception_event = False # <<<<<<<<<<<<<< + * + * elif event == "return": + */ + __pyx_v_is_exception_event = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":796 + * + * else: # Not coroutine nor generator + * if event == "line": # <<<<<<<<<<<<<< + * is_line = True + * is_call = False + */ + goto __pyx_L30; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":802 + * is_exception_event = False + * + * elif event == "return": # <<<<<<<<<<<<<< + * is_line = False + * is_return = True + */ + __pyx_t_10 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_return, Py_EQ)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 802, __pyx_L4_error) + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":803 + * + * elif event == "return": + * is_line = False # <<<<<<<<<<<<<< + * is_return = True + * is_call = False + */ + __pyx_v_is_line = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":804 + * elif event == "return": + * is_line = False + * is_return = True # <<<<<<<<<<<<<< + * is_call = False + * is_exception_event = False + */ + __pyx_v_is_return = 1; + + /* "_pydevd_bundle/pydevd_cython.pyx":805 + * is_line = False + * is_return = True + * is_call = False # <<<<<<<<<<<<<< + * is_exception_event = False + * + */ + __pyx_v_is_call = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":806 + * is_return = True + * is_call = False + * is_exception_event = False # <<<<<<<<<<<<<< + * + * # If we are in single step mode and something causes us to exit the current frame, we need to make sure we break + */ + __pyx_v_is_exception_event = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":815 + * # @DontTrace comment. + * if ( + * stop_frame is frame # <<<<<<<<<<<<<< + * and not info.pydev_use_scoped_step_frame + * and is_return + */ + __pyx_t_12 = (__pyx_v_stop_frame == __pyx_v_frame); + if (__pyx_t_12) { + } else { + __pyx_t_10 = __pyx_t_12; + goto __pyx_L32_bool_binop_done; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":816 + * if ( + * stop_frame is frame + * and not info.pydev_use_scoped_step_frame # <<<<<<<<<<<<<< + * and is_return + * and step_cmd + */ + __pyx_t_12 = (!__pyx_v_info->pydev_use_scoped_step_frame); + if (__pyx_t_12) { + } else { + __pyx_t_10 = __pyx_t_12; + goto __pyx_L32_bool_binop_done; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":817 + * stop_frame is frame + * and not info.pydev_use_scoped_step_frame + * and is_return # <<<<<<<<<<<<<< + * and step_cmd + * in (108, 109, 159, 160, 128) + */ + if (__pyx_v_is_return) { + } else { + __pyx_t_10 = __pyx_v_is_return; + goto __pyx_L32_bool_binop_done; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":819 + * and is_return + * and step_cmd + * in (108, 109, 159, 160, 128) # <<<<<<<<<<<<<< + * ): + * if step_cmd in (108, 109, 128): + */ + switch (__pyx_v_step_cmd) { + case 0x6C: + case 0x6D: + case 0x9F: + case 0xA0: + case 0x80: + __pyx_t_12 = 1; + break; + default: + __pyx_t_12 = 0; + break; + } + __pyx_t_16 = __pyx_t_12; + __pyx_t_10 = __pyx_t_16; + __pyx_L32_bool_binop_done:; + + /* "_pydevd_bundle/pydevd_cython.pyx":814 + * # Note: this is especially troublesome when we're skipping code with the + * # @DontTrace comment. + * if ( # <<<<<<<<<<<<<< + * stop_frame is frame + * and not info.pydev_use_scoped_step_frame + */ + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":821 + * in (108, 109, 159, 160, 128) + * ): + * if step_cmd in (108, 109, 128): # <<<<<<<<<<<<<< + * info.pydev_step_cmd = 107 + * else: + */ + switch (__pyx_v_step_cmd) { + case 0x6C: + case 0x6D: + case 0x80: + + /* "_pydevd_bundle/pydevd_cython.pyx":822 + * ): + * if step_cmd in (108, 109, 128): + * info.pydev_step_cmd = 107 # <<<<<<<<<<<<<< + * else: + * info.pydev_step_cmd = 144 + */ + __pyx_v_info->pydev_step_cmd = 0x6B; + + /* "_pydevd_bundle/pydevd_cython.pyx":821 + * in (108, 109, 159, 160, 128) + * ): + * if step_cmd in (108, 109, 128): # <<<<<<<<<<<<<< + * info.pydev_step_cmd = 107 + * else: + */ + break; + default: + + /* "_pydevd_bundle/pydevd_cython.pyx":824 + * info.pydev_step_cmd = 107 + * else: + * info.pydev_step_cmd = 144 # <<<<<<<<<<<<<< + * info.pydev_step_stop = None + * + */ + __pyx_v_info->pydev_step_cmd = 0x90; + break; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":825 + * else: + * info.pydev_step_cmd = 144 + * info.pydev_step_stop = None # <<<<<<<<<<<<<< + * + * if self.exc_info: + */ + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_info->pydev_step_stop); + __Pyx_DECREF(__pyx_v_info->pydev_step_stop); + __pyx_v_info->pydev_step_stop = Py_None; + + /* "_pydevd_bundle/pydevd_cython.pyx":814 + * # Note: this is especially troublesome when we're skipping code with the + * # @DontTrace comment. + * if ( # <<<<<<<<<<<<<< + * stop_frame is frame + * and not info.pydev_use_scoped_step_frame + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":827 + * info.pydev_step_stop = None + * + * if self.exc_info: # <<<<<<<<<<<<<< + * if self.handle_user_exception(frame): + * return self.trace_dispatch + */ + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_self->exc_info); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 827, __pyx_L4_error) + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":828 + * + * if self.exc_info: + * if self.handle_user_exception(frame): # <<<<<<<<<<<<<< + * return self.trace_dispatch + * + */ + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_handle_user_exception); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 828, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_frame}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 828, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 828, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":829 + * if self.exc_info: + * if self.handle_user_exception(frame): + * return self.trace_dispatch # <<<<<<<<<<<<<< + * + * elif event == "call": + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 829, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L3_return; + + /* "_pydevd_bundle/pydevd_cython.pyx":828 + * + * if self.exc_info: + * if self.handle_user_exception(frame): # <<<<<<<<<<<<<< + * return self.trace_dispatch + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":827 + * info.pydev_step_stop = None + * + * if self.exc_info: # <<<<<<<<<<<<<< + * if self.handle_user_exception(frame): + * return self.trace_dispatch + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":802 + * is_exception_event = False + * + * elif event == "return": # <<<<<<<<<<<<<< + * is_line = False + * is_return = True + */ + goto __pyx_L30; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":831 + * return self.trace_dispatch + * + * elif event == "call": # <<<<<<<<<<<<<< + * is_line = False + * is_call = True + */ + __pyx_t_10 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_call, Py_EQ)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 831, __pyx_L4_error) + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":832 + * + * elif event == "call": + * is_line = False # <<<<<<<<<<<<<< + * is_call = True + * is_return = False + */ + __pyx_v_is_line = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":833 + * elif event == "call": + * is_line = False + * is_call = True # <<<<<<<<<<<<<< + * is_return = False + * is_exception_event = False + */ + __pyx_v_is_call = 1; + + /* "_pydevd_bundle/pydevd_cython.pyx":834 + * is_line = False + * is_call = True + * is_return = False # <<<<<<<<<<<<<< + * is_exception_event = False + * if frame.f_code.co_firstlineno == frame.f_lineno: # Check line to deal with async/await. + */ + __pyx_v_is_return = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":835 + * is_call = True + * is_return = False + * is_exception_event = False # <<<<<<<<<<<<<< + * if frame.f_code.co_firstlineno == frame.f_lineno: # Check line to deal with async/await. + * function_breakpoint_on_call_event = py_db.function_breakpoint_name_to_breakpoint.get(frame.f_code.co_name) + */ + __pyx_v_is_exception_event = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":836 + * is_return = False + * is_exception_event = False + * if frame.f_code.co_firstlineno == frame.f_lineno: # Check line to deal with async/await. # <<<<<<<<<<<<<< + * function_breakpoint_on_call_event = py_db.function_breakpoint_name_to_breakpoint.get(frame.f_code.co_name) + * + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 836, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_co_firstlineno); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 836, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 836, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_7 = PyObject_RichCompare(__pyx_t_6, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 836, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 836, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":837 + * is_exception_event = False + * if frame.f_code.co_firstlineno == frame.f_lineno: # Check line to deal with async/await. + * function_breakpoint_on_call_event = py_db.function_breakpoint_name_to_breakpoint.get(frame.f_code.co_name) # <<<<<<<<<<<<<< + * + * elif event == "exception": + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_function_breakpoint_name_to_brea); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 837, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_get); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 837, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 837, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_co_name); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 837, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_8}; + __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 837, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __Pyx_DECREF_SET(__pyx_v_function_breakpoint_on_call_event, __pyx_t_7); + __pyx_t_7 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":836 + * is_return = False + * is_exception_event = False + * if frame.f_code.co_firstlineno == frame.f_lineno: # Check line to deal with async/await. # <<<<<<<<<<<<<< + * function_breakpoint_on_call_event = py_db.function_breakpoint_name_to_breakpoint.get(frame.f_code.co_name) + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":831 + * return self.trace_dispatch + * + * elif event == "call": # <<<<<<<<<<<<<< + * is_line = False + * is_call = True + */ + goto __pyx_L30; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":839 + * function_breakpoint_on_call_event = py_db.function_breakpoint_name_to_breakpoint.get(frame.f_code.co_name) + * + * elif event == "exception": # <<<<<<<<<<<<<< + * is_exception_event = True + * breakpoints_for_file = None + */ + __pyx_t_10 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_exception, Py_EQ)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 839, __pyx_L4_error) + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":840 + * + * elif event == "exception": + * is_exception_event = True # <<<<<<<<<<<<<< + * breakpoints_for_file = None + * if has_exception_breakpoints: + */ + __pyx_v_is_exception_event = 1; + + /* "_pydevd_bundle/pydevd_cython.pyx":841 + * elif event == "exception": + * is_exception_event = True + * breakpoints_for_file = None # <<<<<<<<<<<<<< + * if has_exception_breakpoints: + * should_stop, frame, exc_info = should_stop_on_exception( + */ + __Pyx_INCREF(Py_None); + __pyx_v_breakpoints_for_file = ((PyObject*)Py_None); + + /* "_pydevd_bundle/pydevd_cython.pyx":842 + * is_exception_event = True + * breakpoints_for_file = None + * if has_exception_breakpoints: # <<<<<<<<<<<<<< + * should_stop, frame, exc_info = should_stop_on_exception( + * self._args[0], self._args[2], frame, self._args[3], arg, self.exc_info + */ + if (__pyx_v_has_exception_breakpoints) { + + /* "_pydevd_bundle/pydevd_cython.pyx":843 + * breakpoints_for_file = None + * if has_exception_breakpoints: + * should_stop, frame, exc_info = should_stop_on_exception( # <<<<<<<<<<<<<< + * self._args[0], self._args[2], frame, self._args[3], arg, self.exc_info + * ) + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_should_stop_on_exception); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 843, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + + /* "_pydevd_bundle/pydevd_cython.pyx":844 + * if has_exception_breakpoints: + * should_stop, frame, exc_info = should_stop_on_exception( + * self._args[0], self._args[2], frame, self._args[3], arg, self.exc_info # <<<<<<<<<<<<<< + * ) + * self.exc_info = exc_info + */ + if (unlikely(__pyx_v_self->_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 844, __pyx_L4_error) + } + __pyx_t_8 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 844, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + if (unlikely(__pyx_v_self->_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 844, __pyx_L4_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 844, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + if (unlikely(__pyx_v_self->_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 844, __pyx_L4_error) + } + __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 844, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[7] = {__pyx_t_3, __pyx_t_8, __pyx_t_1, __pyx_v_frame, __pyx_t_4, __pyx_v_arg, __pyx_v_self->exc_info}; + __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 6+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 843, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) { + PyObject* sequence = __pyx_t_7; + Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); + if (unlikely(size != 3)) { + if (size > 3) __Pyx_RaiseTooManyValuesError(3); + else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); + __PYX_ERR(0, 843, __pyx_L4_error) + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + if (likely(PyTuple_CheckExact(sequence))) { + __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); + __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); + __pyx_t_1 = PyTuple_GET_ITEM(sequence, 2); + } else { + __pyx_t_6 = PyList_GET_ITEM(sequence, 0); + __pyx_t_4 = PyList_GET_ITEM(sequence, 1); + __pyx_t_1 = PyList_GET_ITEM(sequence, 2); + } + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(__pyx_t_1); + #else + __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 843, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 843, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 843, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + #endif + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } else { + Py_ssize_t index = -1; + __pyx_t_8 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 843, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_15 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_8); + index = 0; __pyx_t_6 = __pyx_t_15(__pyx_t_8); if (unlikely(!__pyx_t_6)) goto __pyx_L40_unpacking_failed; + __Pyx_GOTREF(__pyx_t_6); + index = 1; __pyx_t_4 = __pyx_t_15(__pyx_t_8); if (unlikely(!__pyx_t_4)) goto __pyx_L40_unpacking_failed; + __Pyx_GOTREF(__pyx_t_4); + index = 2; __pyx_t_1 = __pyx_t_15(__pyx_t_8); if (unlikely(!__pyx_t_1)) goto __pyx_L40_unpacking_failed; + __Pyx_GOTREF(__pyx_t_1); + if (__Pyx_IternextUnpackEndCheck(__pyx_t_15(__pyx_t_8), 3) < 0) __PYX_ERR(0, 843, __pyx_L4_error) + __pyx_t_15 = NULL; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + goto __pyx_L41_unpacking_done; + __pyx_L40_unpacking_failed:; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_15 = NULL; + if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); + __PYX_ERR(0, 843, __pyx_L4_error) + __pyx_L41_unpacking_done:; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":843 + * breakpoints_for_file = None + * if has_exception_breakpoints: + * should_stop, frame, exc_info = should_stop_on_exception( # <<<<<<<<<<<<<< + * self._args[0], self._args[2], frame, self._args[3], arg, self.exc_info + * ) + */ + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 843, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_v_should_stop = __pyx_t_10; + __Pyx_DECREF_SET(__pyx_v_frame, __pyx_t_4); + __pyx_t_4 = 0; + __pyx_v_exc_info = __pyx_t_1; + __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":846 + * self._args[0], self._args[2], frame, self._args[3], arg, self.exc_info + * ) + * self.exc_info = exc_info # <<<<<<<<<<<<<< + * if should_stop: + * if handle_exception(self._args[0], self._args[3], frame, arg, EXCEPTION_TYPE_HANDLED): + */ + __Pyx_INCREF(__pyx_v_exc_info); + __Pyx_GIVEREF(__pyx_v_exc_info); + __Pyx_GOTREF(__pyx_v_self->exc_info); + __Pyx_DECREF(__pyx_v_self->exc_info); + __pyx_v_self->exc_info = __pyx_v_exc_info; + + /* "_pydevd_bundle/pydevd_cython.pyx":847 + * ) + * self.exc_info = exc_info + * if should_stop: # <<<<<<<<<<<<<< + * if handle_exception(self._args[0], self._args[3], frame, arg, EXCEPTION_TYPE_HANDLED): + * return self.trace_dispatch + */ + if (__pyx_v_should_stop) { + + /* "_pydevd_bundle/pydevd_cython.pyx":848 + * self.exc_info = exc_info + * if should_stop: + * if handle_exception(self._args[0], self._args[3], frame, arg, EXCEPTION_TYPE_HANDLED): # <<<<<<<<<<<<<< + * return self.trace_dispatch + * is_line = False + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_handle_exception); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 848, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + if (unlikely(__pyx_v_self->_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 848, __pyx_L4_error) + } + __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 848, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + if (unlikely(__pyx_v_self->_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 848, __pyx_L4_error) + } + __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 848, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_EXCEPTION_TYPE_HANDLED); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 848, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[6] = {__pyx_t_3, __pyx_t_4, __pyx_t_6, __pyx_v_frame, __pyx_v_arg, __pyx_t_8}; + __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_5, 5+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 848, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 848, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":849 + * if should_stop: + * if handle_exception(self._args[0], self._args[3], frame, arg, EXCEPTION_TYPE_HANDLED): + * return self.trace_dispatch # <<<<<<<<<<<<<< + * is_line = False + * is_return = False + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 849, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_r = __pyx_t_7; + __pyx_t_7 = 0; + goto __pyx_L3_return; + + /* "_pydevd_bundle/pydevd_cython.pyx":848 + * self.exc_info = exc_info + * if should_stop: + * if handle_exception(self._args[0], self._args[3], frame, arg, EXCEPTION_TYPE_HANDLED): # <<<<<<<<<<<<<< + * return self.trace_dispatch + * is_line = False + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":847 + * ) + * self.exc_info = exc_info + * if should_stop: # <<<<<<<<<<<<<< + * if handle_exception(self._args[0], self._args[3], frame, arg, EXCEPTION_TYPE_HANDLED): + * return self.trace_dispatch + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":842 + * is_exception_event = True + * breakpoints_for_file = None + * if has_exception_breakpoints: # <<<<<<<<<<<<<< + * should_stop, frame, exc_info = should_stop_on_exception( + * self._args[0], self._args[2], frame, self._args[3], arg, self.exc_info + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":850 + * if handle_exception(self._args[0], self._args[3], frame, arg, EXCEPTION_TYPE_HANDLED): + * return self.trace_dispatch + * is_line = False # <<<<<<<<<<<<<< + * is_return = False + * is_call = False + */ + __pyx_v_is_line = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":851 + * return self.trace_dispatch + * is_line = False + * is_return = False # <<<<<<<<<<<<<< + * is_call = False + * + */ + __pyx_v_is_return = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":852 + * is_line = False + * is_return = False + * is_call = False # <<<<<<<<<<<<<< + * + * else: + */ + __pyx_v_is_call = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":839 + * function_breakpoint_on_call_event = py_db.function_breakpoint_name_to_breakpoint.get(frame.f_code.co_name) + * + * elif event == "exception": # <<<<<<<<<<<<<< + * is_exception_event = True + * breakpoints_for_file = None + */ + goto __pyx_L30; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":856 + * else: + * # Unexpected: just keep the same trace func (i.e.: event == 'c_XXX'). + * return self.trace_dispatch # <<<<<<<<<<<<<< + * + * if not is_exception_event: + */ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 856, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_r = __pyx_t_7; + __pyx_t_7 = 0; + goto __pyx_L3_return; + } + __pyx_L30:; + } + __pyx_L12:; + + /* "_pydevd_bundle/pydevd_cython.pyx":858 + * return self.trace_dispatch + * + * if not is_exception_event: # <<<<<<<<<<<<<< + * breakpoints_for_file = py_db.breakpoints.get(abs_path_canonical_path_and_base[1]) + * + */ + __pyx_t_10 = (!__pyx_v_is_exception_event); + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":859 + * + * if not is_exception_event: + * breakpoints_for_file = py_db.breakpoints.get(abs_path_canonical_path_and_base[1]) # <<<<<<<<<<<<<< + * + * can_skip = False + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_breakpoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 859, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_get); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 859, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(__pyx_v_abs_path_canonical_path_and_base == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 859, __pyx_L4_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v_abs_path_canonical_path_and_base, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 859, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_6 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_1}; + __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 859, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + if (!(likely(PyDict_CheckExact(__pyx_t_7))||((__pyx_t_7) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_7))) __PYX_ERR(0, 859, __pyx_L4_error) + __Pyx_XDECREF_SET(__pyx_v_breakpoints_for_file, ((PyObject*)__pyx_t_7)); + __pyx_t_7 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":861 + * breakpoints_for_file = py_db.breakpoints.get(abs_path_canonical_path_and_base[1]) + * + * can_skip = False # <<<<<<<<<<<<<< + * + * if info.pydev_state == 1: # 1 = 1 + */ + __pyx_v_can_skip = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":863 + * can_skip = False + * + * if info.pydev_state == 1: # 1 = 1 # <<<<<<<<<<<<<< + * # we can skip if: + * # - we have no stop marked + */ + __pyx_t_10 = (__pyx_v_info->pydev_state == 1); + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":868 + * # - we should make a step return/step over and we're not in the current frame + * # - we're stepping into a coroutine context and we're not in that context + * if step_cmd == -1: # <<<<<<<<<<<<<< + * can_skip = True + * + */ + __pyx_t_10 = (__pyx_v_step_cmd == -1L); + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":869 + * # - we're stepping into a coroutine context and we're not in that context + * if step_cmd == -1: + * can_skip = True # <<<<<<<<<<<<<< + * + * elif step_cmd in ( + */ + __pyx_v_can_skip = 1; + + /* "_pydevd_bundle/pydevd_cython.pyx":868 + * # - we should make a step return/step over and we're not in the current frame + * # - we're stepping into a coroutine context and we're not in that context + * if step_cmd == -1: # <<<<<<<<<<<<<< + * can_skip = True + * + */ + goto __pyx_L46; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":871 + * can_skip = True + * + * elif step_cmd in ( # <<<<<<<<<<<<<< + * 108, + * 109, + */ + switch (__pyx_v_step_cmd) { + case 0x6C: + + /* "_pydevd_bundle/pydevd_cython.pyx":872 + * + * elif step_cmd in ( + * 108, # <<<<<<<<<<<<<< + * 109, + * 159, + */ + case 0x6D: + + /* "_pydevd_bundle/pydevd_cython.pyx":873 + * elif step_cmd in ( + * 108, + * 109, # <<<<<<<<<<<<<< + * 159, + * 160, + */ + case 0x9F: + + /* "_pydevd_bundle/pydevd_cython.pyx":874 + * 108, + * 109, + * 159, # <<<<<<<<<<<<<< + * 160, + * ) and not self._is_same_frame(stop_frame, frame): + */ + case 0xA0: + + /* "_pydevd_bundle/pydevd_cython.pyx":871 + * can_skip = True + * + * elif step_cmd in ( # <<<<<<<<<<<<<< + * 108, + * 109, + */ + __pyx_t_16 = 1; + break; + default: + __pyx_t_16 = 0; + break; + } + __pyx_t_12 = __pyx_t_16; + if (__pyx_t_12) { + } else { + __pyx_t_10 = __pyx_t_12; + goto __pyx_L47_bool_binop_done; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":876 + * 159, + * 160, + * ) and not self._is_same_frame(stop_frame, frame): # <<<<<<<<<<<<<< + * can_skip = True + * + */ + __pyx_t_7 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_is_same_frame(__pyx_v_self, __pyx_v_stop_frame, __pyx_v_frame); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 876, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 876, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_16 = (!__pyx_t_12); + __pyx_t_10 = __pyx_t_16; + __pyx_L47_bool_binop_done:; + + /* "_pydevd_bundle/pydevd_cython.pyx":871 + * can_skip = True + * + * elif step_cmd in ( # <<<<<<<<<<<<<< + * 108, + * 109, + */ + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":877 + * 160, + * ) and not self._is_same_frame(stop_frame, frame): + * can_skip = True # <<<<<<<<<<<<<< + * + * elif step_cmd == 128 and ( + */ + __pyx_v_can_skip = 1; + + /* "_pydevd_bundle/pydevd_cython.pyx":871 + * can_skip = True + * + * elif step_cmd in ( # <<<<<<<<<<<<<< + * 108, + * 109, + */ + goto __pyx_L46; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":879 + * can_skip = True + * + * elif step_cmd == 128 and ( # <<<<<<<<<<<<<< + * stop_frame is not None + * and stop_frame is not frame + */ + __pyx_t_16 = (__pyx_v_step_cmd == 0x80); + if (__pyx_t_16) { + } else { + __pyx_t_10 = __pyx_t_16; + goto __pyx_L49_bool_binop_done; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":880 + * + * elif step_cmd == 128 and ( + * stop_frame is not None # <<<<<<<<<<<<<< + * and stop_frame is not frame + * and stop_frame is not frame.f_back + */ + __pyx_t_16 = (__pyx_v_stop_frame != Py_None); + if (__pyx_t_16) { + } else { + __pyx_t_10 = __pyx_t_16; + goto __pyx_L49_bool_binop_done; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":881 + * elif step_cmd == 128 and ( + * stop_frame is not None + * and stop_frame is not frame # <<<<<<<<<<<<<< + * and stop_frame is not frame.f_back + * and (frame.f_back is None or stop_frame is not frame.f_back.f_back) + */ + __pyx_t_16 = (__pyx_v_stop_frame != __pyx_v_frame); + if (__pyx_t_16) { + } else { + __pyx_t_10 = __pyx_t_16; + goto __pyx_L49_bool_binop_done; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":882 + * stop_frame is not None + * and stop_frame is not frame + * and stop_frame is not frame.f_back # <<<<<<<<<<<<<< + * and (frame.f_back is None or stop_frame is not frame.f_back.f_back) + * ): + */ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 882, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_16 = (__pyx_v_stop_frame != __pyx_t_7); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (__pyx_t_16) { + } else { + __pyx_t_10 = __pyx_t_16; + goto __pyx_L49_bool_binop_done; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":883 + * and stop_frame is not frame + * and stop_frame is not frame.f_back + * and (frame.f_back is None or stop_frame is not frame.f_back.f_back) # <<<<<<<<<<<<<< + * ): + * can_skip = True + */ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 883, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_16 = (__pyx_t_7 == Py_None); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (!__pyx_t_16) { + } else { + __pyx_t_10 = __pyx_t_16; + goto __pyx_L49_bool_binop_done; + } + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 883, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_f_back); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 883, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_16 = (__pyx_v_stop_frame != __pyx_t_8); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_10 = __pyx_t_16; + __pyx_L49_bool_binop_done:; + + /* "_pydevd_bundle/pydevd_cython.pyx":879 + * can_skip = True + * + * elif step_cmd == 128 and ( # <<<<<<<<<<<<<< + * stop_frame is not None + * and stop_frame is not frame + */ + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":885 + * and (frame.f_back is None or stop_frame is not frame.f_back.f_back) + * ): + * can_skip = True # <<<<<<<<<<<<<< + * + * elif step_cmd == 144: + */ + __pyx_v_can_skip = 1; + + /* "_pydevd_bundle/pydevd_cython.pyx":879 + * can_skip = True + * + * elif step_cmd == 128 and ( # <<<<<<<<<<<<<< + * stop_frame is not None + * and stop_frame is not frame + */ + goto __pyx_L46; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":887 + * can_skip = True + * + * elif step_cmd == 144: # <<<<<<<<<<<<<< + * if py_db.apply_files_filter(frame, frame.f_code.co_filename, True) and ( + * frame.f_back is None or py_db.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True) + */ + __pyx_t_10 = (__pyx_v_step_cmd == 0x90); + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":888 + * + * elif step_cmd == 144: + * if py_db.apply_files_filter(frame, frame.f_code.co_filename, True) and ( # <<<<<<<<<<<<<< + * frame.f_back is None or py_db.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True) + * ): + */ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_apply_files_filter); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 888, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 888, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 888, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[4] = {__pyx_t_1, __pyx_v_frame, __pyx_t_6, Py_True}; + __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 888, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 888, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (__pyx_t_16) { + } else { + __pyx_t_10 = __pyx_t_16; + goto __pyx_L56_bool_binop_done; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":889 + * elif step_cmd == 144: + * if py_db.apply_files_filter(frame, frame.f_code.co_filename, True) and ( + * frame.f_back is None or py_db.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True) # <<<<<<<<<<<<<< + * ): + * can_skip = True + */ + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 889, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_16 = (__pyx_t_8 == Py_None); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (!__pyx_t_16) { + } else { + __pyx_t_10 = __pyx_t_16; + goto __pyx_L56_bool_binop_done; + } + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_apply_files_filter); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 889, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 889, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 889, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_f_code); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 889, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 889, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[4] = {__pyx_t_4, __pyx_t_6, __pyx_t_1, Py_True}; + __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 889, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 889, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_10 = __pyx_t_16; + __pyx_L56_bool_binop_done:; + + /* "_pydevd_bundle/pydevd_cython.pyx":888 + * + * elif step_cmd == 144: + * if py_db.apply_files_filter(frame, frame.f_code.co_filename, True) and ( # <<<<<<<<<<<<<< + * frame.f_back is None or py_db.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True) + * ): + */ + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":891 + * frame.f_back is None or py_db.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True) + * ): + * can_skip = True # <<<<<<<<<<<<<< + * + * elif step_cmd == 206: + */ + __pyx_v_can_skip = 1; + + /* "_pydevd_bundle/pydevd_cython.pyx":888 + * + * elif step_cmd == 144: + * if py_db.apply_files_filter(frame, frame.f_code.co_filename, True) and ( # <<<<<<<<<<<<<< + * frame.f_back is None or py_db.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True) + * ): + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":887 + * can_skip = True + * + * elif step_cmd == 144: # <<<<<<<<<<<<<< + * if py_db.apply_files_filter(frame, frame.f_code.co_filename, True) and ( + * frame.f_back is None or py_db.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True) + */ + goto __pyx_L46; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":893 + * can_skip = True + * + * elif step_cmd == 206: # <<<<<<<<<<<<<< + * f = frame + * while f is not None: + */ + __pyx_t_10 = (__pyx_v_step_cmd == 0xCE); + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":894 + * + * elif step_cmd == 206: + * f = frame # <<<<<<<<<<<<<< + * while f is not None: + * if self._is_same_frame(stop_frame, f): + */ + __Pyx_INCREF(__pyx_v_frame); + __Pyx_XDECREF_SET(__pyx_v_f, __pyx_v_frame); + + /* "_pydevd_bundle/pydevd_cython.pyx":895 + * elif step_cmd == 206: + * f = frame + * while f is not None: # <<<<<<<<<<<<<< + * if self._is_same_frame(stop_frame, f): + * break + */ + while (1) { + __pyx_t_10 = (__pyx_v_f != Py_None); + if (!__pyx_t_10) break; + + /* "_pydevd_bundle/pydevd_cython.pyx":896 + * f = frame + * while f is not None: + * if self._is_same_frame(stop_frame, f): # <<<<<<<<<<<<<< + * break + * f = f.f_back + */ + __pyx_t_8 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_is_same_frame(__pyx_v_self, __pyx_v_stop_frame, __pyx_v_f); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 896, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 896, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":897 + * while f is not None: + * if self._is_same_frame(stop_frame, f): + * break # <<<<<<<<<<<<<< + * f = f.f_back + * else: + */ + goto __pyx_L60_break; + + /* "_pydevd_bundle/pydevd_cython.pyx":896 + * f = frame + * while f is not None: + * if self._is_same_frame(stop_frame, f): # <<<<<<<<<<<<<< + * break + * f = f.f_back + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":898 + * if self._is_same_frame(stop_frame, f): + * break + * f = f.f_back # <<<<<<<<<<<<<< + * else: + * can_skip = True + */ + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_f_back); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 898, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF_SET(__pyx_v_f, __pyx_t_8); + __pyx_t_8 = 0; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":900 + * f = f.f_back + * else: + * can_skip = True # <<<<<<<<<<<<<< + * + * if can_skip: + */ + /*else*/ { + __pyx_v_can_skip = 1; + } + __pyx_L60_break:; + + /* "_pydevd_bundle/pydevd_cython.pyx":893 + * can_skip = True + * + * elif step_cmd == 206: # <<<<<<<<<<<<<< + * f = frame + * while f is not None: + */ + } + __pyx_L46:; + + /* "_pydevd_bundle/pydevd_cython.pyx":902 + * can_skip = True + * + * if can_skip: # <<<<<<<<<<<<<< + * if plugin_manager is not None and (py_db.has_plugin_line_breaks or py_db.has_plugin_exception_breaks): + * can_skip = plugin_manager.can_skip(py_db, frame) + */ + if (__pyx_v_can_skip) { + + /* "_pydevd_bundle/pydevd_cython.pyx":903 + * + * if can_skip: + * if plugin_manager is not None and (py_db.has_plugin_line_breaks or py_db.has_plugin_exception_breaks): # <<<<<<<<<<<<<< + * can_skip = plugin_manager.can_skip(py_db, frame) + * + */ + __pyx_t_16 = (__pyx_v_plugin_manager != Py_None); + if (__pyx_t_16) { + } else { + __pyx_t_10 = __pyx_t_16; + goto __pyx_L64_bool_binop_done; + } + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_has_plugin_line_breaks); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 903, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 903, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (!__pyx_t_16) { + } else { + __pyx_t_10 = __pyx_t_16; + goto __pyx_L64_bool_binop_done; + } + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_has_plugin_exception_breaks); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 903, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 903, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_10 = __pyx_t_16; + __pyx_L64_bool_binop_done:; + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":904 + * if can_skip: + * if plugin_manager is not None and (py_db.has_plugin_line_breaks or py_db.has_plugin_exception_breaks): + * can_skip = plugin_manager.can_skip(py_db, frame) # <<<<<<<<<<<<<< + * + * if ( + */ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_plugin_manager, __pyx_n_s_can_skip); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 904, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_1 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_v_py_db, __pyx_v_frame}; + __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 904, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 904, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_v_can_skip = __pyx_t_10; + + /* "_pydevd_bundle/pydevd_cython.pyx":903 + * + * if can_skip: + * if plugin_manager is not None and (py_db.has_plugin_line_breaks or py_db.has_plugin_exception_breaks): # <<<<<<<<<<<<<< + * can_skip = plugin_manager.can_skip(py_db, frame) + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":907 + * + * if ( + * can_skip # <<<<<<<<<<<<<< + * and py_db.show_return_values + * and info.pydev_step_cmd in (108, 159) + */ + if (__pyx_v_can_skip) { + } else { + __pyx_t_10 = __pyx_v_can_skip; + goto __pyx_L68_bool_binop_done; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":908 + * if ( + * can_skip + * and py_db.show_return_values # <<<<<<<<<<<<<< + * and info.pydev_step_cmd in (108, 159) + * and self._is_same_frame(stop_frame, frame.f_back) + */ + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_show_return_values); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 908, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 908, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (__pyx_t_16) { + } else { + __pyx_t_10 = __pyx_t_16; + goto __pyx_L68_bool_binop_done; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":909 + * can_skip + * and py_db.show_return_values + * and info.pydev_step_cmd in (108, 159) # <<<<<<<<<<<<<< + * and self._is_same_frame(stop_frame, frame.f_back) + * ): + */ + switch (__pyx_v_info->pydev_step_cmd) { + case 0x6C: + case 0x9F: + __pyx_t_16 = 1; + break; + default: + __pyx_t_16 = 0; + break; + } + __pyx_t_12 = __pyx_t_16; + if (__pyx_t_12) { + } else { + __pyx_t_10 = __pyx_t_12; + goto __pyx_L68_bool_binop_done; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":910 + * and py_db.show_return_values + * and info.pydev_step_cmd in (108, 159) + * and self._is_same_frame(stop_frame, frame.f_back) # <<<<<<<<<<<<<< + * ): + * # trace function for showing return values after step over + */ + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 910, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_7 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_is_same_frame(__pyx_v_self, __pyx_v_stop_frame, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 910, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 910, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_10 = __pyx_t_12; + __pyx_L68_bool_binop_done:; + + /* "_pydevd_bundle/pydevd_cython.pyx":906 + * can_skip = plugin_manager.can_skip(py_db, frame) + * + * if ( # <<<<<<<<<<<<<< + * can_skip + * and py_db.show_return_values + */ + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":913 + * ): + * # trace function for showing return values after step over + * can_skip = False # <<<<<<<<<<<<<< + * + * # Let's check to see if we are in a function that has a breakpoint. If we don't have a breakpoint, + */ + __pyx_v_can_skip = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":906 + * can_skip = plugin_manager.can_skip(py_db, frame) + * + * if ( # <<<<<<<<<<<<<< + * can_skip + * and py_db.show_return_values + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":902 + * can_skip = True + * + * if can_skip: # <<<<<<<<<<<<<< + * if plugin_manager is not None and (py_db.has_plugin_line_breaks or py_db.has_plugin_exception_breaks): + * can_skip = plugin_manager.can_skip(py_db, frame) + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":863 + * can_skip = False + * + * if info.pydev_state == 1: # 1 = 1 # <<<<<<<<<<<<<< + * # we can skip if: + * # - we have no stop marked + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":920 + * # so, that's why the additional checks are there. + * + * if function_breakpoint_on_call_event: # <<<<<<<<<<<<<< + * pass # Do nothing here (just keep on going as we can't skip it). + * + */ + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_function_breakpoint_on_call_event); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 920, __pyx_L4_error) + if (__pyx_t_10) { + goto __pyx_L72; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":923 + * pass # Do nothing here (just keep on going as we can't skip it). + * + * elif not breakpoints_for_file: # <<<<<<<<<<<<<< + * if can_skip: + * if has_exception_breakpoints: + */ + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_breakpoints_for_file); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 923, __pyx_L4_error) + __pyx_t_12 = (!__pyx_t_10); + if (__pyx_t_12) { + + /* "_pydevd_bundle/pydevd_cython.pyx":924 + * + * elif not breakpoints_for_file: + * if can_skip: # <<<<<<<<<<<<<< + * if has_exception_breakpoints: + * return self.trace_exception + */ + if (__pyx_v_can_skip) { + + /* "_pydevd_bundle/pydevd_cython.pyx":925 + * elif not breakpoints_for_file: + * if can_skip: + * if has_exception_breakpoints: # <<<<<<<<<<<<<< + * return self.trace_exception + * else: + */ + if (__pyx_v_has_exception_breakpoints) { + + /* "_pydevd_bundle/pydevd_cython.pyx":926 + * if can_skip: + * if has_exception_breakpoints: + * return self.trace_exception # <<<<<<<<<<<<<< + * else: + * return None if is_call else NO_FTRACE + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_exception); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 926, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_r = __pyx_t_7; + __pyx_t_7 = 0; + goto __pyx_L3_return; + + /* "_pydevd_bundle/pydevd_cython.pyx":925 + * elif not breakpoints_for_file: + * if can_skip: + * if has_exception_breakpoints: # <<<<<<<<<<<<<< + * return self.trace_exception + * else: + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":928 + * return self.trace_exception + * else: + * return None if is_call else NO_FTRACE # <<<<<<<<<<<<<< + * + * else: + */ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + if (__pyx_v_is_call) { + __Pyx_INCREF(Py_None); + __pyx_t_7 = Py_None; + } else { + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 928, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_7 = __pyx_t_8; + __pyx_t_8 = 0; + } + __pyx_r = __pyx_t_7; + __pyx_t_7 = 0; + goto __pyx_L3_return; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":924 + * + * elif not breakpoints_for_file: + * if can_skip: # <<<<<<<<<<<<<< + * if has_exception_breakpoints: + * return self.trace_exception + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":923 + * pass # Do nothing here (just keep on going as we can't skip it). + * + * elif not breakpoints_for_file: # <<<<<<<<<<<<<< + * if can_skip: + * if has_exception_breakpoints: + */ + goto __pyx_L72; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":932 + * else: + * # When cached, 0 means we don't have a breakpoint and 1 means we have. + * if can_skip: # <<<<<<<<<<<<<< + * breakpoints_in_line_cache = frame_skips_cache.get(line_cache_key, -1) + * if breakpoints_in_line_cache == 0: + */ + /*else*/ { + if (__pyx_v_can_skip) { + + /* "_pydevd_bundle/pydevd_cython.pyx":933 + * # When cached, 0 means we don't have a breakpoint and 1 means we have. + * if can_skip: + * breakpoints_in_line_cache = frame_skips_cache.get(line_cache_key, -1) # <<<<<<<<<<<<<< + * if breakpoints_in_line_cache == 0: + * return self.trace_dispatch + */ + if (unlikely(__pyx_v_frame_skips_cache == Py_None)) { + PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get"); + __PYX_ERR(0, 933, __pyx_L4_error) + } + __pyx_t_7 = __Pyx_PyDict_GetItemDefault(__pyx_v_frame_skips_cache, __pyx_v_line_cache_key, __pyx_int_neg_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 933, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 933, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_v_breakpoints_in_line_cache = __pyx_t_9; + + /* "_pydevd_bundle/pydevd_cython.pyx":934 + * if can_skip: + * breakpoints_in_line_cache = frame_skips_cache.get(line_cache_key, -1) + * if breakpoints_in_line_cache == 0: # <<<<<<<<<<<<<< + * return self.trace_dispatch + * + */ + __pyx_t_12 = (__pyx_v_breakpoints_in_line_cache == 0); + if (__pyx_t_12) { + + /* "_pydevd_bundle/pydevd_cython.pyx":935 + * breakpoints_in_line_cache = frame_skips_cache.get(line_cache_key, -1) + * if breakpoints_in_line_cache == 0: + * return self.trace_dispatch # <<<<<<<<<<<<<< + * + * breakpoints_in_frame_cache = frame_skips_cache.get(frame_cache_key, -1) + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 935, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_r = __pyx_t_7; + __pyx_t_7 = 0; + goto __pyx_L3_return; + + /* "_pydevd_bundle/pydevd_cython.pyx":934 + * if can_skip: + * breakpoints_in_line_cache = frame_skips_cache.get(line_cache_key, -1) + * if breakpoints_in_line_cache == 0: # <<<<<<<<<<<<<< + * return self.trace_dispatch + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":932 + * else: + * # When cached, 0 means we don't have a breakpoint and 1 means we have. + * if can_skip: # <<<<<<<<<<<<<< + * breakpoints_in_line_cache = frame_skips_cache.get(line_cache_key, -1) + * if breakpoints_in_line_cache == 0: + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":937 + * return self.trace_dispatch + * + * breakpoints_in_frame_cache = frame_skips_cache.get(frame_cache_key, -1) # <<<<<<<<<<<<<< + * if breakpoints_in_frame_cache != -1: + * # Gotten from cache. + */ + if (unlikely(__pyx_v_frame_skips_cache == Py_None)) { + PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get"); + __PYX_ERR(0, 937, __pyx_L4_error) + } + __pyx_t_7 = __Pyx_PyDict_GetItemDefault(__pyx_v_frame_skips_cache, __pyx_v_frame_cache_key, __pyx_int_neg_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 937, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 937, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_v_breakpoints_in_frame_cache = __pyx_t_9; + + /* "_pydevd_bundle/pydevd_cython.pyx":938 + * + * breakpoints_in_frame_cache = frame_skips_cache.get(frame_cache_key, -1) + * if breakpoints_in_frame_cache != -1: # <<<<<<<<<<<<<< + * # Gotten from cache. + * has_breakpoint_in_frame = breakpoints_in_frame_cache == 1 + */ + __pyx_t_12 = (__pyx_v_breakpoints_in_frame_cache != -1L); + if (__pyx_t_12) { + + /* "_pydevd_bundle/pydevd_cython.pyx":940 + * if breakpoints_in_frame_cache != -1: + * # Gotten from cache. + * has_breakpoint_in_frame = breakpoints_in_frame_cache == 1 # <<<<<<<<<<<<<< + * + * else: + */ + __pyx_v_has_breakpoint_in_frame = (__pyx_v_breakpoints_in_frame_cache == 1); + + /* "_pydevd_bundle/pydevd_cython.pyx":938 + * + * breakpoints_in_frame_cache = frame_skips_cache.get(frame_cache_key, -1) + * if breakpoints_in_frame_cache != -1: # <<<<<<<<<<<<<< + * # Gotten from cache. + * has_breakpoint_in_frame = breakpoints_in_frame_cache == 1 + */ + goto __pyx_L77; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":943 + * + * else: + * has_breakpoint_in_frame = False # <<<<<<<<<<<<<< + * + * try: + */ + /*else*/ { + __pyx_v_has_breakpoint_in_frame = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":945 + * has_breakpoint_in_frame = False + * + * try: # <<<<<<<<<<<<<< + * func_lines = set() + * for offset_and_lineno in dis.findlinestarts(frame.f_code): + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19); + __Pyx_XGOTREF(__pyx_t_17); + __Pyx_XGOTREF(__pyx_t_18); + __Pyx_XGOTREF(__pyx_t_19); + /*try:*/ { + + /* "_pydevd_bundle/pydevd_cython.pyx":946 + * + * try: + * func_lines = set() # <<<<<<<<<<<<<< + * for offset_and_lineno in dis.findlinestarts(frame.f_code): + * func_lines.add(offset_and_lineno[1]) + */ + __pyx_t_7 = PySet_New(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 946, __pyx_L78_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_v_func_lines = ((PyObject*)__pyx_t_7); + __pyx_t_7 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":947 + * try: + * func_lines = set() + * for offset_and_lineno in dis.findlinestarts(frame.f_code): # <<<<<<<<<<<<<< + * func_lines.add(offset_and_lineno[1]) + * except: + */ + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_dis); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 947, __pyx_L78_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_findlinestarts); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 947, __pyx_L78_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 947, __pyx_L78_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_6 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_8}; + __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 947, __pyx_L78_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + if (likely(PyList_CheckExact(__pyx_t_7)) || PyTuple_CheckExact(__pyx_t_7)) { + __pyx_t_1 = __pyx_t_7; __Pyx_INCREF(__pyx_t_1); + __pyx_t_13 = 0; + __pyx_t_14 = NULL; + } else { + __pyx_t_13 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 947, __pyx_L78_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_14 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 947, __pyx_L78_error) + } + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + for (;;) { + if (likely(!__pyx_t_14)) { + if (likely(PyList_CheckExact(__pyx_t_1))) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); + #if !CYTHON_ASSUME_SAFE_MACROS + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 947, __pyx_L78_error) + #endif + if (__pyx_t_13 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_7 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_13); __Pyx_INCREF(__pyx_t_7); __pyx_t_13++; if (unlikely((0 < 0))) __PYX_ERR(0, 947, __pyx_L78_error) + #else + __pyx_t_7 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 947, __pyx_L78_error) + __Pyx_GOTREF(__pyx_t_7); + #endif + } else { + { + Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1); + #if !CYTHON_ASSUME_SAFE_MACROS + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 947, __pyx_L78_error) + #endif + if (__pyx_t_13 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_13); __Pyx_INCREF(__pyx_t_7); __pyx_t_13++; if (unlikely((0 < 0))) __PYX_ERR(0, 947, __pyx_L78_error) + #else + __pyx_t_7 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 947, __pyx_L78_error) + __Pyx_GOTREF(__pyx_t_7); + #endif + } + } else { + __pyx_t_7 = __pyx_t_14(__pyx_t_1); + if (unlikely(!__pyx_t_7)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(0, 947, __pyx_L78_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_7); + } + __Pyx_XDECREF_SET(__pyx_v_offset_and_lineno, __pyx_t_7); + __pyx_t_7 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":948 + * func_lines = set() + * for offset_and_lineno in dis.findlinestarts(frame.f_code): + * func_lines.add(offset_and_lineno[1]) # <<<<<<<<<<<<<< + * except: + * # This is a fallback for implementations where we can't get the function + */ + __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_offset_and_lineno, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 948, __pyx_L78_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_20 = PySet_Add(__pyx_v_func_lines, __pyx_t_7); if (unlikely(__pyx_t_20 == ((int)-1))) __PYX_ERR(0, 948, __pyx_L78_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":947 + * try: + * func_lines = set() + * for offset_and_lineno in dis.findlinestarts(frame.f_code): # <<<<<<<<<<<<<< + * func_lines.add(offset_and_lineno[1]) + * except: + */ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":945 + * has_breakpoint_in_frame = False + * + * try: # <<<<<<<<<<<<<< + * func_lines = set() + * for offset_and_lineno in dis.findlinestarts(frame.f_code): + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":968 + * break + * else: + * for bp_line in breakpoints_for_file: # iterate on keys # <<<<<<<<<<<<<< + * if bp_line in func_lines: + * has_breakpoint_in_frame = True + */ + /*else:*/ { + __pyx_t_13 = 0; + if (unlikely(__pyx_v_breakpoints_for_file == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); + __PYX_ERR(0, 968, __pyx_L80_except_error) + } + __pyx_t_7 = __Pyx_dict_iterator(__pyx_v_breakpoints_for_file, 1, ((PyObject *)NULL), (&__pyx_t_21), (&__pyx_t_9)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 968, __pyx_L80_except_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_1); + __pyx_t_1 = __pyx_t_7; + __pyx_t_7 = 0; + while (1) { + __pyx_t_11 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_21, &__pyx_t_13, &__pyx_t_7, NULL, NULL, __pyx_t_9); + if (unlikely(__pyx_t_11 == 0)) break; + if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 968, __pyx_L80_except_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 968, __pyx_L80_except_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_v_bp_line = __pyx_t_11; + + /* "_pydevd_bundle/pydevd_cython.pyx":969 + * else: + * for bp_line in breakpoints_for_file: # iterate on keys + * if bp_line in func_lines: # <<<<<<<<<<<<<< + * has_breakpoint_in_frame = True + * break + */ + __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_bp_line); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 969, __pyx_L80_except_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_12 = (__Pyx_PySet_ContainsTF(__pyx_t_7, __pyx_v_func_lines, Py_EQ)); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 969, __pyx_L80_except_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (__pyx_t_12) { + + /* "_pydevd_bundle/pydevd_cython.pyx":970 + * for bp_line in breakpoints_for_file: # iterate on keys + * if bp_line in func_lines: + * has_breakpoint_in_frame = True # <<<<<<<<<<<<<< + * break + * + */ + __pyx_v_has_breakpoint_in_frame = 1; + + /* "_pydevd_bundle/pydevd_cython.pyx":971 + * if bp_line in func_lines: + * has_breakpoint_in_frame = True + * break # <<<<<<<<<<<<<< + * + * # Cache the value (1 or 0 or -1 for default because of cython). + */ + goto __pyx_L88_break; + + /* "_pydevd_bundle/pydevd_cython.pyx":969 + * else: + * for bp_line in breakpoints_for_file: # iterate on keys + * if bp_line in func_lines: # <<<<<<<<<<<<<< + * has_breakpoint_in_frame = True + * break + */ + } + } + __pyx_L88_break:; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; + __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0; + __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0; + goto __pyx_L83_try_end; + __pyx_L78_error:; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":949 + * for offset_and_lineno in dis.findlinestarts(frame.f_code): + * func_lines.add(offset_and_lineno[1]) + * except: # <<<<<<<<<<<<<< + * # This is a fallback for implementations where we can't get the function + * # lines -- i.e.: jython (in this case clients need to provide the function + */ + /*except:*/ { + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(0, 949, __pyx_L80_except_error) + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_7); + __Pyx_XGOTREF(__pyx_t_8); + + /* "_pydevd_bundle/pydevd_cython.pyx":956 + * + * # Checks the breakpoint to see if there is a context match in some function. + * curr_func_name = frame.f_code.co_name # <<<<<<<<<<<<<< + * + * # global context is set with an empty name + */ + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 956, __pyx_L80_except_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_co_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 956, __pyx_L80_except_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (!(likely(PyString_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_4))) __PYX_ERR(0, 956, __pyx_L80_except_error) + __pyx_v_curr_func_name = ((PyObject*)__pyx_t_4); + __pyx_t_4 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":959 + * + * # global context is set with an empty name + * if curr_func_name in ("?", "", ""): # <<<<<<<<<<<<<< + * curr_func_name = "" + * + */ + __Pyx_INCREF(__pyx_v_curr_func_name); + __pyx_t_22 = __pyx_v_curr_func_name; + __pyx_t_10 = (__Pyx_PyString_Equals(__pyx_t_22, __pyx_kp_s__4, Py_EQ)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 959, __pyx_L80_except_error) + if (!__pyx_t_10) { + } else { + __pyx_t_12 = __pyx_t_10; + goto __pyx_L93_bool_binop_done; + } + __pyx_t_10 = (__Pyx_PyString_Equals(__pyx_t_22, __pyx_kp_s_module, Py_EQ)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 959, __pyx_L80_except_error) + if (!__pyx_t_10) { + } else { + __pyx_t_12 = __pyx_t_10; + goto __pyx_L93_bool_binop_done; + } + __pyx_t_10 = (__Pyx_PyString_Equals(__pyx_t_22, __pyx_kp_s_lambda, Py_EQ)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 959, __pyx_L80_except_error) + __pyx_t_12 = __pyx_t_10; + __pyx_L93_bool_binop_done:; + __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0; + __pyx_t_10 = __pyx_t_12; + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":960 + * # global context is set with an empty name + * if curr_func_name in ("?", "", ""): + * curr_func_name = "" # <<<<<<<<<<<<<< + * + * for bp in breakpoints_for_file.values(): + */ + __Pyx_INCREF(__pyx_kp_s_); + __Pyx_DECREF_SET(__pyx_v_curr_func_name, __pyx_kp_s_); + + /* "_pydevd_bundle/pydevd_cython.pyx":959 + * + * # global context is set with an empty name + * if curr_func_name in ("?", "", ""): # <<<<<<<<<<<<<< + * curr_func_name = "" + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":962 + * curr_func_name = "" + * + * for bp in breakpoints_for_file.values(): # <<<<<<<<<<<<<< + * # will match either global or some function + * if bp.func_name in ("None", curr_func_name): + */ + __pyx_t_21 = 0; + if (unlikely(__pyx_v_breakpoints_for_file == Py_None)) { + PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "values"); + __PYX_ERR(0, 962, __pyx_L80_except_error) + } + __pyx_t_6 = __Pyx_dict_iterator(__pyx_v_breakpoints_for_file, 1, __pyx_n_s_values, (&__pyx_t_13), (&__pyx_t_9)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 962, __pyx_L80_except_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_4); + __pyx_t_4 = __pyx_t_6; + __pyx_t_6 = 0; + while (1) { + __pyx_t_11 = __Pyx_dict_iter_next(__pyx_t_4, __pyx_t_13, &__pyx_t_21, NULL, &__pyx_t_6, NULL, __pyx_t_9); + if (unlikely(__pyx_t_11 == 0)) break; + if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 962, __pyx_L80_except_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_XDECREF_SET(__pyx_v_bp, __pyx_t_6); + __pyx_t_6 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":964 + * for bp in breakpoints_for_file.values(): + * # will match either global or some function + * if bp.func_name in ("None", curr_func_name): # <<<<<<<<<<<<<< + * has_breakpoint_in_frame = True + * break + */ + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_bp, __pyx_n_s_func_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 964, __pyx_L80_except_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_12 = (__Pyx_PyString_Equals(__pyx_t_6, __pyx_n_s_None, Py_EQ)); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 964, __pyx_L80_except_error) + if (!__pyx_t_12) { + } else { + __pyx_t_10 = __pyx_t_12; + goto __pyx_L99_bool_binop_done; + } + __pyx_t_12 = (__Pyx_PyString_Equals(__pyx_t_6, __pyx_v_curr_func_name, Py_EQ)); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 964, __pyx_L80_except_error) + __pyx_t_10 = __pyx_t_12; + __pyx_L99_bool_binop_done:; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_12 = __pyx_t_10; + if (__pyx_t_12) { + + /* "_pydevd_bundle/pydevd_cython.pyx":965 + * # will match either global or some function + * if bp.func_name in ("None", curr_func_name): + * has_breakpoint_in_frame = True # <<<<<<<<<<<<<< + * break + * else: + */ + __pyx_v_has_breakpoint_in_frame = 1; + + /* "_pydevd_bundle/pydevd_cython.pyx":966 + * if bp.func_name in ("None", curr_func_name): + * has_breakpoint_in_frame = True + * break # <<<<<<<<<<<<<< + * else: + * for bp_line in breakpoints_for_file: # iterate on keys + */ + goto __pyx_L97_break; + + /* "_pydevd_bundle/pydevd_cython.pyx":964 + * for bp in breakpoints_for_file.values(): + * # will match either global or some function + * if bp.func_name in ("None", curr_func_name): # <<<<<<<<<<<<<< + * has_breakpoint_in_frame = True + * break + */ + } + } + __pyx_L97_break:; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + goto __pyx_L79_exception_handled; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":945 + * has_breakpoint_in_frame = False + * + * try: # <<<<<<<<<<<<<< + * func_lines = set() + * for offset_and_lineno in dis.findlinestarts(frame.f_code): + */ + __pyx_L80_except_error:; + __Pyx_XGIVEREF(__pyx_t_17); + __Pyx_XGIVEREF(__pyx_t_18); + __Pyx_XGIVEREF(__pyx_t_19); + __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19); + goto __pyx_L4_error; + __pyx_L79_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_17); + __Pyx_XGIVEREF(__pyx_t_18); + __Pyx_XGIVEREF(__pyx_t_19); + __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19); + __pyx_L83_try_end:; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":974 + * + * # Cache the value (1 or 0 or -1 for default because of cython). + * if has_breakpoint_in_frame: # <<<<<<<<<<<<<< + * frame_skips_cache[frame_cache_key] = 1 + * else: + */ + if (__pyx_v_has_breakpoint_in_frame) { + + /* "_pydevd_bundle/pydevd_cython.pyx":975 + * # Cache the value (1 or 0 or -1 for default because of cython). + * if has_breakpoint_in_frame: + * frame_skips_cache[frame_cache_key] = 1 # <<<<<<<<<<<<<< + * else: + * frame_skips_cache[frame_cache_key] = 0 + */ + if (unlikely(__pyx_v_frame_skips_cache == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 975, __pyx_L4_error) + } + if (unlikely((PyDict_SetItem(__pyx_v_frame_skips_cache, __pyx_v_frame_cache_key, __pyx_int_1) < 0))) __PYX_ERR(0, 975, __pyx_L4_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":974 + * + * # Cache the value (1 or 0 or -1 for default because of cython). + * if has_breakpoint_in_frame: # <<<<<<<<<<<<<< + * frame_skips_cache[frame_cache_key] = 1 + * else: + */ + goto __pyx_L101; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":977 + * frame_skips_cache[frame_cache_key] = 1 + * else: + * frame_skips_cache[frame_cache_key] = 0 # <<<<<<<<<<<<<< + * + * if can_skip and not has_breakpoint_in_frame: + */ + /*else*/ { + if (unlikely(__pyx_v_frame_skips_cache == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 977, __pyx_L4_error) + } + if (unlikely((PyDict_SetItem(__pyx_v_frame_skips_cache, __pyx_v_frame_cache_key, __pyx_int_0) < 0))) __PYX_ERR(0, 977, __pyx_L4_error) + } + __pyx_L101:; + } + __pyx_L77:; + + /* "_pydevd_bundle/pydevd_cython.pyx":979 + * frame_skips_cache[frame_cache_key] = 0 + * + * if can_skip and not has_breakpoint_in_frame: # <<<<<<<<<<<<<< + * if has_exception_breakpoints: + * return self.trace_exception + */ + if (__pyx_v_can_skip) { + } else { + __pyx_t_12 = __pyx_v_can_skip; + goto __pyx_L103_bool_binop_done; + } + __pyx_t_10 = (!__pyx_v_has_breakpoint_in_frame); + __pyx_t_12 = __pyx_t_10; + __pyx_L103_bool_binop_done:; + if (__pyx_t_12) { + + /* "_pydevd_bundle/pydevd_cython.pyx":980 + * + * if can_skip and not has_breakpoint_in_frame: + * if has_exception_breakpoints: # <<<<<<<<<<<<<< + * return self.trace_exception + * else: + */ + if (__pyx_v_has_exception_breakpoints) { + + /* "_pydevd_bundle/pydevd_cython.pyx":981 + * if can_skip and not has_breakpoint_in_frame: + * if has_exception_breakpoints: + * return self.trace_exception # <<<<<<<<<<<<<< + * else: + * return None if is_call else NO_FTRACE + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_exception); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 981, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_r = __pyx_t_8; + __pyx_t_8 = 0; + goto __pyx_L3_return; + + /* "_pydevd_bundle/pydevd_cython.pyx":980 + * + * if can_skip and not has_breakpoint_in_frame: + * if has_exception_breakpoints: # <<<<<<<<<<<<<< + * return self.trace_exception + * else: + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":983 + * return self.trace_exception + * else: + * return None if is_call else NO_FTRACE # <<<<<<<<<<<<<< + * + * # We may have hit a breakpoint or we are already in step mode. Either way, let's check what we should do in this frame + */ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + if (__pyx_v_is_call) { + __Pyx_INCREF(Py_None); + __pyx_t_8 = Py_None; + } else { + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 983, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = __pyx_t_7; + __pyx_t_7 = 0; + } + __pyx_r = __pyx_t_8; + __pyx_t_8 = 0; + goto __pyx_L3_return; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":979 + * frame_skips_cache[frame_cache_key] = 0 + * + * if can_skip and not has_breakpoint_in_frame: # <<<<<<<<<<<<<< + * if has_exception_breakpoints: + * return self.trace_exception + */ + } + } + __pyx_L72:; + + /* "_pydevd_bundle/pydevd_cython.pyx":858 + * return self.trace_dispatch + * + * if not is_exception_event: # <<<<<<<<<<<<<< + * breakpoints_for_file = py_db.breakpoints.get(abs_path_canonical_path_and_base[1]) + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":988 + * # if DEBUG: print('NOT skipped: %s %s %s %s' % (frame.f_lineno, frame.f_code.co_name, event, frame.__class__.__name__)) + * + * try: # <<<<<<<<<<<<<< + * stop_on_plugin_breakpoint = False + * # return is not taken into account for breakpoint hit because we'd have a double-hit in this case + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17); + __Pyx_XGOTREF(__pyx_t_19); + __Pyx_XGOTREF(__pyx_t_18); + __Pyx_XGOTREF(__pyx_t_17); + /*try:*/ { + + /* "_pydevd_bundle/pydevd_cython.pyx":989 + * + * try: + * stop_on_plugin_breakpoint = False # <<<<<<<<<<<<<< + * # return is not taken into account for breakpoint hit because we'd have a double-hit in this case + * # (one for the line and the other for the return). + */ + __pyx_v_stop_on_plugin_breakpoint = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":993 + * # (one for the line and the other for the return). + * + * stop_info = {} # <<<<<<<<<<<<<< + * breakpoint = None + * stop = False + */ + __pyx_t_8 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 993, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_v_stop_info = ((PyObject*)__pyx_t_8); + __pyx_t_8 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":994 + * + * stop_info = {} + * breakpoint = None # <<<<<<<<<<<<<< + * stop = False + * stop_reason = 111 + */ + __Pyx_INCREF(Py_None); + __pyx_v_breakpoint = Py_None; + + /* "_pydevd_bundle/pydevd_cython.pyx":995 + * stop_info = {} + * breakpoint = None + * stop = False # <<<<<<<<<<<<<< + * stop_reason = 111 + * bp_type = None + */ + __pyx_v_stop = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":996 + * breakpoint = None + * stop = False + * stop_reason = 111 # <<<<<<<<<<<<<< + * bp_type = None + * + */ + __Pyx_INCREF(__pyx_int_111); + __pyx_v_stop_reason = __pyx_int_111; + + /* "_pydevd_bundle/pydevd_cython.pyx":997 + * stop = False + * stop_reason = 111 + * bp_type = None # <<<<<<<<<<<<<< + * + * if function_breakpoint_on_call_event: + */ + __Pyx_INCREF(Py_None); + __pyx_v_bp_type = Py_None; + + /* "_pydevd_bundle/pydevd_cython.pyx":999 + * bp_type = None + * + * if function_breakpoint_on_call_event: # <<<<<<<<<<<<<< + * breakpoint = function_breakpoint_on_call_event + * stop = True + */ + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_function_breakpoint_on_call_event); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 999, __pyx_L106_error) + if (__pyx_t_12) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1000 + * + * if function_breakpoint_on_call_event: + * breakpoint = function_breakpoint_on_call_event # <<<<<<<<<<<<<< + * stop = True + * new_frame = frame + */ + __Pyx_INCREF(__pyx_v_function_breakpoint_on_call_event); + __Pyx_DECREF_SET(__pyx_v_breakpoint, __pyx_v_function_breakpoint_on_call_event); + + /* "_pydevd_bundle/pydevd_cython.pyx":1001 + * if function_breakpoint_on_call_event: + * breakpoint = function_breakpoint_on_call_event + * stop = True # <<<<<<<<<<<<<< + * new_frame = frame + * stop_reason = CMD_SET_FUNCTION_BREAK + */ + __pyx_v_stop = 1; + + /* "_pydevd_bundle/pydevd_cython.pyx":1002 + * breakpoint = function_breakpoint_on_call_event + * stop = True + * new_frame = frame # <<<<<<<<<<<<<< + * stop_reason = CMD_SET_FUNCTION_BREAK + * + */ + __Pyx_INCREF(__pyx_v_frame); + __pyx_v_new_frame = __pyx_v_frame; + + /* "_pydevd_bundle/pydevd_cython.pyx":1003 + * stop = True + * new_frame = frame + * stop_reason = CMD_SET_FUNCTION_BREAK # <<<<<<<<<<<<<< + * + * elif is_line and info.pydev_state != 2 and breakpoints_for_file is not None and line in breakpoints_for_file: + */ + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_CMD_SET_FUNCTION_BREAK); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1003, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF_SET(__pyx_v_stop_reason, __pyx_t_8); + __pyx_t_8 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":999 + * bp_type = None + * + * if function_breakpoint_on_call_event: # <<<<<<<<<<<<<< + * breakpoint = function_breakpoint_on_call_event + * stop = True + */ + goto __pyx_L112; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1005 + * stop_reason = CMD_SET_FUNCTION_BREAK + * + * elif is_line and info.pydev_state != 2 and breakpoints_for_file is not None and line in breakpoints_for_file: # <<<<<<<<<<<<<< + * breakpoint = breakpoints_for_file[line] + * new_frame = frame + */ + if (__pyx_v_is_line) { + } else { + __pyx_t_12 = __pyx_v_is_line; + goto __pyx_L113_bool_binop_done; + } + __pyx_t_10 = (__pyx_v_info->pydev_state != 2); + if (__pyx_t_10) { + } else { + __pyx_t_12 = __pyx_t_10; + goto __pyx_L113_bool_binop_done; + } + if (unlikely(!__pyx_v_breakpoints_for_file)) { __Pyx_RaiseUnboundLocalError("breakpoints_for_file"); __PYX_ERR(0, 1005, __pyx_L106_error) } + __pyx_t_10 = (__pyx_v_breakpoints_for_file != ((PyObject*)Py_None)); + if (__pyx_t_10) { + } else { + __pyx_t_12 = __pyx_t_10; + goto __pyx_L113_bool_binop_done; + } + __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_line); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1005, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_8); + if (unlikely(!__pyx_v_breakpoints_for_file)) { __Pyx_RaiseUnboundLocalError("breakpoints_for_file"); __PYX_ERR(0, 1005, __pyx_L106_error) } + if (unlikely(__pyx_v_breakpoints_for_file == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); + __PYX_ERR(0, 1005, __pyx_L106_error) + } + __pyx_t_10 = (__Pyx_PyDict_ContainsTF(__pyx_t_8, __pyx_v_breakpoints_for_file, Py_EQ)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1005, __pyx_L106_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_12 = __pyx_t_10; + __pyx_L113_bool_binop_done:; + if (__pyx_t_12) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1006 + * + * elif is_line and info.pydev_state != 2 and breakpoints_for_file is not None and line in breakpoints_for_file: + * breakpoint = breakpoints_for_file[line] # <<<<<<<<<<<<<< + * new_frame = frame + * stop = True + */ + if (unlikely(!__pyx_v_breakpoints_for_file)) { __Pyx_RaiseUnboundLocalError("breakpoints_for_file"); __PYX_ERR(0, 1006, __pyx_L106_error) } + if (unlikely(__pyx_v_breakpoints_for_file == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 1006, __pyx_L106_error) + } + __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_line); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1006, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_7 = __Pyx_PyDict_GetItem(__pyx_v_breakpoints_for_file, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1006, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF_SET(__pyx_v_breakpoint, __pyx_t_7); + __pyx_t_7 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1007 + * elif is_line and info.pydev_state != 2 and breakpoints_for_file is not None and line in breakpoints_for_file: + * breakpoint = breakpoints_for_file[line] + * new_frame = frame # <<<<<<<<<<<<<< + * stop = True + * + */ + __Pyx_INCREF(__pyx_v_frame); + __pyx_v_new_frame = __pyx_v_frame; + + /* "_pydevd_bundle/pydevd_cython.pyx":1008 + * breakpoint = breakpoints_for_file[line] + * new_frame = frame + * stop = True # <<<<<<<<<<<<<< + * + * elif plugin_manager is not None and py_db.has_plugin_line_breaks: + */ + __pyx_v_stop = 1; + + /* "_pydevd_bundle/pydevd_cython.pyx":1005 + * stop_reason = CMD_SET_FUNCTION_BREAK + * + * elif is_line and info.pydev_state != 2 and breakpoints_for_file is not None and line in breakpoints_for_file: # <<<<<<<<<<<<<< + * breakpoint = breakpoints_for_file[line] + * new_frame = frame + */ + goto __pyx_L112; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1010 + * stop = True + * + * elif plugin_manager is not None and py_db.has_plugin_line_breaks: # <<<<<<<<<<<<<< + * result = plugin_manager.get_breakpoint(py_db, frame, event, self._args[2]) + * if result: + */ + __pyx_t_10 = (__pyx_v_plugin_manager != Py_None); + if (__pyx_t_10) { + } else { + __pyx_t_12 = __pyx_t_10; + goto __pyx_L117_bool_binop_done; + } + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_has_plugin_line_breaks); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1010, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1010, __pyx_L106_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_12 = __pyx_t_10; + __pyx_L117_bool_binop_done:; + if (__pyx_t_12) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1011 + * + * elif plugin_manager is not None and py_db.has_plugin_line_breaks: + * result = plugin_manager.get_breakpoint(py_db, frame, event, self._args[2]) # <<<<<<<<<<<<<< + * if result: + * stop_on_plugin_breakpoint = True + */ + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_plugin_manager, __pyx_n_s_get_breakpoint); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1011, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_8); + if (unlikely(__pyx_v_self->_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 1011, __pyx_L106_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1011, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[5] = {__pyx_t_4, __pyx_v_py_db, __pyx_v_frame, __pyx_v_event, __pyx_t_1}; + __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_5, 4+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1011, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + __pyx_v_result = __pyx_t_7; + __pyx_t_7 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1012 + * elif plugin_manager is not None and py_db.has_plugin_line_breaks: + * result = plugin_manager.get_breakpoint(py_db, frame, event, self._args[2]) + * if result: # <<<<<<<<<<<<<< + * stop_on_plugin_breakpoint = True + * breakpoint, new_frame, bp_type = result + */ + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_result); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 1012, __pyx_L106_error) + if (__pyx_t_12) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1013 + * result = plugin_manager.get_breakpoint(py_db, frame, event, self._args[2]) + * if result: + * stop_on_plugin_breakpoint = True # <<<<<<<<<<<<<< + * breakpoint, new_frame, bp_type = result + * + */ + __pyx_v_stop_on_plugin_breakpoint = 1; + + /* "_pydevd_bundle/pydevd_cython.pyx":1014 + * if result: + * stop_on_plugin_breakpoint = True + * breakpoint, new_frame, bp_type = result # <<<<<<<<<<<<<< + * + * if breakpoint: + */ + if ((likely(PyTuple_CheckExact(__pyx_v_result))) || (PyList_CheckExact(__pyx_v_result))) { + PyObject* sequence = __pyx_v_result; + Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); + if (unlikely(size != 3)) { + if (size > 3) __Pyx_RaiseTooManyValuesError(3); + else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); + __PYX_ERR(0, 1014, __pyx_L106_error) + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + if (likely(PyTuple_CheckExact(sequence))) { + __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); + __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1); + __pyx_t_1 = PyTuple_GET_ITEM(sequence, 2); + } else { + __pyx_t_7 = PyList_GET_ITEM(sequence, 0); + __pyx_t_8 = PyList_GET_ITEM(sequence, 1); + __pyx_t_1 = PyList_GET_ITEM(sequence, 2); + } + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(__pyx_t_1); + #else + __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1014, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1014, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_1 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1014, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_1); + #endif + } else { + Py_ssize_t index = -1; + __pyx_t_4 = PyObject_GetIter(__pyx_v_result); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1014, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_15 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); + index = 0; __pyx_t_7 = __pyx_t_15(__pyx_t_4); if (unlikely(!__pyx_t_7)) goto __pyx_L120_unpacking_failed; + __Pyx_GOTREF(__pyx_t_7); + index = 1; __pyx_t_8 = __pyx_t_15(__pyx_t_4); if (unlikely(!__pyx_t_8)) goto __pyx_L120_unpacking_failed; + __Pyx_GOTREF(__pyx_t_8); + index = 2; __pyx_t_1 = __pyx_t_15(__pyx_t_4); if (unlikely(!__pyx_t_1)) goto __pyx_L120_unpacking_failed; + __Pyx_GOTREF(__pyx_t_1); + if (__Pyx_IternextUnpackEndCheck(__pyx_t_15(__pyx_t_4), 3) < 0) __PYX_ERR(0, 1014, __pyx_L106_error) + __pyx_t_15 = NULL; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + goto __pyx_L121_unpacking_done; + __pyx_L120_unpacking_failed:; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_15 = NULL; + if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); + __PYX_ERR(0, 1014, __pyx_L106_error) + __pyx_L121_unpacking_done:; + } + __Pyx_DECREF_SET(__pyx_v_breakpoint, __pyx_t_7); + __pyx_t_7 = 0; + __pyx_v_new_frame = __pyx_t_8; + __pyx_t_8 = 0; + __Pyx_DECREF_SET(__pyx_v_bp_type, __pyx_t_1); + __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1012 + * elif plugin_manager is not None and py_db.has_plugin_line_breaks: + * result = plugin_manager.get_breakpoint(py_db, frame, event, self._args[2]) + * if result: # <<<<<<<<<<<<<< + * stop_on_plugin_breakpoint = True + * breakpoint, new_frame, bp_type = result + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1010 + * stop = True + * + * elif plugin_manager is not None and py_db.has_plugin_line_breaks: # <<<<<<<<<<<<<< + * result = plugin_manager.get_breakpoint(py_db, frame, event, self._args[2]) + * if result: + */ + } + __pyx_L112:; + + /* "_pydevd_bundle/pydevd_cython.pyx":1016 + * breakpoint, new_frame, bp_type = result + * + * if breakpoint: # <<<<<<<<<<<<<< + * # ok, hit breakpoint, now, we have to discover if it is a conditional breakpoint + * # lets do the conditional stuff here + */ + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_breakpoint); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 1016, __pyx_L106_error) + if (__pyx_t_12) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1019 + * # ok, hit breakpoint, now, we have to discover if it is a conditional breakpoint + * # lets do the conditional stuff here + * if breakpoint.expression is not None: # <<<<<<<<<<<<<< + * py_db.handle_breakpoint_expression(breakpoint, info, new_frame) + * + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_breakpoint, __pyx_n_s_expression); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1019, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_12 = (__pyx_t_1 != Py_None); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_12) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1020 + * # lets do the conditional stuff here + * if breakpoint.expression is not None: + * py_db.handle_breakpoint_expression(breakpoint, info, new_frame) # <<<<<<<<<<<<<< + * + * if stop or stop_on_plugin_breakpoint: + */ + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_handle_breakpoint_expression); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1020, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_8); + if (unlikely(!__pyx_v_new_frame)) { __Pyx_RaiseUnboundLocalError("new_frame"); __PYX_ERR(0, 1020, __pyx_L106_error) } + __pyx_t_7 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[4] = {__pyx_t_7, __pyx_v_breakpoint, ((PyObject *)__pyx_v_info), __pyx_v_new_frame}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1020, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1019 + * # ok, hit breakpoint, now, we have to discover if it is a conditional breakpoint + * # lets do the conditional stuff here + * if breakpoint.expression is not None: # <<<<<<<<<<<<<< + * py_db.handle_breakpoint_expression(breakpoint, info, new_frame) + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1022 + * py_db.handle_breakpoint_expression(breakpoint, info, new_frame) + * + * if stop or stop_on_plugin_breakpoint: # <<<<<<<<<<<<<< + * eval_result = False + * if breakpoint.has_condition: + */ + if (!__pyx_v_stop) { + } else { + __pyx_t_12 = __pyx_v_stop; + goto __pyx_L125_bool_binop_done; + } + __pyx_t_12 = __pyx_v_stop_on_plugin_breakpoint; + __pyx_L125_bool_binop_done:; + if (__pyx_t_12) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1023 + * + * if stop or stop_on_plugin_breakpoint: + * eval_result = False # <<<<<<<<<<<<<< + * if breakpoint.has_condition: + * eval_result = py_db.handle_breakpoint_condition(info, breakpoint, new_frame) + */ + __Pyx_INCREF(Py_False); + __pyx_v_eval_result = Py_False; + + /* "_pydevd_bundle/pydevd_cython.pyx":1024 + * if stop or stop_on_plugin_breakpoint: + * eval_result = False + * if breakpoint.has_condition: # <<<<<<<<<<<<<< + * eval_result = py_db.handle_breakpoint_condition(info, breakpoint, new_frame) + * if not eval_result: + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_breakpoint, __pyx_n_s_has_condition); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1024, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 1024, __pyx_L106_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_12) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1025 + * eval_result = False + * if breakpoint.has_condition: + * eval_result = py_db.handle_breakpoint_condition(info, breakpoint, new_frame) # <<<<<<<<<<<<<< + * if not eval_result: + * stop = False + */ + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_handle_breakpoint_condition); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1025, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_8); + if (unlikely(!__pyx_v_new_frame)) { __Pyx_RaiseUnboundLocalError("new_frame"); __PYX_ERR(0, 1025, __pyx_L106_error) } + __pyx_t_7 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[4] = {__pyx_t_7, ((PyObject *)__pyx_v_info), __pyx_v_breakpoint, __pyx_v_new_frame}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1025, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + __Pyx_DECREF_SET(__pyx_v_eval_result, __pyx_t_1); + __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1026 + * if breakpoint.has_condition: + * eval_result = py_db.handle_breakpoint_condition(info, breakpoint, new_frame) + * if not eval_result: # <<<<<<<<<<<<<< + * stop = False + * stop_on_plugin_breakpoint = False + */ + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_eval_result); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 1026, __pyx_L106_error) + __pyx_t_10 = (!__pyx_t_12); + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1027 + * eval_result = py_db.handle_breakpoint_condition(info, breakpoint, new_frame) + * if not eval_result: + * stop = False # <<<<<<<<<<<<<< + * stop_on_plugin_breakpoint = False + * + */ + __pyx_v_stop = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1028 + * if not eval_result: + * stop = False + * stop_on_plugin_breakpoint = False # <<<<<<<<<<<<<< + * + * if is_call and ( + */ + __pyx_v_stop_on_plugin_breakpoint = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1026 + * if breakpoint.has_condition: + * eval_result = py_db.handle_breakpoint_condition(info, breakpoint, new_frame) + * if not eval_result: # <<<<<<<<<<<<<< + * stop = False + * stop_on_plugin_breakpoint = False + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1024 + * if stop or stop_on_plugin_breakpoint: + * eval_result = False + * if breakpoint.has_condition: # <<<<<<<<<<<<<< + * eval_result = py_db.handle_breakpoint_condition(info, breakpoint, new_frame) + * if not eval_result: + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1022 + * py_db.handle_breakpoint_expression(breakpoint, info, new_frame) + * + * if stop or stop_on_plugin_breakpoint: # <<<<<<<<<<<<<< + * eval_result = False + * if breakpoint.has_condition: + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1030 + * stop_on_plugin_breakpoint = False + * + * if is_call and ( # <<<<<<<<<<<<<< + * frame.f_code.co_name in ("", "") or (line == 1 and frame.f_code.co_name.startswith("", "") or (line == 1 and frame.f_code.co_name.startswith("", "") or (line == 1 and frame.f_code.co_name.startswith(". + * + * return self.trace_dispatch # <<<<<<<<<<<<<< + * + * # Handle logpoint (on a logpoint we should never stop). + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1044, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_r = __pyx_t_8; + __pyx_t_8 = 0; + goto __pyx_L110_try_return; + + /* "_pydevd_bundle/pydevd_cython.pyx":1030 + * stop_on_plugin_breakpoint = False + * + * if is_call and ( # <<<<<<<<<<<<<< + * frame.f_code.co_name in ("", "") or (line == 1 and frame.f_code.co_name.startswith(" 0: + */ + __pyx_v_stop_on_plugin_breakpoint = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1051 + * stop_on_plugin_breakpoint = False + * + * if info.pydev_message is not None and len(info.pydev_message) > 0: # <<<<<<<<<<<<<< + * cmd = py_db.cmd_factory.make_io_message(info.pydev_message + os.linesep, "1") + * py_db.writer.add_command(cmd) + */ + __pyx_t_16 = (__pyx_v_info->pydev_message != ((PyObject*)Py_None)); + if (__pyx_t_16) { + } else { + __pyx_t_10 = __pyx_t_16; + goto __pyx_L141_bool_binop_done; + } + __pyx_t_8 = __pyx_v_info->pydev_message; + __Pyx_INCREF(__pyx_t_8); + __pyx_t_13 = PyObject_Length(__pyx_t_8); if (unlikely(__pyx_t_13 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1051, __pyx_L106_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_16 = (__pyx_t_13 > 0); + __pyx_t_10 = __pyx_t_16; + __pyx_L141_bool_binop_done:; + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1052 + * + * if info.pydev_message is not None and len(info.pydev_message) > 0: + * cmd = py_db.cmd_factory.make_io_message(info.pydev_message + os.linesep, "1") # <<<<<<<<<<<<<< + * py_db.writer.add_command(cmd) + * + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_cmd_factory); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1052, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_make_io_message); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1052, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_os); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1052, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_linesep); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1052, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = PyNumber_Add(__pyx_v_info->pydev_message, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1052, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_1, __pyx_kp_s_1}; + __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1052, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __pyx_v_cmd = __pyx_t_8; + __pyx_t_8 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1053 + * if info.pydev_message is not None and len(info.pydev_message) > 0: + * cmd = py_db.cmd_factory.make_io_message(info.pydev_message + os.linesep, "1") + * py_db.writer.add_command(cmd) # <<<<<<<<<<<<<< + * + * if py_db.show_return_values: + */ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_writer); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1053, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_add_command); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1053, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_7 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_cmd}; + __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1053, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1051 + * stop_on_plugin_breakpoint = False + * + * if info.pydev_message is not None and len(info.pydev_message) > 0: # <<<<<<<<<<<<<< + * cmd = py_db.cmd_factory.make_io_message(info.pydev_message + os.linesep, "1") + * py_db.writer.add_command(cmd) + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1047 + * + * # Handle logpoint (on a logpoint we should never stop). + * if (stop or stop_on_plugin_breakpoint) and breakpoint.is_logpoint: # <<<<<<<<<<<<<< + * stop = False + * stop_on_plugin_breakpoint = False + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1016 + * breakpoint, new_frame, bp_type = result + * + * if breakpoint: # <<<<<<<<<<<<<< + * # ok, hit breakpoint, now, we have to discover if it is a conditional breakpoint + * # lets do the conditional stuff here + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1055 + * py_db.writer.add_command(cmd) + * + * if py_db.show_return_values: # <<<<<<<<<<<<<< + * if is_return and ( + * ( + */ + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_show_return_values); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1055, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1055, __pyx_L106_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1056 + * + * if py_db.show_return_values: + * if is_return and ( # <<<<<<<<<<<<<< + * ( + * info.pydev_step_cmd in (108, 159, 128) + */ + if (__pyx_v_is_return) { + } else { + __pyx_t_10 = __pyx_v_is_return; + goto __pyx_L145_bool_binop_done; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1058 + * if is_return and ( + * ( + * info.pydev_step_cmd in (108, 159, 128) # <<<<<<<<<<<<<< + * and (self._is_same_frame(stop_frame, frame.f_back)) + * ) + */ + switch (__pyx_v_info->pydev_step_cmd) { + case 0x6C: + case 0x9F: + case 0x80: + __pyx_t_16 = 1; + break; + default: + __pyx_t_16 = 0; + break; + } + __pyx_t_12 = __pyx_t_16; + if (!__pyx_t_12) { + goto __pyx_L147_next_or; + } else { + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1059 + * ( + * info.pydev_step_cmd in (108, 159, 128) + * and (self._is_same_frame(stop_frame, frame.f_back)) # <<<<<<<<<<<<<< + * ) + * or (info.pydev_step_cmd in (109, 160) and (self._is_same_frame(stop_frame, frame))) + */ + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1059, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_1 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_is_same_frame(__pyx_v_self, __pyx_v_stop_frame, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1059, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 1059, __pyx_L106_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (!__pyx_t_12) { + } else { + __pyx_t_10 = __pyx_t_12; + goto __pyx_L145_bool_binop_done; + } + __pyx_L147_next_or:; + + /* "_pydevd_bundle/pydevd_cython.pyx":1061 + * and (self._is_same_frame(stop_frame, frame.f_back)) + * ) + * or (info.pydev_step_cmd in (109, 160) and (self._is_same_frame(stop_frame, frame))) # <<<<<<<<<<<<<< + * or (info.pydev_step_cmd in (107, 206)) + * or ( + */ + switch (__pyx_v_info->pydev_step_cmd) { + case 0x6D: + case 0xA0: + __pyx_t_12 = 1; + break; + default: + __pyx_t_12 = 0; + break; + } + __pyx_t_16 = __pyx_t_12; + if (!__pyx_t_16) { + goto __pyx_L149_next_or; + } else { + } + __pyx_t_1 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_is_same_frame(__pyx_v_self, __pyx_v_stop_frame, __pyx_v_frame); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1061, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 1061, __pyx_L106_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (!__pyx_t_16) { + } else { + __pyx_t_10 = __pyx_t_16; + goto __pyx_L145_bool_binop_done; + } + __pyx_L149_next_or:; + + /* "_pydevd_bundle/pydevd_cython.pyx":1062 + * ) + * or (info.pydev_step_cmd in (109, 160) and (self._is_same_frame(stop_frame, frame))) + * or (info.pydev_step_cmd in (107, 206)) # <<<<<<<<<<<<<< + * or ( + * info.pydev_step_cmd == 144 + */ + switch (__pyx_v_info->pydev_step_cmd) { + case 0x6B: + case 0xCE: + __pyx_t_16 = 1; + break; + default: + __pyx_t_16 = 0; + break; + } + __pyx_t_12 = __pyx_t_16; + if (!__pyx_t_12) { + } else { + __pyx_t_10 = __pyx_t_12; + goto __pyx_L145_bool_binop_done; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1064 + * or (info.pydev_step_cmd in (107, 206)) + * or ( + * info.pydev_step_cmd == 144 # <<<<<<<<<<<<<< + * and frame.f_back is not None + * and not py_db.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True) + */ + __pyx_t_12 = (__pyx_v_info->pydev_step_cmd == 0x90); + if (__pyx_t_12) { + } else { + __pyx_t_10 = __pyx_t_12; + goto __pyx_L145_bool_binop_done; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1065 + * or ( + * info.pydev_step_cmd == 144 + * and frame.f_back is not None # <<<<<<<<<<<<<< + * and not py_db.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True) + * ) + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1065, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_12 = (__pyx_t_1 != Py_None); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_12) { + } else { + __pyx_t_10 = __pyx_t_12; + goto __pyx_L145_bool_binop_done; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1066 + * info.pydev_step_cmd == 144 + * and frame.f_back is not None + * and not py_db.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True) # <<<<<<<<<<<<<< + * ) + * ): + */ + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_apply_files_filter); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1066, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1066, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1066, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_f_code); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1066, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1066, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[4] = {__pyx_t_6, __pyx_t_7, __pyx_t_4, Py_True}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1066, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 1066, __pyx_L106_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_16 = (!__pyx_t_12); + __pyx_t_10 = __pyx_t_16; + __pyx_L145_bool_binop_done:; + + /* "_pydevd_bundle/pydevd_cython.pyx":1056 + * + * if py_db.show_return_values: + * if is_return and ( # <<<<<<<<<<<<<< + * ( + * info.pydev_step_cmd in (108, 159, 128) + */ + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1069 + * ) + * ): + * self._show_return_values(frame, arg) # <<<<<<<<<<<<<< + * + * elif py_db.remove_return_values_flag: + */ + __pyx_t_1 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_show_return_values(__pyx_v_self, __pyx_v_frame, __pyx_v_arg); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1069, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1056 + * + * if py_db.show_return_values: + * if is_return and ( # <<<<<<<<<<<<<< + * ( + * info.pydev_step_cmd in (108, 159, 128) + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1055 + * py_db.writer.add_command(cmd) + * + * if py_db.show_return_values: # <<<<<<<<<<<<<< + * if is_return and ( + * ( + */ + goto __pyx_L143; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1071 + * self._show_return_values(frame, arg) + * + * elif py_db.remove_return_values_flag: # <<<<<<<<<<<<<< + * try: + * self._remove_return_values(py_db, frame) + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_remove_return_values_flag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1071, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1071, __pyx_L106_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1072 + * + * elif py_db.remove_return_values_flag: + * try: # <<<<<<<<<<<<<< + * self._remove_return_values(py_db, frame) + * finally: + */ + /*try:*/ { + + /* "_pydevd_bundle/pydevd_cython.pyx":1073 + * elif py_db.remove_return_values_flag: + * try: + * self._remove_return_values(py_db, frame) # <<<<<<<<<<<<<< + * finally: + * py_db.remove_return_values_flag = False + */ + __pyx_t_1 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_remove_return_values(__pyx_v_self, __pyx_v_py_db, __pyx_v_frame); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1073, __pyx_L155_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1075 + * self._remove_return_values(py_db, frame) + * finally: + * py_db.remove_return_values_flag = False # <<<<<<<<<<<<<< + * + * if stop: + */ + /*finally:*/ { + /*normal exit:*/{ + if (__Pyx_PyObject_SetAttrStr(__pyx_v_py_db, __pyx_n_s_remove_return_values_flag, Py_False) < 0) __PYX_ERR(0, 1075, __pyx_L106_error) + goto __pyx_L156; + } + __pyx_L155_error:; + /*exception exit:*/{ + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0; __pyx_t_29 = 0; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_27, &__pyx_t_28, &__pyx_t_29); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_24, &__pyx_t_25, &__pyx_t_26) < 0)) __Pyx_ErrFetch(&__pyx_t_24, &__pyx_t_25, &__pyx_t_26); + __Pyx_XGOTREF(__pyx_t_24); + __Pyx_XGOTREF(__pyx_t_25); + __Pyx_XGOTREF(__pyx_t_26); + __Pyx_XGOTREF(__pyx_t_27); + __Pyx_XGOTREF(__pyx_t_28); + __Pyx_XGOTREF(__pyx_t_29); + __pyx_t_9 = __pyx_lineno; __pyx_t_11 = __pyx_clineno; __pyx_t_23 = __pyx_filename; + { + if (__Pyx_PyObject_SetAttrStr(__pyx_v_py_db, __pyx_n_s_remove_return_values_flag, Py_False) < 0) __PYX_ERR(0, 1075, __pyx_L158_error) + } + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_27); + __Pyx_XGIVEREF(__pyx_t_28); + __Pyx_XGIVEREF(__pyx_t_29); + __Pyx_ExceptionReset(__pyx_t_27, __pyx_t_28, __pyx_t_29); + } + __Pyx_XGIVEREF(__pyx_t_24); + __Pyx_XGIVEREF(__pyx_t_25); + __Pyx_XGIVEREF(__pyx_t_26); + __Pyx_ErrRestore(__pyx_t_24, __pyx_t_25, __pyx_t_26); + __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0; __pyx_t_29 = 0; + __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_11; __pyx_filename = __pyx_t_23; + goto __pyx_L106_error; + __pyx_L158_error:; + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_27); + __Pyx_XGIVEREF(__pyx_t_28); + __Pyx_XGIVEREF(__pyx_t_29); + __Pyx_ExceptionReset(__pyx_t_27, __pyx_t_28, __pyx_t_29); + } + __Pyx_XDECREF(__pyx_t_24); __pyx_t_24 = 0; + __Pyx_XDECREF(__pyx_t_25); __pyx_t_25 = 0; + __Pyx_XDECREF(__pyx_t_26); __pyx_t_26 = 0; + __pyx_t_27 = 0; __pyx_t_28 = 0; __pyx_t_29 = 0; + goto __pyx_L106_error; + } + __pyx_L156:; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1071 + * self._show_return_values(frame, arg) + * + * elif py_db.remove_return_values_flag: # <<<<<<<<<<<<<< + * try: + * self._remove_return_values(py_db, frame) + */ + } + __pyx_L143:; + + /* "_pydevd_bundle/pydevd_cython.pyx":1077 + * py_db.remove_return_values_flag = False + * + * if stop: # <<<<<<<<<<<<<< + * self.set_suspend( + * thread, + */ + if (__pyx_v_stop) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1078 + * + * if stop: + * self.set_suspend( # <<<<<<<<<<<<<< + * thread, + * stop_reason, + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_suspend); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1078, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_1); + + /* "_pydevd_bundle/pydevd_cython.pyx":1080 + * self.set_suspend( + * thread, + * stop_reason, # <<<<<<<<<<<<<< + * suspend_other_threads=breakpoint and breakpoint.suspend_policy == "ALL", + * ) + */ + __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1078, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_INCREF(__pyx_v_thread); + __Pyx_GIVEREF(__pyx_v_thread); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_thread)) __PYX_ERR(0, 1078, __pyx_L106_error); + __Pyx_INCREF(__pyx_v_stop_reason); + __Pyx_GIVEREF(__pyx_v_stop_reason); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_stop_reason)) __PYX_ERR(0, 1078, __pyx_L106_error); + + /* "_pydevd_bundle/pydevd_cython.pyx":1081 + * thread, + * stop_reason, + * suspend_other_threads=breakpoint and breakpoint.suspend_policy == "ALL", # <<<<<<<<<<<<<< + * ) + * + */ + __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1081, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_breakpoint); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1081, __pyx_L106_error) + if (__pyx_t_10) { + } else { + __Pyx_INCREF(__pyx_v_breakpoint); + __pyx_t_7 = __pyx_v_breakpoint; + goto __pyx_L160_bool_binop_done; + } + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_breakpoint, __pyx_n_s_suspend_policy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1081, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_3 = PyObject_RichCompare(__pyx_t_6, __pyx_n_s_ALL, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1081, __pyx_L106_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_INCREF(__pyx_t_3); + __pyx_t_7 = __pyx_t_3; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_L160_bool_binop_done:; + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_suspend_other_threads, __pyx_t_7) < 0) __PYX_ERR(0, 1081, __pyx_L106_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1078 + * + * if stop: + * self.set_suspend( # <<<<<<<<<<<<<< + * thread, + * stop_reason, + */ + __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1078, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1077 + * py_db.remove_return_values_flag = False + * + * if stop: # <<<<<<<<<<<<<< + * self.set_suspend( + * thread, + */ + goto __pyx_L159; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1084 + * ) + * + * elif stop_on_plugin_breakpoint and plugin_manager is not None: # <<<<<<<<<<<<<< + * result = plugin_manager.suspend(py_db, thread, frame, bp_type) + * if result: + */ + if (__pyx_v_stop_on_plugin_breakpoint) { + } else { + __pyx_t_10 = __pyx_v_stop_on_plugin_breakpoint; + goto __pyx_L162_bool_binop_done; + } + __pyx_t_16 = (__pyx_v_plugin_manager != Py_None); + __pyx_t_10 = __pyx_t_16; + __pyx_L162_bool_binop_done:; + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1085 + * + * elif stop_on_plugin_breakpoint and plugin_manager is not None: + * result = plugin_manager.suspend(py_db, thread, frame, bp_type) # <<<<<<<<<<<<<< + * if result: + * frame = result + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_plugin_manager, __pyx_n_s_suspend); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1085, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_8 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[5] = {__pyx_t_8, __pyx_v_py_db, __pyx_v_thread, __pyx_v_frame, __pyx_v_bp_type}; + __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 4+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1085, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __Pyx_XDECREF_SET(__pyx_v_result, __pyx_t_7); + __pyx_t_7 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1086 + * elif stop_on_plugin_breakpoint and plugin_manager is not None: + * result = plugin_manager.suspend(py_db, thread, frame, bp_type) + * if result: # <<<<<<<<<<<<<< + * frame = result + * + */ + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_result); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1086, __pyx_L106_error) + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1087 + * result = plugin_manager.suspend(py_db, thread, frame, bp_type) + * if result: + * frame = result # <<<<<<<<<<<<<< + * + * # if thread has a suspend flag, we suspend with a busy wait + */ + __Pyx_INCREF(__pyx_v_result); + __Pyx_DECREF_SET(__pyx_v_frame, __pyx_v_result); + + /* "_pydevd_bundle/pydevd_cython.pyx":1086 + * elif stop_on_plugin_breakpoint and plugin_manager is not None: + * result = plugin_manager.suspend(py_db, thread, frame, bp_type) + * if result: # <<<<<<<<<<<<<< + * frame = result + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1084 + * ) + * + * elif stop_on_plugin_breakpoint and plugin_manager is not None: # <<<<<<<<<<<<<< + * result = plugin_manager.suspend(py_db, thread, frame, bp_type) + * if result: + */ + } + __pyx_L159:; + + /* "_pydevd_bundle/pydevd_cython.pyx":1090 + * + * # if thread has a suspend flag, we suspend with a busy wait + * if info.pydev_state == 2: # <<<<<<<<<<<<<< + * self.do_wait_suspend(thread, frame, event, arg) + * return self.trace_dispatch + */ + __pyx_t_10 = (__pyx_v_info->pydev_state == 2); + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1091 + * # if thread has a suspend flag, we suspend with a busy wait + * if info.pydev_state == 2: + * self.do_wait_suspend(thread, frame, event, arg) # <<<<<<<<<<<<<< + * return self.trace_dispatch + * else: + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_do_wait_suspend); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1091, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_8 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[5] = {__pyx_t_8, __pyx_v_thread, __pyx_v_frame, __pyx_v_event, __pyx_v_arg}; + __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 4+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1091, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1092 + * if info.pydev_state == 2: + * self.do_wait_suspend(thread, frame, event, arg) + * return self.trace_dispatch # <<<<<<<<<<<<<< + * else: + * if not breakpoint and is_line: + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1092, __pyx_L106_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_r = __pyx_t_7; + __pyx_t_7 = 0; + goto __pyx_L110_try_return; + + /* "_pydevd_bundle/pydevd_cython.pyx":1090 + * + * # if thread has a suspend flag, we suspend with a busy wait + * if info.pydev_state == 2: # <<<<<<<<<<<<<< + * self.do_wait_suspend(thread, frame, event, arg) + * return self.trace_dispatch + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1094 + * return self.trace_dispatch + * else: + * if not breakpoint and is_line: # <<<<<<<<<<<<<< + * # No stop from anyone and no breakpoint found in line (cache that). + * frame_skips_cache[line_cache_key] = 0 + */ + /*else*/ { + __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_v_breakpoint); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 1094, __pyx_L106_error) + __pyx_t_12 = (!__pyx_t_16); + if (__pyx_t_12) { + } else { + __pyx_t_10 = __pyx_t_12; + goto __pyx_L167_bool_binop_done; + } + __pyx_t_10 = __pyx_v_is_line; + __pyx_L167_bool_binop_done:; + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1096 + * if not breakpoint and is_line: + * # No stop from anyone and no breakpoint found in line (cache that). + * frame_skips_cache[line_cache_key] = 0 # <<<<<<<<<<<<<< + * + * except: + */ + if (unlikely(__pyx_v_frame_skips_cache == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 1096, __pyx_L106_error) + } + if (unlikely((PyDict_SetItem(__pyx_v_frame_skips_cache, __pyx_v_line_cache_key, __pyx_int_0) < 0))) __PYX_ERR(0, 1096, __pyx_L106_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":1094 + * return self.trace_dispatch + * else: + * if not breakpoint and is_line: # <<<<<<<<<<<<<< + * # No stop from anyone and no breakpoint found in line (cache that). + * frame_skips_cache[line_cache_key] = 0 + */ + } + } + + /* "_pydevd_bundle/pydevd_cython.pyx":988 + * # if DEBUG: print('NOT skipped: %s %s %s %s' % (frame.f_lineno, frame.f_code.co_name, event, frame.__class__.__name__)) + * + * try: # <<<<<<<<<<<<<< + * stop_on_plugin_breakpoint = False + * # return is not taken into account for breakpoint hit because we'd have a double-hit in this case + */ + } + __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0; + __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0; + __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; + goto __pyx_L111_try_end; + __pyx_L106_error:; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1098 + * frame_skips_cache[line_cache_key] = 0 + * + * except: # <<<<<<<<<<<<<< + * # Unfortunately Python itself stops the tracing when it originates from + * # the tracing function, so, we can't do much about it (just let the user know). + */ + /*except:*/ { + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_4, &__pyx_t_8) < 0) __PYX_ERR(0, 1098, __pyx_L108_except_error) + __Pyx_XGOTREF(__pyx_t_7); + __Pyx_XGOTREF(__pyx_t_4); + __Pyx_XGOTREF(__pyx_t_8); + + /* "_pydevd_bundle/pydevd_cython.pyx":1101 + * # Unfortunately Python itself stops the tracing when it originates from + * # the tracing function, so, we can't do much about it (just let the user know). + * exc = sys.exc_info()[0] # <<<<<<<<<<<<<< + * cmd = py_db.cmd_factory.make_console_message( + * "%s raised from within the callback set in sys.settrace.\nDebugging will be disabled for this thread (%s).\n" + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_sys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1101, __pyx_L108_except_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_exc_info); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1101, __pyx_L108_except_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1101, __pyx_L108_except_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1101, __pyx_L108_except_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_exc = __pyx_t_6; + __pyx_t_6 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1102 + * # the tracing function, so, we can't do much about it (just let the user know). + * exc = sys.exc_info()[0] + * cmd = py_db.cmd_factory.make_console_message( # <<<<<<<<<<<<<< + * "%s raised from within the callback set in sys.settrace.\nDebugging will be disabled for this thread (%s).\n" + * % ( + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_cmd_factory); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1102, __pyx_L108_except_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_make_console_message); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1102, __pyx_L108_except_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1105 + * "%s raised from within the callback set in sys.settrace.\nDebugging will be disabled for this thread (%s).\n" + * % ( + * exc, # <<<<<<<<<<<<<< + * thread, + * ) + */ + __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1105, __pyx_L108_except_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_v_exc); + __Pyx_GIVEREF(__pyx_v_exc); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_exc)) __PYX_ERR(0, 1105, __pyx_L108_except_error); + __Pyx_INCREF(__pyx_v_thread); + __Pyx_GIVEREF(__pyx_v_thread); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_thread)) __PYX_ERR(0, 1105, __pyx_L108_except_error); + + /* "_pydevd_bundle/pydevd_cython.pyx":1104 + * cmd = py_db.cmd_factory.make_console_message( + * "%s raised from within the callback set in sys.settrace.\nDebugging will be disabled for this thread (%s).\n" + * % ( # <<<<<<<<<<<<<< + * exc, + * thread, + */ + __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_s_raised_from_within_the_callba, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1104, __pyx_L108_except_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_2}; + __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1102, __pyx_L108_except_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_XDECREF_SET(__pyx_v_cmd, __pyx_t_6); + __pyx_t_6 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1109 + * ) + * ) + * py_db.writer.add_command(cmd) # <<<<<<<<<<<<<< + * if not issubclass(exc, (KeyboardInterrupt, SystemExit)): + * pydev_log.exception() + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_writer); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1109, __pyx_L108_except_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_add_command); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1109, __pyx_L108_except_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_cmd}; + __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1109, __pyx_L108_except_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1110 + * ) + * py_db.writer.add_command(cmd) + * if not issubclass(exc, (KeyboardInterrupt, SystemExit)): # <<<<<<<<<<<<<< + * pydev_log.exception() + * + */ + __pyx_t_10 = PyObject_IsSubclass(__pyx_v_exc, __pyx_tuple__5); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1110, __pyx_L108_except_error) + __pyx_t_12 = (!__pyx_t_10); + if (__pyx_t_12) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1111 + * py_db.writer.add_command(cmd) + * if not issubclass(exc, (KeyboardInterrupt, SystemExit)): + * pydev_log.exception() # <<<<<<<<<<<<<< + * + * raise + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1111, __pyx_L108_except_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_exception); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1111, __pyx_L108_except_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; + __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1111, __pyx_L108_except_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1110 + * ) + * py_db.writer.add_command(cmd) + * if not issubclass(exc, (KeyboardInterrupt, SystemExit)): # <<<<<<<<<<<<<< + * pydev_log.exception() + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1113 + * pydev_log.exception() + * + * raise # <<<<<<<<<<<<<< + * + * # step handling. We stop when we hit the right frame + */ + __Pyx_GIVEREF(__pyx_t_7); + __Pyx_GIVEREF(__pyx_t_4); + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_ErrRestoreWithState(__pyx_t_7, __pyx_t_4, __pyx_t_8); + __pyx_t_7 = 0; __pyx_t_4 = 0; __pyx_t_8 = 0; + __PYX_ERR(0, 1113, __pyx_L108_except_error) + } + + /* "_pydevd_bundle/pydevd_cython.pyx":988 + * # if DEBUG: print('NOT skipped: %s %s %s %s' % (frame.f_lineno, frame.f_code.co_name, event, frame.__class__.__name__)) + * + * try: # <<<<<<<<<<<<<< + * stop_on_plugin_breakpoint = False + * # return is not taken into account for breakpoint hit because we'd have a double-hit in this case + */ + __pyx_L108_except_error:; + __Pyx_XGIVEREF(__pyx_t_19); + __Pyx_XGIVEREF(__pyx_t_18); + __Pyx_XGIVEREF(__pyx_t_17); + __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_18, __pyx_t_17); + goto __pyx_L4_error; + __pyx_L110_try_return:; + __Pyx_XGIVEREF(__pyx_t_19); + __Pyx_XGIVEREF(__pyx_t_18); + __Pyx_XGIVEREF(__pyx_t_17); + __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_18, __pyx_t_17); + goto __pyx_L3_return; + __pyx_L111_try_end:; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1116 + * + * # step handling. We stop when we hit the right frame + * try: # <<<<<<<<<<<<<< + * should_skip = 0 + * if pydevd_dont_trace.should_trace_hook is not None: + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19); + __Pyx_XGOTREF(__pyx_t_17); + __Pyx_XGOTREF(__pyx_t_18); + __Pyx_XGOTREF(__pyx_t_19); + /*try:*/ { + + /* "_pydevd_bundle/pydevd_cython.pyx":1117 + * # step handling. We stop when we hit the right frame + * try: + * should_skip = 0 # <<<<<<<<<<<<<< + * if pydevd_dont_trace.should_trace_hook is not None: + * if self.should_skip == -1: + */ + __pyx_v_should_skip = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1118 + * try: + * should_skip = 0 + * if pydevd_dont_trace.should_trace_hook is not None: # <<<<<<<<<<<<<< + * if self.should_skip == -1: + * # I.e.: cache the result on self.should_skip (no need to evaluate the same frame multiple times). + */ + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_pydevd_dont_trace); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1118, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_should_trace_hook); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1118, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_12 = (__pyx_t_4 != Py_None); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__pyx_t_12) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1119 + * should_skip = 0 + * if pydevd_dont_trace.should_trace_hook is not None: + * if self.should_skip == -1: # <<<<<<<<<<<<<< + * # I.e.: cache the result on self.should_skip (no need to evaluate the same frame multiple times). + * # Note that on a code reload, we won't re-evaluate this because in practice, the frame.f_code + */ + __pyx_t_12 = (__pyx_v_self->should_skip == -1L); + if (__pyx_t_12) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1123 + * # Note that on a code reload, we won't re-evaluate this because in practice, the frame.f_code + * # Which will be handled by this frame is read-only, so, we can cache it safely. + * if not pydevd_dont_trace.should_trace_hook(frame.f_code, abs_path_canonical_path_and_base[0]): # <<<<<<<<<<<<<< + * # -1, 0, 1 to be Cython-friendly + * should_skip = self.should_skip = 1 + */ + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_pydevd_dont_trace); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1123, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_should_trace_hook); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1123, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1123, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + if (unlikely(__pyx_v_abs_path_canonical_path_and_base == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 1123, __pyx_L172_error) + } + __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v_abs_path_canonical_path_and_base, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1123, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_8, __pyx_t_6}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1123, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 1123, __pyx_L172_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_10 = (!__pyx_t_12); + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1125 + * if not pydevd_dont_trace.should_trace_hook(frame.f_code, abs_path_canonical_path_and_base[0]): + * # -1, 0, 1 to be Cython-friendly + * should_skip = self.should_skip = 1 # <<<<<<<<<<<<<< + * else: + * should_skip = self.should_skip = 0 + */ + __pyx_v_should_skip = 1; + __pyx_v_self->should_skip = 1; + + /* "_pydevd_bundle/pydevd_cython.pyx":1123 + * # Note that on a code reload, we won't re-evaluate this because in practice, the frame.f_code + * # Which will be handled by this frame is read-only, so, we can cache it safely. + * if not pydevd_dont_trace.should_trace_hook(frame.f_code, abs_path_canonical_path_and_base[0]): # <<<<<<<<<<<<<< + * # -1, 0, 1 to be Cython-friendly + * should_skip = self.should_skip = 1 + */ + goto __pyx_L180; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1127 + * should_skip = self.should_skip = 1 + * else: + * should_skip = self.should_skip = 0 # <<<<<<<<<<<<<< + * else: + * should_skip = self.should_skip + */ + /*else*/ { + __pyx_v_should_skip = 0; + __pyx_v_self->should_skip = 0; + } + __pyx_L180:; + + /* "_pydevd_bundle/pydevd_cython.pyx":1119 + * should_skip = 0 + * if pydevd_dont_trace.should_trace_hook is not None: + * if self.should_skip == -1: # <<<<<<<<<<<<<< + * # I.e.: cache the result on self.should_skip (no need to evaluate the same frame multiple times). + * # Note that on a code reload, we won't re-evaluate this because in practice, the frame.f_code + */ + goto __pyx_L179; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1129 + * should_skip = self.should_skip = 0 + * else: + * should_skip = self.should_skip # <<<<<<<<<<<<<< + * + * plugin_stop = False + */ + /*else*/ { + __pyx_t_11 = __pyx_v_self->should_skip; + __pyx_v_should_skip = __pyx_t_11; + } + __pyx_L179:; + + /* "_pydevd_bundle/pydevd_cython.pyx":1118 + * try: + * should_skip = 0 + * if pydevd_dont_trace.should_trace_hook is not None: # <<<<<<<<<<<<<< + * if self.should_skip == -1: + * # I.e.: cache the result on self.should_skip (no need to evaluate the same frame multiple times). + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1131 + * should_skip = self.should_skip + * + * plugin_stop = False # <<<<<<<<<<<<<< + * if should_skip: + * stop = False + */ + __Pyx_INCREF(Py_False); + __pyx_v_plugin_stop = Py_False; + + /* "_pydevd_bundle/pydevd_cython.pyx":1132 + * + * plugin_stop = False + * if should_skip: # <<<<<<<<<<<<<< + * stop = False + * + */ + __pyx_t_10 = (__pyx_v_should_skip != 0); + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1133 + * plugin_stop = False + * if should_skip: + * stop = False # <<<<<<<<<<<<<< + * + * elif step_cmd in (107, 144, 206): + */ + __pyx_v_stop = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1132 + * + * plugin_stop = False + * if should_skip: # <<<<<<<<<<<<<< + * stop = False + * + */ + goto __pyx_L181; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1135 + * stop = False + * + * elif step_cmd in (107, 144, 206): # <<<<<<<<<<<<<< + * force_check_project_scope = step_cmd == 144 + * if is_line: + */ + switch (__pyx_v_step_cmd) { + case 0x6B: + case 0x90: + case 0xCE: + __pyx_t_10 = 1; + break; + default: + __pyx_t_10 = 0; + break; + } + __pyx_t_12 = __pyx_t_10; + if (__pyx_t_12) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1136 + * + * elif step_cmd in (107, 144, 206): + * force_check_project_scope = step_cmd == 144 # <<<<<<<<<<<<<< + * if is_line: + * if not info.pydev_use_scoped_step_frame: + */ + __pyx_t_4 = __Pyx_PyBool_FromLong((__pyx_v_step_cmd == 0x90)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1136, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_v_force_check_project_scope = __pyx_t_4; + __pyx_t_4 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1137 + * elif step_cmd in (107, 144, 206): + * force_check_project_scope = step_cmd == 144 + * if is_line: # <<<<<<<<<<<<<< + * if not info.pydev_use_scoped_step_frame: + * if force_check_project_scope or py_db.is_files_filter_enabled: + */ + if (__pyx_v_is_line) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1138 + * force_check_project_scope = step_cmd == 144 + * if is_line: + * if not info.pydev_use_scoped_step_frame: # <<<<<<<<<<<<<< + * if force_check_project_scope or py_db.is_files_filter_enabled: + * stop = not py_db.apply_files_filter(frame, frame.f_code.co_filename, force_check_project_scope) + */ + __pyx_t_12 = (!__pyx_v_info->pydev_use_scoped_step_frame); + if (__pyx_t_12) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1139 + * if is_line: + * if not info.pydev_use_scoped_step_frame: + * if force_check_project_scope or py_db.is_files_filter_enabled: # <<<<<<<<<<<<<< + * stop = not py_db.apply_files_filter(frame, frame.f_code.co_filename, force_check_project_scope) + * else: + */ + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_force_check_project_scope); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1139, __pyx_L172_error) + if (!__pyx_t_10) { + } else { + __pyx_t_12 = __pyx_t_10; + goto __pyx_L185_bool_binop_done; + } + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_is_files_filter_enabled); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1139, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1139, __pyx_L172_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_12 = __pyx_t_10; + __pyx_L185_bool_binop_done:; + if (__pyx_t_12) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1140 + * if not info.pydev_use_scoped_step_frame: + * if force_check_project_scope or py_db.is_files_filter_enabled: + * stop = not py_db.apply_files_filter(frame, frame.f_code.co_filename, force_check_project_scope) # <<<<<<<<<<<<<< + * else: + * stop = True + */ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_apply_files_filter); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1140, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1140, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1140, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[4] = {__pyx_t_6, __pyx_v_frame, __pyx_t_8, __pyx_v_force_check_project_scope}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1140, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 1140, __pyx_L172_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_v_stop = (!__pyx_t_12); + + /* "_pydevd_bundle/pydevd_cython.pyx":1139 + * if is_line: + * if not info.pydev_use_scoped_step_frame: + * if force_check_project_scope or py_db.is_files_filter_enabled: # <<<<<<<<<<<<<< + * stop = not py_db.apply_files_filter(frame, frame.f_code.co_filename, force_check_project_scope) + * else: + */ + goto __pyx_L184; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1142 + * stop = not py_db.apply_files_filter(frame, frame.f_code.co_filename, force_check_project_scope) + * else: + * stop = True # <<<<<<<<<<<<<< + * else: + * if force_check_project_scope or py_db.is_files_filter_enabled: + */ + /*else*/ { + __pyx_v_stop = 1; + } + __pyx_L184:; + + /* "_pydevd_bundle/pydevd_cython.pyx":1138 + * force_check_project_scope = step_cmd == 144 + * if is_line: + * if not info.pydev_use_scoped_step_frame: # <<<<<<<<<<<<<< + * if force_check_project_scope or py_db.is_files_filter_enabled: + * stop = not py_db.apply_files_filter(frame, frame.f_code.co_filename, force_check_project_scope) + */ + goto __pyx_L183; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1144 + * stop = True + * else: + * if force_check_project_scope or py_db.is_files_filter_enabled: # <<<<<<<<<<<<<< + * # Make sure we check the filtering inside ipython calls too... + * if not not py_db.apply_files_filter(frame, frame.f_code.co_filename, force_check_project_scope): + */ + /*else*/ { + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_force_check_project_scope); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1144, __pyx_L172_error) + if (!__pyx_t_10) { + } else { + __pyx_t_12 = __pyx_t_10; + goto __pyx_L188_bool_binop_done; + } + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_is_files_filter_enabled); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1144, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1144, __pyx_L172_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_12 = __pyx_t_10; + __pyx_L188_bool_binop_done:; + if (__pyx_t_12) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1146 + * if force_check_project_scope or py_db.is_files_filter_enabled: + * # Make sure we check the filtering inside ipython calls too... + * if not not py_db.apply_files_filter(frame, frame.f_code.co_filename, force_check_project_scope): # <<<<<<<<<<<<<< + * return None if is_call else NO_FTRACE + * + */ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_apply_files_filter); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1146, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1146, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1146, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[4] = {__pyx_t_8, __pyx_v_frame, __pyx_t_6, __pyx_v_force_check_project_scope}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1146, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 1146, __pyx_L172_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_10 = (!(!__pyx_t_12)); + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1147 + * # Make sure we check the filtering inside ipython calls too... + * if not not py_db.apply_files_filter(frame, frame.f_code.co_filename, force_check_project_scope): + * return None if is_call else NO_FTRACE # <<<<<<<<<<<<<< + * + * # We can only stop inside the ipython call. + */ + __Pyx_XDECREF(__pyx_r); + if (__pyx_v_is_call) { + __Pyx_INCREF(Py_None); + __pyx_t_4 = Py_None; + } else { + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1147, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_4 = __pyx_t_7; + __pyx_t_7 = 0; + } + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L176_try_return; + + /* "_pydevd_bundle/pydevd_cython.pyx":1146 + * if force_check_project_scope or py_db.is_files_filter_enabled: + * # Make sure we check the filtering inside ipython calls too... + * if not not py_db.apply_files_filter(frame, frame.f_code.co_filename, force_check_project_scope): # <<<<<<<<<<<<<< + * return None if is_call else NO_FTRACE + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1144 + * stop = True + * else: + * if force_check_project_scope or py_db.is_files_filter_enabled: # <<<<<<<<<<<<<< + * # Make sure we check the filtering inside ipython calls too... + * if not not py_db.apply_files_filter(frame, frame.f_code.co_filename, force_check_project_scope): + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1150 + * + * # We can only stop inside the ipython call. + * filename = frame.f_code.co_filename # <<<<<<<<<<<<<< + * if filename.endswith(".pyc"): + * filename = filename[:-1] + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1150, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1150, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_v_filename = __pyx_t_7; + __pyx_t_7 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1151 + * # We can only stop inside the ipython call. + * filename = frame.f_code.co_filename + * if filename.endswith(".pyc"): # <<<<<<<<<<<<<< + * filename = filename[:-1] + * + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_filename, __pyx_n_s_endswith); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1151, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_kp_s_pyc}; + __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1151, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1151, __pyx_L172_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1152 + * filename = frame.f_code.co_filename + * if filename.endswith(".pyc"): + * filename = filename[:-1] # <<<<<<<<<<<<<< + * + * if not filename.endswith(PYDEVD_IPYTHON_CONTEXT[0]): + */ + __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_v_filename, 0, -1L, NULL, NULL, &__pyx_slice__6, 0, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1152, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF_SET(__pyx_v_filename, __pyx_t_7); + __pyx_t_7 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1151 + * # We can only stop inside the ipython call. + * filename = frame.f_code.co_filename + * if filename.endswith(".pyc"): # <<<<<<<<<<<<<< + * filename = filename[:-1] + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1154 + * filename = filename[:-1] + * + * if not filename.endswith(PYDEVD_IPYTHON_CONTEXT[0]): # <<<<<<<<<<<<<< + * f = frame.f_back + * while f is not None: + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_filename, __pyx_n_s_endswith); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1154, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_PYDEVD_IPYTHON_CONTEXT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1154, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_6, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1154, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_8}; + __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1154, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1154, __pyx_L172_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_12 = (!__pyx_t_10); + if (__pyx_t_12) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1155 + * + * if not filename.endswith(PYDEVD_IPYTHON_CONTEXT[0]): + * f = frame.f_back # <<<<<<<<<<<<<< + * while f is not None: + * if f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]: + */ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1155, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_XDECREF_SET(__pyx_v_f, __pyx_t_7); + __pyx_t_7 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1156 + * if not filename.endswith(PYDEVD_IPYTHON_CONTEXT[0]): + * f = frame.f_back + * while f is not None: # <<<<<<<<<<<<<< + * if f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]: + * f2 = f.f_back + */ + while (1) { + __pyx_t_12 = (__pyx_v_f != Py_None); + if (!__pyx_t_12) break; + + /* "_pydevd_bundle/pydevd_cython.pyx":1157 + * f = frame.f_back + * while f is not None: + * if f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]: # <<<<<<<<<<<<<< + * f2 = f.f_back + * if f2 is not None and f2.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]: + */ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_f_code); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1157, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_co_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1157, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_PYDEVD_IPYTHON_CONTEXT); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1157, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_7, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1157, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_7 = PyObject_RichCompare(__pyx_t_4, __pyx_t_8, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1157, __pyx_L172_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 1157, __pyx_L172_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (__pyx_t_12) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1158 + * while f is not None: + * if f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]: + * f2 = f.f_back # <<<<<<<<<<<<<< + * if f2 is not None and f2.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]: + * pydev_log.debug("Stop inside ipython call") + */ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_f_back); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1158, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_XDECREF_SET(__pyx_v_f2, __pyx_t_7); + __pyx_t_7 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1159 + * if f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]: + * f2 = f.f_back + * if f2 is not None and f2.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]: # <<<<<<<<<<<<<< + * pydev_log.debug("Stop inside ipython call") + * stop = True + */ + __pyx_t_10 = (__pyx_v_f2 != Py_None); + if (__pyx_t_10) { + } else { + __pyx_t_12 = __pyx_t_10; + goto __pyx_L197_bool_binop_done; + } + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_f2, __pyx_n_s_f_code); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1159, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_co_name); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1159, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_PYDEVD_IPYTHON_CONTEXT); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1159, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_7, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1159, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_7 = PyObject_RichCompare(__pyx_t_8, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1159, __pyx_L172_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1159, __pyx_L172_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_12 = __pyx_t_10; + __pyx_L197_bool_binop_done:; + if (__pyx_t_12) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1160 + * f2 = f.f_back + * if f2 is not None and f2.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]: + * pydev_log.debug("Stop inside ipython call") # <<<<<<<<<<<<<< + * stop = True + * break + */ + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1160, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_debug); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1160, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_kp_s_Stop_inside_ipython_call}; + __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1160, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1161 + * if f2 is not None and f2.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]: + * pydev_log.debug("Stop inside ipython call") + * stop = True # <<<<<<<<<<<<<< + * break + * f = f.f_back + */ + __pyx_v_stop = 1; + + /* "_pydevd_bundle/pydevd_cython.pyx":1162 + * pydev_log.debug("Stop inside ipython call") + * stop = True + * break # <<<<<<<<<<<<<< + * f = f.f_back + * + */ + goto __pyx_L194_break; + + /* "_pydevd_bundle/pydevd_cython.pyx":1159 + * if f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]: + * f2 = f.f_back + * if f2 is not None and f2.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]: # <<<<<<<<<<<<<< + * pydev_log.debug("Stop inside ipython call") + * stop = True + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1157 + * f = frame.f_back + * while f is not None: + * if f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]: # <<<<<<<<<<<<<< + * f2 = f.f_back + * if f2 is not None and f2.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]: + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1163 + * stop = True + * break + * f = f.f_back # <<<<<<<<<<<<<< + * + * del f + */ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_f_back); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1163, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF_SET(__pyx_v_f, __pyx_t_7); + __pyx_t_7 = 0; + } + __pyx_L194_break:; + + /* "_pydevd_bundle/pydevd_cython.pyx":1165 + * f = f.f_back + * + * del f # <<<<<<<<<<<<<< + * + * if not stop: + */ + __Pyx_DECREF(__pyx_v_f); __pyx_v_f = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1154 + * filename = filename[:-1] + * + * if not filename.endswith(PYDEVD_IPYTHON_CONTEXT[0]): # <<<<<<<<<<<<<< + * f = frame.f_back + * while f is not None: + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1167 + * del f + * + * if not stop: # <<<<<<<<<<<<<< + * # In scoped mode if step in didn't work in this context it won't work + * # afterwards anyways. + */ + __pyx_t_12 = (!__pyx_v_stop); + if (__pyx_t_12) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1170 + * # In scoped mode if step in didn't work in this context it won't work + * # afterwards anyways. + * return None if is_call else NO_FTRACE # <<<<<<<<<<<<<< + * + * elif is_return and frame.f_back is not None and not info.pydev_use_scoped_step_frame: + */ + __Pyx_XDECREF(__pyx_r); + if (__pyx_v_is_call) { + __Pyx_INCREF(Py_None); + __pyx_t_7 = Py_None; + } else { + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1170, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_7 = __pyx_t_8; + __pyx_t_8 = 0; + } + __pyx_r = __pyx_t_7; + __pyx_t_7 = 0; + goto __pyx_L176_try_return; + + /* "_pydevd_bundle/pydevd_cython.pyx":1167 + * del f + * + * if not stop: # <<<<<<<<<<<<<< + * # In scoped mode if step in didn't work in this context it won't work + * # afterwards anyways. + */ + } + } + __pyx_L183:; + + /* "_pydevd_bundle/pydevd_cython.pyx":1137 + * elif step_cmd in (107, 144, 206): + * force_check_project_scope = step_cmd == 144 + * if is_line: # <<<<<<<<<<<<<< + * if not info.pydev_use_scoped_step_frame: + * if force_check_project_scope or py_db.is_files_filter_enabled: + */ + goto __pyx_L182; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1172 + * return None if is_call else NO_FTRACE + * + * elif is_return and frame.f_back is not None and not info.pydev_use_scoped_step_frame: # <<<<<<<<<<<<<< + * if py_db.get_file_type(frame.f_back) == py_db.PYDEV_FILE: + * stop = False + */ + if (__pyx_v_is_return) { + } else { + __pyx_t_12 = __pyx_v_is_return; + goto __pyx_L200_bool_binop_done; + } + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1172, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_10 = (__pyx_t_7 != Py_None); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (__pyx_t_10) { + } else { + __pyx_t_12 = __pyx_t_10; + goto __pyx_L200_bool_binop_done; + } + __pyx_t_10 = (!__pyx_v_info->pydev_use_scoped_step_frame); + __pyx_t_12 = __pyx_t_10; + __pyx_L200_bool_binop_done:; + if (__pyx_t_12) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1173 + * + * elif is_return and frame.f_back is not None and not info.pydev_use_scoped_step_frame: + * if py_db.get_file_type(frame.f_back) == py_db.PYDEV_FILE: # <<<<<<<<<<<<<< + * stop = False + * else: + */ + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_get_file_type); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1173, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1173, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_4}; + __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1173, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_PYDEV_FILE); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1173, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_4 = PyObject_RichCompare(__pyx_t_7, __pyx_t_8, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1173, __pyx_L172_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 1173, __pyx_L172_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__pyx_t_12) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1174 + * elif is_return and frame.f_back is not None and not info.pydev_use_scoped_step_frame: + * if py_db.get_file_type(frame.f_back) == py_db.PYDEV_FILE: + * stop = False # <<<<<<<<<<<<<< + * else: + * if force_check_project_scope or py_db.is_files_filter_enabled: + */ + __pyx_v_stop = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1173 + * + * elif is_return and frame.f_back is not None and not info.pydev_use_scoped_step_frame: + * if py_db.get_file_type(frame.f_back) == py_db.PYDEV_FILE: # <<<<<<<<<<<<<< + * stop = False + * else: + */ + goto __pyx_L203; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1176 + * stop = False + * else: + * if force_check_project_scope or py_db.is_files_filter_enabled: # <<<<<<<<<<<<<< + * stop = not py_db.apply_files_filter( + * frame.f_back, frame.f_back.f_code.co_filename, force_check_project_scope + */ + /*else*/ { + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_force_check_project_scope); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1176, __pyx_L172_error) + if (!__pyx_t_10) { + } else { + __pyx_t_12 = __pyx_t_10; + goto __pyx_L205_bool_binop_done; + } + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_is_files_filter_enabled); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1176, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1176, __pyx_L172_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_12 = __pyx_t_10; + __pyx_L205_bool_binop_done:; + if (__pyx_t_12) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1177 + * else: + * if force_check_project_scope or py_db.is_files_filter_enabled: + * stop = not py_db.apply_files_filter( # <<<<<<<<<<<<<< + * frame.f_back, frame.f_back.f_code.co_filename, force_check_project_scope + * ) + */ + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_apply_files_filter); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1177, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + + /* "_pydevd_bundle/pydevd_cython.pyx":1178 + * if force_check_project_scope or py_db.is_files_filter_enabled: + * stop = not py_db.apply_files_filter( + * frame.f_back, frame.f_back.f_code.co_filename, force_check_project_scope # <<<<<<<<<<<<<< + * ) + * if stop: + */ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1178, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1178, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_f_code); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1178, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1178, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[4] = {__pyx_t_3, __pyx_t_7, __pyx_t_6, __pyx_v_force_check_project_scope}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1177, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1177 + * else: + * if force_check_project_scope or py_db.is_files_filter_enabled: + * stop = not py_db.apply_files_filter( # <<<<<<<<<<<<<< + * frame.f_back, frame.f_back.f_code.co_filename, force_check_project_scope + * ) + */ + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 1177, __pyx_L172_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_v_stop = (!__pyx_t_12); + + /* "_pydevd_bundle/pydevd_cython.pyx":1180 + * frame.f_back, frame.f_back.f_code.co_filename, force_check_project_scope + * ) + * if stop: # <<<<<<<<<<<<<< + * # Prevent stopping in a return to the same location we were initially + * # (i.e.: double-stop at the same place due to some filtering). + */ + if (__pyx_v_stop) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1183 + * # Prevent stopping in a return to the same location we were initially + * # (i.e.: double-stop at the same place due to some filtering). + * if info.step_in_initial_location == (frame.f_back, frame.f_back.f_lineno): # <<<<<<<<<<<<<< + * stop = False + * else: + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1183, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1183, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1183, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1183, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_GIVEREF(__pyx_t_4); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4)) __PYX_ERR(0, 1183, __pyx_L172_error); + __Pyx_GIVEREF(__pyx_t_6); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_6)) __PYX_ERR(0, 1183, __pyx_L172_error); + __pyx_t_4 = 0; + __pyx_t_6 = 0; + __pyx_t_6 = PyObject_RichCompare(__pyx_v_info->step_in_initial_location, __pyx_t_8, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1183, __pyx_L172_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 1183, __pyx_L172_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (__pyx_t_12) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1184 + * # (i.e.: double-stop at the same place due to some filtering). + * if info.step_in_initial_location == (frame.f_back, frame.f_back.f_lineno): + * stop = False # <<<<<<<<<<<<<< + * else: + * stop = True + */ + __pyx_v_stop = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1183 + * # Prevent stopping in a return to the same location we were initially + * # (i.e.: double-stop at the same place due to some filtering). + * if info.step_in_initial_location == (frame.f_back, frame.f_back.f_lineno): # <<<<<<<<<<<<<< + * stop = False + * else: + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1180 + * frame.f_back, frame.f_back.f_code.co_filename, force_check_project_scope + * ) + * if stop: # <<<<<<<<<<<<<< + * # Prevent stopping in a return to the same location we were initially + * # (i.e.: double-stop at the same place due to some filtering). + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1176 + * stop = False + * else: + * if force_check_project_scope or py_db.is_files_filter_enabled: # <<<<<<<<<<<<<< + * stop = not py_db.apply_files_filter( + * frame.f_back, frame.f_back.f_code.co_filename, force_check_project_scope + */ + goto __pyx_L204; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1186 + * stop = False + * else: + * stop = True # <<<<<<<<<<<<<< + * else: + * stop = False + */ + /*else*/ { + __pyx_v_stop = 1; + } + __pyx_L204:; + } + __pyx_L203:; + + /* "_pydevd_bundle/pydevd_cython.pyx":1172 + * return None if is_call else NO_FTRACE + * + * elif is_return and frame.f_back is not None and not info.pydev_use_scoped_step_frame: # <<<<<<<<<<<<<< + * if py_db.get_file_type(frame.f_back) == py_db.PYDEV_FILE: + * stop = False + */ + goto __pyx_L182; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1188 + * stop = True + * else: + * stop = False # <<<<<<<<<<<<<< + * + * if stop: + */ + /*else*/ { + __pyx_v_stop = 0; + } + __pyx_L182:; + + /* "_pydevd_bundle/pydevd_cython.pyx":1190 + * stop = False + * + * if stop: # <<<<<<<<<<<<<< + * if step_cmd == 206: + * # i.e.: Check if we're stepping into the proper context. + */ + if (__pyx_v_stop) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1191 + * + * if stop: + * if step_cmd == 206: # <<<<<<<<<<<<<< + * # i.e.: Check if we're stepping into the proper context. + * f = frame + */ + __pyx_t_12 = (__pyx_v_step_cmd == 0xCE); + if (__pyx_t_12) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1193 + * if step_cmd == 206: + * # i.e.: Check if we're stepping into the proper context. + * f = frame # <<<<<<<<<<<<<< + * while f is not None: + * if self._is_same_frame(stop_frame, f): + */ + __Pyx_INCREF(__pyx_v_frame); + __Pyx_XDECREF_SET(__pyx_v_f, __pyx_v_frame); + + /* "_pydevd_bundle/pydevd_cython.pyx":1194 + * # i.e.: Check if we're stepping into the proper context. + * f = frame + * while f is not None: # <<<<<<<<<<<<<< + * if self._is_same_frame(stop_frame, f): + * break + */ + while (1) { + __pyx_t_12 = (__pyx_v_f != Py_None); + if (!__pyx_t_12) break; + + /* "_pydevd_bundle/pydevd_cython.pyx":1195 + * f = frame + * while f is not None: + * if self._is_same_frame(stop_frame, f): # <<<<<<<<<<<<<< + * break + * f = f.f_back + */ + __pyx_t_6 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_is_same_frame(__pyx_v_self, __pyx_v_stop_frame, __pyx_v_f); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1195, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 1195, __pyx_L172_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (__pyx_t_12) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1196 + * while f is not None: + * if self._is_same_frame(stop_frame, f): + * break # <<<<<<<<<<<<<< + * f = f.f_back + * else: + */ + goto __pyx_L212_break; + + /* "_pydevd_bundle/pydevd_cython.pyx":1195 + * f = frame + * while f is not None: + * if self._is_same_frame(stop_frame, f): # <<<<<<<<<<<<<< + * break + * f = f.f_back + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1197 + * if self._is_same_frame(stop_frame, f): + * break + * f = f.f_back # <<<<<<<<<<<<<< + * else: + * stop = False + */ + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_f_back); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1197, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF_SET(__pyx_v_f, __pyx_t_6); + __pyx_t_6 = 0; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1199 + * f = f.f_back + * else: + * stop = False # <<<<<<<<<<<<<< + * + * if plugin_manager is not None: + */ + /*else*/ { + __pyx_v_stop = 0; + } + __pyx_L212_break:; + + /* "_pydevd_bundle/pydevd_cython.pyx":1191 + * + * if stop: + * if step_cmd == 206: # <<<<<<<<<<<<<< + * # i.e.: Check if we're stepping into the proper context. + * f = frame + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1190 + * stop = False + * + * if stop: # <<<<<<<<<<<<<< + * if step_cmd == 206: + * # i.e.: Check if we're stepping into the proper context. + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1201 + * stop = False + * + * if plugin_manager is not None: # <<<<<<<<<<<<<< + * result = plugin_manager.cmd_step_into(py_db, frame, event, self._args[2], self._args[3], stop_info, stop) + * if result: + */ + __pyx_t_12 = (__pyx_v_plugin_manager != Py_None); + if (__pyx_t_12) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1202 + * + * if plugin_manager is not None: + * result = plugin_manager.cmd_step_into(py_db, frame, event, self._args[2], self._args[3], stop_info, stop) # <<<<<<<<<<<<<< + * if result: + * stop, plugin_stop = result + */ + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_plugin_manager, __pyx_n_s_cmd_step_into); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1202, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + if (unlikely(__pyx_v_self->_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 1202, __pyx_L172_error) + } + __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1202, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + if (unlikely(__pyx_v_self->_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 1202, __pyx_L172_error) + } + __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1202, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_v_stop); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1202, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[8] = {__pyx_t_2, __pyx_v_py_db, __pyx_v_frame, __pyx_v_event, __pyx_t_4, __pyx_t_7, __pyx_v_stop_info, __pyx_t_3}; + __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_5, 7+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1202, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + __Pyx_XDECREF_SET(__pyx_v_result, __pyx_t_6); + __pyx_t_6 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1203 + * if plugin_manager is not None: + * result = plugin_manager.cmd_step_into(py_db, frame, event, self._args[2], self._args[3], stop_info, stop) + * if result: # <<<<<<<<<<<<<< + * stop, plugin_stop = result + * + */ + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_result); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 1203, __pyx_L172_error) + if (__pyx_t_12) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1204 + * result = plugin_manager.cmd_step_into(py_db, frame, event, self._args[2], self._args[3], stop_info, stop) + * if result: + * stop, plugin_stop = result # <<<<<<<<<<<<<< + * + * elif step_cmd in (108, 159): + */ + if ((likely(PyTuple_CheckExact(__pyx_v_result))) || (PyList_CheckExact(__pyx_v_result))) { + PyObject* sequence = __pyx_v_result; + Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); + if (unlikely(size != 2)) { + if (size > 2) __Pyx_RaiseTooManyValuesError(2); + else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); + __PYX_ERR(0, 1204, __pyx_L172_error) + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + if (likely(PyTuple_CheckExact(sequence))) { + __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); + __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1); + } else { + __pyx_t_6 = PyList_GET_ITEM(sequence, 0); + __pyx_t_8 = PyList_GET_ITEM(sequence, 1); + } + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(__pyx_t_8); + #else + __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1204, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1204, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + #endif + } else { + Py_ssize_t index = -1; + __pyx_t_3 = PyObject_GetIter(__pyx_v_result); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1204, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_15 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); + index = 0; __pyx_t_6 = __pyx_t_15(__pyx_t_3); if (unlikely(!__pyx_t_6)) goto __pyx_L216_unpacking_failed; + __Pyx_GOTREF(__pyx_t_6); + index = 1; __pyx_t_8 = __pyx_t_15(__pyx_t_3); if (unlikely(!__pyx_t_8)) goto __pyx_L216_unpacking_failed; + __Pyx_GOTREF(__pyx_t_8); + if (__Pyx_IternextUnpackEndCheck(__pyx_t_15(__pyx_t_3), 2) < 0) __PYX_ERR(0, 1204, __pyx_L172_error) + __pyx_t_15 = NULL; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L217_unpacking_done; + __pyx_L216_unpacking_failed:; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_15 = NULL; + if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); + __PYX_ERR(0, 1204, __pyx_L172_error) + __pyx_L217_unpacking_done:; + } + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1204, __pyx_L172_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_v_stop = __pyx_t_12; + __Pyx_DECREF_SET(__pyx_v_plugin_stop, __pyx_t_8); + __pyx_t_8 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1203 + * if plugin_manager is not None: + * result = plugin_manager.cmd_step_into(py_db, frame, event, self._args[2], self._args[3], stop_info, stop) + * if result: # <<<<<<<<<<<<<< + * stop, plugin_stop = result + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1201 + * stop = False + * + * if plugin_manager is not None: # <<<<<<<<<<<<<< + * result = plugin_manager.cmd_step_into(py_db, frame, event, self._args[2], self._args[3], stop_info, stop) + * if result: + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1135 + * stop = False + * + * elif step_cmd in (107, 144, 206): # <<<<<<<<<<<<<< + * force_check_project_scope = step_cmd == 144 + * if is_line: + */ + goto __pyx_L181; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1206 + * stop, plugin_stop = result + * + * elif step_cmd in (108, 159): # <<<<<<<<<<<<<< + * # Note: when dealing with a step over my code it's the same as a step over (the + * # difference is that when we return from a frame in one we go to regular step + */ + switch (__pyx_v_step_cmd) { + case 0x6C: + case 0x9F: + __pyx_t_12 = 1; + break; + default: + __pyx_t_12 = 0; + break; + } + __pyx_t_10 = __pyx_t_12; + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1210 + * # difference is that when we return from a frame in one we go to regular step + * # into and in the other we go to a step into my code). + * stop = self._is_same_frame(stop_frame, frame) and is_line # <<<<<<<<<<<<<< + * # Note: don't stop on a return for step over, only for line events + * # i.e.: don't stop in: (stop_frame is frame.f_back and is_return) as we'd stop twice in that line. + */ + __pyx_t_8 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_is_same_frame(__pyx_v_self, __pyx_v_stop_frame, __pyx_v_frame); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1210, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 1210, __pyx_L172_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (__pyx_t_12) { + } else { + __pyx_t_10 = __pyx_t_12; + goto __pyx_L218_bool_binop_done; + } + __pyx_t_10 = __pyx_v_is_line; + __pyx_L218_bool_binop_done:; + __pyx_v_stop = __pyx_t_10; + + /* "_pydevd_bundle/pydevd_cython.pyx":1214 + * # i.e.: don't stop in: (stop_frame is frame.f_back and is_return) as we'd stop twice in that line. + * + * if plugin_manager is not None: # <<<<<<<<<<<<<< + * result = plugin_manager.cmd_step_over(py_db, frame, event, self._args[2], self._args[3], stop_info, stop) + * if result: + */ + __pyx_t_10 = (__pyx_v_plugin_manager != Py_None); + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1215 + * + * if plugin_manager is not None: + * result = plugin_manager.cmd_step_over(py_db, frame, event, self._args[2], self._args[3], stop_info, stop) # <<<<<<<<<<<<<< + * if result: + * stop, plugin_stop = result + */ + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_plugin_manager, __pyx_n_s_cmd_step_over); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1215, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_6); + if (unlikely(__pyx_v_self->_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 1215, __pyx_L172_error) + } + __pyx_t_3 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1215, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_3); + if (unlikely(__pyx_v_self->_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 1215, __pyx_L172_error) + } + __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1215, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_stop); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1215, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_2 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[8] = {__pyx_t_2, __pyx_v_py_db, __pyx_v_frame, __pyx_v_event, __pyx_t_3, __pyx_t_7, __pyx_v_stop_info, __pyx_t_4}; + __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 7+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1215, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __Pyx_XDECREF_SET(__pyx_v_result, __pyx_t_8); + __pyx_t_8 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1216 + * if plugin_manager is not None: + * result = plugin_manager.cmd_step_over(py_db, frame, event, self._args[2], self._args[3], stop_info, stop) + * if result: # <<<<<<<<<<<<<< + * stop, plugin_stop = result + * + */ + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_result); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1216, __pyx_L172_error) + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1217 + * result = plugin_manager.cmd_step_over(py_db, frame, event, self._args[2], self._args[3], stop_info, stop) + * if result: + * stop, plugin_stop = result # <<<<<<<<<<<<<< + * + * elif step_cmd == 128: + */ + if ((likely(PyTuple_CheckExact(__pyx_v_result))) || (PyList_CheckExact(__pyx_v_result))) { + PyObject* sequence = __pyx_v_result; + Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); + if (unlikely(size != 2)) { + if (size > 2) __Pyx_RaiseTooManyValuesError(2); + else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); + __PYX_ERR(0, 1217, __pyx_L172_error) + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + if (likely(PyTuple_CheckExact(sequence))) { + __pyx_t_8 = PyTuple_GET_ITEM(sequence, 0); + __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); + } else { + __pyx_t_8 = PyList_GET_ITEM(sequence, 0); + __pyx_t_6 = PyList_GET_ITEM(sequence, 1); + } + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(__pyx_t_6); + #else + __pyx_t_8 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1217, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1217, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_6); + #endif + } else { + Py_ssize_t index = -1; + __pyx_t_4 = PyObject_GetIter(__pyx_v_result); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1217, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_15 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); + index = 0; __pyx_t_8 = __pyx_t_15(__pyx_t_4); if (unlikely(!__pyx_t_8)) goto __pyx_L222_unpacking_failed; + __Pyx_GOTREF(__pyx_t_8); + index = 1; __pyx_t_6 = __pyx_t_15(__pyx_t_4); if (unlikely(!__pyx_t_6)) goto __pyx_L222_unpacking_failed; + __Pyx_GOTREF(__pyx_t_6); + if (__Pyx_IternextUnpackEndCheck(__pyx_t_15(__pyx_t_4), 2) < 0) __PYX_ERR(0, 1217, __pyx_L172_error) + __pyx_t_15 = NULL; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + goto __pyx_L223_unpacking_done; + __pyx_L222_unpacking_failed:; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_15 = NULL; + if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); + __PYX_ERR(0, 1217, __pyx_L172_error) + __pyx_L223_unpacking_done:; + } + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1217, __pyx_L172_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_v_stop = __pyx_t_10; + __Pyx_DECREF_SET(__pyx_v_plugin_stop, __pyx_t_6); + __pyx_t_6 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1216 + * if plugin_manager is not None: + * result = plugin_manager.cmd_step_over(py_db, frame, event, self._args[2], self._args[3], stop_info, stop) + * if result: # <<<<<<<<<<<<<< + * stop, plugin_stop = result + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1214 + * # i.e.: don't stop in: (stop_frame is frame.f_back and is_return) as we'd stop twice in that line. + * + * if plugin_manager is not None: # <<<<<<<<<<<<<< + * result = plugin_manager.cmd_step_over(py_db, frame, event, self._args[2], self._args[3], stop_info, stop) + * if result: + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1206 + * stop, plugin_stop = result + * + * elif step_cmd in (108, 159): # <<<<<<<<<<<<<< + * # Note: when dealing with a step over my code it's the same as a step over (the + * # difference is that when we return from a frame in one we go to regular step + */ + goto __pyx_L181; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1219 + * stop, plugin_stop = result + * + * elif step_cmd == 128: # <<<<<<<<<<<<<< + * stop = False + * back = frame.f_back + */ + __pyx_t_10 = (__pyx_v_step_cmd == 0x80); + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1220 + * + * elif step_cmd == 128: + * stop = False # <<<<<<<<<<<<<< + * back = frame.f_back + * if self._is_same_frame(stop_frame, frame) and is_return: + */ + __pyx_v_stop = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1221 + * elif step_cmd == 128: + * stop = False + * back = frame.f_back # <<<<<<<<<<<<<< + * if self._is_same_frame(stop_frame, frame) and is_return: + * # We're exiting the smart step into initial frame (so, we probably didn't find our target). + */ + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1221, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_v_back = __pyx_t_6; + __pyx_t_6 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1222 + * stop = False + * back = frame.f_back + * if self._is_same_frame(stop_frame, frame) and is_return: # <<<<<<<<<<<<<< + * # We're exiting the smart step into initial frame (so, we probably didn't find our target). + * stop = True + */ + __pyx_t_6 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_is_same_frame(__pyx_v_self, __pyx_v_stop_frame, __pyx_v_frame); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1222, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 1222, __pyx_L172_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (__pyx_t_12) { + } else { + __pyx_t_10 = __pyx_t_12; + goto __pyx_L225_bool_binop_done; + } + __pyx_t_10 = __pyx_v_is_return; + __pyx_L225_bool_binop_done:; + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1224 + * if self._is_same_frame(stop_frame, frame) and is_return: + * # We're exiting the smart step into initial frame (so, we probably didn't find our target). + * stop = True # <<<<<<<<<<<<<< + * + * elif self._is_same_frame(stop_frame, back) and is_line: + */ + __pyx_v_stop = 1; + + /* "_pydevd_bundle/pydevd_cython.pyx":1222 + * stop = False + * back = frame.f_back + * if self._is_same_frame(stop_frame, frame) and is_return: # <<<<<<<<<<<<<< + * # We're exiting the smart step into initial frame (so, we probably didn't find our target). + * stop = True + */ + goto __pyx_L224; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1226 + * stop = True + * + * elif self._is_same_frame(stop_frame, back) and is_line: # <<<<<<<<<<<<<< + * if info.pydev_smart_child_offset != -1: + * # i.e.: in this case, we're not interested in the pause in the parent, rather + */ + __pyx_t_6 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_is_same_frame(__pyx_v_self, __pyx_v_stop_frame, __pyx_v_back); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1226, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 1226, __pyx_L172_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (__pyx_t_12) { + } else { + __pyx_t_10 = __pyx_t_12; + goto __pyx_L227_bool_binop_done; + } + __pyx_t_10 = __pyx_v_is_line; + __pyx_L227_bool_binop_done:; + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1227 + * + * elif self._is_same_frame(stop_frame, back) and is_line: + * if info.pydev_smart_child_offset != -1: # <<<<<<<<<<<<<< + * # i.e.: in this case, we're not interested in the pause in the parent, rather + * # we're interested in the pause in the child (when the parent is at the proper place). + */ + __pyx_t_10 = (__pyx_v_info->pydev_smart_child_offset != -1L); + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1230 + * # i.e.: in this case, we're not interested in the pause in the parent, rather + * # we're interested in the pause in the child (when the parent is at the proper place). + * stop = False # <<<<<<<<<<<<<< + * + * else: + */ + __pyx_v_stop = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1227 + * + * elif self._is_same_frame(stop_frame, back) and is_line: + * if info.pydev_smart_child_offset != -1: # <<<<<<<<<<<<<< + * # i.e.: in this case, we're not interested in the pause in the parent, rather + * # we're interested in the pause in the child (when the parent is at the proper place). + */ + goto __pyx_L229; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1233 + * + * else: + * pydev_smart_parent_offset = info.pydev_smart_parent_offset # <<<<<<<<<<<<<< + * + * pydev_smart_step_into_variants = info.pydev_smart_step_into_variants + */ + /*else*/ { + __pyx_t_11 = __pyx_v_info->pydev_smart_parent_offset; + __pyx_v_pydev_smart_parent_offset = __pyx_t_11; + + /* "_pydevd_bundle/pydevd_cython.pyx":1235 + * pydev_smart_parent_offset = info.pydev_smart_parent_offset + * + * pydev_smart_step_into_variants = info.pydev_smart_step_into_variants # <<<<<<<<<<<<<< + * if pydev_smart_parent_offset >= 0 and pydev_smart_step_into_variants: + * # Preferred mode (when the smart step into variants are available + */ + __pyx_t_6 = __pyx_v_info->pydev_smart_step_into_variants; + __Pyx_INCREF(__pyx_t_6); + __pyx_v_pydev_smart_step_into_variants = ((PyObject*)__pyx_t_6); + __pyx_t_6 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1236 + * + * pydev_smart_step_into_variants = info.pydev_smart_step_into_variants + * if pydev_smart_parent_offset >= 0 and pydev_smart_step_into_variants: # <<<<<<<<<<<<<< + * # Preferred mode (when the smart step into variants are available + * # and the offset is set). + */ + __pyx_t_12 = (__pyx_v_pydev_smart_parent_offset >= 0); + if (__pyx_t_12) { + } else { + __pyx_t_10 = __pyx_t_12; + goto __pyx_L231_bool_binop_done; + } + __pyx_t_12 = (__pyx_v_pydev_smart_step_into_variants != Py_None)&&(PyTuple_GET_SIZE(__pyx_v_pydev_smart_step_into_variants) != 0); + __pyx_t_10 = __pyx_t_12; + __pyx_L231_bool_binop_done:; + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1239 + * # Preferred mode (when the smart step into variants are available + * # and the offset is set). + * stop = get_smart_step_into_variant_from_frame_offset( # <<<<<<<<<<<<<< + * back.f_lasti, pydev_smart_step_into_variants + * ) is get_smart_step_into_variant_from_frame_offset( + */ + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_get_smart_step_into_variant_from); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1239, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + + /* "_pydevd_bundle/pydevd_cython.pyx":1240 + * # and the offset is set). + * stop = get_smart_step_into_variant_from_frame_offset( + * back.f_lasti, pydev_smart_step_into_variants # <<<<<<<<<<<<<< + * ) is get_smart_step_into_variant_from_frame_offset( + * pydev_smart_parent_offset, pydev_smart_step_into_variants + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_back, __pyx_n_s_f_lasti); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1240, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_7 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_t_4, __pyx_v_pydev_smart_step_into_variants}; + __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1239, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1241 + * stop = get_smart_step_into_variant_from_frame_offset( + * back.f_lasti, pydev_smart_step_into_variants + * ) is get_smart_step_into_variant_from_frame_offset( # <<<<<<<<<<<<<< + * pydev_smart_parent_offset, pydev_smart_step_into_variants + * ) + */ + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_get_smart_step_into_variant_from); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1241, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + + /* "_pydevd_bundle/pydevd_cython.pyx":1242 + * back.f_lasti, pydev_smart_step_into_variants + * ) is get_smart_step_into_variant_from_frame_offset( + * pydev_smart_parent_offset, pydev_smart_step_into_variants # <<<<<<<<<<<<<< + * ) + * + */ + __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_pydev_smart_parent_offset); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1242, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_7, __pyx_v_pydev_smart_step_into_variants}; + __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1241, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __pyx_t_10 = (__pyx_t_6 == __pyx_t_8); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_v_stop = __pyx_t_10; + + /* "_pydevd_bundle/pydevd_cython.pyx":1236 + * + * pydev_smart_step_into_variants = info.pydev_smart_step_into_variants + * if pydev_smart_parent_offset >= 0 and pydev_smart_step_into_variants: # <<<<<<<<<<<<<< + * # Preferred mode (when the smart step into variants are available + * # and the offset is set). + */ + goto __pyx_L230; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1247 + * else: + * # Only the name/line is available, so, check that. + * curr_func_name = frame.f_code.co_name # <<<<<<<<<<<<<< + * + * # global context is set with an empty name + */ + /*else*/ { + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1247, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_co_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1247, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (!(likely(PyString_CheckExact(__pyx_t_6))||((__pyx_t_6) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_6))) __PYX_ERR(0, 1247, __pyx_L172_error) + __Pyx_XDECREF_SET(__pyx_v_curr_func_name, ((PyObject*)__pyx_t_6)); + __pyx_t_6 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1250 + * + * # global context is set with an empty name + * if curr_func_name in ("?", "") or curr_func_name is None: # <<<<<<<<<<<<<< + * curr_func_name = "" + * if curr_func_name == info.pydev_func_name and stop_frame.f_lineno == info.pydev_next_line: + */ + __Pyx_INCREF(__pyx_v_curr_func_name); + __pyx_t_22 = __pyx_v_curr_func_name; + __pyx_t_16 = (__Pyx_PyString_Equals(__pyx_t_22, __pyx_kp_s__4, Py_EQ)); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 1250, __pyx_L172_error) + if (!__pyx_t_16) { + } else { + __pyx_t_12 = __pyx_t_16; + goto __pyx_L236_bool_binop_done; + } + __pyx_t_16 = (__Pyx_PyString_Equals(__pyx_t_22, __pyx_kp_s_module, Py_EQ)); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 1250, __pyx_L172_error) + __pyx_t_12 = __pyx_t_16; + __pyx_L236_bool_binop_done:; + __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0; + __pyx_t_16 = __pyx_t_12; + if (!__pyx_t_16) { + } else { + __pyx_t_10 = __pyx_t_16; + goto __pyx_L234_bool_binop_done; + } + __pyx_t_16 = (__pyx_v_curr_func_name == ((PyObject*)Py_None)); + __pyx_t_10 = __pyx_t_16; + __pyx_L234_bool_binop_done:; + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1251 + * # global context is set with an empty name + * if curr_func_name in ("?", "") or curr_func_name is None: + * curr_func_name = "" # <<<<<<<<<<<<<< + * if curr_func_name == info.pydev_func_name and stop_frame.f_lineno == info.pydev_next_line: + * stop = True + */ + __Pyx_INCREF(__pyx_kp_s_); + __Pyx_DECREF_SET(__pyx_v_curr_func_name, __pyx_kp_s_); + + /* "_pydevd_bundle/pydevd_cython.pyx":1250 + * + * # global context is set with an empty name + * if curr_func_name in ("?", "") or curr_func_name is None: # <<<<<<<<<<<<<< + * curr_func_name = "" + * if curr_func_name == info.pydev_func_name and stop_frame.f_lineno == info.pydev_next_line: + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1252 + * if curr_func_name in ("?", "") or curr_func_name is None: + * curr_func_name = "" + * if curr_func_name == info.pydev_func_name and stop_frame.f_lineno == info.pydev_next_line: # <<<<<<<<<<<<<< + * stop = True + * + */ + __pyx_t_16 = (__Pyx_PyString_Equals(__pyx_v_curr_func_name, __pyx_v_info->pydev_func_name, Py_EQ)); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 1252, __pyx_L172_error) + if (__pyx_t_16) { + } else { + __pyx_t_10 = __pyx_t_16; + goto __pyx_L239_bool_binop_done; + } + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_stop_frame, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1252, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_info->pydev_next_line); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1252, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_4 = PyObject_RichCompare(__pyx_t_6, __pyx_t_8, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1252, __pyx_L172_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 1252, __pyx_L172_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_10 = __pyx_t_16; + __pyx_L239_bool_binop_done:; + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1253 + * curr_func_name = "" + * if curr_func_name == info.pydev_func_name and stop_frame.f_lineno == info.pydev_next_line: + * stop = True # <<<<<<<<<<<<<< + * + * if not stop: + */ + __pyx_v_stop = 1; + + /* "_pydevd_bundle/pydevd_cython.pyx":1252 + * if curr_func_name in ("?", "") or curr_func_name is None: + * curr_func_name = "" + * if curr_func_name == info.pydev_func_name and stop_frame.f_lineno == info.pydev_next_line: # <<<<<<<<<<<<<< + * stop = True + * + */ + } + } + __pyx_L230:; + } + __pyx_L229:; + + /* "_pydevd_bundle/pydevd_cython.pyx":1255 + * stop = True + * + * if not stop: # <<<<<<<<<<<<<< + * # In smart step into, if we didn't hit it in this frame once, that'll + * # not be the case next time either, so, disable tracing for this frame. + */ + __pyx_t_10 = (!__pyx_v_stop); + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1258 + * # In smart step into, if we didn't hit it in this frame once, that'll + * # not be the case next time either, so, disable tracing for this frame. + * return None if is_call else NO_FTRACE # <<<<<<<<<<<<<< + * + * elif back is not None and self._is_same_frame(stop_frame, back.f_back) and is_line: + */ + __Pyx_XDECREF(__pyx_r); + if (__pyx_v_is_call) { + __Pyx_INCREF(Py_None); + __pyx_t_4 = Py_None; + } else { + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1258, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_4 = __pyx_t_8; + __pyx_t_8 = 0; + } + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L176_try_return; + + /* "_pydevd_bundle/pydevd_cython.pyx":1255 + * stop = True + * + * if not stop: # <<<<<<<<<<<<<< + * # In smart step into, if we didn't hit it in this frame once, that'll + * # not be the case next time either, so, disable tracing for this frame. + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1226 + * stop = True + * + * elif self._is_same_frame(stop_frame, back) and is_line: # <<<<<<<<<<<<<< + * if info.pydev_smart_child_offset != -1: + * # i.e.: in this case, we're not interested in the pause in the parent, rather + */ + goto __pyx_L224; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1260 + * return None if is_call else NO_FTRACE + * + * elif back is not None and self._is_same_frame(stop_frame, back.f_back) and is_line: # <<<<<<<<<<<<<< + * # Ok, we have to track 2 stops at this point, the parent and the child offset. + * # This happens when handling a step into which targets a function inside a list comprehension + */ + __pyx_t_16 = (__pyx_v_back != Py_None); + if (__pyx_t_16) { + } else { + __pyx_t_10 = __pyx_t_16; + goto __pyx_L242_bool_binop_done; + } + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_back, __pyx_n_s_f_back); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1260, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_8 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_is_same_frame(__pyx_v_self, __pyx_v_stop_frame, __pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1260, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 1260, __pyx_L172_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (__pyx_t_16) { + } else { + __pyx_t_10 = __pyx_t_16; + goto __pyx_L242_bool_binop_done; + } + __pyx_t_10 = __pyx_v_is_line; + __pyx_L242_bool_binop_done:; + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1264 + * # This happens when handling a step into which targets a function inside a list comprehension + * # or generator (in which case an intermediary frame is created due to an internal function call). + * pydev_smart_parent_offset = info.pydev_smart_parent_offset # <<<<<<<<<<<<<< + * pydev_smart_child_offset = info.pydev_smart_child_offset + * # print('matched back frame', pydev_smart_parent_offset, pydev_smart_child_offset) + */ + __pyx_t_11 = __pyx_v_info->pydev_smart_parent_offset; + __pyx_v_pydev_smart_parent_offset = __pyx_t_11; + + /* "_pydevd_bundle/pydevd_cython.pyx":1265 + * # or generator (in which case an intermediary frame is created due to an internal function call). + * pydev_smart_parent_offset = info.pydev_smart_parent_offset + * pydev_smart_child_offset = info.pydev_smart_child_offset # <<<<<<<<<<<<<< + * # print('matched back frame', pydev_smart_parent_offset, pydev_smart_child_offset) + * # print('parent f_lasti', back.f_back.f_lasti) + */ + __pyx_t_11 = __pyx_v_info->pydev_smart_child_offset; + __pyx_v_pydev_smart_child_offset = __pyx_t_11; + + /* "_pydevd_bundle/pydevd_cython.pyx":1269 + * # print('parent f_lasti', back.f_back.f_lasti) + * # print('child f_lasti', back.f_lasti) + * stop = False # <<<<<<<<<<<<<< + * if pydev_smart_child_offset >= 0 and pydev_smart_child_offset >= 0: + * pydev_smart_step_into_variants = info.pydev_smart_step_into_variants + */ + __pyx_v_stop = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1270 + * # print('child f_lasti', back.f_lasti) + * stop = False + * if pydev_smart_child_offset >= 0 and pydev_smart_child_offset >= 0: # <<<<<<<<<<<<<< + * pydev_smart_step_into_variants = info.pydev_smart_step_into_variants + * + */ + __pyx_t_16 = (__pyx_v_pydev_smart_child_offset >= 0); + if (__pyx_t_16) { + } else { + __pyx_t_10 = __pyx_t_16; + goto __pyx_L246_bool_binop_done; + } + __pyx_t_16 = (__pyx_v_pydev_smart_child_offset >= 0); + __pyx_t_10 = __pyx_t_16; + __pyx_L246_bool_binop_done:; + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1271 + * stop = False + * if pydev_smart_child_offset >= 0 and pydev_smart_child_offset >= 0: + * pydev_smart_step_into_variants = info.pydev_smart_step_into_variants # <<<<<<<<<<<<<< + * + * if pydev_smart_parent_offset >= 0 and pydev_smart_step_into_variants: + */ + __pyx_t_8 = __pyx_v_info->pydev_smart_step_into_variants; + __Pyx_INCREF(__pyx_t_8); + __pyx_v_pydev_smart_step_into_variants = ((PyObject*)__pyx_t_8); + __pyx_t_8 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1273 + * pydev_smart_step_into_variants = info.pydev_smart_step_into_variants + * + * if pydev_smart_parent_offset >= 0 and pydev_smart_step_into_variants: # <<<<<<<<<<<<<< + * # Note that we don't really check the parent offset, only the offset of + * # the child (because this is a generator, the parent may have moved forward + */ + __pyx_t_16 = (__pyx_v_pydev_smart_parent_offset >= 0); + if (__pyx_t_16) { + } else { + __pyx_t_10 = __pyx_t_16; + goto __pyx_L249_bool_binop_done; + } + __pyx_t_16 = (__pyx_v_pydev_smart_step_into_variants != Py_None)&&(PyTuple_GET_SIZE(__pyx_v_pydev_smart_step_into_variants) != 0); + __pyx_t_10 = __pyx_t_16; + __pyx_L249_bool_binop_done:; + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1278 + * # already -- and that's ok, so, we just check that the parent frame + * # matches in this case). + * smart_step_into_variant = get_smart_step_into_variant_from_frame_offset( # <<<<<<<<<<<<<< + * pydev_smart_parent_offset, pydev_smart_step_into_variants + * ) + */ + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_get_smart_step_into_variant_from); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1278, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + + /* "_pydevd_bundle/pydevd_cython.pyx":1279 + * # matches in this case). + * smart_step_into_variant = get_smart_step_into_variant_from_frame_offset( + * pydev_smart_parent_offset, pydev_smart_step_into_variants # <<<<<<<<<<<<<< + * ) + * # print('matched parent offset', pydev_smart_parent_offset) + */ + __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_pydev_smart_parent_offset); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1279, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_t_6, __pyx_v_pydev_smart_step_into_variants}; + __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1278, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __pyx_v_smart_step_into_variant = __pyx_t_8; + __pyx_t_8 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1283 + * # print('matched parent offset', pydev_smart_parent_offset) + * # Ok, now, check the child variant + * children_variants = smart_step_into_variant.children_variants # <<<<<<<<<<<<<< + * stop = children_variants and ( + * get_smart_step_into_variant_from_frame_offset(back.f_lasti, children_variants) + */ + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_smart_step_into_variant, __pyx_n_s_children_variants); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1283, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_v_children_variants = __pyx_t_8; + __pyx_t_8 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1284 + * # Ok, now, check the child variant + * children_variants = smart_step_into_variant.children_variants + * stop = children_variants and ( # <<<<<<<<<<<<<< + * get_smart_step_into_variant_from_frame_offset(back.f_lasti, children_variants) + * is get_smart_step_into_variant_from_frame_offset(pydev_smart_child_offset, children_variants) + */ + __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_v_children_variants); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 1284, __pyx_L172_error) + if (__pyx_t_16) { + } else { + __pyx_t_10 = __pyx_t_16; + goto __pyx_L251_bool_binop_done; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1285 + * children_variants = smart_step_into_variant.children_variants + * stop = children_variants and ( + * get_smart_step_into_variant_from_frame_offset(back.f_lasti, children_variants) # <<<<<<<<<<<<<< + * is get_smart_step_into_variant_from_frame_offset(pydev_smart_child_offset, children_variants) + * ) + */ + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_get_smart_step_into_variant_from); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1285, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_back, __pyx_n_s_f_lasti); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1285, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_t_6, __pyx_v_children_variants}; + __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1285, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1286 + * stop = children_variants and ( + * get_smart_step_into_variant_from_frame_offset(back.f_lasti, children_variants) + * is get_smart_step_into_variant_from_frame_offset(pydev_smart_child_offset, children_variants) # <<<<<<<<<<<<<< + * ) + * # print('stop at child', stop) + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_get_smart_step_into_variant_from); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1286, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_pydev_smart_child_offset); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1286, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_7, __pyx_v_children_variants}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1286, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __pyx_t_16 = (__pyx_t_8 == __pyx_t_4); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_10 = __pyx_t_16; + __pyx_L251_bool_binop_done:; + __pyx_v_stop = __pyx_t_10; + + /* "_pydevd_bundle/pydevd_cython.pyx":1273 + * pydev_smart_step_into_variants = info.pydev_smart_step_into_variants + * + * if pydev_smart_parent_offset >= 0 and pydev_smart_step_into_variants: # <<<<<<<<<<<<<< + * # Note that we don't really check the parent offset, only the offset of + * # the child (because this is a generator, the parent may have moved forward + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1270 + * # print('child f_lasti', back.f_lasti) + * stop = False + * if pydev_smart_child_offset >= 0 and pydev_smart_child_offset >= 0: # <<<<<<<<<<<<<< + * pydev_smart_step_into_variants = info.pydev_smart_step_into_variants + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1290 + * # print('stop at child', stop) + * + * if not stop: # <<<<<<<<<<<<<< + * # In smart step into, if we didn't hit it in this frame once, that'll + * # not be the case next time either, so, disable tracing for this frame. + */ + __pyx_t_10 = (!__pyx_v_stop); + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1293 + * # In smart step into, if we didn't hit it in this frame once, that'll + * # not be the case next time either, so, disable tracing for this frame. + * return None if is_call else NO_FTRACE # <<<<<<<<<<<<<< + * + * elif step_cmd in (109, 160): + */ + __Pyx_XDECREF(__pyx_r); + if (__pyx_v_is_call) { + __Pyx_INCREF(Py_None); + __pyx_t_4 = Py_None; + } else { + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1293, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_4 = __pyx_t_8; + __pyx_t_8 = 0; + } + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L176_try_return; + + /* "_pydevd_bundle/pydevd_cython.pyx":1290 + * # print('stop at child', stop) + * + * if not stop: # <<<<<<<<<<<<<< + * # In smart step into, if we didn't hit it in this frame once, that'll + * # not be the case next time either, so, disable tracing for this frame. + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1260 + * return None if is_call else NO_FTRACE + * + * elif back is not None and self._is_same_frame(stop_frame, back.f_back) and is_line: # <<<<<<<<<<<<<< + * # Ok, we have to track 2 stops at this point, the parent and the child offset. + * # This happens when handling a step into which targets a function inside a list comprehension + */ + } + __pyx_L224:; + + /* "_pydevd_bundle/pydevd_cython.pyx":1219 + * stop, plugin_stop = result + * + * elif step_cmd == 128: # <<<<<<<<<<<<<< + * stop = False + * back = frame.f_back + */ + goto __pyx_L181; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1295 + * return None if is_call else NO_FTRACE + * + * elif step_cmd in (109, 160): # <<<<<<<<<<<<<< + * stop = is_return and self._is_same_frame(stop_frame, frame) + * + */ + switch (__pyx_v_step_cmd) { + case 0x6D: + case 0xA0: + __pyx_t_10 = 1; + break; + default: + __pyx_t_10 = 0; + break; + } + __pyx_t_16 = __pyx_t_10; + if (__pyx_t_16) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1296 + * + * elif step_cmd in (109, 160): + * stop = is_return and self._is_same_frame(stop_frame, frame) # <<<<<<<<<<<<<< + * + * else: + */ + if (__pyx_v_is_return) { + } else { + __pyx_t_16 = __pyx_v_is_return; + goto __pyx_L254_bool_binop_done; + } + __pyx_t_4 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self->__pyx_vtab)->_is_same_frame(__pyx_v_self, __pyx_v_stop_frame, __pyx_v_frame); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1296, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1296, __pyx_L172_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_16 = __pyx_t_10; + __pyx_L254_bool_binop_done:; + __pyx_v_stop = __pyx_t_16; + + /* "_pydevd_bundle/pydevd_cython.pyx":1295 + * return None if is_call else NO_FTRACE + * + * elif step_cmd in (109, 160): # <<<<<<<<<<<<<< + * stop = is_return and self._is_same_frame(stop_frame, frame) + * + */ + goto __pyx_L181; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1299 + * + * else: + * stop = False # <<<<<<<<<<<<<< + * + * if stop and step_cmd != -1 and is_return and hasattr(frame, "f_back"): + */ + /*else*/ { + __pyx_v_stop = 0; + } + __pyx_L181:; + + /* "_pydevd_bundle/pydevd_cython.pyx":1301 + * stop = False + * + * if stop and step_cmd != -1 and is_return and hasattr(frame, "f_back"): # <<<<<<<<<<<<<< + * f_code = getattr(frame.f_back, "f_code", None) + * if f_code is not None: + */ + if (__pyx_v_stop) { + } else { + __pyx_t_16 = __pyx_v_stop; + goto __pyx_L257_bool_binop_done; + } + __pyx_t_10 = (__pyx_v_step_cmd != -1L); + if (__pyx_t_10) { + } else { + __pyx_t_16 = __pyx_t_10; + goto __pyx_L257_bool_binop_done; + } + if (__pyx_v_is_return) { + } else { + __pyx_t_16 = __pyx_v_is_return; + goto __pyx_L257_bool_binop_done; + } + __pyx_t_10 = __Pyx_HasAttr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1301, __pyx_L172_error) + __pyx_t_16 = __pyx_t_10; + __pyx_L257_bool_binop_done:; + if (__pyx_t_16) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1302 + * + * if stop and step_cmd != -1 and is_return and hasattr(frame, "f_back"): + * f_code = getattr(frame.f_back, "f_code", None) # <<<<<<<<<<<<<< + * if f_code is not None: + * if py_db.get_file_type(frame.f_back) == py_db.PYDEV_FILE: + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1302, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_8 = __Pyx_GetAttr3(__pyx_t_4, __pyx_n_s_f_code, Py_None); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1302, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_v_f_code = __pyx_t_8; + __pyx_t_8 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1303 + * if stop and step_cmd != -1 and is_return and hasattr(frame, "f_back"): + * f_code = getattr(frame.f_back, "f_code", None) + * if f_code is not None: # <<<<<<<<<<<<<< + * if py_db.get_file_type(frame.f_back) == py_db.PYDEV_FILE: + * stop = False + */ + __pyx_t_16 = (__pyx_v_f_code != Py_None); + if (__pyx_t_16) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1304 + * f_code = getattr(frame.f_back, "f_code", None) + * if f_code is not None: + * if py_db.get_file_type(frame.f_back) == py_db.PYDEV_FILE: # <<<<<<<<<<<<<< + * stop = False + * + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_get_file_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1304, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1304, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_6}; + __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1304, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_PYDEV_FILE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1304, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = PyObject_RichCompare(__pyx_t_8, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1304, __pyx_L172_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 1304, __pyx_L172_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (__pyx_t_16) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1305 + * if f_code is not None: + * if py_db.get_file_type(frame.f_back) == py_db.PYDEV_FILE: + * stop = False # <<<<<<<<<<<<<< + * + * if plugin_stop: + */ + __pyx_v_stop = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1304 + * f_code = getattr(frame.f_back, "f_code", None) + * if f_code is not None: + * if py_db.get_file_type(frame.f_back) == py_db.PYDEV_FILE: # <<<<<<<<<<<<<< + * stop = False + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1303 + * if stop and step_cmd != -1 and is_return and hasattr(frame, "f_back"): + * f_code = getattr(frame.f_back, "f_code", None) + * if f_code is not None: # <<<<<<<<<<<<<< + * if py_db.get_file_type(frame.f_back) == py_db.PYDEV_FILE: + * stop = False + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1301 + * stop = False + * + * if stop and step_cmd != -1 and is_return and hasattr(frame, "f_back"): # <<<<<<<<<<<<<< + * f_code = getattr(frame.f_back, "f_code", None) + * if f_code is not None: + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1307 + * stop = False + * + * if plugin_stop: # <<<<<<<<<<<<<< + * plugin_manager.stop(py_db, frame, event, self._args[3], stop_info, arg, step_cmd) + * elif stop: + */ + __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_v_plugin_stop); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 1307, __pyx_L172_error) + if (__pyx_t_16) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1308 + * + * if plugin_stop: + * plugin_manager.stop(py_db, frame, event, self._args[3], stop_info, arg, step_cmd) # <<<<<<<<<<<<<< + * elif stop: + * if is_line: + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_plugin_manager, __pyx_n_s_stop); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1308, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + if (unlikely(__pyx_v_self->_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 1308, __pyx_L172_error) + } + __pyx_t_8 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_args, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1308, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_step_cmd); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1308, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[8] = {__pyx_t_3, __pyx_v_py_db, __pyx_v_frame, __pyx_v_event, __pyx_t_8, __pyx_v_stop_info, __pyx_v_arg, __pyx_t_7}; + __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 7+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1308, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1307 + * stop = False + * + * if plugin_stop: # <<<<<<<<<<<<<< + * plugin_manager.stop(py_db, frame, event, self._args[3], stop_info, arg, step_cmd) + * elif stop: + */ + goto __pyx_L263; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1309 + * if plugin_stop: + * plugin_manager.stop(py_db, frame, event, self._args[3], stop_info, arg, step_cmd) + * elif stop: # <<<<<<<<<<<<<< + * if is_line: + * self.set_suspend(thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd) + */ + if (__pyx_v_stop) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1310 + * plugin_manager.stop(py_db, frame, event, self._args[3], stop_info, arg, step_cmd) + * elif stop: + * if is_line: # <<<<<<<<<<<<<< + * self.set_suspend(thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd) + * self.do_wait_suspend(thread, frame, event, arg) + */ + if (__pyx_v_is_line) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1311 + * elif stop: + * if is_line: + * self.set_suspend(thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd) # <<<<<<<<<<<<<< + * self.do_wait_suspend(thread, frame, event, arg) + * elif is_return: # return event + */ + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_suspend); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1311, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_step_cmd); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1311, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1311, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_INCREF(__pyx_v_thread); + __Pyx_GIVEREF(__pyx_v_thread); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_thread)) __PYX_ERR(0, 1311, __pyx_L172_error); + __Pyx_GIVEREF(__pyx_t_4); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_4)) __PYX_ERR(0, 1311, __pyx_L172_error); + __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1311, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_info->pydev_original_step_cmd); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1311, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_original_step_cmd, __pyx_t_8) < 0) __PYX_ERR(0, 1311, __pyx_L172_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, __pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1311, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1312 + * if is_line: + * self.set_suspend(thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd) + * self.do_wait_suspend(thread, frame, event, arg) # <<<<<<<<<<<<<< + * elif is_return: # return event + * back = frame.f_back + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_do_wait_suspend); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1312, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_7 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[5] = {__pyx_t_7, __pyx_v_thread, __pyx_v_frame, __pyx_v_event, __pyx_v_arg}; + __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 4+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1312, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1310 + * plugin_manager.stop(py_db, frame, event, self._args[3], stop_info, arg, step_cmd) + * elif stop: + * if is_line: # <<<<<<<<<<<<<< + * self.set_suspend(thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd) + * self.do_wait_suspend(thread, frame, event, arg) + */ + goto __pyx_L264; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1313 + * self.set_suspend(thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd) + * self.do_wait_suspend(thread, frame, event, arg) + * elif is_return: # return event # <<<<<<<<<<<<<< + * back = frame.f_back + * if back is not None: + */ + if (__pyx_v_is_return) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1314 + * self.do_wait_suspend(thread, frame, event, arg) + * elif is_return: # return event + * back = frame.f_back # <<<<<<<<<<<<<< + * if back is not None: + * # When we get to the pydevd run function, the debugging has actually finished for the main thread + */ + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1314, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_XDECREF_SET(__pyx_v_back, __pyx_t_8); + __pyx_t_8 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1315 + * elif is_return: # return event + * back = frame.f_back + * if back is not None: # <<<<<<<<<<<<<< + * # When we get to the pydevd run function, the debugging has actually finished for the main thread + * # (note that it can still go on for other threads, but for this one, we just make it finish) + */ + __pyx_t_16 = (__pyx_v_back != Py_None); + if (__pyx_t_16) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1319 + * # (note that it can still go on for other threads, but for this one, we just make it finish) + * # So, just setting it to None should be OK + * back_absolute_filename, _, base = get_abs_path_real_path_and_base_from_frame(back) # <<<<<<<<<<<<<< + * if (base, back.f_code.co_name) in (DEBUG_START, DEBUG_START_PY3K): + * back = None + */ + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_get_abs_path_real_path_and_base); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1319, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_7 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_back}; + __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1319, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + if ((likely(PyTuple_CheckExact(__pyx_t_8))) || (PyList_CheckExact(__pyx_t_8))) { + PyObject* sequence = __pyx_t_8; + Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); + if (unlikely(size != 3)) { + if (size > 3) __Pyx_RaiseTooManyValuesError(3); + else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); + __PYX_ERR(0, 1319, __pyx_L172_error) + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + if (likely(PyTuple_CheckExact(sequence))) { + __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); + __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); + __pyx_t_6 = PyTuple_GET_ITEM(sequence, 2); + } else { + __pyx_t_4 = PyList_GET_ITEM(sequence, 0); + __pyx_t_7 = PyList_GET_ITEM(sequence, 1); + __pyx_t_6 = PyList_GET_ITEM(sequence, 2); + } + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(__pyx_t_6); + #else + __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1319, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1319, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_6 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1319, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_6); + #endif + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } else { + Py_ssize_t index = -1; + __pyx_t_3 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1319, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_15 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); + index = 0; __pyx_t_4 = __pyx_t_15(__pyx_t_3); if (unlikely(!__pyx_t_4)) goto __pyx_L266_unpacking_failed; + __Pyx_GOTREF(__pyx_t_4); + index = 1; __pyx_t_7 = __pyx_t_15(__pyx_t_3); if (unlikely(!__pyx_t_7)) goto __pyx_L266_unpacking_failed; + __Pyx_GOTREF(__pyx_t_7); + index = 2; __pyx_t_6 = __pyx_t_15(__pyx_t_3); if (unlikely(!__pyx_t_6)) goto __pyx_L266_unpacking_failed; + __Pyx_GOTREF(__pyx_t_6); + if (__Pyx_IternextUnpackEndCheck(__pyx_t_15(__pyx_t_3), 3) < 0) __PYX_ERR(0, 1319, __pyx_L172_error) + __pyx_t_15 = NULL; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L267_unpacking_done; + __pyx_L266_unpacking_failed:; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_15 = NULL; + if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); + __PYX_ERR(0, 1319, __pyx_L172_error) + __pyx_L267_unpacking_done:; + } + __pyx_v_back_absolute_filename = __pyx_t_4; + __pyx_t_4 = 0; + __pyx_v__ = __pyx_t_7; + __pyx_t_7 = 0; + __pyx_v_base = __pyx_t_6; + __pyx_t_6 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1320 + * # So, just setting it to None should be OK + * back_absolute_filename, _, base = get_abs_path_real_path_and_base_from_frame(back) + * if (base, back.f_code.co_name) in (DEBUG_START, DEBUG_START_PY3K): # <<<<<<<<<<<<<< + * back = None + * + */ + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_back, __pyx_n_s_f_code); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1320, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_co_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1320, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1320, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_INCREF(__pyx_v_base); + __Pyx_GIVEREF(__pyx_v_base); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_base)) __PYX_ERR(0, 1320, __pyx_L172_error); + __Pyx_GIVEREF(__pyx_t_6); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_6)) __PYX_ERR(0, 1320, __pyx_L172_error); + __pyx_t_6 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_DEBUG_START); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1320, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = PyObject_RichCompare(__pyx_t_8, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1320, __pyx_L172_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1320, __pyx_L172_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (!__pyx_t_10) { + } else { + __pyx_t_16 = __pyx_t_10; + goto __pyx_L269_bool_binop_done; + } + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_DEBUG_START_PY3K); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1320, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_6 = PyObject_RichCompare(__pyx_t_8, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1320, __pyx_L172_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1320, __pyx_L172_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_16 = __pyx_t_10; + __pyx_L269_bool_binop_done:; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_10 = __pyx_t_16; + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1321 + * back_absolute_filename, _, base = get_abs_path_real_path_and_base_from_frame(back) + * if (base, back.f_code.co_name) in (DEBUG_START, DEBUG_START_PY3K): + * back = None # <<<<<<<<<<<<<< + * + * elif base == TRACE_PROPERTY: + */ + __Pyx_INCREF(Py_None); + __Pyx_DECREF_SET(__pyx_v_back, Py_None); + + /* "_pydevd_bundle/pydevd_cython.pyx":1320 + * # So, just setting it to None should be OK + * back_absolute_filename, _, base = get_abs_path_real_path_and_base_from_frame(back) + * if (base, back.f_code.co_name) in (DEBUG_START, DEBUG_START_PY3K): # <<<<<<<<<<<<<< + * back = None + * + */ + goto __pyx_L268; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1323 + * back = None + * + * elif base == TRACE_PROPERTY: # <<<<<<<<<<<<<< + * # We dont want to trace the return event of pydevd_traceproperty (custom property for debugging) + * # if we're in a return, we want it to appear to the user in the previous frame! + */ + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_TRACE_PROPERTY); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1323, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_6 = PyObject_RichCompare(__pyx_v_base, __pyx_t_8, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1323, __pyx_L172_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1323, __pyx_L172_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1326 + * # We dont want to trace the return event of pydevd_traceproperty (custom property for debugging) + * # if we're in a return, we want it to appear to the user in the previous frame! + * return None if is_call else NO_FTRACE # <<<<<<<<<<<<<< + * + * elif pydevd_dont_trace.should_trace_hook is not None: + */ + __Pyx_XDECREF(__pyx_r); + if (__pyx_v_is_call) { + __Pyx_INCREF(Py_None); + __pyx_t_6 = Py_None; + } else { + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1326, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_6 = __pyx_t_8; + __pyx_t_8 = 0; + } + __pyx_r = __pyx_t_6; + __pyx_t_6 = 0; + goto __pyx_L176_try_return; + + /* "_pydevd_bundle/pydevd_cython.pyx":1323 + * back = None + * + * elif base == TRACE_PROPERTY: # <<<<<<<<<<<<<< + * # We dont want to trace the return event of pydevd_traceproperty (custom property for debugging) + * # if we're in a return, we want it to appear to the user in the previous frame! + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1328 + * return None if is_call else NO_FTRACE + * + * elif pydevd_dont_trace.should_trace_hook is not None: # <<<<<<<<<<<<<< + * if not pydevd_dont_trace.should_trace_hook(back.f_code, back_absolute_filename): + * # In this case, we'll have to skip the previous one because it shouldn't be traced. + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pydevd_dont_trace); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1328, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_should_trace_hook); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1328, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_10 = (__pyx_t_8 != Py_None); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1329 + * + * elif pydevd_dont_trace.should_trace_hook is not None: + * if not pydevd_dont_trace.should_trace_hook(back.f_code, back_absolute_filename): # <<<<<<<<<<<<<< + * # In this case, we'll have to skip the previous one because it shouldn't be traced. + * # Also, we have to reset the tracing, because if the parent's parent (or some + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pydevd_dont_trace); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1329, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_should_trace_hook); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1329, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_back, __pyx_n_s_f_code); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1329, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_6, __pyx_v_back_absolute_filename}; + __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1329, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1329, __pyx_L172_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_16 = (!__pyx_t_10); + if (__pyx_t_16) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1335 + * # we should anymore (so, a step in/over/return may not stop anywhere if no parent is traced). + * # Related test: _debugger_case17a.py + * py_db.set_trace_for_frame_and_parents(thread.ident, back) # <<<<<<<<<<<<<< + * return None if is_call else NO_FTRACE + * + */ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_set_trace_for_frame_and_parents); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1335, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_thread, __pyx_n_s_ident_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1335, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_6, __pyx_v_back}; + __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1335, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1336 + * # Related test: _debugger_case17a.py + * py_db.set_trace_for_frame_and_parents(thread.ident, back) + * return None if is_call else NO_FTRACE # <<<<<<<<<<<<<< + * + * if back is not None: + */ + __Pyx_XDECREF(__pyx_r); + if (__pyx_v_is_call) { + __Pyx_INCREF(Py_None); + __pyx_t_8 = Py_None; + } else { + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1336, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = __pyx_t_7; + __pyx_t_7 = 0; + } + __pyx_r = __pyx_t_8; + __pyx_t_8 = 0; + goto __pyx_L176_try_return; + + /* "_pydevd_bundle/pydevd_cython.pyx":1329 + * + * elif pydevd_dont_trace.should_trace_hook is not None: + * if not pydevd_dont_trace.should_trace_hook(back.f_code, back_absolute_filename): # <<<<<<<<<<<<<< + * # In this case, we'll have to skip the previous one because it shouldn't be traced. + * # Also, we have to reset the tracing, because if the parent's parent (or some + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1328 + * return None if is_call else NO_FTRACE + * + * elif pydevd_dont_trace.should_trace_hook is not None: # <<<<<<<<<<<<<< + * if not pydevd_dont_trace.should_trace_hook(back.f_code, back_absolute_filename): + * # In this case, we'll have to skip the previous one because it shouldn't be traced. + */ + } + __pyx_L268:; + + /* "_pydevd_bundle/pydevd_cython.pyx":1315 + * elif is_return: # return event + * back = frame.f_back + * if back is not None: # <<<<<<<<<<<<<< + * # When we get to the pydevd run function, the debugging has actually finished for the main thread + * # (note that it can still go on for other threads, but for this one, we just make it finish) + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1338 + * return None if is_call else NO_FTRACE + * + * if back is not None: # <<<<<<<<<<<<<< + * # if we're in a return, we want it to appear to the user in the previous frame! + * self.set_suspend(thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd) + */ + __pyx_t_16 = (__pyx_v_back != Py_None); + if (__pyx_t_16) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1340 + * if back is not None: + * # if we're in a return, we want it to appear to the user in the previous frame! + * self.set_suspend(thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd) # <<<<<<<<<<<<<< + * self.do_wait_suspend(thread, back, event, arg) + * else: + */ + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_suspend); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1340, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_step_cmd); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1340, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1340, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_INCREF(__pyx_v_thread); + __Pyx_GIVEREF(__pyx_v_thread); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_thread)) __PYX_ERR(0, 1340, __pyx_L172_error); + __Pyx_GIVEREF(__pyx_t_7); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_7)) __PYX_ERR(0, 1340, __pyx_L172_error); + __pyx_t_7 = 0; + __pyx_t_7 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1340, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_info->pydev_original_step_cmd); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1340, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_original_step_cmd, __pyx_t_4) < 0) __PYX_ERR(0, 1340, __pyx_L172_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1340, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1341 + * # if we're in a return, we want it to appear to the user in the previous frame! + * self.set_suspend(thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd) + * self.do_wait_suspend(thread, back, event, arg) # <<<<<<<<<<<<<< + * else: + * # in jython we may not have a back frame + */ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_do_wait_suspend); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1341, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_6 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[5] = {__pyx_t_6, __pyx_v_thread, __pyx_v_back, __pyx_v_event, __pyx_v_arg}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 4+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1341, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1338 + * return None if is_call else NO_FTRACE + * + * if back is not None: # <<<<<<<<<<<<<< + * # if we're in a return, we want it to appear to the user in the previous frame! + * self.set_suspend(thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd) + */ + goto __pyx_L272; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1344 + * else: + * # in jython we may not have a back frame + * info.pydev_step_stop = None # <<<<<<<<<<<<<< + * info.pydev_original_step_cmd = -1 + * info.pydev_step_cmd = -1 + */ + /*else*/ { + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_info->pydev_step_stop); + __Pyx_DECREF(__pyx_v_info->pydev_step_stop); + __pyx_v_info->pydev_step_stop = Py_None; + + /* "_pydevd_bundle/pydevd_cython.pyx":1345 + * # in jython we may not have a back frame + * info.pydev_step_stop = None + * info.pydev_original_step_cmd = -1 # <<<<<<<<<<<<<< + * info.pydev_step_cmd = -1 + * info.pydev_state = 1 + */ + __pyx_v_info->pydev_original_step_cmd = -1; + + /* "_pydevd_bundle/pydevd_cython.pyx":1346 + * info.pydev_step_stop = None + * info.pydev_original_step_cmd = -1 + * info.pydev_step_cmd = -1 # <<<<<<<<<<<<<< + * info.pydev_state = 1 + * info.update_stepping_info() + */ + __pyx_v_info->pydev_step_cmd = -1; + + /* "_pydevd_bundle/pydevd_cython.pyx":1347 + * info.pydev_original_step_cmd = -1 + * info.pydev_step_cmd = -1 + * info.pydev_state = 1 # <<<<<<<<<<<<<< + * info.update_stepping_info() + * + */ + __pyx_v_info->pydev_state = 1; + + /* "_pydevd_bundle/pydevd_cython.pyx":1348 + * info.pydev_step_cmd = -1 + * info.pydev_state = 1 + * info.update_stepping_info() # <<<<<<<<<<<<<< + * + * # if we are quitting, let's stop the tracing + */ + __pyx_t_4 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v_info->__pyx_vtab)->update_stepping_info(__pyx_v_info, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1348, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __pyx_L272:; + + /* "_pydevd_bundle/pydevd_cython.pyx":1313 + * self.set_suspend(thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd) + * self.do_wait_suspend(thread, frame, event, arg) + * elif is_return: # return event # <<<<<<<<<<<<<< + * back = frame.f_back + * if back is not None: + */ + } + __pyx_L264:; + + /* "_pydevd_bundle/pydevd_cython.pyx":1309 + * if plugin_stop: + * plugin_manager.stop(py_db, frame, event, self._args[3], stop_info, arg, step_cmd) + * elif stop: # <<<<<<<<<<<<<< + * if is_line: + * self.set_suspend(thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd) + */ + } + __pyx_L263:; + + /* "_pydevd_bundle/pydevd_cython.pyx":1351 + * + * # if we are quitting, let's stop the tracing + * if py_db.quitting: # <<<<<<<<<<<<<< + * return None if is_call else NO_FTRACE + * + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_quitting); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1351, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 1351, __pyx_L172_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__pyx_t_16) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1352 + * # if we are quitting, let's stop the tracing + * if py_db.quitting: + * return None if is_call else NO_FTRACE # <<<<<<<<<<<<<< + * + * return self.trace_dispatch + */ + __Pyx_XDECREF(__pyx_r); + if (__pyx_v_is_call) { + __Pyx_INCREF(Py_None); + __pyx_t_4 = Py_None; + } else { + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1352, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_4 = __pyx_t_7; + __pyx_t_7 = 0; + } + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L176_try_return; + + /* "_pydevd_bundle/pydevd_cython.pyx":1351 + * + * # if we are quitting, let's stop the tracing + * if py_db.quitting: # <<<<<<<<<<<<<< + * return None if is_call else NO_FTRACE + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1354 + * return None if is_call else NO_FTRACE + * + * return self.trace_dispatch # <<<<<<<<<<<<<< + * except: + * # Unfortunately Python itself stops the tracing when it originates from + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1354, __pyx_L172_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L176_try_return; + + /* "_pydevd_bundle/pydevd_cython.pyx":1116 + * + * # step handling. We stop when we hit the right frame + * try: # <<<<<<<<<<<<<< + * should_skip = 0 + * if pydevd_dont_trace.should_trace_hook is not None: + */ + } + __pyx_L172_error:; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1355 + * + * return self.trace_dispatch + * except: # <<<<<<<<<<<<<< + * # Unfortunately Python itself stops the tracing when it originates from + * # the tracing function, so, we can't do much about it (just let the user know). + */ + /*except:*/ { + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_7, &__pyx_t_6) < 0) __PYX_ERR(0, 1355, __pyx_L174_except_error) + __Pyx_XGOTREF(__pyx_t_4); + __Pyx_XGOTREF(__pyx_t_7); + __Pyx_XGOTREF(__pyx_t_6); + + /* "_pydevd_bundle/pydevd_cython.pyx":1358 + * # Unfortunately Python itself stops the tracing when it originates from + * # the tracing function, so, we can't do much about it (just let the user know). + * exc = sys.exc_info()[0] # <<<<<<<<<<<<<< + * cmd = py_db.cmd_factory.make_console_message( + * "%s raised from within the callback set in sys.settrace.\nDebugging will be disabled for this thread (%s).\n" + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_sys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1358, __pyx_L174_except_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_exc_info); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1358, __pyx_L174_except_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; + __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1358, __pyx_L174_except_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_8, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1358, __pyx_L174_except_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_v_exc = __pyx_t_2; + __pyx_t_2 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1359 + * # the tracing function, so, we can't do much about it (just let the user know). + * exc = sys.exc_info()[0] + * cmd = py_db.cmd_factory.make_console_message( # <<<<<<<<<<<<<< + * "%s raised from within the callback set in sys.settrace.\nDebugging will be disabled for this thread (%s).\n" + * % ( + */ + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_cmd_factory); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1359, __pyx_L174_except_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_make_console_message); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1359, __pyx_L174_except_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1362 + * "%s raised from within the callback set in sys.settrace.\nDebugging will be disabled for this thread (%s).\n" + * % ( + * exc, # <<<<<<<<<<<<<< + * thread, + * ) + */ + __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1362, __pyx_L174_except_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_INCREF(__pyx_v_exc); + __Pyx_GIVEREF(__pyx_v_exc); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_exc)) __PYX_ERR(0, 1362, __pyx_L174_except_error); + __Pyx_INCREF(__pyx_v_thread); + __Pyx_GIVEREF(__pyx_v_thread); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_thread)) __PYX_ERR(0, 1362, __pyx_L174_except_error); + + /* "_pydevd_bundle/pydevd_cython.pyx":1361 + * cmd = py_db.cmd_factory.make_console_message( + * "%s raised from within the callback set in sys.settrace.\nDebugging will be disabled for this thread (%s).\n" + * % ( # <<<<<<<<<<<<<< + * exc, + * thread, + */ + __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_s_raised_from_within_the_callba, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1361, __pyx_L174_except_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_1}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1359, __pyx_L174_except_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_XDECREF_SET(__pyx_v_cmd, __pyx_t_2); + __pyx_t_2 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1366 + * ) + * ) + * py_db.writer.add_command(cmd) # <<<<<<<<<<<<<< + * if not issubclass(exc, (KeyboardInterrupt, SystemExit)): + * pydev_log.exception() + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_writer); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1366, __pyx_L174_except_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_add_command); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1366, __pyx_L174_except_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_cmd}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1366, __pyx_L174_except_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1367 + * ) + * py_db.writer.add_command(cmd) + * if not issubclass(exc, (KeyboardInterrupt, SystemExit)): # <<<<<<<<<<<<<< + * pydev_log.exception() + * raise + */ + __pyx_t_16 = PyObject_IsSubclass(__pyx_v_exc, __pyx_tuple__7); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(0, 1367, __pyx_L174_except_error) + __pyx_t_10 = (!__pyx_t_16); + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1368 + * py_db.writer.add_command(cmd) + * if not issubclass(exc, (KeyboardInterrupt, SystemExit)): + * pydev_log.exception() # <<<<<<<<<<<<<< + * raise + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1368, __pyx_L174_except_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_exception); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1368, __pyx_L174_except_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1368, __pyx_L174_except_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1367 + * ) + * py_db.writer.add_command(cmd) + * if not issubclass(exc, (KeyboardInterrupt, SystemExit)): # <<<<<<<<<<<<<< + * pydev_log.exception() + * raise + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1369 + * if not issubclass(exc, (KeyboardInterrupt, SystemExit)): + * pydev_log.exception() + * raise # <<<<<<<<<<<<<< + * + * finally: + */ + __Pyx_GIVEREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_7); + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_7, __pyx_t_6); + __pyx_t_4 = 0; __pyx_t_7 = 0; __pyx_t_6 = 0; + __PYX_ERR(0, 1369, __pyx_L174_except_error) + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1116 + * + * # step handling. We stop when we hit the right frame + * try: # <<<<<<<<<<<<<< + * should_skip = 0 + * if pydevd_dont_trace.should_trace_hook is not None: + */ + __pyx_L174_except_error:; + __Pyx_XGIVEREF(__pyx_t_17); + __Pyx_XGIVEREF(__pyx_t_18); + __Pyx_XGIVEREF(__pyx_t_19); + __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19); + goto __pyx_L4_error; + __pyx_L176_try_return:; + __Pyx_XGIVEREF(__pyx_t_17); + __Pyx_XGIVEREF(__pyx_t_18); + __Pyx_XGIVEREF(__pyx_t_19); + __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19); + goto __pyx_L3_return; + } + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1372 + * + * finally: + * info.is_tracing -= 1 # <<<<<<<<<<<<<< + * + * # end trace_dispatch + */ + /*finally:*/ { + __pyx_L4_error:; + /*exception exit:*/{ + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_17 = 0; __pyx_t_29 = 0; __pyx_t_28 = 0; __pyx_t_27 = 0; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_29, &__pyx_t_28, &__pyx_t_27); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17) < 0)) __Pyx_ErrFetch(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17); + __Pyx_XGOTREF(__pyx_t_19); + __Pyx_XGOTREF(__pyx_t_18); + __Pyx_XGOTREF(__pyx_t_17); + __Pyx_XGOTREF(__pyx_t_29); + __Pyx_XGOTREF(__pyx_t_28); + __Pyx_XGOTREF(__pyx_t_27); + __pyx_t_11 = __pyx_lineno; __pyx_t_9 = __pyx_clineno; __pyx_t_30 = __pyx_filename; + { + if (unlikely(!__pyx_v_info)) { __Pyx_RaiseUnboundLocalError("info"); __PYX_ERR(0, 1372, __pyx_L278_error) } + if (unlikely(!__pyx_v_info)) { __Pyx_RaiseUnboundLocalError("info"); __PYX_ERR(0, 1372, __pyx_L278_error) } + __pyx_v_info->is_tracing = (__pyx_v_info->is_tracing - 1); + } + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_29); + __Pyx_XGIVEREF(__pyx_t_28); + __Pyx_XGIVEREF(__pyx_t_27); + __Pyx_ExceptionReset(__pyx_t_29, __pyx_t_28, __pyx_t_27); + } + __Pyx_XGIVEREF(__pyx_t_19); + __Pyx_XGIVEREF(__pyx_t_18); + __Pyx_XGIVEREF(__pyx_t_17); + __Pyx_ErrRestore(__pyx_t_19, __pyx_t_18, __pyx_t_17); + __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_17 = 0; __pyx_t_29 = 0; __pyx_t_28 = 0; __pyx_t_27 = 0; + __pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_9; __pyx_filename = __pyx_t_30; + goto __pyx_L1_error; + __pyx_L278_error:; + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_29); + __Pyx_XGIVEREF(__pyx_t_28); + __Pyx_XGIVEREF(__pyx_t_27); + __Pyx_ExceptionReset(__pyx_t_29, __pyx_t_28, __pyx_t_27); + } + __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0; + __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0; + __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; + __pyx_t_29 = 0; __pyx_t_28 = 0; __pyx_t_27 = 0; + goto __pyx_L1_error; + } + __pyx_L3_return: { + __pyx_t_27 = __pyx_r; + __pyx_r = 0; + __pyx_v_info->is_tracing = (__pyx_v_info->is_tracing - 1); + __pyx_r = __pyx_t_27; + __pyx_t_27 = 0; + goto __pyx_L0; + } + } + + /* "_pydevd_bundle/pydevd_cython.pyx":636 + * + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cpdef trace_dispatch(self, frame, str event, arg): # <<<<<<<<<<<<<< + * cdef tuple abs_path_canonical_path_and_base; + * cdef bint is_exception_event; + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_22); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_abs_path_canonical_path_and_base); + __Pyx_XDECREF((PyObject *)__pyx_v_info); + __Pyx_XDECREF(__pyx_v_breakpoints_for_file); + __Pyx_XDECREF(__pyx_v_stop_info); + __Pyx_XDECREF(__pyx_v_curr_func_name); + __Pyx_XDECREF(__pyx_v_frame_skips_cache); + __Pyx_XDECREF(__pyx_v_frame_cache_key); + __Pyx_XDECREF(__pyx_v_line_cache_key); + __Pyx_XDECREF(__pyx_v_bp); + __Pyx_XDECREF(__pyx_v_pydev_smart_step_into_variants); + __Pyx_XDECREF(__pyx_v_py_db); + __Pyx_XDECREF(__pyx_v_thread); + __Pyx_XDECREF(__pyx_v_plugin_manager); + __Pyx_XDECREF(__pyx_v_stop_frame); + __Pyx_XDECREF(__pyx_v_function_breakpoint_on_call_event); + __Pyx_XDECREF(__pyx_v_returns_cache_key); + __Pyx_XDECREF(__pyx_v_return_lines); + __Pyx_XDECREF(__pyx_v_x); + __Pyx_XDECREF(__pyx_v_f); + __Pyx_XDECREF(__pyx_v_exc_info); + __Pyx_XDECREF(__pyx_v_func_lines); + __Pyx_XDECREF(__pyx_v_offset_and_lineno); + __Pyx_XDECREF(__pyx_v_breakpoint); + __Pyx_XDECREF(__pyx_v_stop_reason); + __Pyx_XDECREF(__pyx_v_bp_type); + __Pyx_XDECREF(__pyx_v_new_frame); + __Pyx_XDECREF(__pyx_v_result); + __Pyx_XDECREF(__pyx_v_eval_result); + __Pyx_XDECREF(__pyx_v_cmd); + __Pyx_XDECREF(__pyx_v_exc); + __Pyx_XDECREF(__pyx_v_plugin_stop); + __Pyx_XDECREF(__pyx_v_force_check_project_scope); + __Pyx_XDECREF(__pyx_v_filename); + __Pyx_XDECREF(__pyx_v_f2); + __Pyx_XDECREF(__pyx_v_back); + __Pyx_XDECREF(__pyx_v_smart_step_into_variant); + __Pyx_XDECREF(__pyx_v_children_variants); + __Pyx_XDECREF(__pyx_v_f_code); + __Pyx_XDECREF(__pyx_v_back_absolute_filename); + __Pyx_XDECREF(__pyx_v__); + __Pyx_XDECREF(__pyx_v_base); + __Pyx_XDECREF(__pyx_v_frame); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_11trace_dispatch(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_11trace_dispatch = {"trace_dispatch", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_11trace_dispatch, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_11trace_dispatch(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_frame = 0; + PyObject *__pyx_v_event = 0; + PyObject *__pyx_v_arg = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("trace_dispatch (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_frame,&__pyx_n_s_event,&__pyx_n_s_arg,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_frame)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 636, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_event)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 636, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("trace_dispatch", 1, 3, 3, 1); __PYX_ERR(0, 636, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_arg)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 636, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("trace_dispatch", 1, 3, 3, 2); __PYX_ERR(0, 636, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "trace_dispatch") < 0)) __PYX_ERR(0, 636, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 3)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + } + __pyx_v_frame = values[0]; + __pyx_v_event = ((PyObject*)values[1]); + __pyx_v_arg = values[2]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("trace_dispatch", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 636, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_event), (&PyString_Type), 1, "event", 1))) __PYX_ERR(0, 636, __pyx_L1_error) + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_10trace_dispatch(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self), __pyx_v_frame, __pyx_v_event, __pyx_v_arg); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + __pyx_L0:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_10trace_dispatch(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v_frame, PyObject *__pyx_v_event, PyObject *__pyx_v_arg) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("trace_dispatch", 1); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_trace_dispatch(__pyx_v_self, __pyx_v_frame, __pyx_v_event, __pyx_v_arg, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 636, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_13__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_13__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_13__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_13__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { + __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} + if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_12__reduce_cython__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_12__reduce_cython__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self) { + PyObject *__pyx_v_state = 0; + PyObject *__pyx_v__dict = 0; + int __pyx_v_use_setstate; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + int __pyx_t_3; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__reduce_cython__", 1); + + /* "(tree fragment)":5 + * cdef object _dict + * cdef bint use_setstate + * state = (self._args, self.exc_info, self.should_skip) # <<<<<<<<<<<<<< + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: + */ + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->should_skip); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_v_self->_args); + __Pyx_GIVEREF(__pyx_v_self->_args); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self->_args)) __PYX_ERR(2, 5, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_self->exc_info); + __Pyx_GIVEREF(__pyx_v_self->exc_info); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self->exc_info)) __PYX_ERR(2, 5, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_1)) __PYX_ERR(2, 5, __pyx_L1_error); + __pyx_t_1 = 0; + __pyx_v_state = ((PyObject*)__pyx_t_2); + __pyx_t_2 = 0; + + /* "(tree fragment)":6 + * cdef bint use_setstate + * state = (self._args, self.exc_info, self.should_skip) + * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< + * if _dict is not None: + * state += (_dict,) + */ + __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_v__dict = __pyx_t_2; + __pyx_t_2 = 0; + + /* "(tree fragment)":7 + * state = (self._args, self.exc_info, self.should_skip) + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: # <<<<<<<<<<<<<< + * state += (_dict,) + * use_setstate = True + */ + __pyx_t_3 = (__pyx_v__dict != Py_None); + if (__pyx_t_3) { + + /* "(tree fragment)":8 + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: + * state += (_dict,) # <<<<<<<<<<<<<< + * use_setstate = True + * else: + */ + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_v__dict); + __Pyx_GIVEREF(__pyx_v__dict); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict)) __PYX_ERR(2, 8, __pyx_L1_error); + __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1)); + __pyx_t_1 = 0; + + /* "(tree fragment)":9 + * if _dict is not None: + * state += (_dict,) + * use_setstate = True # <<<<<<<<<<<<<< + * else: + * use_setstate = self._args is not None or self.exc_info is not None + */ + __pyx_v_use_setstate = 1; + + /* "(tree fragment)":7 + * state = (self._args, self.exc_info, self.should_skip) + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: # <<<<<<<<<<<<<< + * state += (_dict,) + * use_setstate = True + */ + goto __pyx_L3; + } + + /* "(tree fragment)":11 + * use_setstate = True + * else: + * use_setstate = self._args is not None or self.exc_info is not None # <<<<<<<<<<<<<< + * if use_setstate: + * return __pyx_unpickle_PyDBFrame, (type(self), 0x3a8c26e, None), state + */ + /*else*/ { + __pyx_t_4 = (__pyx_v_self->_args != ((PyObject*)Py_None)); + if (!__pyx_t_4) { + } else { + __pyx_t_3 = __pyx_t_4; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_4 = (__pyx_v_self->exc_info != Py_None); + __pyx_t_3 = __pyx_t_4; + __pyx_L4_bool_binop_done:; + __pyx_v_use_setstate = __pyx_t_3; + } + __pyx_L3:; + + /* "(tree fragment)":12 + * else: + * use_setstate = self._args is not None or self.exc_info is not None + * if use_setstate: # <<<<<<<<<<<<<< + * return __pyx_unpickle_PyDBFrame, (type(self), 0x3a8c26e, None), state + * else: + */ + if (__pyx_v_use_setstate) { + + /* "(tree fragment)":13 + * use_setstate = self._args is not None or self.exc_info is not None + * if use_setstate: + * return __pyx_unpickle_PyDBFrame, (type(self), 0x3a8c26e, None), state # <<<<<<<<<<<<<< + * else: + * return __pyx_unpickle_PyDBFrame, (type(self), 0x3a8c26e, state) + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_PyDBFrame); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(2, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_int_61391470); + __Pyx_GIVEREF(__pyx_int_61391470); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_61391470)) __PYX_ERR(2, 13, __pyx_L1_error); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None)) __PYX_ERR(2, 13, __pyx_L1_error); + __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1)) __PYX_ERR(2, 13, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2)) __PYX_ERR(2, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_state); + __Pyx_GIVEREF(__pyx_v_state); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state)) __PYX_ERR(2, 13, __pyx_L1_error); + __pyx_t_1 = 0; + __pyx_t_2 = 0; + __pyx_r = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L0; + + /* "(tree fragment)":12 + * else: + * use_setstate = self._args is not None or self.exc_info is not None + * if use_setstate: # <<<<<<<<<<<<<< + * return __pyx_unpickle_PyDBFrame, (type(self), 0x3a8c26e, None), state + * else: + */ + } + + /* "(tree fragment)":15 + * return __pyx_unpickle_PyDBFrame, (type(self), 0x3a8c26e, None), state + * else: + * return __pyx_unpickle_PyDBFrame, (type(self), 0x3a8c26e, state) # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * __pyx_unpickle_PyDBFrame__set_state(self, __pyx_state) + */ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_PyDBFrame); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(2, 15, __pyx_L1_error); + __Pyx_INCREF(__pyx_int_61391470); + __Pyx_GIVEREF(__pyx_int_61391470); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_61391470)) __PYX_ERR(2, 15, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_state); + __Pyx_GIVEREF(__pyx_v_state); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state)) __PYX_ERR(2, 15, __pyx_L1_error); + __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_5); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5)) __PYX_ERR(2, 15, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2)) __PYX_ERR(2, 15, __pyx_L1_error); + __pyx_t_5 = 0; + __pyx_t_2 = 0; + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + } + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_state); + __Pyx_XDECREF(__pyx_v__dict); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":16 + * else: + * return __pyx_unpickle_PyDBFrame, (type(self), 0x3a8c26e, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_PyDBFrame__set_state(self, __pyx_state) + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_15__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_15__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_15__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_15__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 16, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(2, 16, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + } + __pyx_v___pyx_state = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 16, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_14__setstate_cython__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v_self), __pyx_v___pyx_state); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_14__setstate_cython__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v_self, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__setstate_cython__", 1); + + /* "(tree fragment)":17 + * return __pyx_unpickle_PyDBFrame, (type(self), 0x3a8c26e, state) + * def __setstate_cython__(self, __pyx_state): + * __pyx_unpickle_PyDBFrame__set_state(self, __pyx_state) # <<<<<<<<<<<<<< + */ + if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(2, 17, __pyx_L1_error) + __pyx_t_1 = __pyx_f_14_pydevd_bundle_13pydevd_cython___pyx_unpickle_PyDBFrame__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle_PyDBFrame, (type(self), 0x3a8c26e, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_PyDBFrame__set_state(self, __pyx_state) + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.PyDBFrame.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":1378 + * + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * def should_stop_on_exception(py_db, PyDBAdditionalThreadInfo info, frame, thread, arg, prev_user_uncaught_exc_info, is_unwind=False): # <<<<<<<<<<<<<< + * cdef bint should_stop; + * cdef bint was_just_raised; + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_13should_stop_on_exception(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_13should_stop_on_exception = {"should_stop_on_exception", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_13should_stop_on_exception, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_13should_stop_on_exception(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_py_db = 0; + struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_info = 0; + PyObject *__pyx_v_frame = 0; + PyObject *__pyx_v_thread = 0; + PyObject *__pyx_v_arg = 0; + PyObject *__pyx_v_prev_user_uncaught_exc_info = 0; + PyObject *__pyx_v_is_unwind = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[7] = {0,0,0,0,0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("should_stop_on_exception (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_py_db,&__pyx_n_s_info,&__pyx_n_s_frame,&__pyx_n_s_thread,&__pyx_n_s_arg,&__pyx_n_s_prev_user_uncaught_exc_info,&__pyx_n_s_is_unwind,0}; + values[6] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)((PyObject *)Py_False))); + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 7: values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 6); + CYTHON_FALLTHROUGH; + case 6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5); + CYTHON_FALLTHROUGH; + case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4); + CYTHON_FALLTHROUGH; + case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); + CYTHON_FALLTHROUGH; + case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_py_db)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1378, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1378, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("should_stop_on_exception", 0, 6, 7, 1); __PYX_ERR(0, 1378, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_frame)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1378, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("should_stop_on_exception", 0, 6, 7, 2); __PYX_ERR(0, 1378, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 3: + if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_thread)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[3]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1378, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("should_stop_on_exception", 0, 6, 7, 3); __PYX_ERR(0, 1378, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 4: + if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_arg)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[4]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1378, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("should_stop_on_exception", 0, 6, 7, 4); __PYX_ERR(0, 1378, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 5: + if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_prev_user_uncaught_exc_info)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[5]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1378, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("should_stop_on_exception", 0, 6, 7, 5); __PYX_ERR(0, 1378, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 6: + if (kw_args > 0) { + PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_is_unwind); + if (value) { values[6] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1378, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "should_stop_on_exception") < 0)) __PYX_ERR(0, 1378, __pyx_L3_error) + } + } else { + switch (__pyx_nargs) { + case 7: values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 6); + CYTHON_FALLTHROUGH; + case 6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5); + values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4); + values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); + values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + break; + default: goto __pyx_L5_argtuple_error; + } + } + __pyx_v_py_db = values[0]; + __pyx_v_info = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)values[1]); + __pyx_v_frame = values[2]; + __pyx_v_thread = values[3]; + __pyx_v_arg = values[4]; + __pyx_v_prev_user_uncaught_exc_info = values[5]; + __pyx_v_is_unwind = values[6]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("should_stop_on_exception", 0, 6, 7, __pyx_nargs); __PYX_ERR(0, 1378, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.should_stop_on_exception", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo, 1, "info", 0))) __PYX_ERR(0, 1378, __pyx_L1_error) + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_12should_stop_on_exception(__pyx_self, __pyx_v_py_db, __pyx_v_info, __pyx_v_frame, __pyx_v_thread, __pyx_v_arg, __pyx_v_prev_user_uncaught_exc_info, __pyx_v_is_unwind); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + __pyx_L0:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_12should_stop_on_exception(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_py_db, struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_info, PyObject *__pyx_v_frame, PyObject *__pyx_v_thread, PyObject *__pyx_v_arg, PyObject *__pyx_v_prev_user_uncaught_exc_info, PyObject *__pyx_v_is_unwind) { + int __pyx_v_should_stop; + int __pyx_v_was_just_raised; + PyObject *__pyx_v_check_excs = 0; + PyObject *__pyx_v_maybe_user_uncaught_exc_info = NULL; + PyObject *__pyx_v_exception = NULL; + PyObject *__pyx_v_value = NULL; + PyObject *__pyx_v_trace = NULL; + PyObject *__pyx_v_exception_breakpoint = NULL; + PyObject *__pyx_v_result = NULL; + PyObject *__pyx_v_exc_break_user = NULL; + PyObject *__pyx_v_exc_break_caught = NULL; + PyObject *__pyx_v_exc_break = NULL; + PyObject *__pyx_v_is_user_uncaught = NULL; + PyObject *__pyx_v_exc_info = NULL; + PyObject *__pyx_v_lines = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *(*__pyx_t_6)(PyObject *); + int __pyx_t_7; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + unsigned int __pyx_t_11; + PyObject *__pyx_t_12 = NULL; + PyObject *__pyx_t_13 = NULL; + int __pyx_t_14; + Py_ssize_t __pyx_t_15; + int __pyx_t_16; + PyObject *__pyx_t_17 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("should_stop_on_exception", 0); + __Pyx_INCREF(__pyx_v_frame); + + /* "_pydevd_bundle/pydevd_cython.pyx":1386 + * # ENDIF + * + * should_stop = False # <<<<<<<<<<<<<< + * maybe_user_uncaught_exc_info = prev_user_uncaught_exc_info + * + */ + __pyx_v_should_stop = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1387 + * + * should_stop = False + * maybe_user_uncaught_exc_info = prev_user_uncaught_exc_info # <<<<<<<<<<<<<< + * + * # 2 = 2 + */ + __Pyx_INCREF(__pyx_v_prev_user_uncaught_exc_info); + __pyx_v_maybe_user_uncaught_exc_info = __pyx_v_prev_user_uncaught_exc_info; + + /* "_pydevd_bundle/pydevd_cython.pyx":1390 + * + * # 2 = 2 + * if info.pydev_state != 2: # and breakpoint is not None: # <<<<<<<<<<<<<< + * exception, value, trace = arg + * + */ + __pyx_t_1 = (__pyx_v_info->pydev_state != 2); + if (__pyx_t_1) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1391 + * # 2 = 2 + * if info.pydev_state != 2: # and breakpoint is not None: + * exception, value, trace = arg # <<<<<<<<<<<<<< + * + * if trace is not None and hasattr(trace, "tb_next"): + */ + if ((likely(PyTuple_CheckExact(__pyx_v_arg))) || (PyList_CheckExact(__pyx_v_arg))) { + PyObject* sequence = __pyx_v_arg; + Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); + if (unlikely(size != 3)) { + if (size > 3) __Pyx_RaiseTooManyValuesError(3); + else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); + __PYX_ERR(0, 1391, __pyx_L1_error) + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + if (likely(PyTuple_CheckExact(sequence))) { + __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); + __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); + __pyx_t_4 = PyTuple_GET_ITEM(sequence, 2); + } else { + __pyx_t_2 = PyList_GET_ITEM(sequence, 0); + __pyx_t_3 = PyList_GET_ITEM(sequence, 1); + __pyx_t_4 = PyList_GET_ITEM(sequence, 2); + } + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + #else + __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1391, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1391, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1391, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #endif + } else { + Py_ssize_t index = -1; + __pyx_t_5 = PyObject_GetIter(__pyx_v_arg); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1391, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); + index = 0; __pyx_t_2 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_2)) goto __pyx_L4_unpacking_failed; + __Pyx_GOTREF(__pyx_t_2); + index = 1; __pyx_t_3 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_3)) goto __pyx_L4_unpacking_failed; + __Pyx_GOTREF(__pyx_t_3); + index = 2; __pyx_t_4 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_4)) goto __pyx_L4_unpacking_failed; + __Pyx_GOTREF(__pyx_t_4); + if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 3) < 0) __PYX_ERR(0, 1391, __pyx_L1_error) + __pyx_t_6 = NULL; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + goto __pyx_L5_unpacking_done; + __pyx_L4_unpacking_failed:; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_6 = NULL; + if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); + __PYX_ERR(0, 1391, __pyx_L1_error) + __pyx_L5_unpacking_done:; + } + __pyx_v_exception = __pyx_t_2; + __pyx_t_2 = 0; + __pyx_v_value = __pyx_t_3; + __pyx_t_3 = 0; + __pyx_v_trace = __pyx_t_4; + __pyx_t_4 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1393 + * exception, value, trace = arg + * + * if trace is not None and hasattr(trace, "tb_next"): # <<<<<<<<<<<<<< + * # on jython trace is None on the first event and it may not have a tb_next. + * + */ + __pyx_t_7 = (__pyx_v_trace != Py_None); + if (__pyx_t_7) { + } else { + __pyx_t_1 = __pyx_t_7; + goto __pyx_L7_bool_binop_done; + } + __pyx_t_7 = __Pyx_HasAttr(__pyx_v_trace, __pyx_n_s_tb_next); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 1393, __pyx_L1_error) + __pyx_t_1 = __pyx_t_7; + __pyx_L7_bool_binop_done:; + if (__pyx_t_1) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1396 + * # on jython trace is None on the first event and it may not have a tb_next. + * + * should_stop = False # <<<<<<<<<<<<<< + * exception_breakpoint = None + * try: + */ + __pyx_v_should_stop = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1397 + * + * should_stop = False + * exception_breakpoint = None # <<<<<<<<<<<<<< + * try: + * if py_db.plugin is not None: + */ + __Pyx_INCREF(Py_None); + __pyx_v_exception_breakpoint = Py_None; + + /* "_pydevd_bundle/pydevd_cython.pyx":1398 + * should_stop = False + * exception_breakpoint = None + * try: # <<<<<<<<<<<<<< + * if py_db.plugin is not None: + * result = py_db.plugin.exception_break(py_db, frame, thread, arg, is_unwind) + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10); + __Pyx_XGOTREF(__pyx_t_8); + __Pyx_XGOTREF(__pyx_t_9); + __Pyx_XGOTREF(__pyx_t_10); + /*try:*/ { + + /* "_pydevd_bundle/pydevd_cython.pyx":1399 + * exception_breakpoint = None + * try: + * if py_db.plugin is not None: # <<<<<<<<<<<<<< + * result = py_db.plugin.exception_break(py_db, frame, thread, arg, is_unwind) + * if result: + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_plugin); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1399, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = (__pyx_t_4 != Py_None); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__pyx_t_1) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1400 + * try: + * if py_db.plugin is not None: + * result = py_db.plugin.exception_break(py_db, frame, thread, arg, is_unwind) # <<<<<<<<<<<<<< + * if result: + * should_stop, frame = result + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_plugin); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1400, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_exception_break); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1400, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_11 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_11 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[6] = {__pyx_t_3, __pyx_v_py_db, __pyx_v_frame, __pyx_v_thread, __pyx_v_arg, __pyx_v_is_unwind}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_11, 5+__pyx_t_11); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1400, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_v_result = __pyx_t_4; + __pyx_t_4 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1401 + * if py_db.plugin is not None: + * result = py_db.plugin.exception_break(py_db, frame, thread, arg, is_unwind) + * if result: # <<<<<<<<<<<<<< + * should_stop, frame = result + * except: + */ + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_result); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 1401, __pyx_L9_error) + if (__pyx_t_1) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1402 + * result = py_db.plugin.exception_break(py_db, frame, thread, arg, is_unwind) + * if result: + * should_stop, frame = result # <<<<<<<<<<<<<< + * except: + * pydev_log.exception() + */ + if ((likely(PyTuple_CheckExact(__pyx_v_result))) || (PyList_CheckExact(__pyx_v_result))) { + PyObject* sequence = __pyx_v_result; + Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); + if (unlikely(size != 2)) { + if (size > 2) __Pyx_RaiseTooManyValuesError(2); + else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); + __PYX_ERR(0, 1402, __pyx_L9_error) + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + if (likely(PyTuple_CheckExact(sequence))) { + __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); + __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); + } else { + __pyx_t_4 = PyList_GET_ITEM(sequence, 0); + __pyx_t_2 = PyList_GET_ITEM(sequence, 1); + } + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(__pyx_t_2); + #else + __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1402, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1402, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_2); + #endif + } else { + Py_ssize_t index = -1; + __pyx_t_3 = PyObject_GetIter(__pyx_v_result); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1402, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); + index = 0; __pyx_t_4 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_4)) goto __pyx_L17_unpacking_failed; + __Pyx_GOTREF(__pyx_t_4); + index = 1; __pyx_t_2 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L17_unpacking_failed; + __Pyx_GOTREF(__pyx_t_2); + if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_3), 2) < 0) __PYX_ERR(0, 1402, __pyx_L9_error) + __pyx_t_6 = NULL; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L18_unpacking_done; + __pyx_L17_unpacking_failed:; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = NULL; + if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); + __PYX_ERR(0, 1402, __pyx_L9_error) + __pyx_L18_unpacking_done:; + } + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1402, __pyx_L9_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_v_should_stop = __pyx_t_1; + __Pyx_DECREF_SET(__pyx_v_frame, __pyx_t_2); + __pyx_t_2 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1401 + * if py_db.plugin is not None: + * result = py_db.plugin.exception_break(py_db, frame, thread, arg, is_unwind) + * if result: # <<<<<<<<<<<<<< + * should_stop, frame = result + * except: + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1399 + * exception_breakpoint = None + * try: + * if py_db.plugin is not None: # <<<<<<<<<<<<<< + * result = py_db.plugin.exception_break(py_db, frame, thread, arg, is_unwind) + * if result: + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1398 + * should_stop = False + * exception_breakpoint = None + * try: # <<<<<<<<<<<<<< + * if py_db.plugin is not None: + * result = py_db.plugin.exception_break(py_db, frame, thread, arg, is_unwind) + */ + } + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + goto __pyx_L14_try_end; + __pyx_L9_error:; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1403 + * if result: + * should_stop, frame = result + * except: # <<<<<<<<<<<<<< + * pydev_log.exception() + * + */ + /*except:*/ { + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.should_stop_on_exception", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_3) < 0) __PYX_ERR(0, 1403, __pyx_L11_except_error) + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_4); + __Pyx_XGOTREF(__pyx_t_3); + + /* "_pydevd_bundle/pydevd_cython.pyx":1404 + * should_stop, frame = result + * except: + * pydev_log.exception() # <<<<<<<<<<<<<< + * + * if not should_stop: + */ + __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1404, __pyx_L11_except_error) + __Pyx_GOTREF(__pyx_t_12); + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_exception); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1404, __pyx_L11_except_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __pyx_t_12 = NULL; + __pyx_t_11 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_13))) { + __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_13); + if (likely(__pyx_t_12)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); + __Pyx_INCREF(__pyx_t_12); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_13, function); + __pyx_t_11 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_12, NULL}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_13, __pyx_callargs+1-__pyx_t_11, 0+__pyx_t_11); + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1404, __pyx_L11_except_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + } + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L10_exception_handled; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1398 + * should_stop = False + * exception_breakpoint = None + * try: # <<<<<<<<<<<<<< + * if py_db.plugin is not None: + * result = py_db.plugin.exception_break(py_db, frame, thread, arg, is_unwind) + */ + __pyx_L11_except_error:; + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_XGIVEREF(__pyx_t_10); + __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10); + goto __pyx_L1_error; + __pyx_L10_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_XGIVEREF(__pyx_t_10); + __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10); + __pyx_L14_try_end:; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1406 + * pydev_log.exception() + * + * if not should_stop: # <<<<<<<<<<<<<< + * # Apply checks that don't need the exception breakpoint (where we shouldn't ever stop). + * if exception == SystemExit and py_db.ignore_system_exit_code(value): + */ + __pyx_t_1 = (!__pyx_v_should_stop); + if (__pyx_t_1) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1408 + * if not should_stop: + * # Apply checks that don't need the exception breakpoint (where we shouldn't ever stop). + * if exception == SystemExit and py_db.ignore_system_exit_code(value): # <<<<<<<<<<<<<< + * pass + * + */ + __pyx_t_3 = PyObject_RichCompare(__pyx_v_exception, __pyx_builtin_SystemExit, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1408, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1408, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_7) { + } else { + __pyx_t_1 = __pyx_t_7; + goto __pyx_L23_bool_binop_done; + } + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_ignore_system_exit_code); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1408, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_2 = NULL; + __pyx_t_11 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_11 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_value}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_11, 1+__pyx_t_11); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1408, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1408, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_1 = __pyx_t_7; + __pyx_L23_bool_binop_done:; + if (__pyx_t_1) { + goto __pyx_L22; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1411 + * pass + * + * elif exception in (GeneratorExit, StopIteration, StopAsyncIteration): # <<<<<<<<<<<<<< + * # These exceptions are control-flow related (they work as a generator + * # pause), so, we shouldn't stop on them. + */ + __Pyx_INCREF(__pyx_v_exception); + __pyx_t_3 = __pyx_v_exception; + __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_builtin_GeneratorExit, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1411, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1411, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (!__pyx_t_7) { + } else { + __pyx_t_1 = __pyx_t_7; + goto __pyx_L25_bool_binop_done; + } + __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_builtin_StopIteration, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1411, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1411, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (!__pyx_t_7) { + } else { + __pyx_t_1 = __pyx_t_7; + goto __pyx_L25_bool_binop_done; + } + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_StopAsyncIteration); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1411, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_2 = PyObject_RichCompare(__pyx_t_3, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1411, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1411, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_1 = __pyx_t_7; + __pyx_L25_bool_binop_done:; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_7 = __pyx_t_1; + if (__pyx_t_7) { + goto __pyx_L22; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1416 + * pass + * + * elif ignore_exception_trace(trace): # <<<<<<<<<<<<<< + * pass + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ignore_exception_trace); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1416, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = NULL; + __pyx_t_11 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_11 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_trace}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_11, 1+__pyx_t_11); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1416, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1416, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_7) { + goto __pyx_L22; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1420 + * + * else: + * was_just_raised = trace.tb_next is None # <<<<<<<<<<<<<< + * + * # It was not handled by any plugin, lets check exception breakpoints. + */ + /*else*/ { + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_trace, __pyx_n_s_tb_next); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1420, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_7 = (__pyx_t_3 == Py_None); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_was_just_raised = __pyx_t_7; + + /* "_pydevd_bundle/pydevd_cython.pyx":1423 + * + * # It was not handled by any plugin, lets check exception breakpoints. + * check_excs = [] # <<<<<<<<<<<<<< + * + * # Note: check user unhandled before regular exceptions. + */ + __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1423, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_check_excs = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1426 + * + * # Note: check user unhandled before regular exceptions. + * exc_break_user = py_db.get_exception_breakpoint(exception, py_db.break_on_user_uncaught_exceptions) # <<<<<<<<<<<<<< + * if exc_break_user is not None: + * check_excs.append((exc_break_user, True)) + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_get_exception_breakpoint); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1426, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_break_on_user_uncaught_exception); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1426, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = NULL; + __pyx_t_11 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_11 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_exception, __pyx_t_4}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_11, 2+__pyx_t_11); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1426, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_v_exc_break_user = __pyx_t_3; + __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1427 + * # Note: check user unhandled before regular exceptions. + * exc_break_user = py_db.get_exception_breakpoint(exception, py_db.break_on_user_uncaught_exceptions) + * if exc_break_user is not None: # <<<<<<<<<<<<<< + * check_excs.append((exc_break_user, True)) + * + */ + __pyx_t_7 = (__pyx_v_exc_break_user != Py_None); + if (__pyx_t_7) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1428 + * exc_break_user = py_db.get_exception_breakpoint(exception, py_db.break_on_user_uncaught_exceptions) + * if exc_break_user is not None: + * check_excs.append((exc_break_user, True)) # <<<<<<<<<<<<<< + * + * exc_break_caught = py_db.get_exception_breakpoint(exception, py_db.break_on_caught_exceptions) + */ + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1428, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_v_exc_break_user); + __Pyx_GIVEREF(__pyx_v_exc_break_user); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_exc_break_user)) __PYX_ERR(0, 1428, __pyx_L1_error); + __Pyx_INCREF(Py_True); + __Pyx_GIVEREF(Py_True); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, Py_True)) __PYX_ERR(0, 1428, __pyx_L1_error); + __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_check_excs, __pyx_t_3); if (unlikely(__pyx_t_14 == ((int)-1))) __PYX_ERR(0, 1428, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1427 + * # Note: check user unhandled before regular exceptions. + * exc_break_user = py_db.get_exception_breakpoint(exception, py_db.break_on_user_uncaught_exceptions) + * if exc_break_user is not None: # <<<<<<<<<<<<<< + * check_excs.append((exc_break_user, True)) + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1430 + * check_excs.append((exc_break_user, True)) + * + * exc_break_caught = py_db.get_exception_breakpoint(exception, py_db.break_on_caught_exceptions) # <<<<<<<<<<<<<< + * if exc_break_caught is not None: + * check_excs.append((exc_break_caught, False)) + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_get_exception_breakpoint); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1430, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_break_on_caught_exceptions); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1430, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = NULL; + __pyx_t_11 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_11 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_exception, __pyx_t_4}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_11, 2+__pyx_t_11); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1430, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_v_exc_break_caught = __pyx_t_3; + __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1431 + * + * exc_break_caught = py_db.get_exception_breakpoint(exception, py_db.break_on_caught_exceptions) + * if exc_break_caught is not None: # <<<<<<<<<<<<<< + * check_excs.append((exc_break_caught, False)) + * + */ + __pyx_t_7 = (__pyx_v_exc_break_caught != Py_None); + if (__pyx_t_7) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1432 + * exc_break_caught = py_db.get_exception_breakpoint(exception, py_db.break_on_caught_exceptions) + * if exc_break_caught is not None: + * check_excs.append((exc_break_caught, False)) # <<<<<<<<<<<<<< + * + * for exc_break, is_user_uncaught in check_excs: + */ + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1432, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_v_exc_break_caught); + __Pyx_GIVEREF(__pyx_v_exc_break_caught); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_exc_break_caught)) __PYX_ERR(0, 1432, __pyx_L1_error); + __Pyx_INCREF(Py_False); + __Pyx_GIVEREF(Py_False); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, Py_False)) __PYX_ERR(0, 1432, __pyx_L1_error); + __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_check_excs, __pyx_t_3); if (unlikely(__pyx_t_14 == ((int)-1))) __PYX_ERR(0, 1432, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1431 + * + * exc_break_caught = py_db.get_exception_breakpoint(exception, py_db.break_on_caught_exceptions) + * if exc_break_caught is not None: # <<<<<<<<<<<<<< + * check_excs.append((exc_break_caught, False)) + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1434 + * check_excs.append((exc_break_caught, False)) + * + * for exc_break, is_user_uncaught in check_excs: # <<<<<<<<<<<<<< + * # Initially mark that it should stop and then go into exclusions. + * should_stop = True + */ + __pyx_t_3 = __pyx_v_check_excs; __Pyx_INCREF(__pyx_t_3); + __pyx_t_15 = 0; + for (;;) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3); + #if !CYTHON_ASSUME_SAFE_MACROS + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1434, __pyx_L1_error) + #endif + if (__pyx_t_15 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_15); __Pyx_INCREF(__pyx_t_2); __pyx_t_15++; if (unlikely((0 < 0))) __PYX_ERR(0, 1434, __pyx_L1_error) + #else + __pyx_t_2 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_15); __pyx_t_15++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1434, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #endif + if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { + PyObject* sequence = __pyx_t_2; + Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); + if (unlikely(size != 2)) { + if (size > 2) __Pyx_RaiseTooManyValuesError(2); + else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); + __PYX_ERR(0, 1434, __pyx_L1_error) + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + if (likely(PyTuple_CheckExact(sequence))) { + __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); + __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); + } else { + __pyx_t_4 = PyList_GET_ITEM(sequence, 0); + __pyx_t_5 = PyList_GET_ITEM(sequence, 1); + } + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(__pyx_t_5); + #else + __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1434, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1434, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #endif + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else { + Py_ssize_t index = -1; + __pyx_t_13 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1434, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_6 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_13); + index = 0; __pyx_t_4 = __pyx_t_6(__pyx_t_13); if (unlikely(!__pyx_t_4)) goto __pyx_L32_unpacking_failed; + __Pyx_GOTREF(__pyx_t_4); + index = 1; __pyx_t_5 = __pyx_t_6(__pyx_t_13); if (unlikely(!__pyx_t_5)) goto __pyx_L32_unpacking_failed; + __Pyx_GOTREF(__pyx_t_5); + if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_13), 2) < 0) __PYX_ERR(0, 1434, __pyx_L1_error) + __pyx_t_6 = NULL; + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + goto __pyx_L33_unpacking_done; + __pyx_L32_unpacking_failed:; + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_6 = NULL; + if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); + __PYX_ERR(0, 1434, __pyx_L1_error) + __pyx_L33_unpacking_done:; + } + __Pyx_XDECREF_SET(__pyx_v_exc_break, __pyx_t_4); + __pyx_t_4 = 0; + __Pyx_XDECREF_SET(__pyx_v_is_user_uncaught, __pyx_t_5); + __pyx_t_5 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1436 + * for exc_break, is_user_uncaught in check_excs: + * # Initially mark that it should stop and then go into exclusions. + * should_stop = True # <<<<<<<<<<<<<< + * + * if py_db.exclude_exception_by_filter(exc_break, trace): + */ + __pyx_v_should_stop = 1; + + /* "_pydevd_bundle/pydevd_cython.pyx":1438 + * should_stop = True + * + * if py_db.exclude_exception_by_filter(exc_break, trace): # <<<<<<<<<<<<<< + * pydev_log.debug( + * "Ignore exception %s in library %s -- (%s)" % (exception, frame.f_code.co_filename, frame.f_code.co_name) + */ + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_exclude_exception_by_filter); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1438, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = NULL; + __pyx_t_11 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_11 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_v_exc_break, __pyx_v_trace}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_11, 2+__pyx_t_11); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1438, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1438, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__pyx_t_7) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1439 + * + * if py_db.exclude_exception_by_filter(exc_break, trace): + * pydev_log.debug( # <<<<<<<<<<<<<< + * "Ignore exception %s in library %s -- (%s)" % (exception, frame.f_code.co_filename, frame.f_code.co_name) + * ) + */ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1439, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_debug); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1439, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1440 + * if py_db.exclude_exception_by_filter(exc_break, trace): + * pydev_log.debug( + * "Ignore exception %s in library %s -- (%s)" % (exception, frame.f_code.co_filename, frame.f_code.co_name) # <<<<<<<<<<<<<< + * ) + * should_stop = False + */ + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1440, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1440, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1440, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_co_name); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1440, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1440, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_INCREF(__pyx_v_exception); + __Pyx_GIVEREF(__pyx_v_exception); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_exception)) __PYX_ERR(0, 1440, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_13); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_13)) __PYX_ERR(0, 1440, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_12); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_12)) __PYX_ERR(0, 1440, __pyx_L1_error); + __pyx_t_13 = 0; + __pyx_t_12 = 0; + __pyx_t_12 = __Pyx_PyString_Format(__pyx_kp_s_Ignore_exception_s_in_library_s, __pyx_t_5); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1440, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = NULL; + __pyx_t_11 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_11 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_12}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_11, 1+__pyx_t_11); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1439, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1442 + * "Ignore exception %s in library %s -- (%s)" % (exception, frame.f_code.co_filename, frame.f_code.co_name) + * ) + * should_stop = False # <<<<<<<<<<<<<< + * + * elif exc_break.condition is not None and not py_db.handle_breakpoint_condition(info, exc_break, frame): + */ + __pyx_v_should_stop = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1438 + * should_stop = True + * + * if py_db.exclude_exception_by_filter(exc_break, trace): # <<<<<<<<<<<<<< + * pydev_log.debug( + * "Ignore exception %s in library %s -- (%s)" % (exception, frame.f_code.co_filename, frame.f_code.co_name) + */ + goto __pyx_L34; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1444 + * should_stop = False + * + * elif exc_break.condition is not None and not py_db.handle_breakpoint_condition(info, exc_break, frame): # <<<<<<<<<<<<<< + * should_stop = False + * + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_exc_break, __pyx_n_s_condition); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1444, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = (__pyx_t_2 != Py_None); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__pyx_t_1) { + } else { + __pyx_t_7 = __pyx_t_1; + goto __pyx_L35_bool_binop_done; + } + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_handle_breakpoint_condition); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1444, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_12 = NULL; + __pyx_t_11 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_12)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_12); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_11 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[4] = {__pyx_t_12, ((PyObject *)__pyx_v_info), __pyx_v_exc_break, __pyx_v_frame}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_11, 3+__pyx_t_11); + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1444, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 1444, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_16 = (!__pyx_t_1); + __pyx_t_7 = __pyx_t_16; + __pyx_L35_bool_binop_done:; + if (__pyx_t_7) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1445 + * + * elif exc_break.condition is not None and not py_db.handle_breakpoint_condition(info, exc_break, frame): + * should_stop = False # <<<<<<<<<<<<<< + * + * elif is_user_uncaught: + */ + __pyx_v_should_stop = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1444 + * should_stop = False + * + * elif exc_break.condition is not None and not py_db.handle_breakpoint_condition(info, exc_break, frame): # <<<<<<<<<<<<<< + * should_stop = False + * + */ + goto __pyx_L34; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1447 + * should_stop = False + * + * elif is_user_uncaught: # <<<<<<<<<<<<<< + * # Note: we don't stop here, we just collect the exc_info to use later on... + * should_stop = False + */ + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_is_user_uncaught); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1447, __pyx_L1_error) + if (__pyx_t_7) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1449 + * elif is_user_uncaught: + * # Note: we don't stop here, we just collect the exc_info to use later on... + * should_stop = False # <<<<<<<<<<<<<< + * if not py_db.apply_files_filter(frame, frame.f_code.co_filename, True) and ( + * frame.f_back is None or py_db.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True) + */ + __pyx_v_should_stop = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1450 + * # Note: we don't stop here, we just collect the exc_info to use later on... + * should_stop = False + * if not py_db.apply_files_filter(frame, frame.f_code.co_filename, True) and ( # <<<<<<<<<<<<<< + * frame.f_back is None or py_db.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True) + * ): + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_apply_files_filter); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1450, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1450, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1450, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __pyx_t_12 = NULL; + __pyx_t_11 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_12)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_12); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_11 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[4] = {__pyx_t_12, __pyx_v_frame, __pyx_t_5, Py_True}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_11, 3+__pyx_t_11); + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1450, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 1450, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_1 = (!__pyx_t_16); + if (__pyx_t_1) { + } else { + __pyx_t_7 = __pyx_t_1; + goto __pyx_L38_bool_binop_done; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1451 + * should_stop = False + * if not py_db.apply_files_filter(frame, frame.f_code.co_filename, True) and ( + * frame.f_back is None or py_db.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True) # <<<<<<<<<<<<<< + * ): + * # User uncaught means that we're currently in user code but the code + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1451, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = (__pyx_t_2 == Py_None); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (!__pyx_t_1) { + } else { + __pyx_t_7 = __pyx_t_1; + goto __pyx_L38_bool_binop_done; + } + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_apply_files_filter); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1451, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1451, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1451, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_f_code); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1451, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1451, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = NULL; + __pyx_t_11 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_13)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_13); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_11 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[4] = {__pyx_t_13, __pyx_t_5, __pyx_t_12, Py_True}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_11, 3+__pyx_t_11); + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1451, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 1451, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_7 = __pyx_t_1; + __pyx_L38_bool_binop_done:; + + /* "_pydevd_bundle/pydevd_cython.pyx":1450 + * # Note: we don't stop here, we just collect the exc_info to use later on... + * should_stop = False + * if not py_db.apply_files_filter(frame, frame.f_code.co_filename, True) and ( # <<<<<<<<<<<<<< + * frame.f_back is None or py_db.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True) + * ): + */ + if (__pyx_t_7) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1455 + * # User uncaught means that we're currently in user code but the code + * # up the stack is library code. + * exc_info = prev_user_uncaught_exc_info # <<<<<<<<<<<<<< + * if not exc_info: + * exc_info = (arg, frame.f_lineno, set([frame.f_lineno])) + */ + __Pyx_INCREF(__pyx_v_prev_user_uncaught_exc_info); + __Pyx_XDECREF_SET(__pyx_v_exc_info, __pyx_v_prev_user_uncaught_exc_info); + + /* "_pydevd_bundle/pydevd_cython.pyx":1456 + * # up the stack is library code. + * exc_info = prev_user_uncaught_exc_info + * if not exc_info: # <<<<<<<<<<<<<< + * exc_info = (arg, frame.f_lineno, set([frame.f_lineno])) + * else: + */ + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_exc_info); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1456, __pyx_L1_error) + __pyx_t_1 = (!__pyx_t_7); + if (__pyx_t_1) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1457 + * exc_info = prev_user_uncaught_exc_info + * if not exc_info: + * exc_info = (arg, frame.f_lineno, set([frame.f_lineno])) # <<<<<<<<<<<<<< + * else: + * lines = exc_info[2] + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1457, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1457, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_12 = PySet_New(0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1457, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + if (PySet_Add(__pyx_t_12, __pyx_t_4) < 0) __PYX_ERR(0, 1457, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1457, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_INCREF(__pyx_v_arg); + __Pyx_GIVEREF(__pyx_v_arg); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_arg)) __PYX_ERR(0, 1457, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2)) __PYX_ERR(0, 1457, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_12); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_12)) __PYX_ERR(0, 1457, __pyx_L1_error); + __pyx_t_2 = 0; + __pyx_t_12 = 0; + __Pyx_DECREF_SET(__pyx_v_exc_info, __pyx_t_4); + __pyx_t_4 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1456 + * # up the stack is library code. + * exc_info = prev_user_uncaught_exc_info + * if not exc_info: # <<<<<<<<<<<<<< + * exc_info = (arg, frame.f_lineno, set([frame.f_lineno])) + * else: + */ + goto __pyx_L41; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1459 + * exc_info = (arg, frame.f_lineno, set([frame.f_lineno])) + * else: + * lines = exc_info[2] # <<<<<<<<<<<<<< + * lines.add(frame.f_lineno) + * exc_info = (arg, frame.f_lineno, lines) + */ + /*else*/ { + __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_exc_info, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1459, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_XDECREF_SET(__pyx_v_lines, __pyx_t_4); + __pyx_t_4 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1460 + * else: + * lines = exc_info[2] + * lines.add(frame.f_lineno) # <<<<<<<<<<<<<< + * exc_info = (arg, frame.f_lineno, lines) + * maybe_user_uncaught_exc_info = exc_info + */ + __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_lines, __pyx_n_s_add); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1460, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1460, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = NULL; + __pyx_t_11 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_12))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_12); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_12, function); + __pyx_t_11 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_2}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_12, __pyx_callargs+1-__pyx_t_11, 1+__pyx_t_11); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1460, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1461 + * lines = exc_info[2] + * lines.add(frame.f_lineno) + * exc_info = (arg, frame.f_lineno, lines) # <<<<<<<<<<<<<< + * maybe_user_uncaught_exc_info = exc_info + * else: + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1461, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_12 = PyTuple_New(3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1461, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_INCREF(__pyx_v_arg); + __Pyx_GIVEREF(__pyx_v_arg); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_arg)) __PYX_ERR(0, 1461, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_4); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_4)) __PYX_ERR(0, 1461, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_lines); + __Pyx_GIVEREF(__pyx_v_lines); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 2, __pyx_v_lines)) __PYX_ERR(0, 1461, __pyx_L1_error); + __pyx_t_4 = 0; + __Pyx_DECREF_SET(__pyx_v_exc_info, __pyx_t_12); + __pyx_t_12 = 0; + } + __pyx_L41:; + + /* "_pydevd_bundle/pydevd_cython.pyx":1462 + * lines.add(frame.f_lineno) + * exc_info = (arg, frame.f_lineno, lines) + * maybe_user_uncaught_exc_info = exc_info # <<<<<<<<<<<<<< + * else: + * # I.e.: these are only checked if we're not dealing with user uncaught exceptions. + */ + __Pyx_INCREF(__pyx_v_exc_info); + __Pyx_DECREF_SET(__pyx_v_maybe_user_uncaught_exc_info, __pyx_v_exc_info); + + /* "_pydevd_bundle/pydevd_cython.pyx":1450 + * # Note: we don't stop here, we just collect the exc_info to use later on... + * should_stop = False + * if not py_db.apply_files_filter(frame, frame.f_code.co_filename, True) and ( # <<<<<<<<<<<<<< + * frame.f_back is None or py_db.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True) + * ): + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1447 + * should_stop = False + * + * elif is_user_uncaught: # <<<<<<<<<<<<<< + * # Note: we don't stop here, we just collect the exc_info to use later on... + * should_stop = False + */ + goto __pyx_L34; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1465 + * else: + * # I.e.: these are only checked if we're not dealing with user uncaught exceptions. + * if ( # <<<<<<<<<<<<<< + * exc_break.notify_on_first_raise_only + * and py_db.skip_on_exceptions_thrown_in_same_context + */ + /*else*/ { + + /* "_pydevd_bundle/pydevd_cython.pyx":1466 + * # I.e.: these are only checked if we're not dealing with user uncaught exceptions. + * if ( + * exc_break.notify_on_first_raise_only # <<<<<<<<<<<<<< + * and py_db.skip_on_exceptions_thrown_in_same_context + * and not was_just_raised + */ + __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_exc_break, __pyx_n_s_notify_on_first_raise_only); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1466, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1466, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + if (__pyx_t_7) { + } else { + __pyx_t_1 = __pyx_t_7; + goto __pyx_L43_bool_binop_done; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1467 + * if ( + * exc_break.notify_on_first_raise_only + * and py_db.skip_on_exceptions_thrown_in_same_context # <<<<<<<<<<<<<< + * and not was_just_raised + * and not just_raised(trace.tb_next) + */ + __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_skip_on_exceptions_thrown_in_sam); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1467, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1467, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + if (__pyx_t_7) { + } else { + __pyx_t_1 = __pyx_t_7; + goto __pyx_L43_bool_binop_done; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1468 + * exc_break.notify_on_first_raise_only + * and py_db.skip_on_exceptions_thrown_in_same_context + * and not was_just_raised # <<<<<<<<<<<<<< + * and not just_raised(trace.tb_next) + * ): + */ + __pyx_t_7 = (!__pyx_v_was_just_raised); + if (__pyx_t_7) { + } else { + __pyx_t_1 = __pyx_t_7; + goto __pyx_L43_bool_binop_done; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1469 + * and py_db.skip_on_exceptions_thrown_in_same_context + * and not was_just_raised + * and not just_raised(trace.tb_next) # <<<<<<<<<<<<<< + * ): + * # In this case we never stop if it was just raised, so, to know if it was the first we + */ + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_just_raised); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1469, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_trace, __pyx_n_s_tb_next); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1469, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = NULL; + __pyx_t_11 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_11 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_2}; + __pyx_t_12 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_11, 1+__pyx_t_11); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1469, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1469, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __pyx_t_16 = (!__pyx_t_7); + __pyx_t_1 = __pyx_t_16; + __pyx_L43_bool_binop_done:; + + /* "_pydevd_bundle/pydevd_cython.pyx":1465 + * else: + * # I.e.: these are only checked if we're not dealing with user uncaught exceptions. + * if ( # <<<<<<<<<<<<<< + * exc_break.notify_on_first_raise_only + * and py_db.skip_on_exceptions_thrown_in_same_context + */ + if (__pyx_t_1) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1473 + * # In this case we never stop if it was just raised, so, to know if it was the first we + * # need to check if we're in the 2nd method. + * should_stop = False # I.e.: we stop only when we're at the caller of a method that throws an exception # <<<<<<<<<<<<<< + * + * elif ( + */ + __pyx_v_should_stop = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1465 + * else: + * # I.e.: these are only checked if we're not dealing with user uncaught exceptions. + * if ( # <<<<<<<<<<<<<< + * exc_break.notify_on_first_raise_only + * and py_db.skip_on_exceptions_thrown_in_same_context + */ + goto __pyx_L42; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1476 + * + * elif ( + * exc_break.notify_on_first_raise_only # <<<<<<<<<<<<<< + * and not py_db.skip_on_exceptions_thrown_in_same_context + * and not was_just_raised + */ + __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_exc_break, __pyx_n_s_notify_on_first_raise_only); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1476, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 1476, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + if (__pyx_t_16) { + } else { + __pyx_t_1 = __pyx_t_16; + goto __pyx_L47_bool_binop_done; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1477 + * elif ( + * exc_break.notify_on_first_raise_only + * and not py_db.skip_on_exceptions_thrown_in_same_context # <<<<<<<<<<<<<< + * and not was_just_raised + * ): + */ + __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_skip_on_exceptions_thrown_in_sam); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1477, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 1477, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __pyx_t_7 = (!__pyx_t_16); + if (__pyx_t_7) { + } else { + __pyx_t_1 = __pyx_t_7; + goto __pyx_L47_bool_binop_done; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1478 + * exc_break.notify_on_first_raise_only + * and not py_db.skip_on_exceptions_thrown_in_same_context + * and not was_just_raised # <<<<<<<<<<<<<< + * ): + * should_stop = False # I.e.: we stop only when it was just raised + */ + __pyx_t_7 = (!__pyx_v_was_just_raised); + __pyx_t_1 = __pyx_t_7; + __pyx_L47_bool_binop_done:; + + /* "_pydevd_bundle/pydevd_cython.pyx":1475 + * should_stop = False # I.e.: we stop only when we're at the caller of a method that throws an exception + * + * elif ( # <<<<<<<<<<<<<< + * exc_break.notify_on_first_raise_only + * and not py_db.skip_on_exceptions_thrown_in_same_context + */ + if (__pyx_t_1) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1480 + * and not was_just_raised + * ): + * should_stop = False # I.e.: we stop only when it was just raised # <<<<<<<<<<<<<< + * + * elif was_just_raised and py_db.skip_on_exceptions_thrown_in_same_context: + */ + __pyx_v_should_stop = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1475 + * should_stop = False # I.e.: we stop only when we're at the caller of a method that throws an exception + * + * elif ( # <<<<<<<<<<<<<< + * exc_break.notify_on_first_raise_only + * and not py_db.skip_on_exceptions_thrown_in_same_context + */ + goto __pyx_L42; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1482 + * should_stop = False # I.e.: we stop only when it was just raised + * + * elif was_just_raised and py_db.skip_on_exceptions_thrown_in_same_context: # <<<<<<<<<<<<<< + * # Option: Don't break if an exception is caught in the same function from which it is thrown + * should_stop = False + */ + if (__pyx_v_was_just_raised) { + } else { + __pyx_t_1 = __pyx_v_was_just_raised; + goto __pyx_L50_bool_binop_done; + } + __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_skip_on_exceptions_thrown_in_sam); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1482, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1482, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __pyx_t_1 = __pyx_t_7; + __pyx_L50_bool_binop_done:; + if (__pyx_t_1) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1484 + * elif was_just_raised and py_db.skip_on_exceptions_thrown_in_same_context: + * # Option: Don't break if an exception is caught in the same function from which it is thrown + * should_stop = False # <<<<<<<<<<<<<< + * + * if should_stop: + */ + __pyx_v_should_stop = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1482 + * should_stop = False # I.e.: we stop only when it was just raised + * + * elif was_just_raised and py_db.skip_on_exceptions_thrown_in_same_context: # <<<<<<<<<<<<<< + * # Option: Don't break if an exception is caught in the same function from which it is thrown + * should_stop = False + */ + } + __pyx_L42:; + } + __pyx_L34:; + + /* "_pydevd_bundle/pydevd_cython.pyx":1486 + * should_stop = False + * + * if should_stop: # <<<<<<<<<<<<<< + * exception_breakpoint = exc_break + * try: + */ + if (__pyx_v_should_stop) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1487 + * + * if should_stop: + * exception_breakpoint = exc_break # <<<<<<<<<<<<<< + * try: + * info.pydev_message = exc_break.qname + */ + __Pyx_INCREF(__pyx_v_exc_break); + __Pyx_DECREF_SET(__pyx_v_exception_breakpoint, __pyx_v_exc_break); + + /* "_pydevd_bundle/pydevd_cython.pyx":1488 + * if should_stop: + * exception_breakpoint = exc_break + * try: # <<<<<<<<<<<<<< + * info.pydev_message = exc_break.qname + * except: + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_9, &__pyx_t_8); + __Pyx_XGOTREF(__pyx_t_10); + __Pyx_XGOTREF(__pyx_t_9); + __Pyx_XGOTREF(__pyx_t_8); + /*try:*/ { + + /* "_pydevd_bundle/pydevd_cython.pyx":1489 + * exception_breakpoint = exc_break + * try: + * info.pydev_message = exc_break.qname # <<<<<<<<<<<<<< + * except: + * info.pydev_message = exc_break.qname.encode("utf-8") + */ + __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_exc_break, __pyx_n_s_qname); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1489, __pyx_L53_error) + __Pyx_GOTREF(__pyx_t_12); + if (!(likely(PyString_CheckExact(__pyx_t_12))||((__pyx_t_12) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_12))) __PYX_ERR(0, 1489, __pyx_L53_error) + __Pyx_GIVEREF(__pyx_t_12); + __Pyx_GOTREF(__pyx_v_info->pydev_message); + __Pyx_DECREF(__pyx_v_info->pydev_message); + __pyx_v_info->pydev_message = ((PyObject*)__pyx_t_12); + __pyx_t_12 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1488 + * if should_stop: + * exception_breakpoint = exc_break + * try: # <<<<<<<<<<<<<< + * info.pydev_message = exc_break.qname + * except: + */ + } + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + goto __pyx_L60_try_end; + __pyx_L53_error:; + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1490 + * try: + * info.pydev_message = exc_break.qname + * except: # <<<<<<<<<<<<<< + * info.pydev_message = exc_break.qname.encode("utf-8") + * break + */ + /*except:*/ { + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.should_stop_on_exception", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_12, &__pyx_t_4, &__pyx_t_2) < 0) __PYX_ERR(0, 1490, __pyx_L55_except_error) + __Pyx_XGOTREF(__pyx_t_12); + __Pyx_XGOTREF(__pyx_t_4); + __Pyx_XGOTREF(__pyx_t_2); + + /* "_pydevd_bundle/pydevd_cython.pyx":1491 + * info.pydev_message = exc_break.qname + * except: + * info.pydev_message = exc_break.qname.encode("utf-8") # <<<<<<<<<<<<<< + * break + * + */ + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_exc_break, __pyx_n_s_qname); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1491, __pyx_L55_except_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_encode); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1491, __pyx_L55_except_error) + __Pyx_GOTREF(__pyx_t_17); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = NULL; + __pyx_t_11 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_17))) { + __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_17); + if (likely(__pyx_t_13)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_17); + __Pyx_INCREF(__pyx_t_13); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_17, function); + __pyx_t_11 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_kp_s_utf_8}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_17, __pyx_callargs+1-__pyx_t_11, 1+__pyx_t_11); + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1491, __pyx_L55_except_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; + } + if (!(likely(PyString_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_5))) __PYX_ERR(0, 1491, __pyx_L55_except_error) + __Pyx_GIVEREF(__pyx_t_5); + __Pyx_GOTREF(__pyx_v_info->pydev_message); + __Pyx_DECREF(__pyx_v_info->pydev_message); + __pyx_v_info->pydev_message = ((PyObject*)__pyx_t_5); + __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + goto __pyx_L54_exception_handled; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1488 + * if should_stop: + * exception_breakpoint = exc_break + * try: # <<<<<<<<<<<<<< + * info.pydev_message = exc_break.qname + * except: + */ + __pyx_L55_except_error:; + __Pyx_XGIVEREF(__pyx_t_10); + __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_9, __pyx_t_8); + goto __pyx_L1_error; + __pyx_L54_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_10); + __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_9, __pyx_t_8); + __pyx_L60_try_end:; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1492 + * except: + * info.pydev_message = exc_break.qname.encode("utf-8") + * break # <<<<<<<<<<<<<< + * + * if should_stop: + */ + goto __pyx_L31_break; + + /* "_pydevd_bundle/pydevd_cython.pyx":1486 + * should_stop = False + * + * if should_stop: # <<<<<<<<<<<<<< + * exception_breakpoint = exc_break + * try: + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1434 + * check_excs.append((exc_break_caught, False)) + * + * for exc_break, is_user_uncaught in check_excs: # <<<<<<<<<<<<<< + * # Initially mark that it should stop and then go into exclusions. + * should_stop = True + */ + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L63_for_end; + __pyx_L31_break:; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L63_for_end; + __pyx_L63_for_end:; + } + __pyx_L22:; + + /* "_pydevd_bundle/pydevd_cython.pyx":1406 + * pydev_log.exception() + * + * if not should_stop: # <<<<<<<<<<<<<< + * # Apply checks that don't need the exception breakpoint (where we shouldn't ever stop). + * if exception == SystemExit and py_db.ignore_system_exit_code(value): + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1494 + * break + * + * if should_stop: # <<<<<<<<<<<<<< + * # Always add exception to frame (must remove later after we proceed). + * add_exception_to_frame(frame, (exception, value, trace)) + */ + if (__pyx_v_should_stop) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1496 + * if should_stop: + * # Always add exception to frame (must remove later after we proceed). + * add_exception_to_frame(frame, (exception, value, trace)) # <<<<<<<<<<<<<< + * + * if exception_breakpoint is not None and exception_breakpoint.expression is not None: + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_add_exception_to_frame); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1496, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1496, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_INCREF(__pyx_v_exception); + __Pyx_GIVEREF(__pyx_v_exception); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_exception)) __PYX_ERR(0, 1496, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_value); + __Pyx_GIVEREF(__pyx_v_value); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_value)) __PYX_ERR(0, 1496, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_trace); + __Pyx_GIVEREF(__pyx_v_trace); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_trace)) __PYX_ERR(0, 1496, __pyx_L1_error); + __pyx_t_12 = NULL; + __pyx_t_11 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_12)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_12); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_11 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_12, __pyx_v_frame, __pyx_t_4}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_11, 2+__pyx_t_11); + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1496, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1498 + * add_exception_to_frame(frame, (exception, value, trace)) + * + * if exception_breakpoint is not None and exception_breakpoint.expression is not None: # <<<<<<<<<<<<<< + * py_db.handle_breakpoint_expression(exception_breakpoint, info, frame) + * + */ + __pyx_t_7 = (__pyx_v_exception_breakpoint != Py_None); + if (__pyx_t_7) { + } else { + __pyx_t_1 = __pyx_t_7; + goto __pyx_L66_bool_binop_done; + } + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_exception_breakpoint, __pyx_n_s_expression); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1498, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_7 = (__pyx_t_3 != Py_None); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_1 = __pyx_t_7; + __pyx_L66_bool_binop_done:; + if (__pyx_t_1) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1499 + * + * if exception_breakpoint is not None and exception_breakpoint.expression is not None: + * py_db.handle_breakpoint_expression(exception_breakpoint, info, frame) # <<<<<<<<<<<<<< + * + * return should_stop, frame, maybe_user_uncaught_exc_info + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_handle_breakpoint_expression); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1499, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = NULL; + __pyx_t_11 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_11 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[4] = {__pyx_t_4, __pyx_v_exception_breakpoint, ((PyObject *)__pyx_v_info), __pyx_v_frame}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_11, 3+__pyx_t_11); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1499, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1498 + * add_exception_to_frame(frame, (exception, value, trace)) + * + * if exception_breakpoint is not None and exception_breakpoint.expression is not None: # <<<<<<<<<<<<<< + * py_db.handle_breakpoint_expression(exception_breakpoint, info, frame) + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1494 + * break + * + * if should_stop: # <<<<<<<<<<<<<< + * # Always add exception to frame (must remove later after we proceed). + * add_exception_to_frame(frame, (exception, value, trace)) + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1393 + * exception, value, trace = arg + * + * if trace is not None and hasattr(trace, "tb_next"): # <<<<<<<<<<<<<< + * # on jython trace is None on the first event and it may not have a tb_next. + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1390 + * + * # 2 = 2 + * if info.pydev_state != 2: # and breakpoint is not None: # <<<<<<<<<<<<<< + * exception, value, trace = arg + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1501 + * py_db.handle_breakpoint_expression(exception_breakpoint, info, frame) + * + * return should_stop, frame, maybe_user_uncaught_exc_info # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_v_should_stop); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1501, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1501, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_3); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3)) __PYX_ERR(0, 1501, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_frame); + __Pyx_GIVEREF(__pyx_v_frame); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_frame)) __PYX_ERR(0, 1501, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_maybe_user_uncaught_exc_info); + __Pyx_GIVEREF(__pyx_v_maybe_user_uncaught_exc_info); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_maybe_user_uncaught_exc_info)) __PYX_ERR(0, 1501, __pyx_L1_error); + __pyx_t_3 = 0; + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1378 + * + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * def should_stop_on_exception(py_db, PyDBAdditionalThreadInfo info, frame, thread, arg, prev_user_uncaught_exc_info, is_unwind=False): # <<<<<<<<<<<<<< + * cdef bint should_stop; + * cdef bint was_just_raised; + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_12); + __Pyx_XDECREF(__pyx_t_13); + __Pyx_XDECREF(__pyx_t_17); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.should_stop_on_exception", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_check_excs); + __Pyx_XDECREF(__pyx_v_maybe_user_uncaught_exc_info); + __Pyx_XDECREF(__pyx_v_exception); + __Pyx_XDECREF(__pyx_v_value); + __Pyx_XDECREF(__pyx_v_trace); + __Pyx_XDECREF(__pyx_v_exception_breakpoint); + __Pyx_XDECREF(__pyx_v_result); + __Pyx_XDECREF(__pyx_v_exc_break_user); + __Pyx_XDECREF(__pyx_v_exc_break_caught); + __Pyx_XDECREF(__pyx_v_exc_break); + __Pyx_XDECREF(__pyx_v_is_user_uncaught); + __Pyx_XDECREF(__pyx_v_exc_info); + __Pyx_XDECREF(__pyx_v_lines); + __Pyx_XDECREF(__pyx_v_frame); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":1511 + * + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * def handle_exception(py_db, thread, frame, arg, str exception_type): # <<<<<<<<<<<<<< + * cdef bint stopped; + * cdef tuple abs_real_path_and_base; + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_15handle_exception(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_15handle_exception = {"handle_exception", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_15handle_exception, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_15handle_exception(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_py_db = 0; + PyObject *__pyx_v_thread = 0; + PyObject *__pyx_v_frame = 0; + PyObject *__pyx_v_arg = 0; + PyObject *__pyx_v_exception_type = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[5] = {0,0,0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("handle_exception (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_py_db,&__pyx_n_s_thread,&__pyx_n_s_frame,&__pyx_n_s_arg,&__pyx_n_s_exception_type,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4); + CYTHON_FALLTHROUGH; + case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); + CYTHON_FALLTHROUGH; + case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_py_db)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1511, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_thread)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1511, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("handle_exception", 1, 5, 5, 1); __PYX_ERR(0, 1511, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_frame)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1511, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("handle_exception", 1, 5, 5, 2); __PYX_ERR(0, 1511, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 3: + if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_arg)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[3]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1511, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("handle_exception", 1, 5, 5, 3); __PYX_ERR(0, 1511, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 4: + if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_exception_type)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[4]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1511, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("handle_exception", 1, 5, 5, 4); __PYX_ERR(0, 1511, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "handle_exception") < 0)) __PYX_ERR(0, 1511, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 5)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); + values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4); + } + __pyx_v_py_db = values[0]; + __pyx_v_thread = values[1]; + __pyx_v_frame = values[2]; + __pyx_v_arg = values[3]; + __pyx_v_exception_type = ((PyObject*)values[4]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("handle_exception", 1, 5, 5, __pyx_nargs); __PYX_ERR(0, 1511, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.handle_exception", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_exception_type), (&PyString_Type), 1, "exception_type", 1))) __PYX_ERR(0, 1511, __pyx_L1_error) + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_14handle_exception(__pyx_self, __pyx_v_py_db, __pyx_v_thread, __pyx_v_frame, __pyx_v_arg, __pyx_v_exception_type); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + __pyx_L0:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_14handle_exception(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_py_db, PyObject *__pyx_v_thread, PyObject *__pyx_v_frame, PyObject *__pyx_v_arg, PyObject *__pyx_v_exception_type) { + int __pyx_v_stopped; + PyObject *__pyx_v_abs_real_path_and_base = 0; + PyObject *__pyx_v_absolute_filename = 0; + PyObject *__pyx_v_canonical_normalized_filename = 0; + PyObject *__pyx_v_lines_ignored = 0; + PyObject *__pyx_v_frame_id_to_frame = 0; + PyObject *__pyx_v_merged = 0; + PyObject *__pyx_v_trace_obj = 0; + PyObject *__pyx_v_initial_trace_obj = NULL; + PyObject *__pyx_v_check_trace_obj = NULL; + PyObject *__pyx_v_curr_stat = NULL; + PyObject *__pyx_v_last_stat = NULL; + PyObject *__pyx_v_from_user_input = NULL; + PyObject *__pyx_v_exc_lineno = NULL; + PyObject *__pyx_v_line = NULL; + PyObject *__pyx_v_f = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + int __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + Py_ssize_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + unsigned int __pyx_t_9; + PyObject *__pyx_t_10 = NULL; + PyObject *__pyx_t_11 = NULL; + PyObject *__pyx_t_12 = NULL; + int __pyx_t_13; + PyObject *__pyx_t_14 = NULL; + PyObject *__pyx_t_15 = NULL; + int __pyx_t_16; + int __pyx_t_17; + char const *__pyx_t_18; + PyObject *__pyx_t_19 = NULL; + PyObject *__pyx_t_20 = NULL; + PyObject *__pyx_t_21 = NULL; + PyObject *__pyx_t_22 = NULL; + PyObject *__pyx_t_23 = NULL; + PyObject *__pyx_t_24 = NULL; + char const *__pyx_t_25; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("handle_exception", 0); + __Pyx_INCREF(__pyx_v_py_db); + __Pyx_INCREF(__pyx_v_thread); + __Pyx_INCREF(__pyx_v_frame); + + /* "_pydevd_bundle/pydevd_cython.pyx":1523 + * # def handle_exception(py_db, thread, frame, arg, exception_type): + * # ENDIF + * stopped = False # <<<<<<<<<<<<<< + * try: + * # print('handle_exception', frame.f_lineno, frame.f_code.co_name) + */ + __pyx_v_stopped = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1524 + * # ENDIF + * stopped = False + * try: # <<<<<<<<<<<<<< + * # print('handle_exception', frame.f_lineno, frame.f_code.co_name) + * + */ + /*try:*/ { + + /* "_pydevd_bundle/pydevd_cython.pyx":1528 + * + * # We have 3 things in arg: exception type, description, traceback object + * trace_obj = arg[2] # <<<<<<<<<<<<<< + * + * initial_trace_obj = trace_obj + */ + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_arg, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1528, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_trace_obj = __pyx_t_1; + __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1530 + * trace_obj = arg[2] + * + * initial_trace_obj = trace_obj # <<<<<<<<<<<<<< + * if trace_obj.tb_next is None and trace_obj.tb_frame is frame: + * # I.e.: tb_next should be only None in the context it was thrown (trace_obj.tb_frame is frame is just a double check). + */ + __Pyx_INCREF(__pyx_v_trace_obj); + __pyx_v_initial_trace_obj = __pyx_v_trace_obj; + + /* "_pydevd_bundle/pydevd_cython.pyx":1531 + * + * initial_trace_obj = trace_obj + * if trace_obj.tb_next is None and trace_obj.tb_frame is frame: # <<<<<<<<<<<<<< + * # I.e.: tb_next should be only None in the context it was thrown (trace_obj.tb_frame is frame is just a double check). + * pass + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_trace_obj, __pyx_n_s_tb_next); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1531, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = (__pyx_t_1 == Py_None); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_3) { + } else { + __pyx_t_2 = __pyx_t_3; + goto __pyx_L7_bool_binop_done; + } + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_trace_obj, __pyx_n_s_tb_frame); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1531, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = (__pyx_t_1 == __pyx_v_frame); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_2 = __pyx_t_3; + __pyx_L7_bool_binop_done:; + if (__pyx_t_2) { + goto __pyx_L6; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1536 + * else: + * # Get the trace_obj from where the exception was raised... + * while trace_obj.tb_next is not None: # <<<<<<<<<<<<<< + * trace_obj = trace_obj.tb_next + * + */ + /*else*/ { + while (1) { + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_trace_obj, __pyx_n_s_tb_next); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1536, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = (__pyx_t_1 != Py_None); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (!__pyx_t_2) break; + + /* "_pydevd_bundle/pydevd_cython.pyx":1537 + * # Get the trace_obj from where the exception was raised... + * while trace_obj.tb_next is not None: + * trace_obj = trace_obj.tb_next # <<<<<<<<<<<<<< + * + * if py_db.ignore_exceptions_thrown_in_lines_with_ignore_exception: + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_trace_obj, __pyx_n_s_tb_next); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1537, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF_SET(__pyx_v_trace_obj, __pyx_t_1); + __pyx_t_1 = 0; + } + } + __pyx_L6:; + + /* "_pydevd_bundle/pydevd_cython.pyx":1539 + * trace_obj = trace_obj.tb_next + * + * if py_db.ignore_exceptions_thrown_in_lines_with_ignore_exception: # <<<<<<<<<<<<<< + * for check_trace_obj in (initial_trace_obj, trace_obj): + * abs_real_path_and_base = get_abs_path_real_path_and_base_from_frame(check_trace_obj.tb_frame) + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_ignore_exceptions_thrown_in_line); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1539, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1539, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_2) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1540 + * + * if py_db.ignore_exceptions_thrown_in_lines_with_ignore_exception: + * for check_trace_obj in (initial_trace_obj, trace_obj): # <<<<<<<<<<<<<< + * abs_real_path_and_base = get_abs_path_real_path_and_base_from_frame(check_trace_obj.tb_frame) + * absolute_filename = abs_real_path_and_base[0] + */ + __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1540, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_v_initial_trace_obj); + __Pyx_GIVEREF(__pyx_v_initial_trace_obj); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_initial_trace_obj)) __PYX_ERR(0, 1540, __pyx_L4_error); + __Pyx_INCREF(__pyx_v_trace_obj); + __Pyx_GIVEREF(__pyx_v_trace_obj); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_trace_obj)) __PYX_ERR(0, 1540, __pyx_L4_error); + __pyx_t_4 = __pyx_t_1; __Pyx_INCREF(__pyx_t_4); + __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + for (;;) { + if (__pyx_t_5 >= 2) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(0, 1540, __pyx_L4_error) + #else + __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1540, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + #endif + __Pyx_XDECREF_SET(__pyx_v_check_trace_obj, __pyx_t_1); + __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1541 + * if py_db.ignore_exceptions_thrown_in_lines_with_ignore_exception: + * for check_trace_obj in (initial_trace_obj, trace_obj): + * abs_real_path_and_base = get_abs_path_real_path_and_base_from_frame(check_trace_obj.tb_frame) # <<<<<<<<<<<<<< + * absolute_filename = abs_real_path_and_base[0] + * canonical_normalized_filename = abs_real_path_and_base[1] + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_get_abs_path_real_path_and_base); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1541, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_check_trace_obj, __pyx_n_s_tb_frame); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1541, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_7}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1541, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_1))) __PYX_ERR(0, 1541, __pyx_L4_error) + __Pyx_XDECREF_SET(__pyx_v_abs_real_path_and_base, ((PyObject*)__pyx_t_1)); + __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1542 + * for check_trace_obj in (initial_trace_obj, trace_obj): + * abs_real_path_and_base = get_abs_path_real_path_and_base_from_frame(check_trace_obj.tb_frame) + * absolute_filename = abs_real_path_and_base[0] # <<<<<<<<<<<<<< + * canonical_normalized_filename = abs_real_path_and_base[1] + * + */ + if (unlikely(__pyx_v_abs_real_path_and_base == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 1542, __pyx_L4_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v_abs_real_path_and_base, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1542, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_1))) __PYX_ERR(0, 1542, __pyx_L4_error) + __Pyx_XDECREF_SET(__pyx_v_absolute_filename, ((PyObject*)__pyx_t_1)); + __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1543 + * abs_real_path_and_base = get_abs_path_real_path_and_base_from_frame(check_trace_obj.tb_frame) + * absolute_filename = abs_real_path_and_base[0] + * canonical_normalized_filename = abs_real_path_and_base[1] # <<<<<<<<<<<<<< + * + * lines_ignored = filename_to_lines_where_exceptions_are_ignored.get(canonical_normalized_filename) + */ + if (unlikely(__pyx_v_abs_real_path_and_base == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 1543, __pyx_L4_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v_abs_real_path_and_base, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1543, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_1))) __PYX_ERR(0, 1543, __pyx_L4_error) + __Pyx_XDECREF_SET(__pyx_v_canonical_normalized_filename, ((PyObject*)__pyx_t_1)); + __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1545 + * canonical_normalized_filename = abs_real_path_and_base[1] + * + * lines_ignored = filename_to_lines_where_exceptions_are_ignored.get(canonical_normalized_filename) # <<<<<<<<<<<<<< + * if lines_ignored is None: + * lines_ignored = filename_to_lines_where_exceptions_are_ignored[canonical_normalized_filename] = {} + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_filename_to_lines_where_exceptio); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1545, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_get); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1545, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_canonical_normalized_filename}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1545, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_1))) __PYX_ERR(0, 1545, __pyx_L4_error) + __Pyx_XDECREF_SET(__pyx_v_lines_ignored, ((PyObject*)__pyx_t_1)); + __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1546 + * + * lines_ignored = filename_to_lines_where_exceptions_are_ignored.get(canonical_normalized_filename) + * if lines_ignored is None: # <<<<<<<<<<<<<< + * lines_ignored = filename_to_lines_where_exceptions_are_ignored[canonical_normalized_filename] = {} + * + */ + __pyx_t_2 = (__pyx_v_lines_ignored == ((PyObject*)Py_None)); + if (__pyx_t_2) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1547 + * lines_ignored = filename_to_lines_where_exceptions_are_ignored.get(canonical_normalized_filename) + * if lines_ignored is None: + * lines_ignored = filename_to_lines_where_exceptions_are_ignored[canonical_normalized_filename] = {} # <<<<<<<<<<<<<< + * + * try: + */ + __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1547, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_t_1); + __Pyx_DECREF_SET(__pyx_v_lines_ignored, __pyx_t_1); + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_filename_to_lines_where_exceptio); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1547, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + if (unlikely((PyObject_SetItem(__pyx_t_7, __pyx_v_canonical_normalized_filename, __pyx_t_1) < 0))) __PYX_ERR(0, 1547, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1546 + * + * lines_ignored = filename_to_lines_where_exceptions_are_ignored.get(canonical_normalized_filename) + * if lines_ignored is None: # <<<<<<<<<<<<<< + * lines_ignored = filename_to_lines_where_exceptions_are_ignored[canonical_normalized_filename] = {} + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1549 + * lines_ignored = filename_to_lines_where_exceptions_are_ignored[canonical_normalized_filename] = {} + * + * try: # <<<<<<<<<<<<<< + * curr_stat = os.stat(absolute_filename) + * curr_stat = (curr_stat.st_size, curr_stat.st_mtime) + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); + __Pyx_XGOTREF(__pyx_t_10); + __Pyx_XGOTREF(__pyx_t_11); + __Pyx_XGOTREF(__pyx_t_12); + /*try:*/ { + + /* "_pydevd_bundle/pydevd_cython.pyx":1550 + * + * try: + * curr_stat = os.stat(absolute_filename) # <<<<<<<<<<<<<< + * curr_stat = (curr_stat.st_size, curr_stat.st_mtime) + * except: + */ + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_os); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1550, __pyx_L15_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_stat); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1550, __pyx_L15_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_7 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_absolute_filename}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1550, __pyx_L15_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __Pyx_XDECREF_SET(__pyx_v_curr_stat, __pyx_t_1); + __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1551 + * try: + * curr_stat = os.stat(absolute_filename) + * curr_stat = (curr_stat.st_size, curr_stat.st_mtime) # <<<<<<<<<<<<<< + * except: + * curr_stat = None + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_curr_stat, __pyx_n_s_st_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1551, __pyx_L15_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_curr_stat, __pyx_n_s_st_mtime); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1551, __pyx_L15_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1551, __pyx_L15_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1)) __PYX_ERR(0, 1551, __pyx_L15_error); + __Pyx_GIVEREF(__pyx_t_6); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6)) __PYX_ERR(0, 1551, __pyx_L15_error); + __pyx_t_1 = 0; + __pyx_t_6 = 0; + __Pyx_DECREF_SET(__pyx_v_curr_stat, __pyx_t_7); + __pyx_t_7 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1549 + * lines_ignored = filename_to_lines_where_exceptions_are_ignored[canonical_normalized_filename] = {} + * + * try: # <<<<<<<<<<<<<< + * curr_stat = os.stat(absolute_filename) + * curr_stat = (curr_stat.st_size, curr_stat.st_mtime) + */ + } + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + goto __pyx_L22_try_end; + __pyx_L15_error:; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1552 + * curr_stat = os.stat(absolute_filename) + * curr_stat = (curr_stat.st_size, curr_stat.st_mtime) + * except: # <<<<<<<<<<<<<< + * curr_stat = None + * + */ + /*except:*/ { + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.handle_exception", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_1) < 0) __PYX_ERR(0, 1552, __pyx_L17_except_error) + __Pyx_XGOTREF(__pyx_t_7); + __Pyx_XGOTREF(__pyx_t_6); + __Pyx_XGOTREF(__pyx_t_1); + + /* "_pydevd_bundle/pydevd_cython.pyx":1553 + * curr_stat = (curr_stat.st_size, curr_stat.st_mtime) + * except: + * curr_stat = None # <<<<<<<<<<<<<< + * + * last_stat = filename_to_stat_info.get(absolute_filename) + */ + __Pyx_INCREF(Py_None); + __Pyx_XDECREF_SET(__pyx_v_curr_stat, Py_None); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + goto __pyx_L16_exception_handled; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1549 + * lines_ignored = filename_to_lines_where_exceptions_are_ignored[canonical_normalized_filename] = {} + * + * try: # <<<<<<<<<<<<<< + * curr_stat = os.stat(absolute_filename) + * curr_stat = (curr_stat.st_size, curr_stat.st_mtime) + */ + __pyx_L17_except_error:; + __Pyx_XGIVEREF(__pyx_t_10); + __Pyx_XGIVEREF(__pyx_t_11); + __Pyx_XGIVEREF(__pyx_t_12); + __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12); + goto __pyx_L4_error; + __pyx_L16_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_10); + __Pyx_XGIVEREF(__pyx_t_11); + __Pyx_XGIVEREF(__pyx_t_12); + __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12); + __pyx_L22_try_end:; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1555 + * curr_stat = None + * + * last_stat = filename_to_stat_info.get(absolute_filename) # <<<<<<<<<<<<<< + * if last_stat != curr_stat: + * filename_to_stat_info[absolute_filename] = curr_stat + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_filename_to_stat_info); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1555, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_get); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1555, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_absolute_filename}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1555, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __Pyx_XDECREF_SET(__pyx_v_last_stat, __pyx_t_1); + __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1556 + * + * last_stat = filename_to_stat_info.get(absolute_filename) + * if last_stat != curr_stat: # <<<<<<<<<<<<<< + * filename_to_stat_info[absolute_filename] = curr_stat + * lines_ignored.clear() + */ + __pyx_t_1 = PyObject_RichCompare(__pyx_v_last_stat, __pyx_v_curr_stat, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1556, __pyx_L4_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1556, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_2) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1557 + * last_stat = filename_to_stat_info.get(absolute_filename) + * if last_stat != curr_stat: + * filename_to_stat_info[absolute_filename] = curr_stat # <<<<<<<<<<<<<< + * lines_ignored.clear() + * try: + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_filename_to_stat_info); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1557, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + if (unlikely((PyObject_SetItem(__pyx_t_1, __pyx_v_absolute_filename, __pyx_v_curr_stat) < 0))) __PYX_ERR(0, 1557, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1558 + * if last_stat != curr_stat: + * filename_to_stat_info[absolute_filename] = curr_stat + * lines_ignored.clear() # <<<<<<<<<<<<<< + * try: + * linecache.checkcache(absolute_filename) + */ + if (unlikely(__pyx_v_lines_ignored == Py_None)) { + PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "clear"); + __PYX_ERR(0, 1558, __pyx_L4_error) + } + __pyx_t_13 = __Pyx_PyDict_Clear(__pyx_v_lines_ignored); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(0, 1558, __pyx_L4_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":1559 + * filename_to_stat_info[absolute_filename] = curr_stat + * lines_ignored.clear() + * try: # <<<<<<<<<<<<<< + * linecache.checkcache(absolute_filename) + * except: + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_12, &__pyx_t_11, &__pyx_t_10); + __Pyx_XGOTREF(__pyx_t_12); + __Pyx_XGOTREF(__pyx_t_11); + __Pyx_XGOTREF(__pyx_t_10); + /*try:*/ { + + /* "_pydevd_bundle/pydevd_cython.pyx":1560 + * lines_ignored.clear() + * try: + * linecache.checkcache(absolute_filename) # <<<<<<<<<<<<<< + * except: + * pydev_log.exception("Error in linecache.checkcache(%r)", absolute_filename) + */ + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_linecache); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1560, __pyx_L26_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_checkcache); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1560, __pyx_L26_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_7 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_absolute_filename}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1560, __pyx_L26_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1559 + * filename_to_stat_info[absolute_filename] = curr_stat + * lines_ignored.clear() + * try: # <<<<<<<<<<<<<< + * linecache.checkcache(absolute_filename) + * except: + */ + } + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + goto __pyx_L33_try_end; + __pyx_L26_error:; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1561 + * try: + * linecache.checkcache(absolute_filename) + * except: # <<<<<<<<<<<<<< + * pydev_log.exception("Error in linecache.checkcache(%r)", absolute_filename) + * + */ + /*except:*/ { + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.handle_exception", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(0, 1561, __pyx_L28_except_error) + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_6); + __Pyx_XGOTREF(__pyx_t_7); + + /* "_pydevd_bundle/pydevd_cython.pyx":1562 + * linecache.checkcache(absolute_filename) + * except: + * pydev_log.exception("Error in linecache.checkcache(%r)", absolute_filename) # <<<<<<<<<<<<<< + * + * from_user_input = py_db.filename_to_lines_where_exceptions_are_ignored.get(canonical_normalized_filename) + */ + __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1562, __pyx_L28_except_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_exception); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1562, __pyx_L28_except_error) + __Pyx_GOTREF(__pyx_t_15); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __pyx_t_14 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_15))) { + __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_15); + if (likely(__pyx_t_14)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_15); + __Pyx_INCREF(__pyx_t_14); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_15, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_14, __pyx_kp_s_Error_in_linecache_checkcache_r, __pyx_v_absolute_filename}; + __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_15, __pyx_callargs+1-__pyx_t_9, 2+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1562, __pyx_L28_except_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; + } + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + goto __pyx_L27_exception_handled; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1559 + * filename_to_stat_info[absolute_filename] = curr_stat + * lines_ignored.clear() + * try: # <<<<<<<<<<<<<< + * linecache.checkcache(absolute_filename) + * except: + */ + __pyx_L28_except_error:; + __Pyx_XGIVEREF(__pyx_t_12); + __Pyx_XGIVEREF(__pyx_t_11); + __Pyx_XGIVEREF(__pyx_t_10); + __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_11, __pyx_t_10); + goto __pyx_L4_error; + __pyx_L27_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_12); + __Pyx_XGIVEREF(__pyx_t_11); + __Pyx_XGIVEREF(__pyx_t_10); + __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_11, __pyx_t_10); + __pyx_L33_try_end:; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1556 + * + * last_stat = filename_to_stat_info.get(absolute_filename) + * if last_stat != curr_stat: # <<<<<<<<<<<<<< + * filename_to_stat_info[absolute_filename] = curr_stat + * lines_ignored.clear() + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1564 + * pydev_log.exception("Error in linecache.checkcache(%r)", absolute_filename) + * + * from_user_input = py_db.filename_to_lines_where_exceptions_are_ignored.get(canonical_normalized_filename) # <<<<<<<<<<<<<< + * if from_user_input: + * merged = {} + */ + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_filename_to_lines_where_exceptio); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1564, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1564, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_canonical_normalized_filename}; + __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1564, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_XDECREF_SET(__pyx_v_from_user_input, __pyx_t_7); + __pyx_t_7 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1565 + * + * from_user_input = py_db.filename_to_lines_where_exceptions_are_ignored.get(canonical_normalized_filename) + * if from_user_input: # <<<<<<<<<<<<<< + * merged = {} + * merged.update(lines_ignored) + */ + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_from_user_input); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1565, __pyx_L4_error) + if (__pyx_t_2) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1566 + * from_user_input = py_db.filename_to_lines_where_exceptions_are_ignored.get(canonical_normalized_filename) + * if from_user_input: + * merged = {} # <<<<<<<<<<<<<< + * merged.update(lines_ignored) + * # Override what we have with the related entries that the user entered + */ + __pyx_t_7 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1566, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_XDECREF_SET(__pyx_v_merged, ((PyObject*)__pyx_t_7)); + __pyx_t_7 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1567 + * if from_user_input: + * merged = {} + * merged.update(lines_ignored) # <<<<<<<<<<<<<< + * # Override what we have with the related entries that the user entered + * merged.update(from_user_input) + */ + __pyx_t_7 = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PyDict_Type_update, __pyx_v_merged, __pyx_v_lines_ignored); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1567, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1569 + * merged.update(lines_ignored) + * # Override what we have with the related entries that the user entered + * merged.update(from_user_input) # <<<<<<<<<<<<<< + * else: + * merged = lines_ignored + */ + __pyx_t_7 = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PyDict_Type_update, __pyx_v_merged, __pyx_v_from_user_input); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1569, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1565 + * + * from_user_input = py_db.filename_to_lines_where_exceptions_are_ignored.get(canonical_normalized_filename) + * if from_user_input: # <<<<<<<<<<<<<< + * merged = {} + * merged.update(lines_ignored) + */ + goto __pyx_L36; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1571 + * merged.update(from_user_input) + * else: + * merged = lines_ignored # <<<<<<<<<<<<<< + * + * exc_lineno = check_trace_obj.tb_lineno + */ + /*else*/ { + __Pyx_INCREF(__pyx_v_lines_ignored); + __Pyx_XDECREF_SET(__pyx_v_merged, __pyx_v_lines_ignored); + } + __pyx_L36:; + + /* "_pydevd_bundle/pydevd_cython.pyx":1573 + * merged = lines_ignored + * + * exc_lineno = check_trace_obj.tb_lineno # <<<<<<<<<<<<<< + * + * # print ('lines ignored', lines_ignored) + */ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_check_trace_obj, __pyx_n_s_tb_lineno); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1573, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_XDECREF_SET(__pyx_v_exc_lineno, __pyx_t_7); + __pyx_t_7 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1579 + * # print ('merged', merged, 'curr', exc_lineno) + * + * if exc_lineno not in merged: # Note: check on merged but update lines_ignored. # <<<<<<<<<<<<<< + * try: + * line = linecache.getline(absolute_filename, exc_lineno, check_trace_obj.tb_frame.f_globals) + */ + if (unlikely(__pyx_v_merged == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); + __PYX_ERR(0, 1579, __pyx_L4_error) + } + __pyx_t_2 = (__Pyx_PyDict_ContainsTF(__pyx_v_exc_lineno, __pyx_v_merged, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1579, __pyx_L4_error) + if (__pyx_t_2) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1580 + * + * if exc_lineno not in merged: # Note: check on merged but update lines_ignored. + * try: # <<<<<<<<<<<<<< + * line = linecache.getline(absolute_filename, exc_lineno, check_trace_obj.tb_frame.f_globals) + * except: + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); + __Pyx_XGOTREF(__pyx_t_10); + __Pyx_XGOTREF(__pyx_t_11); + __Pyx_XGOTREF(__pyx_t_12); + /*try:*/ { + + /* "_pydevd_bundle/pydevd_cython.pyx":1581 + * if exc_lineno not in merged: # Note: check on merged but update lines_ignored. + * try: + * line = linecache.getline(absolute_filename, exc_lineno, check_trace_obj.tb_frame.f_globals) # <<<<<<<<<<<<<< + * except: + * pydev_log.exception("Error in linecache.getline(%r, %s, f_globals)", absolute_filename, exc_lineno) + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_linecache); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1581, __pyx_L38_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_getline); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1581, __pyx_L38_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_check_trace_obj, __pyx_n_s_tb_frame); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1581, __pyx_L38_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_f_globals); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1581, __pyx_L38_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[4] = {__pyx_t_1, __pyx_v_absolute_filename, __pyx_v_exc_lineno, __pyx_t_8}; + __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_9, 3+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1581, __pyx_L38_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __Pyx_XDECREF_SET(__pyx_v_line, __pyx_t_7); + __pyx_t_7 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1580 + * + * if exc_lineno not in merged: # Note: check on merged but update lines_ignored. + * try: # <<<<<<<<<<<<<< + * line = linecache.getline(absolute_filename, exc_lineno, check_trace_obj.tb_frame.f_globals) + * except: + */ + } + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + goto __pyx_L45_try_end; + __pyx_L38_error:; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1582 + * try: + * line = linecache.getline(absolute_filename, exc_lineno, check_trace_obj.tb_frame.f_globals) + * except: # <<<<<<<<<<<<<< + * pydev_log.exception("Error in linecache.getline(%r, %s, f_globals)", absolute_filename, exc_lineno) + * line = "" + */ + /*except:*/ { + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.handle_exception", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_8) < 0) __PYX_ERR(0, 1582, __pyx_L40_except_error) + __Pyx_XGOTREF(__pyx_t_7); + __Pyx_XGOTREF(__pyx_t_6); + __Pyx_XGOTREF(__pyx_t_8); + + /* "_pydevd_bundle/pydevd_cython.pyx":1583 + * line = linecache.getline(absolute_filename, exc_lineno, check_trace_obj.tb_frame.f_globals) + * except: + * pydev_log.exception("Error in linecache.getline(%r, %s, f_globals)", absolute_filename, exc_lineno) # <<<<<<<<<<<<<< + * line = "" + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_15, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1583, __pyx_L40_except_error) + __Pyx_GOTREF(__pyx_t_15); + __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_exception); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1583, __pyx_L40_except_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; + __pyx_t_15 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_14))) { + __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_14); + if (likely(__pyx_t_15)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14); + __Pyx_INCREF(__pyx_t_15); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_14, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[4] = {__pyx_t_15, __pyx_kp_s_Error_in_linecache_getline_r_s_f, __pyx_v_absolute_filename, __pyx_v_exc_lineno}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_14, __pyx_callargs+1-__pyx_t_9, 3+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1583, __pyx_L40_except_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1584 + * except: + * pydev_log.exception("Error in linecache.getline(%r, %s, f_globals)", absolute_filename, exc_lineno) + * line = "" # <<<<<<<<<<<<<< + * + * if IGNORE_EXCEPTION_TAG.match(line) is not None: + */ + __Pyx_INCREF(__pyx_kp_s_); + __Pyx_XDECREF_SET(__pyx_v_line, __pyx_kp_s_); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + goto __pyx_L39_exception_handled; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1580 + * + * if exc_lineno not in merged: # Note: check on merged but update lines_ignored. + * try: # <<<<<<<<<<<<<< + * line = linecache.getline(absolute_filename, exc_lineno, check_trace_obj.tb_frame.f_globals) + * except: + */ + __pyx_L40_except_error:; + __Pyx_XGIVEREF(__pyx_t_10); + __Pyx_XGIVEREF(__pyx_t_11); + __Pyx_XGIVEREF(__pyx_t_12); + __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12); + goto __pyx_L4_error; + __pyx_L39_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_10); + __Pyx_XGIVEREF(__pyx_t_11); + __Pyx_XGIVEREF(__pyx_t_12); + __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12); + __pyx_L45_try_end:; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1586 + * line = "" + * + * if IGNORE_EXCEPTION_TAG.match(line) is not None: # <<<<<<<<<<<<<< + * lines_ignored[exc_lineno] = 1 + * return False + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_IGNORE_EXCEPTION_TAG); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1586, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_match); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1586, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_line}; + __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1586, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __pyx_t_2 = (__pyx_t_8 != Py_None); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (__pyx_t_2) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1587 + * + * if IGNORE_EXCEPTION_TAG.match(line) is not None: + * lines_ignored[exc_lineno] = 1 # <<<<<<<<<<<<<< + * return False + * else: + */ + if (unlikely(__pyx_v_lines_ignored == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 1587, __pyx_L4_error) + } + if (unlikely((PyDict_SetItem(__pyx_v_lines_ignored, __pyx_v_exc_lineno, __pyx_int_1) < 0))) __PYX_ERR(0, 1587, __pyx_L4_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":1588 + * if IGNORE_EXCEPTION_TAG.match(line) is not None: + * lines_ignored[exc_lineno] = 1 + * return False # <<<<<<<<<<<<<< + * else: + * # Put in the cache saying not to ignore + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(Py_False); + __pyx_r = Py_False; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + goto __pyx_L3_return; + + /* "_pydevd_bundle/pydevd_cython.pyx":1586 + * line = "" + * + * if IGNORE_EXCEPTION_TAG.match(line) is not None: # <<<<<<<<<<<<<< + * lines_ignored[exc_lineno] = 1 + * return False + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1591 + * else: + * # Put in the cache saying not to ignore + * lines_ignored[exc_lineno] = 0 # <<<<<<<<<<<<<< + * else: + * # Ok, dict has it already cached, so, let's check it... + */ + /*else*/ { + if (unlikely(__pyx_v_lines_ignored == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 1591, __pyx_L4_error) + } + if (unlikely((PyDict_SetItem(__pyx_v_lines_ignored, __pyx_v_exc_lineno, __pyx_int_0) < 0))) __PYX_ERR(0, 1591, __pyx_L4_error) + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1579 + * # print ('merged', merged, 'curr', exc_lineno) + * + * if exc_lineno not in merged: # Note: check on merged but update lines_ignored. # <<<<<<<<<<<<<< + * try: + * line = linecache.getline(absolute_filename, exc_lineno, check_trace_obj.tb_frame.f_globals) + */ + goto __pyx_L37; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1594 + * else: + * # Ok, dict has it already cached, so, let's check it... + * if merged.get(exc_lineno, 0): # <<<<<<<<<<<<<< + * return False + * + */ + /*else*/ { + if (unlikely(__pyx_v_merged == Py_None)) { + PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get"); + __PYX_ERR(0, 1594, __pyx_L4_error) + } + __pyx_t_8 = __Pyx_PyDict_GetItemDefault(__pyx_v_merged, __pyx_v_exc_lineno, __pyx_int_0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1594, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1594, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (__pyx_t_2) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1595 + * # Ok, dict has it already cached, so, let's check it... + * if merged.get(exc_lineno, 0): + * return False # <<<<<<<<<<<<<< + * + * try: + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(Py_False); + __pyx_r = Py_False; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + goto __pyx_L3_return; + + /* "_pydevd_bundle/pydevd_cython.pyx":1594 + * else: + * # Ok, dict has it already cached, so, let's check it... + * if merged.get(exc_lineno, 0): # <<<<<<<<<<<<<< + * return False + * + */ + } + } + __pyx_L37:; + + /* "_pydevd_bundle/pydevd_cython.pyx":1540 + * + * if py_db.ignore_exceptions_thrown_in_lines_with_ignore_exception: + * for check_trace_obj in (initial_trace_obj, trace_obj): # <<<<<<<<<<<<<< + * abs_real_path_and_base = get_abs_path_real_path_and_base_from_frame(check_trace_obj.tb_frame) + * absolute_filename = abs_real_path_and_base[0] + */ + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1539 + * trace_obj = trace_obj.tb_next + * + * if py_db.ignore_exceptions_thrown_in_lines_with_ignore_exception: # <<<<<<<<<<<<<< + * for check_trace_obj in (initial_trace_obj, trace_obj): + * abs_real_path_and_base = get_abs_path_real_path_and_base_from_frame(check_trace_obj.tb_frame) + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1597 + * return False + * + * try: # <<<<<<<<<<<<<< + * frame_id_to_frame = {} + * frame_id_to_frame[id(frame)] = frame + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_12, &__pyx_t_11, &__pyx_t_10); + __Pyx_XGOTREF(__pyx_t_12); + __Pyx_XGOTREF(__pyx_t_11); + __Pyx_XGOTREF(__pyx_t_10); + /*try:*/ { + + /* "_pydevd_bundle/pydevd_cython.pyx":1598 + * + * try: + * frame_id_to_frame = {} # <<<<<<<<<<<<<< + * frame_id_to_frame[id(frame)] = frame + * f = trace_obj.tb_frame + */ + __pyx_t_4 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1598, __pyx_L51_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_v_frame_id_to_frame = ((PyObject*)__pyx_t_4); + __pyx_t_4 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1599 + * try: + * frame_id_to_frame = {} + * frame_id_to_frame[id(frame)] = frame # <<<<<<<<<<<<<< + * f = trace_obj.tb_frame + * while f is not None: + */ + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, __pyx_v_frame); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1599, __pyx_L51_error) + __Pyx_GOTREF(__pyx_t_4); + if (unlikely((PyDict_SetItem(__pyx_v_frame_id_to_frame, __pyx_t_4, __pyx_v_frame) < 0))) __PYX_ERR(0, 1599, __pyx_L51_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1600 + * frame_id_to_frame = {} + * frame_id_to_frame[id(frame)] = frame + * f = trace_obj.tb_frame # <<<<<<<<<<<<<< + * while f is not None: + * frame_id_to_frame[id(f)] = f + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_trace_obj, __pyx_n_s_tb_frame); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1600, __pyx_L51_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_v_f = __pyx_t_4; + __pyx_t_4 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1601 + * frame_id_to_frame[id(frame)] = frame + * f = trace_obj.tb_frame + * while f is not None: # <<<<<<<<<<<<<< + * frame_id_to_frame[id(f)] = f + * f = f.f_back + */ + while (1) { + __pyx_t_2 = (__pyx_v_f != Py_None); + if (!__pyx_t_2) break; + + /* "_pydevd_bundle/pydevd_cython.pyx":1602 + * f = trace_obj.tb_frame + * while f is not None: + * frame_id_to_frame[id(f)] = f # <<<<<<<<<<<<<< + * f = f.f_back + * f = None + */ + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, __pyx_v_f); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1602, __pyx_L51_error) + __Pyx_GOTREF(__pyx_t_4); + if (unlikely((PyDict_SetItem(__pyx_v_frame_id_to_frame, __pyx_t_4, __pyx_v_f) < 0))) __PYX_ERR(0, 1602, __pyx_L51_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1603 + * while f is not None: + * frame_id_to_frame[id(f)] = f + * f = f.f_back # <<<<<<<<<<<<<< + * f = None + * + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_f_back); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1603, __pyx_L51_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF_SET(__pyx_v_f, __pyx_t_4); + __pyx_t_4 = 0; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1604 + * frame_id_to_frame[id(f)] = f + * f = f.f_back + * f = None # <<<<<<<<<<<<<< + * + * stopped = True + */ + __Pyx_INCREF(Py_None); + __Pyx_DECREF_SET(__pyx_v_f, Py_None); + + /* "_pydevd_bundle/pydevd_cython.pyx":1606 + * f = None + * + * stopped = True # <<<<<<<<<<<<<< + * py_db.send_caught_exception_stack(thread, arg, id(frame)) + * try: + */ + __pyx_v_stopped = 1; + + /* "_pydevd_bundle/pydevd_cython.pyx":1607 + * + * stopped = True + * py_db.send_caught_exception_stack(thread, arg, id(frame)) # <<<<<<<<<<<<<< + * try: + * py_db.set_suspend(thread, 137) + */ + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_send_caught_exception_stack); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1607, __pyx_L51_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, __pyx_v_frame); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1607, __pyx_L51_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_6 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[4] = {__pyx_t_6, __pyx_v_thread, __pyx_v_arg, __pyx_t_7}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_9, 3+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1607, __pyx_L51_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1608 + * stopped = True + * py_db.send_caught_exception_stack(thread, arg, id(frame)) + * try: # <<<<<<<<<<<<<< + * py_db.set_suspend(thread, 137) + * py_db.do_wait_suspend(thread, frame, "exception", arg, exception_type=exception_type) + */ + /*try:*/ { + + /* "_pydevd_bundle/pydevd_cython.pyx":1609 + * py_db.send_caught_exception_stack(thread, arg, id(frame)) + * try: + * py_db.set_suspend(thread, 137) # <<<<<<<<<<<<<< + * py_db.do_wait_suspend(thread, frame, "exception", arg, exception_type=exception_type) + * finally: + */ + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_set_suspend); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1609, __pyx_L60_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_7 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_v_thread, __pyx_int_137}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_9, 2+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1609, __pyx_L60_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1610 + * try: + * py_db.set_suspend(thread, 137) + * py_db.do_wait_suspend(thread, frame, "exception", arg, exception_type=exception_type) # <<<<<<<<<<<<<< + * finally: + * py_db.send_caught_exception_stack_proceeded(thread) + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_do_wait_suspend); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1610, __pyx_L60_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_8 = PyTuple_New(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1610, __pyx_L60_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_INCREF(__pyx_v_thread); + __Pyx_GIVEREF(__pyx_v_thread); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_thread)) __PYX_ERR(0, 1610, __pyx_L60_error); + __Pyx_INCREF(__pyx_v_frame); + __Pyx_GIVEREF(__pyx_v_frame); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_frame)) __PYX_ERR(0, 1610, __pyx_L60_error); + __Pyx_INCREF(__pyx_n_s_exception); + __Pyx_GIVEREF(__pyx_n_s_exception); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_n_s_exception)) __PYX_ERR(0, 1610, __pyx_L60_error); + __Pyx_INCREF(__pyx_v_arg); + __Pyx_GIVEREF(__pyx_v_arg); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 3, __pyx_v_arg)) __PYX_ERR(0, 1610, __pyx_L60_error); + __pyx_t_7 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1610, __pyx_L60_error) + __Pyx_GOTREF(__pyx_t_7); + if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_exception_type, __pyx_v_exception_type) < 0) __PYX_ERR(0, 1610, __pyx_L60_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1610, __pyx_L60_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1612 + * py_db.do_wait_suspend(thread, frame, "exception", arg, exception_type=exception_type) + * finally: + * py_db.send_caught_exception_stack_proceeded(thread) # <<<<<<<<<<<<<< + * except: + * pydev_log.exception() + */ + /*finally:*/ { + /*normal exit:*/{ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_send_caught_exception_stack_proc); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1612, __pyx_L51_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_v_thread}; + __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1612, __pyx_L51_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + goto __pyx_L61; + } + __pyx_L60_error:; + /*exception exit:*/{ + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_22, &__pyx_t_23, &__pyx_t_24); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21) < 0)) __Pyx_ErrFetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21); + __Pyx_XGOTREF(__pyx_t_19); + __Pyx_XGOTREF(__pyx_t_20); + __Pyx_XGOTREF(__pyx_t_21); + __Pyx_XGOTREF(__pyx_t_22); + __Pyx_XGOTREF(__pyx_t_23); + __Pyx_XGOTREF(__pyx_t_24); + __pyx_t_16 = __pyx_lineno; __pyx_t_17 = __pyx_clineno; __pyx_t_18 = __pyx_filename; + { + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_send_caught_exception_stack_proc); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1612, __pyx_L63_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_v_thread}; + __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1612, __pyx_L63_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_22); + __Pyx_XGIVEREF(__pyx_t_23); + __Pyx_XGIVEREF(__pyx_t_24); + __Pyx_ExceptionReset(__pyx_t_22, __pyx_t_23, __pyx_t_24); + } + __Pyx_XGIVEREF(__pyx_t_19); + __Pyx_XGIVEREF(__pyx_t_20); + __Pyx_XGIVEREF(__pyx_t_21); + __Pyx_ErrRestore(__pyx_t_19, __pyx_t_20, __pyx_t_21); + __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; + __pyx_lineno = __pyx_t_16; __pyx_clineno = __pyx_t_17; __pyx_filename = __pyx_t_18; + goto __pyx_L51_error; + __pyx_L63_error:; + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_22); + __Pyx_XGIVEREF(__pyx_t_23); + __Pyx_XGIVEREF(__pyx_t_24); + __Pyx_ExceptionReset(__pyx_t_22, __pyx_t_23, __pyx_t_24); + } + __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0; + __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0; + __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0; + __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; + goto __pyx_L51_error; + } + __pyx_L61:; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1597 + * return False + * + * try: # <<<<<<<<<<<<<< + * frame_id_to_frame = {} + * frame_id_to_frame[id(frame)] = frame + */ + } + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + goto __pyx_L56_try_end; + __pyx_L51_error:; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1613 + * finally: + * py_db.send_caught_exception_stack_proceeded(thread) + * except: # <<<<<<<<<<<<<< + * pydev_log.exception() + * + */ + /*except:*/ { + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.handle_exception", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(0, 1613, __pyx_L53_except_error) + __Pyx_XGOTREF(__pyx_t_6); + __Pyx_XGOTREF(__pyx_t_7); + __Pyx_XGOTREF(__pyx_t_8); + + /* "_pydevd_bundle/pydevd_cython.pyx":1614 + * py_db.send_caught_exception_stack_proceeded(thread) + * except: + * pydev_log.exception() # <<<<<<<<<<<<<< + * + * py_db.set_trace_for_frame_and_parents(thread.ident, frame) + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1614, __pyx_L53_except_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_exception); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1614, __pyx_L53_except_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_14))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_14); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_14, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_14, __pyx_callargs+1-__pyx_t_9, 0+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1614, __pyx_L53_except_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + goto __pyx_L52_exception_handled; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1597 + * return False + * + * try: # <<<<<<<<<<<<<< + * frame_id_to_frame = {} + * frame_id_to_frame[id(frame)] = frame + */ + __pyx_L53_except_error:; + __Pyx_XGIVEREF(__pyx_t_12); + __Pyx_XGIVEREF(__pyx_t_11); + __Pyx_XGIVEREF(__pyx_t_10); + __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_11, __pyx_t_10); + goto __pyx_L4_error; + __pyx_L52_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_12); + __Pyx_XGIVEREF(__pyx_t_11); + __Pyx_XGIVEREF(__pyx_t_10); + __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_11, __pyx_t_10); + __pyx_L56_try_end:; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1616 + * pydev_log.exception() + * + * py_db.set_trace_for_frame_and_parents(thread.ident, frame) # <<<<<<<<<<<<<< + * finally: + * # Make sure the user cannot see the '__exception__' we added after we leave the suspend state. + */ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_set_trace_for_frame_and_parents); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1616, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_thread, __pyx_n_s_ident_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1616, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_4 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_6, __pyx_v_frame}; + __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 2+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1616, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1619 + * finally: + * # Make sure the user cannot see the '__exception__' we added after we leave the suspend state. + * remove_exception_from_frame(frame) # <<<<<<<<<<<<<< + * # Clear some local variables... + * frame = None + */ + /*finally:*/ { + /*normal exit:*/{ + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_remove_exception_from_frame); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1619, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_6 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_frame}; + __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1619, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1621 + * remove_exception_from_frame(frame) + * # Clear some local variables... + * frame = None # <<<<<<<<<<<<<< + * trace_obj = None + * initial_trace_obj = None + */ + __Pyx_INCREF(Py_None); + __Pyx_DECREF_SET(__pyx_v_frame, Py_None); + + /* "_pydevd_bundle/pydevd_cython.pyx":1622 + * # Clear some local variables... + * frame = None + * trace_obj = None # <<<<<<<<<<<<<< + * initial_trace_obj = None + * check_trace_obj = None + */ + __Pyx_INCREF(Py_None); + __Pyx_DECREF_SET(__pyx_v_trace_obj, Py_None); + + /* "_pydevd_bundle/pydevd_cython.pyx":1623 + * frame = None + * trace_obj = None + * initial_trace_obj = None # <<<<<<<<<<<<<< + * check_trace_obj = None + * f = None + */ + __Pyx_INCREF(Py_None); + __Pyx_DECREF_SET(__pyx_v_initial_trace_obj, Py_None); + + /* "_pydevd_bundle/pydevd_cython.pyx":1624 + * trace_obj = None + * initial_trace_obj = None + * check_trace_obj = None # <<<<<<<<<<<<<< + * f = None + * frame_id_to_frame = None + */ + __Pyx_INCREF(Py_None); + __Pyx_XDECREF_SET(__pyx_v_check_trace_obj, Py_None); + + /* "_pydevd_bundle/pydevd_cython.pyx":1625 + * initial_trace_obj = None + * check_trace_obj = None + * f = None # <<<<<<<<<<<<<< + * frame_id_to_frame = None + * py_db = None + */ + __Pyx_INCREF(Py_None); + __Pyx_XDECREF_SET(__pyx_v_f, Py_None); + + /* "_pydevd_bundle/pydevd_cython.pyx":1626 + * check_trace_obj = None + * f = None + * frame_id_to_frame = None # <<<<<<<<<<<<<< + * py_db = None + * thread = None + */ + __Pyx_INCREF(Py_None); + __Pyx_XDECREF_SET(__pyx_v_frame_id_to_frame, ((PyObject*)Py_None)); + + /* "_pydevd_bundle/pydevd_cython.pyx":1627 + * f = None + * frame_id_to_frame = None + * py_db = None # <<<<<<<<<<<<<< + * thread = None + * + */ + __Pyx_INCREF(Py_None); + __Pyx_DECREF_SET(__pyx_v_py_db, Py_None); + + /* "_pydevd_bundle/pydevd_cython.pyx":1628 + * frame_id_to_frame = None + * py_db = None + * thread = None # <<<<<<<<<<<<<< + * + * return stopped + */ + __Pyx_INCREF(Py_None); + __Pyx_DECREF_SET(__pyx_v_thread, Py_None); + goto __pyx_L5; + } + __pyx_L4_error:; + /*exception exit:*/{ + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_24 = 0; __pyx_t_23 = 0; __pyx_t_22 = 0; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_24, &__pyx_t_23, &__pyx_t_22); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12) < 0)) __Pyx_ErrFetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); + __Pyx_XGOTREF(__pyx_t_10); + __Pyx_XGOTREF(__pyx_t_11); + __Pyx_XGOTREF(__pyx_t_12); + __Pyx_XGOTREF(__pyx_t_24); + __Pyx_XGOTREF(__pyx_t_23); + __Pyx_XGOTREF(__pyx_t_22); + __pyx_t_17 = __pyx_lineno; __pyx_t_16 = __pyx_clineno; __pyx_t_25 = __pyx_filename; + { + + /* "_pydevd_bundle/pydevd_cython.pyx":1619 + * finally: + * # Make sure the user cannot see the '__exception__' we added after we leave the suspend state. + * remove_exception_from_frame(frame) # <<<<<<<<<<<<<< + * # Clear some local variables... + * frame = None + */ + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_remove_exception_from_frame); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1619, __pyx_L67_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_6 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_frame}; + __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1619, __pyx_L67_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1621 + * remove_exception_from_frame(frame) + * # Clear some local variables... + * frame = None # <<<<<<<<<<<<<< + * trace_obj = None + * initial_trace_obj = None + */ + __Pyx_INCREF(Py_None); + __Pyx_DECREF_SET(__pyx_v_frame, Py_None); + + /* "_pydevd_bundle/pydevd_cython.pyx":1622 + * # Clear some local variables... + * frame = None + * trace_obj = None # <<<<<<<<<<<<<< + * initial_trace_obj = None + * check_trace_obj = None + */ + __Pyx_INCREF(Py_None); + __Pyx_XDECREF_SET(__pyx_v_trace_obj, Py_None); + + /* "_pydevd_bundle/pydevd_cython.pyx":1623 + * frame = None + * trace_obj = None + * initial_trace_obj = None # <<<<<<<<<<<<<< + * check_trace_obj = None + * f = None + */ + __Pyx_INCREF(Py_None); + __Pyx_XDECREF_SET(__pyx_v_initial_trace_obj, Py_None); + + /* "_pydevd_bundle/pydevd_cython.pyx":1624 + * trace_obj = None + * initial_trace_obj = None + * check_trace_obj = None # <<<<<<<<<<<<<< + * f = None + * frame_id_to_frame = None + */ + __Pyx_INCREF(Py_None); + __Pyx_XDECREF_SET(__pyx_v_check_trace_obj, Py_None); + + /* "_pydevd_bundle/pydevd_cython.pyx":1625 + * initial_trace_obj = None + * check_trace_obj = None + * f = None # <<<<<<<<<<<<<< + * frame_id_to_frame = None + * py_db = None + */ + __Pyx_INCREF(Py_None); + __Pyx_XDECREF_SET(__pyx_v_f, Py_None); + + /* "_pydevd_bundle/pydevd_cython.pyx":1626 + * check_trace_obj = None + * f = None + * frame_id_to_frame = None # <<<<<<<<<<<<<< + * py_db = None + * thread = None + */ + __Pyx_INCREF(Py_None); + __Pyx_XDECREF_SET(__pyx_v_frame_id_to_frame, ((PyObject*)Py_None)); + + /* "_pydevd_bundle/pydevd_cython.pyx":1627 + * f = None + * frame_id_to_frame = None + * py_db = None # <<<<<<<<<<<<<< + * thread = None + * + */ + __Pyx_INCREF(Py_None); + __Pyx_DECREF_SET(__pyx_v_py_db, Py_None); + + /* "_pydevd_bundle/pydevd_cython.pyx":1628 + * frame_id_to_frame = None + * py_db = None + * thread = None # <<<<<<<<<<<<<< + * + * return stopped + */ + __Pyx_INCREF(Py_None); + __Pyx_DECREF_SET(__pyx_v_thread, Py_None); + } + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_24); + __Pyx_XGIVEREF(__pyx_t_23); + __Pyx_XGIVEREF(__pyx_t_22); + __Pyx_ExceptionReset(__pyx_t_24, __pyx_t_23, __pyx_t_22); + } + __Pyx_XGIVEREF(__pyx_t_10); + __Pyx_XGIVEREF(__pyx_t_11); + __Pyx_XGIVEREF(__pyx_t_12); + __Pyx_ErrRestore(__pyx_t_10, __pyx_t_11, __pyx_t_12); + __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_24 = 0; __pyx_t_23 = 0; __pyx_t_22 = 0; + __pyx_lineno = __pyx_t_17; __pyx_clineno = __pyx_t_16; __pyx_filename = __pyx_t_25; + goto __pyx_L1_error; + __pyx_L67_error:; + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_24); + __Pyx_XGIVEREF(__pyx_t_23); + __Pyx_XGIVEREF(__pyx_t_22); + __Pyx_ExceptionReset(__pyx_t_24, __pyx_t_23, __pyx_t_22); + } + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __pyx_t_24 = 0; __pyx_t_23 = 0; __pyx_t_22 = 0; + goto __pyx_L1_error; + } + __pyx_L3_return: { + __pyx_t_22 = __pyx_r; + __pyx_r = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1619 + * finally: + * # Make sure the user cannot see the '__exception__' we added after we leave the suspend state. + * remove_exception_from_frame(frame) # <<<<<<<<<<<<<< + * # Clear some local variables... + * frame = None + */ + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_remove_exception_from_frame); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1619, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_6 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_frame}; + __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1619, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1621 + * remove_exception_from_frame(frame) + * # Clear some local variables... + * frame = None # <<<<<<<<<<<<<< + * trace_obj = None + * initial_trace_obj = None + */ + __Pyx_INCREF(Py_None); + __Pyx_DECREF_SET(__pyx_v_frame, Py_None); + + /* "_pydevd_bundle/pydevd_cython.pyx":1622 + * # Clear some local variables... + * frame = None + * trace_obj = None # <<<<<<<<<<<<<< + * initial_trace_obj = None + * check_trace_obj = None + */ + __Pyx_INCREF(Py_None); + __Pyx_DECREF_SET(__pyx_v_trace_obj, Py_None); + + /* "_pydevd_bundle/pydevd_cython.pyx":1623 + * frame = None + * trace_obj = None + * initial_trace_obj = None # <<<<<<<<<<<<<< + * check_trace_obj = None + * f = None + */ + __Pyx_INCREF(Py_None); + __Pyx_DECREF_SET(__pyx_v_initial_trace_obj, Py_None); + + /* "_pydevd_bundle/pydevd_cython.pyx":1624 + * trace_obj = None + * initial_trace_obj = None + * check_trace_obj = None # <<<<<<<<<<<<<< + * f = None + * frame_id_to_frame = None + */ + __Pyx_INCREF(Py_None); + __Pyx_XDECREF_SET(__pyx_v_check_trace_obj, Py_None); + + /* "_pydevd_bundle/pydevd_cython.pyx":1625 + * initial_trace_obj = None + * check_trace_obj = None + * f = None # <<<<<<<<<<<<<< + * frame_id_to_frame = None + * py_db = None + */ + __Pyx_INCREF(Py_None); + __Pyx_XDECREF_SET(__pyx_v_f, Py_None); + + /* "_pydevd_bundle/pydevd_cython.pyx":1626 + * check_trace_obj = None + * f = None + * frame_id_to_frame = None # <<<<<<<<<<<<<< + * py_db = None + * thread = None + */ + __Pyx_INCREF(Py_None); + __Pyx_XDECREF_SET(__pyx_v_frame_id_to_frame, ((PyObject*)Py_None)); + + /* "_pydevd_bundle/pydevd_cython.pyx":1627 + * f = None + * frame_id_to_frame = None + * py_db = None # <<<<<<<<<<<<<< + * thread = None + * + */ + __Pyx_INCREF(Py_None); + __Pyx_DECREF_SET(__pyx_v_py_db, Py_None); + + /* "_pydevd_bundle/pydevd_cython.pyx":1628 + * frame_id_to_frame = None + * py_db = None + * thread = None # <<<<<<<<<<<<<< + * + * return stopped + */ + __Pyx_INCREF(Py_None); + __Pyx_DECREF_SET(__pyx_v_thread, Py_None); + __pyx_r = __pyx_t_22; + __pyx_t_22 = 0; + goto __pyx_L0; + } + __pyx_L5:; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1630 + * thread = None + * + * return stopped # <<<<<<<<<<<<<< + * from _pydev_bundle.pydev_is_thread_alive import is_thread_alive + * from _pydev_bundle.pydev_log import exception as pydev_log_exception + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_8 = __Pyx_PyBool_FromLong(__pyx_v_stopped); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1630, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_r = __pyx_t_8; + __pyx_t_8 = 0; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1511 + * + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * def handle_exception(py_db, thread, frame, arg, str exception_type): # <<<<<<<<<<<<<< + * cdef bint stopped; + * cdef tuple abs_real_path_and_base; + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_14); + __Pyx_XDECREF(__pyx_t_15); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.handle_exception", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_abs_real_path_and_base); + __Pyx_XDECREF(__pyx_v_absolute_filename); + __Pyx_XDECREF(__pyx_v_canonical_normalized_filename); + __Pyx_XDECREF(__pyx_v_lines_ignored); + __Pyx_XDECREF(__pyx_v_frame_id_to_frame); + __Pyx_XDECREF(__pyx_v_merged); + __Pyx_XDECREF(__pyx_v_trace_obj); + __Pyx_XDECREF(__pyx_v_initial_trace_obj); + __Pyx_XDECREF(__pyx_v_check_trace_obj); + __Pyx_XDECREF(__pyx_v_curr_stat); + __Pyx_XDECREF(__pyx_v_last_stat); + __Pyx_XDECREF(__pyx_v_from_user_input); + __Pyx_XDECREF(__pyx_v_exc_lineno); + __Pyx_XDECREF(__pyx_v_line); + __Pyx_XDECREF(__pyx_v_f); + __Pyx_XDECREF(__pyx_v_py_db); + __Pyx_XDECREF(__pyx_v_thread); + __Pyx_XDECREF(__pyx_v_frame); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":1675 + * + * + * def notify_skipped_step_in_because_of_filters(py_db, frame): # <<<<<<<<<<<<<< + * global _global_notify_skipped_step_in + * + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_17notify_skipped_step_in_because_of_filters(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_17notify_skipped_step_in_because_of_filters = {"notify_skipped_step_in_because_of_filters", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_17notify_skipped_step_in_because_of_filters, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_17notify_skipped_step_in_because_of_filters(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_py_db = 0; + PyObject *__pyx_v_frame = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("notify_skipped_step_in_because_of_filters (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_py_db,&__pyx_n_s_frame,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_py_db)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1675, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_frame)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1675, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("notify_skipped_step_in_because_of_filters", 1, 2, 2, 1); __PYX_ERR(0, 1675, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "notify_skipped_step_in_because_of_filters") < 0)) __PYX_ERR(0, 1675, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 2)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + } + __pyx_v_py_db = values[0]; + __pyx_v_frame = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("notify_skipped_step_in_because_of_filters", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 1675, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.notify_skipped_step_in_because_of_filters", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_16notify_skipped_step_in_because_of_filters(__pyx_self, __pyx_v_py_db, __pyx_v_frame); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_16notify_skipped_step_in_because_of_filters(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_py_db, PyObject *__pyx_v_frame) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + unsigned int __pyx_t_6; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + int __pyx_t_10; + PyObject *__pyx_t_11 = NULL; + int __pyx_t_12; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("notify_skipped_step_in_because_of_filters", 1); + + /* "_pydevd_bundle/pydevd_cython.pyx":1678 + * global _global_notify_skipped_step_in + * + * with _global_notify_skipped_step_in_lock: # <<<<<<<<<<<<<< + * if _global_notify_skipped_step_in: + * # Check with lock in place (callers should actually have checked + */ + /*with:*/ { + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_global_notify_skipped_step_in_l); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1678, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1678, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1678, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = NULL; + __pyx_t_6 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_6 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1678, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + /*try:*/ { + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9); + __Pyx_XGOTREF(__pyx_t_7); + __Pyx_XGOTREF(__pyx_t_8); + __Pyx_XGOTREF(__pyx_t_9); + /*try:*/ { + + /* "_pydevd_bundle/pydevd_cython.pyx":1679 + * + * with _global_notify_skipped_step_in_lock: + * if _global_notify_skipped_step_in: # <<<<<<<<<<<<<< + * # Check with lock in place (callers should actually have checked + * # before without the lock in place due to performance). + */ + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_14_pydevd_bundle_13pydevd_cython__global_notify_skipped_step_in); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1679, __pyx_L7_error) + if (__pyx_t_10) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1682 + * # Check with lock in place (callers should actually have checked + * # before without the lock in place due to performance). + * return # <<<<<<<<<<<<<< + * _global_notify_skipped_step_in = True + * py_db.notify_skipped_step_in_because_of_filters(frame) + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L11_try_return; + + /* "_pydevd_bundle/pydevd_cython.pyx":1679 + * + * with _global_notify_skipped_step_in_lock: + * if _global_notify_skipped_step_in: # <<<<<<<<<<<<<< + * # Check with lock in place (callers should actually have checked + * # before without the lock in place due to performance). + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1683 + * # before without the lock in place due to performance). + * return + * _global_notify_skipped_step_in = True # <<<<<<<<<<<<<< + * py_db.notify_skipped_step_in_because_of_filters(frame) + * + */ + __Pyx_INCREF(Py_True); + __Pyx_XGOTREF(__pyx_v_14_pydevd_bundle_13pydevd_cython__global_notify_skipped_step_in); + __Pyx_DECREF_SET(__pyx_v_14_pydevd_bundle_13pydevd_cython__global_notify_skipped_step_in, ((PyObject*)Py_True)); + __Pyx_GIVEREF(Py_True); + + /* "_pydevd_bundle/pydevd_cython.pyx":1684 + * return + * _global_notify_skipped_step_in = True + * py_db.notify_skipped_step_in_because_of_filters(frame) # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_notify_skipped_step_in_because_o); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1684, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + __pyx_t_6 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_6 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_frame}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1684, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1678 + * global _global_notify_skipped_step_in + * + * with _global_notify_skipped_step_in_lock: # <<<<<<<<<<<<<< + * if _global_notify_skipped_step_in: + * # Check with lock in place (callers should actually have checked + */ + } + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + goto __pyx_L12_try_end; + __pyx_L7_error:; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + /*except:*/ { + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.notify_skipped_step_in_because_of_filters", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(0, 1678, __pyx_L9_except_error) + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_4); + __pyx_t_5 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1678, __pyx_L9_except_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1678, __pyx_L9_except_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_11); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + if (__pyx_t_10 < 0) __PYX_ERR(0, 1678, __pyx_L9_except_error) + __pyx_t_12 = (!__pyx_t_10); + if (unlikely(__pyx_t_12)) { + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_3); + __Pyx_XGIVEREF(__pyx_t_4); + __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_3, __pyx_t_4); + __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; + __PYX_ERR(0, 1678, __pyx_L9_except_error) + } + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + goto __pyx_L8_exception_handled; + } + __pyx_L9_except_error:; + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9); + goto __pyx_L1_error; + __pyx_L11_try_return:; + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9); + goto __pyx_L4_return; + __pyx_L8_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9); + __pyx_L12_try_end:; + } + } + /*finally:*/ { + /*normal exit:*/{ + if (__pyx_t_2) { + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__3, NULL); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1678, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + goto __pyx_L6; + } + __pyx_L4_return: { + __pyx_t_9 = __pyx_r; + __pyx_r = 0; + if (__pyx_t_2) { + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__3, NULL); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1678, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + __pyx_r = __pyx_t_9; + __pyx_t_9 = 0; + goto __pyx_L0; + } + __pyx_L6:; + } + goto __pyx_L17; + __pyx_L3_error:; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + goto __pyx_L1_error; + __pyx_L17:; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1675 + * + * + * def notify_skipped_step_in_because_of_filters(py_db, frame): # <<<<<<<<<<<<<< + * global _global_notify_skipped_step_in + * + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.notify_skipped_step_in_because_of_filters", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":1691 + * cdef class SafeCallWrapper: + * cdef method_object + * def __init__(self, method_object): # <<<<<<<<<<<<<< + * self.method_object = method_object + * def __call__(self, *args): + */ + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_method_object = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_method_object,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_method_object)) != 0)) { + (void)__Pyx_Arg_NewRef_VARARGS(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1691, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(0, 1691, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); + } + __pyx_v_method_object = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1691, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.SafeCallWrapper.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return -1; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper___init__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper *)__pyx_v_self), __pyx_v_method_object); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper___init__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper *__pyx_v_self, PyObject *__pyx_v_method_object) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__init__", 1); + + /* "_pydevd_bundle/pydevd_cython.pyx":1692 + * cdef method_object + * def __init__(self, method_object): + * self.method_object = method_object # <<<<<<<<<<<<<< + * def __call__(self, *args): + * #Cannot use 'self' once inside the delegate call since we are borrowing the self reference f_trace field + */ + __Pyx_INCREF(__pyx_v_method_object); + __Pyx_GIVEREF(__pyx_v_method_object); + __Pyx_GOTREF(__pyx_v_self->method_object); + __Pyx_DECREF(__pyx_v_self->method_object); + __pyx_v_self->method_object = __pyx_v_method_object; + + /* "_pydevd_bundle/pydevd_cython.pyx":1691 + * cdef class SafeCallWrapper: + * cdef method_object + * def __init__(self, method_object): # <<<<<<<<<<<<<< + * self.method_object = method_object + * def __call__(self, *args): + */ + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":1693 + * def __init__(self, method_object): + * self.method_object = method_object + * def __call__(self, *args): # <<<<<<<<<<<<<< + * #Cannot use 'self' once inside the delegate call since we are borrowing the self reference f_trace field + * #in the frame, and that reference might get destroyed by set trace on frame and parents + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_3__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_3__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_args = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__call__ (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__call__", 0))) return NULL; + __Pyx_INCREF(__pyx_args); + __pyx_v_args = __pyx_args; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_2__call__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper *)__pyx_v_self), __pyx_v_args); + + /* function exit code */ + __Pyx_DECREF(__pyx_v_args); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_2__call__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper *__pyx_v_self, PyObject *__pyx_v_args) { + PyObject *__pyx_v_method_obj; + PyObject *__pyx_v_ret = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__call__", 1); + + /* "_pydevd_bundle/pydevd_cython.pyx":1696 + * #Cannot use 'self' once inside the delegate call since we are borrowing the self reference f_trace field + * #in the frame, and that reference might get destroyed by set trace on frame and parents + * cdef PyObject* method_obj = self.method_object # <<<<<<<<<<<<<< + * Py_INCREF(method_obj) + * ret = (method_obj)(*args) + */ + __pyx_v_method_obj = ((PyObject *)__pyx_v_self->method_object); + + /* "_pydevd_bundle/pydevd_cython.pyx":1697 + * #in the frame, and that reference might get destroyed by set trace on frame and parents + * cdef PyObject* method_obj = self.method_object + * Py_INCREF(method_obj) # <<<<<<<<<<<<<< + * ret = (method_obj)(*args) + * Py_XDECREF (method_obj) + */ + Py_INCREF(((PyObject *)__pyx_v_method_obj)); + + /* "_pydevd_bundle/pydevd_cython.pyx":1698 + * cdef PyObject* method_obj = self.method_object + * Py_INCREF(method_obj) + * ret = (method_obj)(*args) # <<<<<<<<<<<<<< + * Py_XDECREF (method_obj) + * return SafeCallWrapper(ret) if ret is not None else None + */ + __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_v_method_obj), __pyx_v_args, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1698, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_ret = __pyx_t_1; + __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1699 + * Py_INCREF(method_obj) + * ret = (method_obj)(*args) + * Py_XDECREF (method_obj) # <<<<<<<<<<<<<< + * return SafeCallWrapper(ret) if ret is not None else None + * def get_method_object(self): + */ + Py_XDECREF(__pyx_v_method_obj); + + /* "_pydevd_bundle/pydevd_cython.pyx":1700 + * ret = (method_obj)(*args) + * Py_XDECREF (method_obj) + * return SafeCallWrapper(ret) if ret is not None else None # <<<<<<<<<<<<<< + * def get_method_object(self): + * return self.method_object + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = (__pyx_v_ret != Py_None); + if (__pyx_t_2) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper), __pyx_v_ret); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1700, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __pyx_t_3; + __pyx_t_3 = 0; + } else { + __Pyx_INCREF(Py_None); + __pyx_t_1 = Py_None; + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1693 + * def __init__(self, method_object): + * self.method_object = method_object + * def __call__(self, *args): # <<<<<<<<<<<<<< + * #Cannot use 'self' once inside the delegate call since we are borrowing the self reference f_trace field + * #in the frame, and that reference might get destroyed by set trace on frame and parents + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.SafeCallWrapper.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_ret); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":1701 + * Py_XDECREF (method_obj) + * return SafeCallWrapper(ret) if ret is not None else None + * def get_method_object(self): # <<<<<<<<<<<<<< + * return self.method_object + * # ELSE + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_5get_method_object(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_5get_method_object = {"get_method_object", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_5get_method_object, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_5get_method_object(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_method_object (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { + __Pyx_RaiseArgtupleInvalid("get_method_object", 1, 0, 0, __pyx_nargs); return NULL;} + if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "get_method_object", 0))) return NULL; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_4get_method_object(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_4get_method_object(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_method_object", 1); + + /* "_pydevd_bundle/pydevd_cython.pyx":1702 + * return SafeCallWrapper(ret) if ret is not None else None + * def get_method_object(self): + * return self.method_object # <<<<<<<<<<<<<< + * # ELSE + * # ENDIF + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->method_object); + __pyx_r = __pyx_v_self->method_object; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1701 + * Py_XDECREF (method_obj) + * return SafeCallWrapper(ret) if ret is not None else None + * def get_method_object(self): # <<<<<<<<<<<<<< + * return self.method_object + * # ELSE + */ + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_7__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_7__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_7__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { + __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} + if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_6__reduce_cython__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_6__reduce_cython__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper *__pyx_v_self) { + PyObject *__pyx_v_state = 0; + PyObject *__pyx_v__dict = 0; + int __pyx_v_use_setstate; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__reduce_cython__", 1); + + /* "(tree fragment)":5 + * cdef object _dict + * cdef bint use_setstate + * state = (self.method_object,) # <<<<<<<<<<<<<< + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: + */ + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_v_self->method_object); + __Pyx_GIVEREF(__pyx_v_self->method_object); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->method_object)) __PYX_ERR(2, 5, __pyx_L1_error); + __pyx_v_state = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "(tree fragment)":6 + * cdef bint use_setstate + * state = (self.method_object,) + * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< + * if _dict is not None: + * state += (_dict,) + */ + __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v__dict = __pyx_t_1; + __pyx_t_1 = 0; + + /* "(tree fragment)":7 + * state = (self.method_object,) + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: # <<<<<<<<<<<<<< + * state += (_dict,) + * use_setstate = True + */ + __pyx_t_2 = (__pyx_v__dict != Py_None); + if (__pyx_t_2) { + + /* "(tree fragment)":8 + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: + * state += (_dict,) # <<<<<<<<<<<<<< + * use_setstate = True + * else: + */ + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_v__dict); + __Pyx_GIVEREF(__pyx_v__dict); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict)) __PYX_ERR(2, 8, __pyx_L1_error); + __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_3)); + __pyx_t_3 = 0; + + /* "(tree fragment)":9 + * if _dict is not None: + * state += (_dict,) + * use_setstate = True # <<<<<<<<<<<<<< + * else: + * use_setstate = self.method_object is not None + */ + __pyx_v_use_setstate = 1; + + /* "(tree fragment)":7 + * state = (self.method_object,) + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: # <<<<<<<<<<<<<< + * state += (_dict,) + * use_setstate = True + */ + goto __pyx_L3; + } + + /* "(tree fragment)":11 + * use_setstate = True + * else: + * use_setstate = self.method_object is not None # <<<<<<<<<<<<<< + * if use_setstate: + * return __pyx_unpickle_SafeCallWrapper, (type(self), 0xa14289b, None), state + */ + /*else*/ { + __pyx_t_2 = (__pyx_v_self->method_object != Py_None); + __pyx_v_use_setstate = __pyx_t_2; + } + __pyx_L3:; + + /* "(tree fragment)":12 + * else: + * use_setstate = self.method_object is not None + * if use_setstate: # <<<<<<<<<<<<<< + * return __pyx_unpickle_SafeCallWrapper, (type(self), 0xa14289b, None), state + * else: + */ + if (__pyx_v_use_setstate) { + + /* "(tree fragment)":13 + * use_setstate = self.method_object is not None + * if use_setstate: + * return __pyx_unpickle_SafeCallWrapper, (type(self), 0xa14289b, None), state # <<<<<<<<<<<<<< + * else: + * return __pyx_unpickle_SafeCallWrapper, (type(self), 0xa14289b, state) + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyx_unpickle_SafeCallWrapper); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(2, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_int_169093275); + __Pyx_GIVEREF(__pyx_int_169093275); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_169093275)) __PYX_ERR(2, 13, __pyx_L1_error); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None)) __PYX_ERR(2, 13, __pyx_L1_error); + __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_3); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3)) __PYX_ERR(2, 13, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1)) __PYX_ERR(2, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_state); + __Pyx_GIVEREF(__pyx_v_state); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_state)) __PYX_ERR(2, 13, __pyx_L1_error); + __pyx_t_3 = 0; + __pyx_t_1 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + + /* "(tree fragment)":12 + * else: + * use_setstate = self.method_object is not None + * if use_setstate: # <<<<<<<<<<<<<< + * return __pyx_unpickle_SafeCallWrapper, (type(self), 0xa14289b, None), state + * else: + */ + } + + /* "(tree fragment)":15 + * return __pyx_unpickle_SafeCallWrapper, (type(self), 0xa14289b, None), state + * else: + * return __pyx_unpickle_SafeCallWrapper, (type(self), 0xa14289b, state) # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * __pyx_unpickle_SafeCallWrapper__set_state(self, __pyx_state) + */ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_SafeCallWrapper); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(2, 15, __pyx_L1_error); + __Pyx_INCREF(__pyx_int_169093275); + __Pyx_GIVEREF(__pyx_int_169093275); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_169093275)) __PYX_ERR(2, 15, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_state); + __Pyx_GIVEREF(__pyx_v_state); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state)) __PYX_ERR(2, 15, __pyx_L1_error); + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_4); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4)) __PYX_ERR(2, 15, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(2, 15, __pyx_L1_error); + __pyx_t_4 = 0; + __pyx_t_1 = 0; + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + } + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.SafeCallWrapper.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_state); + __Pyx_XDECREF(__pyx_v__dict); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":16 + * else: + * return __pyx_unpickle_SafeCallWrapper, (type(self), 0xa14289b, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_SafeCallWrapper__set_state(self, __pyx_state) + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_9__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_9__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_9__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 16, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(2, 16, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + } + __pyx_v___pyx_state = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 16, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.SafeCallWrapper.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_8__setstate_cython__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper *)__pyx_v_self), __pyx_v___pyx_state); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_8__setstate_cython__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper *__pyx_v_self, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__setstate_cython__", 1); + + /* "(tree fragment)":17 + * return __pyx_unpickle_SafeCallWrapper, (type(self), 0xa14289b, state) + * def __setstate_cython__(self, __pyx_state): + * __pyx_unpickle_SafeCallWrapper__set_state(self, __pyx_state) # <<<<<<<<<<<<<< + */ + if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(2, 17, __pyx_L1_error) + __pyx_t_1 = __pyx_f_14_pydevd_bundle_13pydevd_cython___pyx_unpickle_SafeCallWrapper__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle_SafeCallWrapper, (type(self), 0xa14289b, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_SafeCallWrapper__set_state(self, __pyx_state) + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.SafeCallWrapper.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":1708 + * + * + * def fix_top_level_trace_and_get_trace_func(py_db, frame): # <<<<<<<<<<<<<< + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_19fix_top_level_trace_and_get_trace_func(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_19fix_top_level_trace_and_get_trace_func = {"fix_top_level_trace_and_get_trace_func", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_19fix_top_level_trace_and_get_trace_func, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_19fix_top_level_trace_and_get_trace_func(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_py_db = 0; + PyObject *__pyx_v_frame = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("fix_top_level_trace_and_get_trace_func (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_py_db,&__pyx_n_s_frame,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_py_db)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1708, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_frame)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1708, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("fix_top_level_trace_and_get_trace_func", 1, 2, 2, 1); __PYX_ERR(0, 1708, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fix_top_level_trace_and_get_trace_func") < 0)) __PYX_ERR(0, 1708, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 2)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + } + __pyx_v_py_db = values[0]; + __pyx_v_frame = values[1]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("fix_top_level_trace_and_get_trace_func", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 1708, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.fix_top_level_trace_and_get_trace_func", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_18fix_top_level_trace_and_get_trace_func(__pyx_self, __pyx_v_py_db, __pyx_v_frame); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_18fix_top_level_trace_and_get_trace_func(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_py_db, PyObject *__pyx_v_frame) { + PyObject *__pyx_v_name = 0; + PyObject *__pyx_v_args = 0; + PyObject *__pyx_v_thread = NULL; + PyObject *__pyx_v_f_unhandled = NULL; + int __pyx_v_force_only_unhandled_tracer; + PyObject *__pyx_v_i = NULL; + PyObject *__pyx_v_j = NULL; + PyObject *__pyx_v_t = NULL; + PyObject *__pyx_v_additional_info = NULL; + PyObject *__pyx_v_top_level_thread_tracer = NULL; + PyObject *__pyx_v_f_trace = NULL; + PyObject *__pyx_v_thread_tracer = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + Py_ssize_t __pyx_t_4; + Py_ssize_t __pyx_t_5; + int __pyx_t_6; + PyObject *__pyx_t_7 = NULL; + unsigned int __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + PyObject *__pyx_t_11 = NULL; + PyObject *__pyx_t_12 = NULL; + PyObject *__pyx_t_13 = NULL; + PyObject *__pyx_t_14 = NULL; + int __pyx_t_15; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("fix_top_level_trace_and_get_trace_func", 1); + + /* "_pydevd_bundle/pydevd_cython.pyx":1721 + * # where more information is cached (and will also setup the tracing for + * # frames where we should deal with unhandled exceptions). + * thread = None # <<<<<<<<<<<<<< + * # Cache the frame which should be traced to deal with unhandled exceptions. + * # (i.e.: thread entry-points). + */ + __Pyx_INCREF(Py_None); + __pyx_v_thread = Py_None; + + /* "_pydevd_bundle/pydevd_cython.pyx":1725 + * # (i.e.: thread entry-points). + * + * f_unhandled = frame # <<<<<<<<<<<<<< + * # print('called at', f_unhandled.f_code.co_name, f_unhandled.f_code.co_filename, f_unhandled.f_code.co_firstlineno) + * force_only_unhandled_tracer = False + */ + __Pyx_INCREF(__pyx_v_frame); + __pyx_v_f_unhandled = __pyx_v_frame; + + /* "_pydevd_bundle/pydevd_cython.pyx":1727 + * f_unhandled = frame + * # print('called at', f_unhandled.f_code.co_name, f_unhandled.f_code.co_filename, f_unhandled.f_code.co_firstlineno) + * force_only_unhandled_tracer = False # <<<<<<<<<<<<<< + * while f_unhandled is not None: + * # name = splitext(basename(f_unhandled.f_code.co_filename))[0] + */ + __pyx_v_force_only_unhandled_tracer = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1728 + * # print('called at', f_unhandled.f_code.co_name, f_unhandled.f_code.co_filename, f_unhandled.f_code.co_firstlineno) + * force_only_unhandled_tracer = False + * while f_unhandled is not None: # <<<<<<<<<<<<<< + * # name = splitext(basename(f_unhandled.f_code.co_filename))[0] + * + */ + while (1) { + __pyx_t_1 = (__pyx_v_f_unhandled != Py_None); + if (!__pyx_t_1) break; + + /* "_pydevd_bundle/pydevd_cython.pyx":1731 + * # name = splitext(basename(f_unhandled.f_code.co_filename))[0] + * + * name = f_unhandled.f_code.co_filename # <<<<<<<<<<<<<< + * # basename + * i = name.rfind("/") + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_f_unhandled, __pyx_n_s_f_code); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1731, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1731, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (!(likely(PyString_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_3))) __PYX_ERR(0, 1731, __pyx_L1_error) + __Pyx_XDECREF_SET(__pyx_v_name, ((PyObject*)__pyx_t_3)); + __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1733 + * name = f_unhandled.f_code.co_filename + * # basename + * i = name.rfind("/") # <<<<<<<<<<<<<< + * j = name.rfind("\\") + * if j > i: + */ + __pyx_t_3 = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PyString_Type_rfind, __pyx_v_name, __pyx_kp_s__8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1733, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_3); + __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1734 + * # basename + * i = name.rfind("/") + * j = name.rfind("\\") # <<<<<<<<<<<<<< + * if j > i: + * i = j + */ + __pyx_t_3 = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PyString_Type_rfind, __pyx_v_name, __pyx_kp_s__9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1734, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_XDECREF_SET(__pyx_v_j, __pyx_t_3); + __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1735 + * i = name.rfind("/") + * j = name.rfind("\\") + * if j > i: # <<<<<<<<<<<<<< + * i = j + * if i >= 0: + */ + __pyx_t_3 = PyObject_RichCompare(__pyx_v_j, __pyx_v_i, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1735, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 1735, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_1) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1736 + * j = name.rfind("\\") + * if j > i: + * i = j # <<<<<<<<<<<<<< + * if i >= 0: + * name = name[i + 1 :] + */ + __Pyx_INCREF(__pyx_v_j); + __Pyx_DECREF_SET(__pyx_v_i, __pyx_v_j); + + /* "_pydevd_bundle/pydevd_cython.pyx":1735 + * i = name.rfind("/") + * j = name.rfind("\\") + * if j > i: # <<<<<<<<<<<<<< + * i = j + * if i >= 0: + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1737 + * if j > i: + * i = j + * if i >= 0: # <<<<<<<<<<<<<< + * name = name[i + 1 :] + * # remove ext + */ + __pyx_t_3 = PyObject_RichCompare(__pyx_v_i, __pyx_int_0, Py_GE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1737, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 1737, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_1) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1738 + * i = j + * if i >= 0: + * name = name[i + 1 :] # <<<<<<<<<<<<<< + * # remove ext + * i = name.rfind(".") + */ + if (unlikely(__pyx_v_name == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 1738, __pyx_L1_error) + } + __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_v_i, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1738, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = (__pyx_t_3 == Py_None); + if (__pyx_t_1) { + __pyx_t_4 = 0; + } else { + __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1738, __pyx_L1_error) + __pyx_t_4 = __pyx_t_5; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PySequence_GetSlice(__pyx_v_name, __pyx_t_4, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1738, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF_SET(__pyx_v_name, ((PyObject*)__pyx_t_3)); + __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1737 + * if j > i: + * i = j + * if i >= 0: # <<<<<<<<<<<<<< + * name = name[i + 1 :] + * # remove ext + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1740 + * name = name[i + 1 :] + * # remove ext + * i = name.rfind(".") # <<<<<<<<<<<<<< + * if i >= 0: + * name = name[:i] + */ + __pyx_t_3 = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PyString_Type_rfind, __pyx_v_name, __pyx_kp_s__10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1740, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF_SET(__pyx_v_i, __pyx_t_3); + __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1741 + * # remove ext + * i = name.rfind(".") + * if i >= 0: # <<<<<<<<<<<<<< + * name = name[:i] + * + */ + __pyx_t_3 = PyObject_RichCompare(__pyx_v_i, __pyx_int_0, Py_GE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1741, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 1741, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_1) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1742 + * i = name.rfind(".") + * if i >= 0: + * name = name[:i] # <<<<<<<<<<<<<< + * + * if name == "threading": + */ + if (unlikely(__pyx_v_name == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 1742, __pyx_L1_error) + } + __Pyx_INCREF(__pyx_v_i); + __pyx_t_3 = __pyx_v_i; + __pyx_t_1 = (__pyx_t_3 == Py_None); + if (__pyx_t_1) { + __pyx_t_4 = PY_SSIZE_T_MAX; + } else { + __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1742, __pyx_L1_error) + __pyx_t_4 = __pyx_t_5; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PySequence_GetSlice(__pyx_v_name, 0, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1742, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF_SET(__pyx_v_name, ((PyObject*)__pyx_t_3)); + __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1741 + * # remove ext + * i = name.rfind(".") + * if i >= 0: # <<<<<<<<<<<<<< + * name = name[:i] + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1744 + * name = name[:i] + * + * if name == "threading": # <<<<<<<<<<<<<< + * if f_unhandled.f_code.co_name in ("__bootstrap", "_bootstrap"): + * # We need __bootstrap_inner, not __bootstrap. + */ + __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_threading, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 1744, __pyx_L1_error) + if (__pyx_t_1) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1745 + * + * if name == "threading": + * if f_unhandled.f_code.co_name in ("__bootstrap", "_bootstrap"): # <<<<<<<<<<<<<< + * # We need __bootstrap_inner, not __bootstrap. + * return None, False + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_f_unhandled, __pyx_n_s_f_code); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1745, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_co_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1745, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_bootstrap, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 1745, __pyx_L1_error) + if (!__pyx_t_6) { + } else { + __pyx_t_1 = __pyx_t_6; + goto __pyx_L10_bool_binop_done; + } + __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_bootstrap_2, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 1745, __pyx_L1_error) + __pyx_t_1 = __pyx_t_6; + __pyx_L10_bool_binop_done:; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_6 = __pyx_t_1; + if (__pyx_t_6) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1747 + * if f_unhandled.f_code.co_name in ("__bootstrap", "_bootstrap"): + * # We need __bootstrap_inner, not __bootstrap. + * return None, False # <<<<<<<<<<<<<< + * + * elif f_unhandled.f_code.co_name in ("__bootstrap_inner", "_bootstrap_inner"): + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_tuple__11); + __pyx_r = __pyx_tuple__11; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1745 + * + * if name == "threading": + * if f_unhandled.f_code.co_name in ("__bootstrap", "_bootstrap"): # <<<<<<<<<<<<<< + * # We need __bootstrap_inner, not __bootstrap. + * return None, False + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1749 + * return None, False + * + * elif f_unhandled.f_code.co_name in ("__bootstrap_inner", "_bootstrap_inner"): # <<<<<<<<<<<<<< + * # Note: be careful not to use threading.currentThread to avoid creating a dummy thread. + * t = f_unhandled.f_locals.get("self") + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_f_unhandled, __pyx_n_s_f_code); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1749, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_co_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1749, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_bootstrap_inner, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 1749, __pyx_L1_error) + if (!__pyx_t_1) { + } else { + __pyx_t_6 = __pyx_t_1; + goto __pyx_L12_bool_binop_done; + } + __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_bootstrap_inner_2, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 1749, __pyx_L1_error) + __pyx_t_6 = __pyx_t_1; + __pyx_L12_bool_binop_done:; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_1 = __pyx_t_6; + if (__pyx_t_1) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1751 + * elif f_unhandled.f_code.co_name in ("__bootstrap_inner", "_bootstrap_inner"): + * # Note: be careful not to use threading.currentThread to avoid creating a dummy thread. + * t = f_unhandled.f_locals.get("self") # <<<<<<<<<<<<<< + * force_only_unhandled_tracer = True + * if t is not None and isinstance(t, threading.Thread): + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_f_unhandled, __pyx_n_s_f_locals); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1751, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_get); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1751, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_8 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_8 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_n_s_self}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1751, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_3); + __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1752 + * # Note: be careful not to use threading.currentThread to avoid creating a dummy thread. + * t = f_unhandled.f_locals.get("self") + * force_only_unhandled_tracer = True # <<<<<<<<<<<<<< + * if t is not None and isinstance(t, threading.Thread): + * thread = t + */ + __pyx_v_force_only_unhandled_tracer = 1; + + /* "_pydevd_bundle/pydevd_cython.pyx":1753 + * t = f_unhandled.f_locals.get("self") + * force_only_unhandled_tracer = True + * if t is not None and isinstance(t, threading.Thread): # <<<<<<<<<<<<<< + * thread = t + * break + */ + __pyx_t_6 = (__pyx_v_t != Py_None); + if (__pyx_t_6) { + } else { + __pyx_t_1 = __pyx_t_6; + goto __pyx_L15_bool_binop_done; + } + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_threading); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1753, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_Thread); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1753, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = PyObject_IsInstance(__pyx_v_t, __pyx_t_7); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1753, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_1 = __pyx_t_6; + __pyx_L15_bool_binop_done:; + if (__pyx_t_1) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1754 + * force_only_unhandled_tracer = True + * if t is not None and isinstance(t, threading.Thread): + * thread = t # <<<<<<<<<<<<<< + * break + * + */ + __Pyx_INCREF(__pyx_v_t); + __Pyx_DECREF_SET(__pyx_v_thread, __pyx_v_t); + + /* "_pydevd_bundle/pydevd_cython.pyx":1755 + * if t is not None and isinstance(t, threading.Thread): + * thread = t + * break # <<<<<<<<<<<<<< + * + * elif name == "pydev_monkey": + */ + goto __pyx_L4_break; + + /* "_pydevd_bundle/pydevd_cython.pyx":1753 + * t = f_unhandled.f_locals.get("self") + * force_only_unhandled_tracer = True + * if t is not None and isinstance(t, threading.Thread): # <<<<<<<<<<<<<< + * thread = t + * break + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1749 + * return None, False + * + * elif f_unhandled.f_code.co_name in ("__bootstrap_inner", "_bootstrap_inner"): # <<<<<<<<<<<<<< + * # Note: be careful not to use threading.currentThread to avoid creating a dummy thread. + * t = f_unhandled.f_locals.get("self") + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1744 + * name = name[:i] + * + * if name == "threading": # <<<<<<<<<<<<<< + * if f_unhandled.f_code.co_name in ("__bootstrap", "_bootstrap"): + * # We need __bootstrap_inner, not __bootstrap. + */ + goto __pyx_L8; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1757 + * break + * + * elif name == "pydev_monkey": # <<<<<<<<<<<<<< + * if f_unhandled.f_code.co_name == "__call__": + * force_only_unhandled_tracer = True + */ + __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_pydev_monkey, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 1757, __pyx_L1_error) + if (__pyx_t_1) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1758 + * + * elif name == "pydev_monkey": + * if f_unhandled.f_code.co_name == "__call__": # <<<<<<<<<<<<<< + * force_only_unhandled_tracer = True + * break + */ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_f_unhandled, __pyx_n_s_f_code); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1758, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_co_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1758, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_call_2, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 1758, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_1) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1759 + * elif name == "pydev_monkey": + * if f_unhandled.f_code.co_name == "__call__": + * force_only_unhandled_tracer = True # <<<<<<<<<<<<<< + * break + * + */ + __pyx_v_force_only_unhandled_tracer = 1; + + /* "_pydevd_bundle/pydevd_cython.pyx":1760 + * if f_unhandled.f_code.co_name == "__call__": + * force_only_unhandled_tracer = True + * break # <<<<<<<<<<<<<< + * + * elif name == "pydevd": + */ + goto __pyx_L4_break; + + /* "_pydevd_bundle/pydevd_cython.pyx":1758 + * + * elif name == "pydev_monkey": + * if f_unhandled.f_code.co_name == "__call__": # <<<<<<<<<<<<<< + * force_only_unhandled_tracer = True + * break + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1757 + * break + * + * elif name == "pydev_monkey": # <<<<<<<<<<<<<< + * if f_unhandled.f_code.co_name == "__call__": + * force_only_unhandled_tracer = True + */ + goto __pyx_L8; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1762 + * break + * + * elif name == "pydevd": # <<<<<<<<<<<<<< + * if f_unhandled.f_code.co_name in ("run", "main"): + * # We need to get to _exec + */ + __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_pydevd, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 1762, __pyx_L1_error) + if (__pyx_t_1) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1763 + * + * elif name == "pydevd": + * if f_unhandled.f_code.co_name in ("run", "main"): # <<<<<<<<<<<<<< + * # We need to get to _exec + * return None, False + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_f_unhandled, __pyx_n_s_f_code); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1763, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_co_name); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1763, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_t_7, __pyx_n_s_run, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 1763, __pyx_L1_error) + if (!__pyx_t_6) { + } else { + __pyx_t_1 = __pyx_t_6; + goto __pyx_L19_bool_binop_done; + } + __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_t_7, __pyx_n_s_main, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 1763, __pyx_L1_error) + __pyx_t_1 = __pyx_t_6; + __pyx_L19_bool_binop_done:; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_6 = __pyx_t_1; + if (__pyx_t_6) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1765 + * if f_unhandled.f_code.co_name in ("run", "main"): + * # We need to get to _exec + * return None, False # <<<<<<<<<<<<<< + * + * if f_unhandled.f_code.co_name == "_exec": + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_tuple__11); + __pyx_r = __pyx_tuple__11; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1763 + * + * elif name == "pydevd": + * if f_unhandled.f_code.co_name in ("run", "main"): # <<<<<<<<<<<<<< + * # We need to get to _exec + * return None, False + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1767 + * return None, False + * + * if f_unhandled.f_code.co_name == "_exec": # <<<<<<<<<<<<<< + * force_only_unhandled_tracer = True + * break + */ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_f_unhandled, __pyx_n_s_f_code); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1767, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_co_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1767, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_exec, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 1767, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_6) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1768 + * + * if f_unhandled.f_code.co_name == "_exec": + * force_only_unhandled_tracer = True # <<<<<<<<<<<<<< + * break + * + */ + __pyx_v_force_only_unhandled_tracer = 1; + + /* "_pydevd_bundle/pydevd_cython.pyx":1769 + * if f_unhandled.f_code.co_name == "_exec": + * force_only_unhandled_tracer = True + * break # <<<<<<<<<<<<<< + * + * elif name == "pydevd_tracing": + */ + goto __pyx_L4_break; + + /* "_pydevd_bundle/pydevd_cython.pyx":1767 + * return None, False + * + * if f_unhandled.f_code.co_name == "_exec": # <<<<<<<<<<<<<< + * force_only_unhandled_tracer = True + * break + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1762 + * break + * + * elif name == "pydevd": # <<<<<<<<<<<<<< + * if f_unhandled.f_code.co_name in ("run", "main"): + * # We need to get to _exec + */ + goto __pyx_L8; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1771 + * break + * + * elif name == "pydevd_tracing": # <<<<<<<<<<<<<< + * return None, False + * + */ + __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_pydevd_tracing, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 1771, __pyx_L1_error) + if (__pyx_t_6) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1772 + * + * elif name == "pydevd_tracing": + * return None, False # <<<<<<<<<<<<<< + * + * elif f_unhandled.f_back is None: + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_tuple__11); + __pyx_r = __pyx_tuple__11; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1771 + * break + * + * elif name == "pydevd_tracing": # <<<<<<<<<<<<<< + * return None, False + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1774 + * return None, False + * + * elif f_unhandled.f_back is None: # <<<<<<<<<<<<<< + * break + * + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_f_unhandled, __pyx_n_s_f_back); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1774, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = (__pyx_t_3 == Py_None); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_6) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1775 + * + * elif f_unhandled.f_back is None: + * break # <<<<<<<<<<<<<< + * + * f_unhandled = f_unhandled.f_back + */ + goto __pyx_L4_break; + + /* "_pydevd_bundle/pydevd_cython.pyx":1774 + * return None, False + * + * elif f_unhandled.f_back is None: # <<<<<<<<<<<<<< + * break + * + */ + } + __pyx_L8:; + + /* "_pydevd_bundle/pydevd_cython.pyx":1777 + * break + * + * f_unhandled = f_unhandled.f_back # <<<<<<<<<<<<<< + * + * if thread is None: + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_f_unhandled, __pyx_n_s_f_back); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1777, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF_SET(__pyx_v_f_unhandled, __pyx_t_3); + __pyx_t_3 = 0; + } + __pyx_L4_break:; + + /* "_pydevd_bundle/pydevd_cython.pyx":1779 + * f_unhandled = f_unhandled.f_back + * + * if thread is None: # <<<<<<<<<<<<<< + * # Important: don't call threadingCurrentThread if we're in the threading module + * # to avoid creating dummy threads. + */ + __pyx_t_6 = (__pyx_v_thread == Py_None); + if (__pyx_t_6) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1782 + * # Important: don't call threadingCurrentThread if we're in the threading module + * # to avoid creating dummy threads. + * if py_db.threading_get_ident is not None: # <<<<<<<<<<<<<< + * thread = py_db.threading_active.get(py_db.threading_get_ident()) + * if thread is None: + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_threading_get_ident); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1782, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = (__pyx_t_3 != Py_None); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_6) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1783 + * # to avoid creating dummy threads. + * if py_db.threading_get_ident is not None: + * thread = py_db.threading_active.get(py_db.threading_get_ident()) # <<<<<<<<<<<<<< + * if thread is None: + * return None, False + */ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_threading_active); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1783, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1783, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_threading_get_ident); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1783, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_10 = NULL; + __pyx_t_8 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_9))) { + __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9); + if (likely(__pyx_t_10)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); + __Pyx_INCREF(__pyx_t_10); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_9, function); + __pyx_t_8 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_10, NULL}; + __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8); + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1783, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + __pyx_t_9 = NULL; + __pyx_t_8 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_9)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_9); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_8 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_7}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8); + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1783, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_DECREF_SET(__pyx_v_thread, __pyx_t_3); + __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1784 + * if py_db.threading_get_ident is not None: + * thread = py_db.threading_active.get(py_db.threading_get_ident()) + * if thread is None: # <<<<<<<<<<<<<< + * return None, False + * else: + */ + __pyx_t_6 = (__pyx_v_thread == Py_None); + if (__pyx_t_6) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1785 + * thread = py_db.threading_active.get(py_db.threading_get_ident()) + * if thread is None: + * return None, False # <<<<<<<<<<<<<< + * else: + * # Jython does not have threading.get_ident(). + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_tuple__11); + __pyx_r = __pyx_tuple__11; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1784 + * if py_db.threading_get_ident is not None: + * thread = py_db.threading_active.get(py_db.threading_get_ident()) + * if thread is None: # <<<<<<<<<<<<<< + * return None, False + * else: + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1782 + * # Important: don't call threadingCurrentThread if we're in the threading module + * # to avoid creating dummy threads. + * if py_db.threading_get_ident is not None: # <<<<<<<<<<<<<< + * thread = py_db.threading_active.get(py_db.threading_get_ident()) + * if thread is None: + */ + goto __pyx_L23; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1788 + * else: + * # Jython does not have threading.get_ident(). + * thread = py_db.threading_current_thread() # <<<<<<<<<<<<<< + * + * if getattr(thread, "pydev_do_not_trace", None): + */ + /*else*/ { + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_threading_current_thread); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1788, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_7 = NULL; + __pyx_t_8 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_8 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1788, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_DECREF_SET(__pyx_v_thread, __pyx_t_3); + __pyx_t_3 = 0; + } + __pyx_L23:; + + /* "_pydevd_bundle/pydevd_cython.pyx":1779 + * f_unhandled = f_unhandled.f_back + * + * if thread is None: # <<<<<<<<<<<<<< + * # Important: don't call threadingCurrentThread if we're in the threading module + * # to avoid creating dummy threads. + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1790 + * thread = py_db.threading_current_thread() + * + * if getattr(thread, "pydev_do_not_trace", None): # <<<<<<<<<<<<<< + * py_db.disable_tracing() + * return None, False + */ + __pyx_t_3 = __Pyx_GetAttr3(__pyx_v_thread, __pyx_n_s_pydev_do_not_trace, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1790, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 1790, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_6) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1791 + * + * if getattr(thread, "pydev_do_not_trace", None): + * py_db.disable_tracing() # <<<<<<<<<<<<<< + * return None, False + * + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_disable_tracing); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1791, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_7 = NULL; + __pyx_t_8 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_8 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1791, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1792 + * if getattr(thread, "pydev_do_not_trace", None): + * py_db.disable_tracing() + * return None, False # <<<<<<<<<<<<<< + * + * try: + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_tuple__11); + __pyx_r = __pyx_tuple__11; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1790 + * thread = py_db.threading_current_thread() + * + * if getattr(thread, "pydev_do_not_trace", None): # <<<<<<<<<<<<<< + * py_db.disable_tracing() + * return None, False + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1794 + * return None, False + * + * try: # <<<<<<<<<<<<<< + * additional_info = thread.additional_info + * if additional_info is None: + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13); + __Pyx_XGOTREF(__pyx_t_11); + __Pyx_XGOTREF(__pyx_t_12); + __Pyx_XGOTREF(__pyx_t_13); + /*try:*/ { + + /* "_pydevd_bundle/pydevd_cython.pyx":1795 + * + * try: + * additional_info = thread.additional_info # <<<<<<<<<<<<<< + * if additional_info is None: + * raise AttributeError() + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_thread, __pyx_n_s_additional_info); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1795, __pyx_L26_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_additional_info = __pyx_t_3; + __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1796 + * try: + * additional_info = thread.additional_info + * if additional_info is None: # <<<<<<<<<<<<<< + * raise AttributeError() + * except: + */ + __pyx_t_6 = (__pyx_v_additional_info == Py_None); + if (unlikely(__pyx_t_6)) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1797 + * additional_info = thread.additional_info + * if additional_info is None: + * raise AttributeError() # <<<<<<<<<<<<<< + * except: + * additional_info = py_db.set_additional_thread_info(thread) + */ + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_builtin_AttributeError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1797, __pyx_L26_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(0, 1797, __pyx_L26_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":1796 + * try: + * additional_info = thread.additional_info + * if additional_info is None: # <<<<<<<<<<<<<< + * raise AttributeError() + * except: + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1794 + * return None, False + * + * try: # <<<<<<<<<<<<<< + * additional_info = thread.additional_info + * if additional_info is None: + */ + } + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + goto __pyx_L31_try_end; + __pyx_L26_error:; + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1798 + * if additional_info is None: + * raise AttributeError() + * except: # <<<<<<<<<<<<<< + * additional_info = py_db.set_additional_thread_info(thread) + * + */ + /*except:*/ { + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.fix_top_level_trace_and_get_trace_func", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_7) < 0) __PYX_ERR(0, 1798, __pyx_L28_except_error) + __Pyx_XGOTREF(__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_7); + + /* "_pydevd_bundle/pydevd_cython.pyx":1799 + * raise AttributeError() + * except: + * additional_info = py_db.set_additional_thread_info(thread) # <<<<<<<<<<<<<< + * + * # print('enter thread tracer', thread, get_current_thread_id(thread)) + */ + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_set_additional_thread_info); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1799, __pyx_L28_except_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_14 = NULL; + __pyx_t_8 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_10))) { + __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_10); + if (likely(__pyx_t_14)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); + __Pyx_INCREF(__pyx_t_14); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_10, function); + __pyx_t_8 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_14, __pyx_v_thread}; + __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8); + __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; + if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1799, __pyx_L28_except_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + } + __Pyx_XDECREF_SET(__pyx_v_additional_info, __pyx_t_9); + __pyx_t_9 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + goto __pyx_L27_exception_handled; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1794 + * return None, False + * + * try: # <<<<<<<<<<<<<< + * additional_info = thread.additional_info + * if additional_info is None: + */ + __pyx_L28_except_error:; + __Pyx_XGIVEREF(__pyx_t_11); + __Pyx_XGIVEREF(__pyx_t_12); + __Pyx_XGIVEREF(__pyx_t_13); + __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13); + goto __pyx_L1_error; + __pyx_L27_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_11); + __Pyx_XGIVEREF(__pyx_t_12); + __Pyx_XGIVEREF(__pyx_t_13); + __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13); + __pyx_L31_try_end:; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1802 + * + * # print('enter thread tracer', thread, get_current_thread_id(thread)) + * args = (py_db, thread, additional_info, global_cache_skips, global_cache_frame_skips) # <<<<<<<<<<<<<< + * + * if f_unhandled is not None: + */ + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_global_cache_skips); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1802, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_global_cache_frame_skips); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1802, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PyTuple_New(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1802, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_v_py_db); + __Pyx_GIVEREF(__pyx_v_py_db); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_py_db)) __PYX_ERR(0, 1802, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_thread); + __Pyx_GIVEREF(__pyx_v_thread); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_thread)) __PYX_ERR(0, 1802, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_additional_info); + __Pyx_GIVEREF(__pyx_v_additional_info); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_additional_info)) __PYX_ERR(0, 1802, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_7); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_t_7)) __PYX_ERR(0, 1802, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 4, __pyx_t_2)) __PYX_ERR(0, 1802, __pyx_L1_error); + __pyx_t_7 = 0; + __pyx_t_2 = 0; + __pyx_v_args = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1804 + * args = (py_db, thread, additional_info, global_cache_skips, global_cache_frame_skips) + * + * if f_unhandled is not None: # <<<<<<<<<<<<<< + * if f_unhandled.f_back is None and not force_only_unhandled_tracer: + * # Happens when we attach to a running program (cannot reuse instance because it's mutable). + */ + __pyx_t_6 = (__pyx_v_f_unhandled != Py_None); + if (__pyx_t_6) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1805 + * + * if f_unhandled is not None: + * if f_unhandled.f_back is None and not force_only_unhandled_tracer: # <<<<<<<<<<<<<< + * # Happens when we attach to a running program (cannot reuse instance because it's mutable). + * top_level_thread_tracer = TopLevelThreadTracerNoBackFrame(ThreadTracer(args), args) + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_f_unhandled, __pyx_n_s_f_back); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1805, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = (__pyx_t_3 == Py_None); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_1) { + } else { + __pyx_t_6 = __pyx_t_1; + goto __pyx_L37_bool_binop_done; + } + __pyx_t_1 = (!__pyx_v_force_only_unhandled_tracer); + __pyx_t_6 = __pyx_t_1; + __pyx_L37_bool_binop_done:; + if (__pyx_t_6) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1807 + * if f_unhandled.f_back is None and not force_only_unhandled_tracer: + * # Happens when we attach to a running program (cannot reuse instance because it's mutable). + * top_level_thread_tracer = TopLevelThreadTracerNoBackFrame(ThreadTracer(args), args) # <<<<<<<<<<<<<< + * additional_info.top_level_thread_tracer_no_back_frames.append( + * top_level_thread_tracer + */ + __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_ThreadTracer), __pyx_v_args); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1807, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1807, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_3); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3)) __PYX_ERR(0, 1807, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_args); + __Pyx_GIVEREF(__pyx_v_args); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_args)) __PYX_ERR(0, 1807, __pyx_L1_error); + __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1807, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_top_level_thread_tracer = __pyx_t_3; + __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1808 + * # Happens when we attach to a running program (cannot reuse instance because it's mutable). + * top_level_thread_tracer = TopLevelThreadTracerNoBackFrame(ThreadTracer(args), args) + * additional_info.top_level_thread_tracer_no_back_frames.append( # <<<<<<<<<<<<<< + * top_level_thread_tracer + * ) # Hack for cython to keep it alive while the thread is alive (just the method in the SetTrace is not enough). + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_additional_info, __pyx_n_s_top_level_thread_tracer_no_back); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1808, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + + /* "_pydevd_bundle/pydevd_cython.pyx":1809 + * top_level_thread_tracer = TopLevelThreadTracerNoBackFrame(ThreadTracer(args), args) + * additional_info.top_level_thread_tracer_no_back_frames.append( + * top_level_thread_tracer # <<<<<<<<<<<<<< + * ) # Hack for cython to keep it alive while the thread is alive (just the method in the SetTrace is not enough). + * else: + */ + __pyx_t_15 = __Pyx_PyObject_Append(__pyx_t_3, __pyx_v_top_level_thread_tracer); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(0, 1808, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1805 + * + * if f_unhandled is not None: + * if f_unhandled.f_back is None and not force_only_unhandled_tracer: # <<<<<<<<<<<<<< + * # Happens when we attach to a running program (cannot reuse instance because it's mutable). + * top_level_thread_tracer = TopLevelThreadTracerNoBackFrame(ThreadTracer(args), args) + */ + goto __pyx_L36; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1812 + * ) # Hack for cython to keep it alive while the thread is alive (just the method in the SetTrace is not enough). + * else: + * top_level_thread_tracer = additional_info.top_level_thread_tracer_unhandled # <<<<<<<<<<<<<< + * if top_level_thread_tracer is None: + * # Stop in some internal place to report about unhandled exceptions + */ + /*else*/ { + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_additional_info, __pyx_n_s_top_level_thread_tracer_unhandle); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1812, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_top_level_thread_tracer = __pyx_t_3; + __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1813 + * else: + * top_level_thread_tracer = additional_info.top_level_thread_tracer_unhandled + * if top_level_thread_tracer is None: # <<<<<<<<<<<<<< + * # Stop in some internal place to report about unhandled exceptions + * top_level_thread_tracer = TopLevelThreadTracerOnlyUnhandledExceptions(args) + */ + __pyx_t_6 = (__pyx_v_top_level_thread_tracer == Py_None); + if (__pyx_t_6) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1815 + * if top_level_thread_tracer is None: + * # Stop in some internal place to report about unhandled exceptions + * top_level_thread_tracer = TopLevelThreadTracerOnlyUnhandledExceptions(args) # <<<<<<<<<<<<<< + * additional_info.top_level_thread_tracer_unhandled = ( + * top_level_thread_tracer + */ + __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions), __pyx_v_args); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1815, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF_SET(__pyx_v_top_level_thread_tracer, __pyx_t_3); + __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1816 + * # Stop in some internal place to report about unhandled exceptions + * top_level_thread_tracer = TopLevelThreadTracerOnlyUnhandledExceptions(args) + * additional_info.top_level_thread_tracer_unhandled = ( # <<<<<<<<<<<<<< + * top_level_thread_tracer + * ) # Hack for cython to keep it alive while the thread is alive (just the method in the SetTrace is not enough). + */ + if (__Pyx_PyObject_SetAttrStr(__pyx_v_additional_info, __pyx_n_s_top_level_thread_tracer_unhandle, __pyx_v_top_level_thread_tracer) < 0) __PYX_ERR(0, 1816, __pyx_L1_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":1813 + * else: + * top_level_thread_tracer = additional_info.top_level_thread_tracer_unhandled + * if top_level_thread_tracer is None: # <<<<<<<<<<<<<< + * # Stop in some internal place to report about unhandled exceptions + * top_level_thread_tracer = TopLevelThreadTracerOnlyUnhandledExceptions(args) + */ + } + } + __pyx_L36:; + + /* "_pydevd_bundle/pydevd_cython.pyx":1821 + * + * # print(' --> found to trace unhandled', f_unhandled.f_code.co_name, f_unhandled.f_code.co_filename, f_unhandled.f_code.co_firstlineno) + * f_trace = top_level_thread_tracer.get_trace_dispatch_func() # <<<<<<<<<<<<<< + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_top_level_thread_tracer, __pyx_n_s_get_trace_dispatch_func); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1821, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_7 = NULL; + __pyx_t_8 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_8 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1821, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_v_f_trace = __pyx_t_3; + __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1824 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * f_trace = SafeCallWrapper(f_trace) # <<<<<<<<<<<<<< + * # ENDIF + * # fmt: on + */ + __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper), __pyx_v_f_trace); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1824, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF_SET(__pyx_v_f_trace, __pyx_t_3); + __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1827 + * # ENDIF + * # fmt: on + * f_unhandled.f_trace = f_trace # <<<<<<<<<<<<<< + * + * if frame is f_unhandled: + */ + if (__Pyx_PyObject_SetAttrStr(__pyx_v_f_unhandled, __pyx_n_s_f_trace, __pyx_v_f_trace) < 0) __PYX_ERR(0, 1827, __pyx_L1_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":1829 + * f_unhandled.f_trace = f_trace + * + * if frame is f_unhandled: # <<<<<<<<<<<<<< + * return f_trace, False + * + */ + __pyx_t_6 = (__pyx_v_frame == __pyx_v_f_unhandled); + if (__pyx_t_6) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1830 + * + * if frame is f_unhandled: + * return f_trace, False # <<<<<<<<<<<<<< + * + * thread_tracer = additional_info.thread_tracer + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1830, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_v_f_trace); + __Pyx_GIVEREF(__pyx_v_f_trace); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_f_trace)) __PYX_ERR(0, 1830, __pyx_L1_error); + __Pyx_INCREF(Py_False); + __Pyx_GIVEREF(Py_False); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, Py_False)) __PYX_ERR(0, 1830, __pyx_L1_error); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1829 + * f_unhandled.f_trace = f_trace + * + * if frame is f_unhandled: # <<<<<<<<<<<<<< + * return f_trace, False + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1804 + * args = (py_db, thread, additional_info, global_cache_skips, global_cache_frame_skips) + * + * if f_unhandled is not None: # <<<<<<<<<<<<<< + * if f_unhandled.f_back is None and not force_only_unhandled_tracer: + * # Happens when we attach to a running program (cannot reuse instance because it's mutable). + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1832 + * return f_trace, False + * + * thread_tracer = additional_info.thread_tracer # <<<<<<<<<<<<<< + * if thread_tracer is None or thread_tracer._args[0] is not py_db: + * thread_tracer = ThreadTracer(args) + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_additional_info, __pyx_n_s_thread_tracer); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1832, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_thread_tracer = __pyx_t_3; + __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1833 + * + * thread_tracer = additional_info.thread_tracer + * if thread_tracer is None or thread_tracer._args[0] is not py_db: # <<<<<<<<<<<<<< + * thread_tracer = ThreadTracer(args) + * additional_info.thread_tracer = thread_tracer + */ + __pyx_t_1 = (__pyx_v_thread_tracer == Py_None); + if (!__pyx_t_1) { + } else { + __pyx_t_6 = __pyx_t_1; + goto __pyx_L42_bool_binop_done; + } + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_thread_tracer, __pyx_n_s_args_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1833, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1833, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_1 = (__pyx_t_2 != __pyx_v_py_db); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_6 = __pyx_t_1; + __pyx_L42_bool_binop_done:; + if (__pyx_t_6) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1834 + * thread_tracer = additional_info.thread_tracer + * if thread_tracer is None or thread_tracer._args[0] is not py_db: + * thread_tracer = ThreadTracer(args) # <<<<<<<<<<<<<< + * additional_info.thread_tracer = thread_tracer + * + */ + __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_ThreadTracer), __pyx_v_args); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1834, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF_SET(__pyx_v_thread_tracer, __pyx_t_2); + __pyx_t_2 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1835 + * if thread_tracer is None or thread_tracer._args[0] is not py_db: + * thread_tracer = ThreadTracer(args) + * additional_info.thread_tracer = thread_tracer # <<<<<<<<<<<<<< + * + * # fmt: off + */ + if (__Pyx_PyObject_SetAttrStr(__pyx_v_additional_info, __pyx_n_s_thread_tracer, __pyx_v_thread_tracer) < 0) __PYX_ERR(0, 1835, __pyx_L1_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":1833 + * + * thread_tracer = additional_info.thread_tracer + * if thread_tracer is None or thread_tracer._args[0] is not py_db: # <<<<<<<<<<<<<< + * thread_tracer = ThreadTracer(args) + * additional_info.thread_tracer = thread_tracer + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1839 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * return SafeCallWrapper(thread_tracer), True # <<<<<<<<<<<<<< + * # ELSE + * # return thread_tracer, True + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper), __pyx_v_thread_tracer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1839, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1839, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2)) __PYX_ERR(0, 1839, __pyx_L1_error); + __Pyx_INCREF(Py_True); + __Pyx_GIVEREF(Py_True); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, Py_True)) __PYX_ERR(0, 1839, __pyx_L1_error); + __pyx_t_2 = 0; + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1708 + * + * + * def fix_top_level_trace_and_get_trace_func(py_db, frame): # <<<<<<<<<<<<<< + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_XDECREF(__pyx_t_14); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.fix_top_level_trace_and_get_trace_func", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_name); + __Pyx_XDECREF(__pyx_v_args); + __Pyx_XDECREF(__pyx_v_thread); + __Pyx_XDECREF(__pyx_v_f_unhandled); + __Pyx_XDECREF(__pyx_v_i); + __Pyx_XDECREF(__pyx_v_j); + __Pyx_XDECREF(__pyx_v_t); + __Pyx_XDECREF(__pyx_v_additional_info); + __Pyx_XDECREF(__pyx_v_top_level_thread_tracer); + __Pyx_XDECREF(__pyx_v_f_trace); + __Pyx_XDECREF(__pyx_v_thread_tracer); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":1846 + * + * + * def trace_dispatch(py_db, frame, event, arg): # <<<<<<<<<<<<<< + * thread_trace_func, apply_to_settrace = py_db.fix_top_level_trace_and_get_trace_func(py_db, frame) + * if thread_trace_func is None: + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_21trace_dispatch(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_21trace_dispatch = {"trace_dispatch", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_21trace_dispatch, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_21trace_dispatch(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_py_db = 0; + PyObject *__pyx_v_frame = 0; + PyObject *__pyx_v_event = 0; + PyObject *__pyx_v_arg = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[4] = {0,0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("trace_dispatch (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_py_db,&__pyx_n_s_frame,&__pyx_n_s_event,&__pyx_n_s_arg,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); + CYTHON_FALLTHROUGH; + case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_py_db)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1846, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_frame)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1846, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("trace_dispatch", 1, 4, 4, 1); __PYX_ERR(0, 1846, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_event)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1846, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("trace_dispatch", 1, 4, 4, 2); __PYX_ERR(0, 1846, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 3: + if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_arg)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[3]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1846, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("trace_dispatch", 1, 4, 4, 3); __PYX_ERR(0, 1846, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "trace_dispatch") < 0)) __PYX_ERR(0, 1846, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 4)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); + } + __pyx_v_py_db = values[0]; + __pyx_v_frame = values[1]; + __pyx_v_event = values[2]; + __pyx_v_arg = values[3]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("trace_dispatch", 1, 4, 4, __pyx_nargs); __PYX_ERR(0, 1846, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.trace_dispatch", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_20trace_dispatch(__pyx_self, __pyx_v_py_db, __pyx_v_frame, __pyx_v_event, __pyx_v_arg); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_20trace_dispatch(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_py_db, PyObject *__pyx_v_frame, PyObject *__pyx_v_event, PyObject *__pyx_v_arg) { + PyObject *__pyx_v_thread_trace_func = NULL; + PyObject *__pyx_v_apply_to_settrace = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + unsigned int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *(*__pyx_t_6)(PyObject *); + int __pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("trace_dispatch", 1); + + /* "_pydevd_bundle/pydevd_cython.pyx":1847 + * + * def trace_dispatch(py_db, frame, event, arg): + * thread_trace_func, apply_to_settrace = py_db.fix_top_level_trace_and_get_trace_func(py_db, frame) # <<<<<<<<<<<<<< + * if thread_trace_func is None: + * return None if event == "call" else NO_FTRACE + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_fix_top_level_trace_and_get_trac); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1847, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_v_py_db, __pyx_v_frame}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1847, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { + PyObject* sequence = __pyx_t_1; + Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); + if (unlikely(size != 2)) { + if (size > 2) __Pyx_RaiseTooManyValuesError(2); + else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); + __PYX_ERR(0, 1847, __pyx_L1_error) + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + if (likely(PyTuple_CheckExact(sequence))) { + __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); + __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); + } else { + __pyx_t_2 = PyList_GET_ITEM(sequence, 0); + __pyx_t_3 = PyList_GET_ITEM(sequence, 1); + } + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + #else + __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1847, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1847, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #endif + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } else { + Py_ssize_t index = -1; + __pyx_t_5 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1847, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_6 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); + index = 0; __pyx_t_2 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; + __Pyx_GOTREF(__pyx_t_2); + index = 1; __pyx_t_3 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed; + __Pyx_GOTREF(__pyx_t_3); + if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 2) < 0) __PYX_ERR(0, 1847, __pyx_L1_error) + __pyx_t_6 = NULL; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + goto __pyx_L4_unpacking_done; + __pyx_L3_unpacking_failed:; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_6 = NULL; + if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); + __PYX_ERR(0, 1847, __pyx_L1_error) + __pyx_L4_unpacking_done:; + } + __pyx_v_thread_trace_func = __pyx_t_2; + __pyx_t_2 = 0; + __pyx_v_apply_to_settrace = __pyx_t_3; + __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1848 + * def trace_dispatch(py_db, frame, event, arg): + * thread_trace_func, apply_to_settrace = py_db.fix_top_level_trace_and_get_trace_func(py_db, frame) + * if thread_trace_func is None: # <<<<<<<<<<<<<< + * return None if event == "call" else NO_FTRACE + * if apply_to_settrace: + */ + __pyx_t_7 = (__pyx_v_thread_trace_func == Py_None); + if (__pyx_t_7) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1849 + * thread_trace_func, apply_to_settrace = py_db.fix_top_level_trace_and_get_trace_func(py_db, frame) + * if thread_trace_func is None: + * return None if event == "call" else NO_FTRACE # <<<<<<<<<<<<<< + * if apply_to_settrace: + * py_db.enable_tracing(thread_trace_func) + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_call, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1849, __pyx_L1_error) + if (__pyx_t_7) { + __Pyx_INCREF(Py_None); + __pyx_t_1 = Py_None; + } else { + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1849, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __pyx_t_3; + __pyx_t_3 = 0; + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1848 + * def trace_dispatch(py_db, frame, event, arg): + * thread_trace_func, apply_to_settrace = py_db.fix_top_level_trace_and_get_trace_func(py_db, frame) + * if thread_trace_func is None: # <<<<<<<<<<<<<< + * return None if event == "call" else NO_FTRACE + * if apply_to_settrace: + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1850 + * if thread_trace_func is None: + * return None if event == "call" else NO_FTRACE + * if apply_to_settrace: # <<<<<<<<<<<<<< + * py_db.enable_tracing(thread_trace_func) + * return thread_trace_func(frame, event, arg) + */ + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_apply_to_settrace); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1850, __pyx_L1_error) + if (__pyx_t_7) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1851 + * return None if event == "call" else NO_FTRACE + * if apply_to_settrace: + * py_db.enable_tracing(thread_trace_func) # <<<<<<<<<<<<<< + * return thread_trace_func(frame, event, arg) + * + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_enable_tracing); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1851, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_thread_trace_func}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1851, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1850 + * if thread_trace_func is None: + * return None if event == "call" else NO_FTRACE + * if apply_to_settrace: # <<<<<<<<<<<<<< + * py_db.enable_tracing(thread_trace_func) + * return thread_trace_func(frame, event, arg) + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1852 + * if apply_to_settrace: + * py_db.enable_tracing(thread_trace_func) + * return thread_trace_func(frame, event, arg) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_thread_trace_func); + __pyx_t_3 = __pyx_v_thread_trace_func; __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[4] = {__pyx_t_2, __pyx_v_frame, __pyx_v_event, __pyx_v_arg}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 3+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1852, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1846 + * + * + * def trace_dispatch(py_db, frame, event, arg): # <<<<<<<<<<<<<< + * thread_trace_func, apply_to_settrace = py_db.fix_top_level_trace_and_get_trace_func(py_db, frame) + * if thread_trace_func is None: + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.trace_dispatch", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_thread_trace_func); + __Pyx_XDECREF(__pyx_v_apply_to_settrace); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":1859 + * cdef class TopLevelThreadTracerOnlyUnhandledExceptions: + * cdef public tuple _args; + * def __init__(self, tuple args): # <<<<<<<<<<<<<< + * self._args = args + * # ELSE + */ + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_args = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_args,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_args)) != 0)) { + (void)__Pyx_Arg_NewRef_VARARGS(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1859, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(0, 1859, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); + } + __pyx_v_args = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1859, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.TopLevelThreadTracerOnlyUnhandledExceptions.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return -1; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_args), (&PyTuple_Type), 1, "args", 1))) __PYX_ERR(0, 1859, __pyx_L1_error) + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions___init__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions *)__pyx_v_self), __pyx_v_args); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = -1; + __pyx_L0:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions___init__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions *__pyx_v_self, PyObject *__pyx_v_args) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__init__", 1); + + /* "_pydevd_bundle/pydevd_cython.pyx":1860 + * cdef public tuple _args; + * def __init__(self, tuple args): + * self._args = args # <<<<<<<<<<<<<< + * # ELSE + * # class TopLevelThreadTracerOnlyUnhandledExceptions(object): + */ + __Pyx_INCREF(__pyx_v_args); + __Pyx_GIVEREF(__pyx_v_args); + __Pyx_GOTREF(__pyx_v_self->_args); + __Pyx_DECREF(__pyx_v_self->_args); + __pyx_v_self->_args = __pyx_v_args; + + /* "_pydevd_bundle/pydevd_cython.pyx":1859 + * cdef class TopLevelThreadTracerOnlyUnhandledExceptions: + * cdef public tuple _args; + * def __init__(self, tuple args): # <<<<<<<<<<<<<< + * self._args = args + * # ELSE + */ + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":1869 + * # fmt: on + * + * def trace_unhandled_exceptions(self, frame, event, arg): # <<<<<<<<<<<<<< + * # Note that we ignore the frame as this tracing method should only be put in topmost frames already. + * # print('trace_unhandled_exceptions', event, frame.f_code.co_name, frame.f_code.co_filename, frame.f_code.co_firstlineno) + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_3trace_unhandled_exceptions(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_3trace_unhandled_exceptions = {"trace_unhandled_exceptions", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_3trace_unhandled_exceptions, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_3trace_unhandled_exceptions(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + CYTHON_UNUSED PyObject *__pyx_v_frame = 0; + PyObject *__pyx_v_event = 0; + PyObject *__pyx_v_arg = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("trace_unhandled_exceptions (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_frame,&__pyx_n_s_event,&__pyx_n_s_arg,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_frame)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1869, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_event)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1869, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("trace_unhandled_exceptions", 1, 3, 3, 1); __PYX_ERR(0, 1869, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_arg)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1869, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("trace_unhandled_exceptions", 1, 3, 3, 2); __PYX_ERR(0, 1869, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "trace_unhandled_exceptions") < 0)) __PYX_ERR(0, 1869, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 3)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + } + __pyx_v_frame = values[0]; + __pyx_v_event = values[1]; + __pyx_v_arg = values[2]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("trace_unhandled_exceptions", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 1869, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.TopLevelThreadTracerOnlyUnhandledExceptions.trace_unhandled_exceptions", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_2trace_unhandled_exceptions(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions *)__pyx_v_self), __pyx_v_frame, __pyx_v_event, __pyx_v_arg); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_2trace_unhandled_exceptions(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_frame, PyObject *__pyx_v_event, PyObject *__pyx_v_arg) { + PyObject *__pyx_v_py_db = NULL; + PyObject *__pyx_v_t = NULL; + PyObject *__pyx_v_additional_info = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + unsigned int __pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("trace_unhandled_exceptions", 1); + + /* "_pydevd_bundle/pydevd_cython.pyx":1872 + * # Note that we ignore the frame as this tracing method should only be put in topmost frames already. + * # print('trace_unhandled_exceptions', event, frame.f_code.co_name, frame.f_code.co_filename, frame.f_code.co_firstlineno) + * if event == "exception" and arg is not None: # <<<<<<<<<<<<<< + * py_db, t, additional_info = self._args[0:3] + * if arg is not None: + */ + __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_exception, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1872, __pyx_L1_error) + if (__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = (__pyx_v_arg != Py_None); + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1873 + * # print('trace_unhandled_exceptions', event, frame.f_code.co_name, frame.f_code.co_filename, frame.f_code.co_firstlineno) + * if event == "exception" and arg is not None: + * py_db, t, additional_info = self._args[0:3] # <<<<<<<<<<<<<< + * if arg is not None: + * if not additional_info.suspended_at_unhandled: + */ + if (unlikely(__pyx_v_self->_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 1873, __pyx_L1_error) + } + __pyx_t_3 = __Pyx_PyTuple_GetSlice(__pyx_v_self->_args, 0, 3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1873, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (1) { + PyObject* sequence = __pyx_t_3; + Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); + if (unlikely(size != 3)) { + if (size > 3) __Pyx_RaiseTooManyValuesError(3); + else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); + __PYX_ERR(0, 1873, __pyx_L1_error) + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); + __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); + __pyx_t_6 = PyTuple_GET_ITEM(sequence, 2); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(__pyx_t_6); + #else + __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1873, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1873, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1873, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + #endif + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_v_py_db = __pyx_t_4; + __pyx_t_4 = 0; + __pyx_v_t = __pyx_t_5; + __pyx_t_5 = 0; + __pyx_v_additional_info = __pyx_t_6; + __pyx_t_6 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1874 + * if event == "exception" and arg is not None: + * py_db, t, additional_info = self._args[0:3] + * if arg is not None: # <<<<<<<<<<<<<< + * if not additional_info.suspended_at_unhandled: + * additional_info.suspended_at_unhandled = True + */ + __pyx_t_1 = (__pyx_v_arg != Py_None); + if (__pyx_t_1) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1875 + * py_db, t, additional_info = self._args[0:3] + * if arg is not None: + * if not additional_info.suspended_at_unhandled: # <<<<<<<<<<<<<< + * additional_info.suspended_at_unhandled = True + * + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_additional_info, __pyx_n_s_suspended_at_unhandled); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1875, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 1875, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_2 = (!__pyx_t_1); + if (__pyx_t_2) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1876 + * if arg is not None: + * if not additional_info.suspended_at_unhandled: + * additional_info.suspended_at_unhandled = True # <<<<<<<<<<<<<< + * + * py_db.stop_on_unhandled_exception(py_db, t, additional_info, arg) + */ + if (__Pyx_PyObject_SetAttrStr(__pyx_v_additional_info, __pyx_n_s_suspended_at_unhandled, Py_True) < 0) __PYX_ERR(0, 1876, __pyx_L1_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":1878 + * additional_info.suspended_at_unhandled = True + * + * py_db.stop_on_unhandled_exception(py_db, t, additional_info, arg) # <<<<<<<<<<<<<< + * + * # No need to reset frame.f_trace to keep the same trace function. + */ + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_stop_on_unhandled_exception); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1878, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_5 = NULL; + __pyx_t_7 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_7 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[5] = {__pyx_t_5, __pyx_v_py_db, __pyx_v_t, __pyx_v_additional_info, __pyx_v_arg}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 4+__pyx_t_7); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1878, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1875 + * py_db, t, additional_info = self._args[0:3] + * if arg is not None: + * if not additional_info.suspended_at_unhandled: # <<<<<<<<<<<<<< + * additional_info.suspended_at_unhandled = True + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1874 + * if event == "exception" and arg is not None: + * py_db, t, additional_info = self._args[0:3] + * if arg is not None: # <<<<<<<<<<<<<< + * if not additional_info.suspended_at_unhandled: + * additional_info.suspended_at_unhandled = True + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1872 + * # Note that we ignore the frame as this tracing method should only be put in topmost frames already. + * # print('trace_unhandled_exceptions', event, frame.f_code.co_name, frame.f_code.co_filename, frame.f_code.co_firstlineno) + * if event == "exception" and arg is not None: # <<<<<<<<<<<<<< + * py_db, t, additional_info = self._args[0:3] + * if arg is not None: + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1881 + * + * # No need to reset frame.f_trace to keep the same trace function. + * return self.trace_unhandled_exceptions # <<<<<<<<<<<<<< + * + * def get_trace_dispatch_func(self): + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_unhandled_exceptions); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1881, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1869 + * # fmt: on + * + * def trace_unhandled_exceptions(self, frame, event, arg): # <<<<<<<<<<<<<< + * # Note that we ignore the frame as this tracing method should only be put in topmost frames already. + * # print('trace_unhandled_exceptions', event, frame.f_code.co_name, frame.f_code.co_filename, frame.f_code.co_firstlineno) + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.TopLevelThreadTracerOnlyUnhandledExceptions.trace_unhandled_exceptions", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_py_db); + __Pyx_XDECREF(__pyx_v_t); + __Pyx_XDECREF(__pyx_v_additional_info); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":1883 + * return self.trace_unhandled_exceptions + * + * def get_trace_dispatch_func(self): # <<<<<<<<<<<<<< + * return self.trace_unhandled_exceptions + * + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_5get_trace_dispatch_func(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_5get_trace_dispatch_func = {"get_trace_dispatch_func", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_5get_trace_dispatch_func, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_5get_trace_dispatch_func(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_trace_dispatch_func (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { + __Pyx_RaiseArgtupleInvalid("get_trace_dispatch_func", 1, 0, 0, __pyx_nargs); return NULL;} + if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "get_trace_dispatch_func", 0))) return NULL; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_4get_trace_dispatch_func(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_4get_trace_dispatch_func(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get_trace_dispatch_func", 1); + + /* "_pydevd_bundle/pydevd_cython.pyx":1884 + * + * def get_trace_dispatch_func(self): + * return self.trace_unhandled_exceptions # <<<<<<<<<<<<<< + * + * # fmt: off + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_unhandled_exceptions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1884, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1883 + * return self.trace_unhandled_exceptions + * + * def get_trace_dispatch_func(self): # <<<<<<<<<<<<<< + * return self.trace_unhandled_exceptions + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.TopLevelThreadTracerOnlyUnhandledExceptions.get_trace_dispatch_func", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":1858 + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cdef class TopLevelThreadTracerOnlyUnhandledExceptions: + * cdef public tuple _args; # <<<<<<<<<<<<<< + * def __init__(self, tuple args): + * self._args = args + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_5_args_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_5_args_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_5_args___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_5_args___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->_args); + __pyx_r = __pyx_v_self->_args; + goto __pyx_L0; + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_5_args_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_5_args_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_5_args_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_5_args_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__set__", 1); + if (!(likely(PyTuple_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v_value))) __PYX_ERR(0, 1858, __pyx_L1_error) + __pyx_t_1 = __pyx_v_value; + __Pyx_INCREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v_self->_args); + __Pyx_DECREF(__pyx_v_self->_args); + __pyx_v_self->_args = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.TopLevelThreadTracerOnlyUnhandledExceptions._args.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_5_args_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_5_args_5__del__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_5_args_4__del__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_5_args_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 1); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->_args); + __Pyx_DECREF(__pyx_v_self->_args); + __pyx_v_self->_args = ((PyObject*)Py_None); + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_7__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_7__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_7__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { + __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} + if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_6__reduce_cython__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_6__reduce_cython__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions *__pyx_v_self) { + PyObject *__pyx_v_state = 0; + PyObject *__pyx_v__dict = 0; + int __pyx_v_use_setstate; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__reduce_cython__", 1); + + /* "(tree fragment)":5 + * cdef object _dict + * cdef bint use_setstate + * state = (self._args,) # <<<<<<<<<<<<<< + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: + */ + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_v_self->_args); + __Pyx_GIVEREF(__pyx_v_self->_args); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->_args)) __PYX_ERR(2, 5, __pyx_L1_error); + __pyx_v_state = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "(tree fragment)":6 + * cdef bint use_setstate + * state = (self._args,) + * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< + * if _dict is not None: + * state += (_dict,) + */ + __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v__dict = __pyx_t_1; + __pyx_t_1 = 0; + + /* "(tree fragment)":7 + * state = (self._args,) + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: # <<<<<<<<<<<<<< + * state += (_dict,) + * use_setstate = True + */ + __pyx_t_2 = (__pyx_v__dict != Py_None); + if (__pyx_t_2) { + + /* "(tree fragment)":8 + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: + * state += (_dict,) # <<<<<<<<<<<<<< + * use_setstate = True + * else: + */ + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_v__dict); + __Pyx_GIVEREF(__pyx_v__dict); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict)) __PYX_ERR(2, 8, __pyx_L1_error); + __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_3)); + __pyx_t_3 = 0; + + /* "(tree fragment)":9 + * if _dict is not None: + * state += (_dict,) + * use_setstate = True # <<<<<<<<<<<<<< + * else: + * use_setstate = self._args is not None + */ + __pyx_v_use_setstate = 1; + + /* "(tree fragment)":7 + * state = (self._args,) + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: # <<<<<<<<<<<<<< + * state += (_dict,) + * use_setstate = True + */ + goto __pyx_L3; + } + + /* "(tree fragment)":11 + * use_setstate = True + * else: + * use_setstate = self._args is not None # <<<<<<<<<<<<<< + * if use_setstate: + * return __pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions, (type(self), 0x121e1fb, None), state + */ + /*else*/ { + __pyx_t_2 = (__pyx_v_self->_args != ((PyObject*)Py_None)); + __pyx_v_use_setstate = __pyx_t_2; + } + __pyx_L3:; + + /* "(tree fragment)":12 + * else: + * use_setstate = self._args is not None + * if use_setstate: # <<<<<<<<<<<<<< + * return __pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions, (type(self), 0x121e1fb, None), state + * else: + */ + if (__pyx_v_use_setstate) { + + /* "(tree fragment)":13 + * use_setstate = self._args is not None + * if use_setstate: + * return __pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions, (type(self), 0x121e1fb, None), state # <<<<<<<<<<<<<< + * else: + * return __pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions, (type(self), 0x121e1fb, state) + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyx_unpickle_TopLevelThreadTra); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(2, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_int_18997755); + __Pyx_GIVEREF(__pyx_int_18997755); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_18997755)) __PYX_ERR(2, 13, __pyx_L1_error); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None)) __PYX_ERR(2, 13, __pyx_L1_error); + __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_3); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3)) __PYX_ERR(2, 13, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1)) __PYX_ERR(2, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_state); + __Pyx_GIVEREF(__pyx_v_state); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_state)) __PYX_ERR(2, 13, __pyx_L1_error); + __pyx_t_3 = 0; + __pyx_t_1 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + + /* "(tree fragment)":12 + * else: + * use_setstate = self._args is not None + * if use_setstate: # <<<<<<<<<<<<<< + * return __pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions, (type(self), 0x121e1fb, None), state + * else: + */ + } + + /* "(tree fragment)":15 + * return __pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions, (type(self), 0x121e1fb, None), state + * else: + * return __pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions, (type(self), 0x121e1fb, state) # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * __pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions__set_state(self, __pyx_state) + */ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_TopLevelThreadTra); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(2, 15, __pyx_L1_error); + __Pyx_INCREF(__pyx_int_18997755); + __Pyx_GIVEREF(__pyx_int_18997755); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_18997755)) __PYX_ERR(2, 15, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_state); + __Pyx_GIVEREF(__pyx_v_state); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state)) __PYX_ERR(2, 15, __pyx_L1_error); + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_4); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4)) __PYX_ERR(2, 15, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(2, 15, __pyx_L1_error); + __pyx_t_4 = 0; + __pyx_t_1 = 0; + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + } + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.TopLevelThreadTracerOnlyUnhandledExceptions.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_state); + __Pyx_XDECREF(__pyx_v__dict); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":16 + * else: + * return __pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions, (type(self), 0x121e1fb, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions__set_state(self, __pyx_state) + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_9__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_9__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_9__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 16, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(2, 16, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + } + __pyx_v___pyx_state = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 16, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.TopLevelThreadTracerOnlyUnhandledExceptions.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_8__setstate_cython__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions *)__pyx_v_self), __pyx_v___pyx_state); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_8__setstate_cython__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions *__pyx_v_self, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__setstate_cython__", 1); + + /* "(tree fragment)":17 + * return __pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions, (type(self), 0x121e1fb, state) + * def __setstate_cython__(self, __pyx_state): + * __pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions__set_state(self, __pyx_state) # <<<<<<<<<<<<<< + */ + if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(2, 17, __pyx_L1_error) + __pyx_t_1 = __pyx_f_14_pydevd_bundle_13pydevd_cython___pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions, (type(self), 0x121e1fb, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions__set_state(self, __pyx_state) + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.TopLevelThreadTracerOnlyUnhandledExceptions.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":1895 + * cdef public set _raise_lines; + * cdef public int _last_raise_line; + * def __init__(self, frame_trace_dispatch, tuple args): # <<<<<<<<<<<<<< + * self._frame_trace_dispatch = frame_trace_dispatch + * self._args = args + */ + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_frame_trace_dispatch = 0; + PyObject *__pyx_v_args = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_frame_trace_dispatch,&__pyx_n_s_args,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_frame_trace_dispatch)) != 0)) { + (void)__Pyx_Arg_NewRef_VARARGS(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1895, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_args)) != 0)) { + (void)__Pyx_Arg_NewRef_VARARGS(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1895, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 1895, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(0, 1895, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 2)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); + values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1); + } + __pyx_v_frame_trace_dispatch = values[0]; + __pyx_v_args = ((PyObject*)values[1]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 1895, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.TopLevelThreadTracerNoBackFrame.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return -1; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_args), (&PyTuple_Type), 1, "args", 1))) __PYX_ERR(0, 1895, __pyx_L1_error) + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame___init__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *)__pyx_v_self), __pyx_v_frame_trace_dispatch, __pyx_v_args); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = -1; + __pyx_L0:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame___init__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *__pyx_v_self, PyObject *__pyx_v_frame_trace_dispatch, PyObject *__pyx_v_args) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__init__", 1); + + /* "_pydevd_bundle/pydevd_cython.pyx":1896 + * cdef public int _last_raise_line; + * def __init__(self, frame_trace_dispatch, tuple args): + * self._frame_trace_dispatch = frame_trace_dispatch # <<<<<<<<<<<<<< + * self._args = args + * self.try_except_infos = None + */ + __Pyx_INCREF(__pyx_v_frame_trace_dispatch); + __Pyx_GIVEREF(__pyx_v_frame_trace_dispatch); + __Pyx_GOTREF(__pyx_v_self->_frame_trace_dispatch); + __Pyx_DECREF(__pyx_v_self->_frame_trace_dispatch); + __pyx_v_self->_frame_trace_dispatch = __pyx_v_frame_trace_dispatch; + + /* "_pydevd_bundle/pydevd_cython.pyx":1897 + * def __init__(self, frame_trace_dispatch, tuple args): + * self._frame_trace_dispatch = frame_trace_dispatch + * self._args = args # <<<<<<<<<<<<<< + * self.try_except_infos = None + * self._last_exc_arg = None + */ + __Pyx_INCREF(__pyx_v_args); + __Pyx_GIVEREF(__pyx_v_args); + __Pyx_GOTREF(__pyx_v_self->_args); + __Pyx_DECREF(__pyx_v_self->_args); + __pyx_v_self->_args = __pyx_v_args; + + /* "_pydevd_bundle/pydevd_cython.pyx":1898 + * self._frame_trace_dispatch = frame_trace_dispatch + * self._args = args + * self.try_except_infos = None # <<<<<<<<<<<<<< + * self._last_exc_arg = None + * self._raise_lines = set() + */ + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->try_except_infos); + __Pyx_DECREF(__pyx_v_self->try_except_infos); + __pyx_v_self->try_except_infos = Py_None; + + /* "_pydevd_bundle/pydevd_cython.pyx":1899 + * self._args = args + * self.try_except_infos = None + * self._last_exc_arg = None # <<<<<<<<<<<<<< + * self._raise_lines = set() + * self._last_raise_line = -1 + */ + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->_last_exc_arg); + __Pyx_DECREF(__pyx_v_self->_last_exc_arg); + __pyx_v_self->_last_exc_arg = Py_None; + + /* "_pydevd_bundle/pydevd_cython.pyx":1900 + * self.try_except_infos = None + * self._last_exc_arg = None + * self._raise_lines = set() # <<<<<<<<<<<<<< + * self._last_raise_line = -1 + * # ELSE + */ + __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1900, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v_self->_raise_lines); + __Pyx_DECREF(__pyx_v_self->_raise_lines); + __pyx_v_self->_raise_lines = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1901 + * self._last_exc_arg = None + * self._raise_lines = set() + * self._last_raise_line = -1 # <<<<<<<<<<<<<< + * # ELSE + * # class TopLevelThreadTracerNoBackFrame(object): + */ + __pyx_v_self->_last_raise_line = -1; + + /* "_pydevd_bundle/pydevd_cython.pyx":1895 + * cdef public set _raise_lines; + * cdef public int _last_raise_line; + * def __init__(self, frame_trace_dispatch, tuple args): # <<<<<<<<<<<<<< + * self._frame_trace_dispatch = frame_trace_dispatch + * self._args = args + */ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.TopLevelThreadTracerNoBackFrame.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":1927 + * # fmt: on + * + * def trace_dispatch_and_unhandled_exceptions(self, frame, event, arg): # <<<<<<<<<<<<<< + * # DEBUG = 'code_to_debug' in frame.f_code.co_filename + * # if DEBUG: print('trace_dispatch_and_unhandled_exceptions: %s %s %s %s %s %s' % (event, frame.f_code.co_name, frame.f_code.co_filename, frame.f_code.co_firstlineno, self._frame_trace_dispatch, frame.f_lineno)) + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_3trace_dispatch_and_unhandled_exceptions(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_3trace_dispatch_and_unhandled_exceptions = {"trace_dispatch_and_unhandled_exceptions", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_3trace_dispatch_and_unhandled_exceptions, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_3trace_dispatch_and_unhandled_exceptions(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_frame = 0; + PyObject *__pyx_v_event = 0; + PyObject *__pyx_v_arg = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("trace_dispatch_and_unhandled_exceptions (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_frame,&__pyx_n_s_event,&__pyx_n_s_arg,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_frame)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1927, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_event)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1927, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("trace_dispatch_and_unhandled_exceptions", 1, 3, 3, 1); __PYX_ERR(0, 1927, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_arg)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1927, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("trace_dispatch_and_unhandled_exceptions", 1, 3, 3, 2); __PYX_ERR(0, 1927, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "trace_dispatch_and_unhandled_exceptions") < 0)) __PYX_ERR(0, 1927, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 3)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + } + __pyx_v_frame = values[0]; + __pyx_v_event = values[1]; + __pyx_v_arg = values[2]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("trace_dispatch_and_unhandled_exceptions", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 1927, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.TopLevelThreadTracerNoBackFrame.trace_dispatch_and_unhandled_exceptions", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_2trace_dispatch_and_unhandled_exceptions(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *)__pyx_v_self), __pyx_v_frame, __pyx_v_event, __pyx_v_arg); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_2trace_dispatch_and_unhandled_exceptions(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *__pyx_v_self, PyObject *__pyx_v_frame, PyObject *__pyx_v_event, PyObject *__pyx_v_arg) { + PyObject *__pyx_v_frame_trace_dispatch = NULL; + PyObject *__pyx_v_py_db = NULL; + PyObject *__pyx_v_t = NULL; + PyObject *__pyx_v_additional_info = NULL; + PyObject *__pyx_v_ret = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + unsigned int __pyx_t_5; + int __pyx_t_6; + int __pyx_t_7; + int __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + int __pyx_t_10; + char const *__pyx_t_11; + PyObject *__pyx_t_12 = NULL; + PyObject *__pyx_t_13 = NULL; + PyObject *__pyx_t_14 = NULL; + PyObject *__pyx_t_15 = NULL; + PyObject *__pyx_t_16 = NULL; + PyObject *__pyx_t_17 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("trace_dispatch_and_unhandled_exceptions", 1); + + /* "_pydevd_bundle/pydevd_cython.pyx":1930 + * # DEBUG = 'code_to_debug' in frame.f_code.co_filename + * # if DEBUG: print('trace_dispatch_and_unhandled_exceptions: %s %s %s %s %s %s' % (event, frame.f_code.co_name, frame.f_code.co_filename, frame.f_code.co_firstlineno, self._frame_trace_dispatch, frame.f_lineno)) + * frame_trace_dispatch = self._frame_trace_dispatch # <<<<<<<<<<<<<< + * if frame_trace_dispatch is not None: + * self._frame_trace_dispatch = frame_trace_dispatch(frame, event, arg) + */ + __pyx_t_1 = __pyx_v_self->_frame_trace_dispatch; + __Pyx_INCREF(__pyx_t_1); + __pyx_v_frame_trace_dispatch = __pyx_t_1; + __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1931 + * # if DEBUG: print('trace_dispatch_and_unhandled_exceptions: %s %s %s %s %s %s' % (event, frame.f_code.co_name, frame.f_code.co_filename, frame.f_code.co_firstlineno, self._frame_trace_dispatch, frame.f_lineno)) + * frame_trace_dispatch = self._frame_trace_dispatch + * if frame_trace_dispatch is not None: # <<<<<<<<<<<<<< + * self._frame_trace_dispatch = frame_trace_dispatch(frame, event, arg) + * + */ + __pyx_t_2 = (__pyx_v_frame_trace_dispatch != Py_None); + if (__pyx_t_2) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1932 + * frame_trace_dispatch = self._frame_trace_dispatch + * if frame_trace_dispatch is not None: + * self._frame_trace_dispatch = frame_trace_dispatch(frame, event, arg) # <<<<<<<<<<<<<< + * + * if event == "exception": + */ + __Pyx_INCREF(__pyx_v_frame_trace_dispatch); + __pyx_t_3 = __pyx_v_frame_trace_dispatch; __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[4] = {__pyx_t_4, __pyx_v_frame, __pyx_v_event, __pyx_v_arg}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1932, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v_self->_frame_trace_dispatch); + __Pyx_DECREF(__pyx_v_self->_frame_trace_dispatch); + __pyx_v_self->_frame_trace_dispatch = __pyx_t_1; + __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1931 + * # if DEBUG: print('trace_dispatch_and_unhandled_exceptions: %s %s %s %s %s %s' % (event, frame.f_code.co_name, frame.f_code.co_filename, frame.f_code.co_firstlineno, self._frame_trace_dispatch, frame.f_lineno)) + * frame_trace_dispatch = self._frame_trace_dispatch + * if frame_trace_dispatch is not None: # <<<<<<<<<<<<<< + * self._frame_trace_dispatch = frame_trace_dispatch(frame, event, arg) + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1934 + * self._frame_trace_dispatch = frame_trace_dispatch(frame, event, arg) + * + * if event == "exception": # <<<<<<<<<<<<<< + * self._last_exc_arg = arg + * self._raise_lines.add(frame.f_lineno) + */ + __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_exception, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1934, __pyx_L1_error) + if (__pyx_t_2) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1935 + * + * if event == "exception": + * self._last_exc_arg = arg # <<<<<<<<<<<<<< + * self._raise_lines.add(frame.f_lineno) + * self._last_raise_line = frame.f_lineno + */ + __Pyx_INCREF(__pyx_v_arg); + __Pyx_GIVEREF(__pyx_v_arg); + __Pyx_GOTREF(__pyx_v_self->_last_exc_arg); + __Pyx_DECREF(__pyx_v_self->_last_exc_arg); + __pyx_v_self->_last_exc_arg = __pyx_v_arg; + + /* "_pydevd_bundle/pydevd_cython.pyx":1936 + * if event == "exception": + * self._last_exc_arg = arg + * self._raise_lines.add(frame.f_lineno) # <<<<<<<<<<<<<< + * self._last_raise_line = frame.f_lineno + * + */ + if (unlikely(__pyx_v_self->_raise_lines == Py_None)) { + PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "add"); + __PYX_ERR(0, 1936, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1936, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_6 = PySet_Add(__pyx_v_self->_raise_lines, __pyx_t_1); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1936, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1937 + * self._last_exc_arg = arg + * self._raise_lines.add(frame.f_lineno) + * self._last_raise_line = frame.f_lineno # <<<<<<<<<<<<<< + * + * elif event == "return" and self._last_exc_arg is not None: + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_lineno); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1937, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1937, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_self->_last_raise_line = __pyx_t_7; + + /* "_pydevd_bundle/pydevd_cython.pyx":1934 + * self._frame_trace_dispatch = frame_trace_dispatch(frame, event, arg) + * + * if event == "exception": # <<<<<<<<<<<<<< + * self._last_exc_arg = arg + * self._raise_lines.add(frame.f_lineno) + */ + goto __pyx_L4; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1939 + * self._last_raise_line = frame.f_lineno + * + * elif event == "return" and self._last_exc_arg is not None: # <<<<<<<<<<<<<< + * # For unhandled exceptions we actually track the return when at the topmost level. + * try: + */ + __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_return, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 1939, __pyx_L1_error) + if (__pyx_t_8) { + } else { + __pyx_t_2 = __pyx_t_8; + goto __pyx_L5_bool_binop_done; + } + __pyx_t_8 = (__pyx_v_self->_last_exc_arg != Py_None); + __pyx_t_2 = __pyx_t_8; + __pyx_L5_bool_binop_done:; + if (__pyx_t_2) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1941 + * elif event == "return" and self._last_exc_arg is not None: + * # For unhandled exceptions we actually track the return when at the topmost level. + * try: # <<<<<<<<<<<<<< + * py_db, t, additional_info = self._args[0:3] + * if not additional_info.suspended_at_unhandled: # Note: only check it here, don't set. + */ + /*try:*/ { + + /* "_pydevd_bundle/pydevd_cython.pyx":1942 + * # For unhandled exceptions we actually track the return when at the topmost level. + * try: + * py_db, t, additional_info = self._args[0:3] # <<<<<<<<<<<<<< + * if not additional_info.suspended_at_unhandled: # Note: only check it here, don't set. + * if is_unhandled_exception(self, py_db, frame, self._last_raise_line, self._raise_lines): + */ + if (unlikely(__pyx_v_self->_args == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 1942, __pyx_L8_error) + } + __pyx_t_1 = __Pyx_PyTuple_GetSlice(__pyx_v_self->_args, 0, 3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1942, __pyx_L8_error) + __Pyx_GOTREF(__pyx_t_1); + if (1) { + PyObject* sequence = __pyx_t_1; + Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); + if (unlikely(size != 3)) { + if (size > 3) __Pyx_RaiseTooManyValuesError(3); + else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); + __PYX_ERR(0, 1942, __pyx_L8_error) + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); + __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); + __pyx_t_9 = PyTuple_GET_ITEM(sequence, 2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(__pyx_t_9); + #else + __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1942, __pyx_L8_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1942, __pyx_L8_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_9 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1942, __pyx_L8_error) + __Pyx_GOTREF(__pyx_t_9); + #endif + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __pyx_v_py_db = __pyx_t_3; + __pyx_t_3 = 0; + __pyx_v_t = __pyx_t_4; + __pyx_t_4 = 0; + __pyx_v_additional_info = __pyx_t_9; + __pyx_t_9 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1943 + * try: + * py_db, t, additional_info = self._args[0:3] + * if not additional_info.suspended_at_unhandled: # Note: only check it here, don't set. # <<<<<<<<<<<<<< + * if is_unhandled_exception(self, py_db, frame, self._last_raise_line, self._raise_lines): + * py_db.stop_on_unhandled_exception(py_db, t, additional_info, self._last_exc_arg) + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_additional_info, __pyx_n_s_suspended_at_unhandled); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1943, __pyx_L8_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1943, __pyx_L8_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_8 = (!__pyx_t_2); + if (__pyx_t_8) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1944 + * py_db, t, additional_info = self._args[0:3] + * if not additional_info.suspended_at_unhandled: # Note: only check it here, don't set. + * if is_unhandled_exception(self, py_db, frame, self._last_raise_line, self._raise_lines): # <<<<<<<<<<<<<< + * py_db.stop_on_unhandled_exception(py_db, t, additional_info, self._last_exc_arg) + * finally: + */ + __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_is_unhandled_exception); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1944, __pyx_L8_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_self->_last_raise_line); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1944, __pyx_L8_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_9))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_9); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_9, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[6] = {__pyx_t_3, ((PyObject *)__pyx_v_self), __pyx_v_py_db, __pyx_v_frame, __pyx_t_4, __pyx_v_self->_raise_lines}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_5, 5+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1944, __pyx_L8_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 1944, __pyx_L8_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_8) { + + /* "_pydevd_bundle/pydevd_cython.pyx":1945 + * if not additional_info.suspended_at_unhandled: # Note: only check it here, don't set. + * if is_unhandled_exception(self, py_db, frame, self._last_raise_line, self._raise_lines): + * py_db.stop_on_unhandled_exception(py_db, t, additional_info, self._last_exc_arg) # <<<<<<<<<<<<<< + * finally: + * # Remove reference to exception after handling it. + */ + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_stop_on_unhandled_exception); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1945, __pyx_L8_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_9))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_9); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_9, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[5] = {__pyx_t_4, __pyx_v_py_db, __pyx_v_t, __pyx_v_additional_info, __pyx_v_self->_last_exc_arg}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_5, 4+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1945, __pyx_L8_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1944 + * py_db, t, additional_info = self._args[0:3] + * if not additional_info.suspended_at_unhandled: # Note: only check it here, don't set. + * if is_unhandled_exception(self, py_db, frame, self._last_raise_line, self._raise_lines): # <<<<<<<<<<<<<< + * py_db.stop_on_unhandled_exception(py_db, t, additional_info, self._last_exc_arg) + * finally: + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1943 + * try: + * py_db, t, additional_info = self._args[0:3] + * if not additional_info.suspended_at_unhandled: # Note: only check it here, don't set. # <<<<<<<<<<<<<< + * if is_unhandled_exception(self, py_db, frame, self._last_raise_line, self._raise_lines): + * py_db.stop_on_unhandled_exception(py_db, t, additional_info, self._last_exc_arg) + */ + } + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1948 + * finally: + * # Remove reference to exception after handling it. + * self._last_exc_arg = None # <<<<<<<<<<<<<< + * + * ret = self.trace_dispatch_and_unhandled_exceptions + */ + /*finally:*/ { + /*normal exit:*/{ + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->_last_exc_arg); + __Pyx_DECREF(__pyx_v_self->_last_exc_arg); + __pyx_v_self->_last_exc_arg = Py_None; + goto __pyx_L9; + } + __pyx_L8_error:; + /*exception exit:*/{ + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14) < 0)) __Pyx_ErrFetch(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14); + __Pyx_XGOTREF(__pyx_t_12); + __Pyx_XGOTREF(__pyx_t_13); + __Pyx_XGOTREF(__pyx_t_14); + __Pyx_XGOTREF(__pyx_t_15); + __Pyx_XGOTREF(__pyx_t_16); + __Pyx_XGOTREF(__pyx_t_17); + __pyx_t_7 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_11 = __pyx_filename; + { + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->_last_exc_arg); + __Pyx_DECREF(__pyx_v_self->_last_exc_arg); + __pyx_v_self->_last_exc_arg = Py_None; + } + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_15); + __Pyx_XGIVEREF(__pyx_t_16); + __Pyx_XGIVEREF(__pyx_t_17); + __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17); + } + __Pyx_XGIVEREF(__pyx_t_12); + __Pyx_XGIVEREF(__pyx_t_13); + __Pyx_XGIVEREF(__pyx_t_14); + __Pyx_ErrRestore(__pyx_t_12, __pyx_t_13, __pyx_t_14); + __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; + __pyx_lineno = __pyx_t_7; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_11; + goto __pyx_L1_error; + } + __pyx_L9:; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1939 + * self._last_raise_line = frame.f_lineno + * + * elif event == "return" and self._last_exc_arg is not None: # <<<<<<<<<<<<<< + * # For unhandled exceptions we actually track the return when at the topmost level. + * try: + */ + } + __pyx_L4:; + + /* "_pydevd_bundle/pydevd_cython.pyx":1950 + * self._last_exc_arg = None + * + * ret = self.trace_dispatch_and_unhandled_exceptions # <<<<<<<<<<<<<< + * + * # Need to reset (the call to _frame_trace_dispatch may have changed it). + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch_and_unhandled_exc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1950, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_ret = __pyx_t_1; + __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1955 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * frame.f_trace = SafeCallWrapper(ret) # <<<<<<<<<<<<<< + * # ELSE + * # frame.f_trace = ret + */ + __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper), __pyx_v_ret); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1955, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (__Pyx_PyObject_SetAttrStr(__pyx_v_frame, __pyx_n_s_f_trace, __pyx_t_1) < 0) __PYX_ERR(0, 1955, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1960 + * # ENDIF + * # fmt: on + * return ret # <<<<<<<<<<<<<< + * + * def get_trace_dispatch_func(self): + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_ret); + __pyx_r = __pyx_v_ret; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1927 + * # fmt: on + * + * def trace_dispatch_and_unhandled_exceptions(self, frame, event, arg): # <<<<<<<<<<<<<< + * # DEBUG = 'code_to_debug' in frame.f_code.co_filename + * # if DEBUG: print('trace_dispatch_and_unhandled_exceptions: %s %s %s %s %s %s' % (event, frame.f_code.co_name, frame.f_code.co_filename, frame.f_code.co_firstlineno, self._frame_trace_dispatch, frame.f_lineno)) + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.TopLevelThreadTracerNoBackFrame.trace_dispatch_and_unhandled_exceptions", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_frame_trace_dispatch); + __Pyx_XDECREF(__pyx_v_py_db); + __Pyx_XDECREF(__pyx_v_t); + __Pyx_XDECREF(__pyx_v_additional_info); + __Pyx_XDECREF(__pyx_v_ret); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":1962 + * return ret + * + * def get_trace_dispatch_func(self): # <<<<<<<<<<<<<< + * return self.trace_dispatch_and_unhandled_exceptions + * + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_5get_trace_dispatch_func(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_5get_trace_dispatch_func = {"get_trace_dispatch_func", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_5get_trace_dispatch_func, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_5get_trace_dispatch_func(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_trace_dispatch_func (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { + __Pyx_RaiseArgtupleInvalid("get_trace_dispatch_func", 1, 0, 0, __pyx_nargs); return NULL;} + if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "get_trace_dispatch_func", 0))) return NULL; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_4get_trace_dispatch_func(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_4get_trace_dispatch_func(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get_trace_dispatch_func", 1); + + /* "_pydevd_bundle/pydevd_cython.pyx":1963 + * + * def get_trace_dispatch_func(self): + * return self.trace_dispatch_and_unhandled_exceptions # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace_dispatch_and_unhandled_exc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1963, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1962 + * return ret + * + * def get_trace_dispatch_func(self): # <<<<<<<<<<<<<< + * return self.trace_dispatch_and_unhandled_exceptions + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.TopLevelThreadTracerNoBackFrame.get_trace_dispatch_func", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":1889 + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cdef class TopLevelThreadTracerNoBackFrame: + * cdef public object _frame_trace_dispatch; # <<<<<<<<<<<<<< + * cdef public tuple _args; + * cdef public object try_except_infos; + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_21_frame_trace_dispatch_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_21_frame_trace_dispatch_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_21_frame_trace_dispatch___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_21_frame_trace_dispatch___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->_frame_trace_dispatch); + __pyx_r = __pyx_v_self->_frame_trace_dispatch; + goto __pyx_L0; + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_21_frame_trace_dispatch_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_21_frame_trace_dispatch_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_21_frame_trace_dispatch_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_21_frame_trace_dispatch_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__", 1); + __Pyx_INCREF(__pyx_v_value); + __Pyx_GIVEREF(__pyx_v_value); + __Pyx_GOTREF(__pyx_v_self->_frame_trace_dispatch); + __Pyx_DECREF(__pyx_v_self->_frame_trace_dispatch); + __pyx_v_self->_frame_trace_dispatch = __pyx_v_value; + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_21_frame_trace_dispatch_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_21_frame_trace_dispatch_5__del__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_21_frame_trace_dispatch_4__del__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_21_frame_trace_dispatch_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 1); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->_frame_trace_dispatch); + __Pyx_DECREF(__pyx_v_self->_frame_trace_dispatch); + __pyx_v_self->_frame_trace_dispatch = Py_None; + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":1890 + * cdef class TopLevelThreadTracerNoBackFrame: + * cdef public object _frame_trace_dispatch; + * cdef public tuple _args; # <<<<<<<<<<<<<< + * cdef public object try_except_infos; + * cdef public object _last_exc_arg; + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_5_args_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_5_args_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_5_args___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_5_args___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->_args); + __pyx_r = __pyx_v_self->_args; + goto __pyx_L0; + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_5_args_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_5_args_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_5_args_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_5_args_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__set__", 1); + if (!(likely(PyTuple_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v_value))) __PYX_ERR(0, 1890, __pyx_L1_error) + __pyx_t_1 = __pyx_v_value; + __Pyx_INCREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v_self->_args); + __Pyx_DECREF(__pyx_v_self->_args); + __pyx_v_self->_args = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.TopLevelThreadTracerNoBackFrame._args.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_5_args_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_5_args_5__del__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_5_args_4__del__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_5_args_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 1); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->_args); + __Pyx_DECREF(__pyx_v_self->_args); + __pyx_v_self->_args = ((PyObject*)Py_None); + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":1891 + * cdef public object _frame_trace_dispatch; + * cdef public tuple _args; + * cdef public object try_except_infos; # <<<<<<<<<<<<<< + * cdef public object _last_exc_arg; + * cdef public set _raise_lines; + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_16try_except_infos_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_16try_except_infos_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_16try_except_infos___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_16try_except_infos___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->try_except_infos); + __pyx_r = __pyx_v_self->try_except_infos; + goto __pyx_L0; + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_16try_except_infos_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_16try_except_infos_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_16try_except_infos_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_16try_except_infos_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__", 1); + __Pyx_INCREF(__pyx_v_value); + __Pyx_GIVEREF(__pyx_v_value); + __Pyx_GOTREF(__pyx_v_self->try_except_infos); + __Pyx_DECREF(__pyx_v_self->try_except_infos); + __pyx_v_self->try_except_infos = __pyx_v_value; + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_16try_except_infos_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_16try_except_infos_5__del__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_16try_except_infos_4__del__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_16try_except_infos_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 1); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->try_except_infos); + __Pyx_DECREF(__pyx_v_self->try_except_infos); + __pyx_v_self->try_except_infos = Py_None; + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":1892 + * cdef public tuple _args; + * cdef public object try_except_infos; + * cdef public object _last_exc_arg; # <<<<<<<<<<<<<< + * cdef public set _raise_lines; + * cdef public int _last_raise_line; + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_13_last_exc_arg_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_13_last_exc_arg_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_13_last_exc_arg___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_13_last_exc_arg___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->_last_exc_arg); + __pyx_r = __pyx_v_self->_last_exc_arg; + goto __pyx_L0; + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_13_last_exc_arg_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_13_last_exc_arg_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_13_last_exc_arg_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_13_last_exc_arg_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__", 1); + __Pyx_INCREF(__pyx_v_value); + __Pyx_GIVEREF(__pyx_v_value); + __Pyx_GOTREF(__pyx_v_self->_last_exc_arg); + __Pyx_DECREF(__pyx_v_self->_last_exc_arg); + __pyx_v_self->_last_exc_arg = __pyx_v_value; + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_13_last_exc_arg_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_13_last_exc_arg_5__del__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_13_last_exc_arg_4__del__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_13_last_exc_arg_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 1); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->_last_exc_arg); + __Pyx_DECREF(__pyx_v_self->_last_exc_arg); + __pyx_v_self->_last_exc_arg = Py_None; + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":1893 + * cdef public object try_except_infos; + * cdef public object _last_exc_arg; + * cdef public set _raise_lines; # <<<<<<<<<<<<<< + * cdef public int _last_raise_line; + * def __init__(self, frame_trace_dispatch, tuple args): + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_12_raise_lines_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_12_raise_lines_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_12_raise_lines___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_12_raise_lines___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->_raise_lines); + __pyx_r = __pyx_v_self->_raise_lines; + goto __pyx_L0; + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_12_raise_lines_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_12_raise_lines_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_12_raise_lines_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_12_raise_lines_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__set__", 1); + if (!(likely(PySet_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("set", __pyx_v_value))) __PYX_ERR(0, 1893, __pyx_L1_error) + __pyx_t_1 = __pyx_v_value; + __Pyx_INCREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v_self->_raise_lines); + __Pyx_DECREF(__pyx_v_self->_raise_lines); + __pyx_v_self->_raise_lines = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.TopLevelThreadTracerNoBackFrame._raise_lines.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_12_raise_lines_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_12_raise_lines_5__del__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_12_raise_lines_4__del__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_12_raise_lines_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 1); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->_raise_lines); + __Pyx_DECREF(__pyx_v_self->_raise_lines); + __pyx_v_self->_raise_lines = ((PyObject*)Py_None); + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":1894 + * cdef public object _last_exc_arg; + * cdef public set _raise_lines; + * cdef public int _last_raise_line; # <<<<<<<<<<<<<< + * def __init__(self, frame_trace_dispatch, tuple args): + * self._frame_trace_dispatch = frame_trace_dispatch + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_16_last_raise_line_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_16_last_raise_line_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_16_last_raise_line___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_16_last_raise_line___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_last_raise_line); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1894, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.TopLevelThreadTracerNoBackFrame._last_raise_line.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_16_last_raise_line_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_16_last_raise_line_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_16_last_raise_line_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_16_last_raise_line_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + int __pyx_t_1; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1894, __pyx_L1_error) + __pyx_v_self->_last_raise_line = __pyx_t_1; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.TopLevelThreadTracerNoBackFrame._last_raise_line.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_7__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_7__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_7__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { + __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} + if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_6__reduce_cython__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_6__reduce_cython__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *__pyx_v_self) { + PyObject *__pyx_v_state = 0; + PyObject *__pyx_v__dict = 0; + int __pyx_v_use_setstate; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + int __pyx_t_3; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__reduce_cython__", 1); + + /* "(tree fragment)":5 + * cdef object _dict + * cdef bint use_setstate + * state = (self._args, self._frame_trace_dispatch, self._last_exc_arg, self._last_raise_line, self._raise_lines, self.try_except_infos) # <<<<<<<<<<<<<< + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: + */ + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_last_raise_line); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyTuple_New(6); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_v_self->_args); + __Pyx_GIVEREF(__pyx_v_self->_args); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self->_args)) __PYX_ERR(2, 5, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_self->_frame_trace_dispatch); + __Pyx_GIVEREF(__pyx_v_self->_frame_trace_dispatch); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self->_frame_trace_dispatch)) __PYX_ERR(2, 5, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_self->_last_exc_arg); + __Pyx_GIVEREF(__pyx_v_self->_last_exc_arg); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_self->_last_exc_arg)) __PYX_ERR(2, 5, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_1)) __PYX_ERR(2, 5, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_self->_raise_lines); + __Pyx_GIVEREF(__pyx_v_self->_raise_lines); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_v_self->_raise_lines)) __PYX_ERR(2, 5, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_self->try_except_infos); + __Pyx_GIVEREF(__pyx_v_self->try_except_infos); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 5, __pyx_v_self->try_except_infos)) __PYX_ERR(2, 5, __pyx_L1_error); + __pyx_t_1 = 0; + __pyx_v_state = ((PyObject*)__pyx_t_2); + __pyx_t_2 = 0; + + /* "(tree fragment)":6 + * cdef bint use_setstate + * state = (self._args, self._frame_trace_dispatch, self._last_exc_arg, self._last_raise_line, self._raise_lines, self.try_except_infos) + * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< + * if _dict is not None: + * state += (_dict,) + */ + __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_v__dict = __pyx_t_2; + __pyx_t_2 = 0; + + /* "(tree fragment)":7 + * state = (self._args, self._frame_trace_dispatch, self._last_exc_arg, self._last_raise_line, self._raise_lines, self.try_except_infos) + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: # <<<<<<<<<<<<<< + * state += (_dict,) + * use_setstate = True + */ + __pyx_t_3 = (__pyx_v__dict != Py_None); + if (__pyx_t_3) { + + /* "(tree fragment)":8 + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: + * state += (_dict,) # <<<<<<<<<<<<<< + * use_setstate = True + * else: + */ + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_v__dict); + __Pyx_GIVEREF(__pyx_v__dict); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict)) __PYX_ERR(2, 8, __pyx_L1_error); + __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1)); + __pyx_t_1 = 0; + + /* "(tree fragment)":9 + * if _dict is not None: + * state += (_dict,) + * use_setstate = True # <<<<<<<<<<<<<< + * else: + * use_setstate = self._args is not None or self._frame_trace_dispatch is not None or self._last_exc_arg is not None or self._raise_lines is not None or self.try_except_infos is not None + */ + __pyx_v_use_setstate = 1; + + /* "(tree fragment)":7 + * state = (self._args, self._frame_trace_dispatch, self._last_exc_arg, self._last_raise_line, self._raise_lines, self.try_except_infos) + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: # <<<<<<<<<<<<<< + * state += (_dict,) + * use_setstate = True + */ + goto __pyx_L3; + } + + /* "(tree fragment)":11 + * use_setstate = True + * else: + * use_setstate = self._args is not None or self._frame_trace_dispatch is not None or self._last_exc_arg is not None or self._raise_lines is not None or self.try_except_infos is not None # <<<<<<<<<<<<<< + * if use_setstate: + * return __pyx_unpickle_TopLevelThreadTracerNoBackFrame, (type(self), 0x3f5f7e9, None), state + */ + /*else*/ { + __pyx_t_4 = (__pyx_v_self->_args != ((PyObject*)Py_None)); + if (!__pyx_t_4) { + } else { + __pyx_t_3 = __pyx_t_4; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_4 = (__pyx_v_self->_frame_trace_dispatch != Py_None); + if (!__pyx_t_4) { + } else { + __pyx_t_3 = __pyx_t_4; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_4 = (__pyx_v_self->_last_exc_arg != Py_None); + if (!__pyx_t_4) { + } else { + __pyx_t_3 = __pyx_t_4; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_4 = (__pyx_v_self->_raise_lines != ((PyObject*)Py_None)); + if (!__pyx_t_4) { + } else { + __pyx_t_3 = __pyx_t_4; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_4 = (__pyx_v_self->try_except_infos != Py_None); + __pyx_t_3 = __pyx_t_4; + __pyx_L4_bool_binop_done:; + __pyx_v_use_setstate = __pyx_t_3; + } + __pyx_L3:; + + /* "(tree fragment)":12 + * else: + * use_setstate = self._args is not None or self._frame_trace_dispatch is not None or self._last_exc_arg is not None or self._raise_lines is not None or self.try_except_infos is not None + * if use_setstate: # <<<<<<<<<<<<<< + * return __pyx_unpickle_TopLevelThreadTracerNoBackFrame, (type(self), 0x3f5f7e9, None), state + * else: + */ + if (__pyx_v_use_setstate) { + + /* "(tree fragment)":13 + * use_setstate = self._args is not None or self._frame_trace_dispatch is not None or self._last_exc_arg is not None or self._raise_lines is not None or self.try_except_infos is not None + * if use_setstate: + * return __pyx_unpickle_TopLevelThreadTracerNoBackFrame, (type(self), 0x3f5f7e9, None), state # <<<<<<<<<<<<<< + * else: + * return __pyx_unpickle_TopLevelThreadTracerNoBackFrame, (type(self), 0x3f5f7e9, state) + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_TopLevelThreadTra_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(2, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_int_66451433); + __Pyx_GIVEREF(__pyx_int_66451433); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_66451433)) __PYX_ERR(2, 13, __pyx_L1_error); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None)) __PYX_ERR(2, 13, __pyx_L1_error); + __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1)) __PYX_ERR(2, 13, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2)) __PYX_ERR(2, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_state); + __Pyx_GIVEREF(__pyx_v_state); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state)) __PYX_ERR(2, 13, __pyx_L1_error); + __pyx_t_1 = 0; + __pyx_t_2 = 0; + __pyx_r = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L0; + + /* "(tree fragment)":12 + * else: + * use_setstate = self._args is not None or self._frame_trace_dispatch is not None or self._last_exc_arg is not None or self._raise_lines is not None or self.try_except_infos is not None + * if use_setstate: # <<<<<<<<<<<<<< + * return __pyx_unpickle_TopLevelThreadTracerNoBackFrame, (type(self), 0x3f5f7e9, None), state + * else: + */ + } + + /* "(tree fragment)":15 + * return __pyx_unpickle_TopLevelThreadTracerNoBackFrame, (type(self), 0x3f5f7e9, None), state + * else: + * return __pyx_unpickle_TopLevelThreadTracerNoBackFrame, (type(self), 0x3f5f7e9, state) # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * __pyx_unpickle_TopLevelThreadTracerNoBackFrame__set_state(self, __pyx_state) + */ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_TopLevelThreadTra_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(2, 15, __pyx_L1_error); + __Pyx_INCREF(__pyx_int_66451433); + __Pyx_GIVEREF(__pyx_int_66451433); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_66451433)) __PYX_ERR(2, 15, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_state); + __Pyx_GIVEREF(__pyx_v_state); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state)) __PYX_ERR(2, 15, __pyx_L1_error); + __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_5); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5)) __PYX_ERR(2, 15, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2)) __PYX_ERR(2, 15, __pyx_L1_error); + __pyx_t_5 = 0; + __pyx_t_2 = 0; + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + } + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.TopLevelThreadTracerNoBackFrame.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_state); + __Pyx_XDECREF(__pyx_v__dict); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":16 + * else: + * return __pyx_unpickle_TopLevelThreadTracerNoBackFrame, (type(self), 0x3f5f7e9, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_TopLevelThreadTracerNoBackFrame__set_state(self, __pyx_state) + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_9__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_9__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_9__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 16, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(2, 16, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + } + __pyx_v___pyx_state = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 16, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.TopLevelThreadTracerNoBackFrame.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_8__setstate_cython__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *)__pyx_v_self), __pyx_v___pyx_state); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_8__setstate_cython__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *__pyx_v_self, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__setstate_cython__", 1); + + /* "(tree fragment)":17 + * return __pyx_unpickle_TopLevelThreadTracerNoBackFrame, (type(self), 0x3f5f7e9, state) + * def __setstate_cython__(self, __pyx_state): + * __pyx_unpickle_TopLevelThreadTracerNoBackFrame__set_state(self, __pyx_state) # <<<<<<<<<<<<<< + */ + if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(2, 17, __pyx_L1_error) + __pyx_t_1 = __pyx_f_14_pydevd_bundle_13pydevd_cython___pyx_unpickle_TopLevelThreadTracerNoBackFrame__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle_TopLevelThreadTracerNoBackFrame, (type(self), 0x3f5f7e9, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_TopLevelThreadTracerNoBackFrame__set_state(self, __pyx_state) + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.TopLevelThreadTracerNoBackFrame.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":1970 + * cdef class ThreadTracer: + * cdef public tuple _args; + * def __init__(self, tuple args): # <<<<<<<<<<<<<< + * self._args = args + * # ELSE + */ + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_args = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_args,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_args)) != 0)) { + (void)__Pyx_Arg_NewRef_VARARGS(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1970, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(0, 1970, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); + } + __pyx_v_args = ((PyObject*)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1970, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.ThreadTracer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return -1; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_args), (&PyTuple_Type), 1, "args", 1))) __PYX_ERR(0, 1970, __pyx_L1_error) + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_12ThreadTracer___init__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_ThreadTracer *)__pyx_v_self), __pyx_v_args); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = -1; + __pyx_L0:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_12ThreadTracer___init__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_ThreadTracer *__pyx_v_self, PyObject *__pyx_v_args) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__init__", 1); + + /* "_pydevd_bundle/pydevd_cython.pyx":1971 + * cdef public tuple _args; + * def __init__(self, tuple args): + * self._args = args # <<<<<<<<<<<<<< + * # ELSE + * # class ThreadTracer(object): + */ + __Pyx_INCREF(__pyx_v_args); + __Pyx_GIVEREF(__pyx_v_args); + __Pyx_GOTREF(__pyx_v_self->_args); + __Pyx_DECREF(__pyx_v_self->_args); + __pyx_v_self->_args = __pyx_v_args; + + /* "_pydevd_bundle/pydevd_cython.pyx":1970 + * cdef class ThreadTracer: + * cdef public tuple _args; + * def __init__(self, tuple args): # <<<<<<<<<<<<<< + * self._args = args + * # ELSE + */ + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":1980 + * # fmt: on + * + * def __call__(self, frame, event, arg): # <<<<<<<<<<<<<< + * """This is the callback used when we enter some context in the debugger. + * + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_3__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +PyDoc_STRVAR(__pyx_doc_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_2__call__, "This is the callback used when we enter some context in the debugger.\n\n We also decorate the thread we are in with info about the debugging.\n The attributes added are:\n pydev_state\n pydev_step_stop\n pydev_step_cmd\n pydev_notify_kill\n\n :param PyDB py_db:\n This is the global debugger (this method should actually be added as a method to it).\n "); +#if CYTHON_UPDATE_DESCRIPTOR_DOC +struct wrapperbase __pyx_wrapperbase_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_2__call__; +#endif +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_3__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_frame = 0; + PyObject *__pyx_v_event = 0; + PyObject *__pyx_v_arg = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__call__ (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_frame,&__pyx_n_s_event,&__pyx_n_s_arg,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_frame)) != 0)) { + (void)__Pyx_Arg_NewRef_VARARGS(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1980, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_event)) != 0)) { + (void)__Pyx_Arg_NewRef_VARARGS(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1980, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("__call__", 1, 3, 3, 1); __PYX_ERR(0, 1980, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_arg)) != 0)) { + (void)__Pyx_Arg_NewRef_VARARGS(values[2]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1980, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("__call__", 1, 3, 3, 2); __PYX_ERR(0, 1980, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__call__") < 0)) __PYX_ERR(0, 1980, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 3)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); + values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1); + values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2); + } + __pyx_v_frame = values[0]; + __pyx_v_event = values[1]; + __pyx_v_arg = values[2]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__call__", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 1980, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.ThreadTracer.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_2__call__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_ThreadTracer *)__pyx_v_self), __pyx_v_frame, __pyx_v_event, __pyx_v_arg); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_2__call__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_ThreadTracer *__pyx_v_self, PyObject *__pyx_v_frame, PyObject *__pyx_v_event, PyObject *__pyx_v_arg) { + int __pyx_v_pydev_step_cmd; + PyObject *__pyx_v_frame_cache_key = 0; + PyObject *__pyx_v_cache_skips = 0; + int __pyx_v_is_stepping; + PyObject *__pyx_v_abs_path_canonical_path_and_base = 0; + struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_additional_info = 0; + PyObject *__pyx_v_py_db = NULL; + PyObject *__pyx_v_t = NULL; + PyObject *__pyx_v_frame_skips_cache = NULL; + PyObject *__pyx_v_back_frame = NULL; + PyObject *__pyx_v_back_frame_cache_key = NULL; + PyObject *__pyx_v_file_type = NULL; + PyObject *__pyx_v_ret = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + int __pyx_t_7; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + int __pyx_t_11; + unsigned int __pyx_t_12; + int __pyx_t_13; + int __pyx_t_14; + PyObject *__pyx_t_15 = NULL; + PyObject *__pyx_t_16 = NULL; + PyObject *__pyx_t_17 = NULL; + int __pyx_t_18; + char const *__pyx_t_19; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__call__", 1); + + /* "_pydevd_bundle/pydevd_cython.pyx":2008 + * # DEBUG = 'code_to_debug' in frame.f_code.co_filename + * # if DEBUG: print('ENTER: trace_dispatch: %s %s %s %s' % (frame.f_code.co_filename, frame.f_lineno, event, frame.f_code.co_name)) + * py_db, t, additional_info, cache_skips, frame_skips_cache = self._args # <<<<<<<<<<<<<< + * if additional_info.is_tracing: + * return None if event == "call" else NO_FTRACE # we don't wan't to trace code invoked from pydevd_frame.trace_dispatch + */ + __pyx_t_1 = __pyx_v_self->_args; + __Pyx_INCREF(__pyx_t_1); + if (likely(__pyx_t_1 != Py_None)) { + PyObject* sequence = __pyx_t_1; + Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); + if (unlikely(size != 5)) { + if (size > 5) __Pyx_RaiseTooManyValuesError(5); + else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); + __PYX_ERR(0, 2008, __pyx_L1_error) + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); + __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); + __pyx_t_4 = PyTuple_GET_ITEM(sequence, 2); + __pyx_t_5 = PyTuple_GET_ITEM(sequence, 3); + __pyx_t_6 = PyTuple_GET_ITEM(sequence, 4); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(__pyx_t_6); + #else + { + Py_ssize_t i; + PyObject** temps[5] = {&__pyx_t_2,&__pyx_t_3,&__pyx_t_4,&__pyx_t_5,&__pyx_t_6}; + for (i=0; i < 5; i++) { + PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 2008, __pyx_L1_error) + __Pyx_GOTREF(item); + *(temps[i]) = item; + } + } + #endif + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } else { + __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(0, 2008, __pyx_L1_error) + } + if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo))))) __PYX_ERR(0, 2008, __pyx_L1_error) + if (!(likely(PyDict_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_5))) __PYX_ERR(0, 2008, __pyx_L1_error) + __pyx_v_py_db = __pyx_t_2; + __pyx_t_2 = 0; + __pyx_v_t = __pyx_t_3; + __pyx_t_3 = 0; + __pyx_v_additional_info = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_t_4); + __pyx_t_4 = 0; + __pyx_v_cache_skips = ((PyObject*)__pyx_t_5); + __pyx_t_5 = 0; + __pyx_v_frame_skips_cache = __pyx_t_6; + __pyx_t_6 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":2009 + * # if DEBUG: print('ENTER: trace_dispatch: %s %s %s %s' % (frame.f_code.co_filename, frame.f_lineno, event, frame.f_code.co_name)) + * py_db, t, additional_info, cache_skips, frame_skips_cache = self._args + * if additional_info.is_tracing: # <<<<<<<<<<<<<< + * return None if event == "call" else NO_FTRACE # we don't wan't to trace code invoked from pydevd_frame.trace_dispatch + * + */ + __pyx_t_7 = (__pyx_v_additional_info->is_tracing != 0); + if (__pyx_t_7) { + + /* "_pydevd_bundle/pydevd_cython.pyx":2010 + * py_db, t, additional_info, cache_skips, frame_skips_cache = self._args + * if additional_info.is_tracing: + * return None if event == "call" else NO_FTRACE # we don't wan't to trace code invoked from pydevd_frame.trace_dispatch # <<<<<<<<<<<<<< + * + * additional_info.is_tracing += 1 + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_call, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 2010, __pyx_L1_error) + if (__pyx_t_7) { + __Pyx_INCREF(Py_None); + __pyx_t_1 = Py_None; + } else { + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2010, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_1 = __pyx_t_6; + __pyx_t_6 = 0; + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":2009 + * # if DEBUG: print('ENTER: trace_dispatch: %s %s %s %s' % (frame.f_code.co_filename, frame.f_lineno, event, frame.f_code.co_name)) + * py_db, t, additional_info, cache_skips, frame_skips_cache = self._args + * if additional_info.is_tracing: # <<<<<<<<<<<<<< + * return None if event == "call" else NO_FTRACE # we don't wan't to trace code invoked from pydevd_frame.trace_dispatch + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":2012 + * return None if event == "call" else NO_FTRACE # we don't wan't to trace code invoked from pydevd_frame.trace_dispatch + * + * additional_info.is_tracing += 1 # <<<<<<<<<<<<<< + * try: + * pydev_step_cmd = additional_info.pydev_step_cmd + */ + __pyx_v_additional_info->is_tracing = (__pyx_v_additional_info->is_tracing + 1); + + /* "_pydevd_bundle/pydevd_cython.pyx":2013 + * + * additional_info.is_tracing += 1 + * try: # <<<<<<<<<<<<<< + * pydev_step_cmd = additional_info.pydev_step_cmd + * is_stepping = pydev_step_cmd != -1 + */ + /*try:*/ { + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10); + __Pyx_XGOTREF(__pyx_t_8); + __Pyx_XGOTREF(__pyx_t_9); + __Pyx_XGOTREF(__pyx_t_10); + /*try:*/ { + + /* "_pydevd_bundle/pydevd_cython.pyx":2014 + * additional_info.is_tracing += 1 + * try: + * pydev_step_cmd = additional_info.pydev_step_cmd # <<<<<<<<<<<<<< + * is_stepping = pydev_step_cmd != -1 + * if py_db.pydb_disposed: + */ + __pyx_t_11 = __pyx_v_additional_info->pydev_step_cmd; + __pyx_v_pydev_step_cmd = __pyx_t_11; + + /* "_pydevd_bundle/pydevd_cython.pyx":2015 + * try: + * pydev_step_cmd = additional_info.pydev_step_cmd + * is_stepping = pydev_step_cmd != -1 # <<<<<<<<<<<<<< + * if py_db.pydb_disposed: + * return None if event == "call" else NO_FTRACE + */ + __pyx_v_is_stepping = (__pyx_v_pydev_step_cmd != -1L); + + /* "_pydevd_bundle/pydevd_cython.pyx":2016 + * pydev_step_cmd = additional_info.pydev_step_cmd + * is_stepping = pydev_step_cmd != -1 + * if py_db.pydb_disposed: # <<<<<<<<<<<<<< + * return None if event == "call" else NO_FTRACE + * + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_pydb_disposed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2016, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 2016, __pyx_L7_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_7) { + + /* "_pydevd_bundle/pydevd_cython.pyx":2017 + * is_stepping = pydev_step_cmd != -1 + * if py_db.pydb_disposed: + * return None if event == "call" else NO_FTRACE # <<<<<<<<<<<<<< + * + * # if thread is not alive, cancel trace_dispatch processing + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_call, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 2017, __pyx_L7_error) + if (__pyx_t_7) { + __Pyx_INCREF(Py_None); + __pyx_t_1 = Py_None; + } else { + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2017, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_1 = __pyx_t_6; + __pyx_t_6 = 0; + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L11_try_return; + + /* "_pydevd_bundle/pydevd_cython.pyx":2016 + * pydev_step_cmd = additional_info.pydev_step_cmd + * is_stepping = pydev_step_cmd != -1 + * if py_db.pydb_disposed: # <<<<<<<<<<<<<< + * return None if event == "call" else NO_FTRACE + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":2020 + * + * # if thread is not alive, cancel trace_dispatch processing + * if not is_thread_alive(t): # <<<<<<<<<<<<<< + * py_db.notify_thread_not_alive(get_current_thread_id(t)) + * return None if event == "call" else NO_FTRACE + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_is_thread_alive); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2020, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_5 = NULL; + __pyx_t_12 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_12 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_t}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2020, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 2020, __pyx_L7_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_13 = (!__pyx_t_7); + if (__pyx_t_13) { + + /* "_pydevd_bundle/pydevd_cython.pyx":2021 + * # if thread is not alive, cancel trace_dispatch processing + * if not is_thread_alive(t): + * py_db.notify_thread_not_alive(get_current_thread_id(t)) # <<<<<<<<<<<<<< + * return None if event == "call" else NO_FTRACE + * + */ + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_notify_thread_not_alive); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2021, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_get_current_thread_id); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2021, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = NULL; + __pyx_t_12 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_12 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_t}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2021, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __pyx_t_4 = NULL; + __pyx_t_12 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_12 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_5}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2021, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":2022 + * if not is_thread_alive(t): + * py_db.notify_thread_not_alive(get_current_thread_id(t)) + * return None if event == "call" else NO_FTRACE # <<<<<<<<<<<<<< + * + * # Note: it's important that the context name is also given because we may hit something once + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_13 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_call, Py_EQ)); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(0, 2022, __pyx_L7_error) + if (__pyx_t_13) { + __Pyx_INCREF(Py_None); + __pyx_t_1 = Py_None; + } else { + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2022, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_1 = __pyx_t_6; + __pyx_t_6 = 0; + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L11_try_return; + + /* "_pydevd_bundle/pydevd_cython.pyx":2020 + * + * # if thread is not alive, cancel trace_dispatch processing + * if not is_thread_alive(t): # <<<<<<<<<<<<<< + * py_db.notify_thread_not_alive(get_current_thread_id(t)) + * return None if event == "call" else NO_FTRACE + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":2026 + * # Note: it's important that the context name is also given because we may hit something once + * # in the global context and another in the local context. + * frame_cache_key = frame.f_code # <<<<<<<<<<<<<< + * if frame_cache_key in cache_skips: + * if not is_stepping: + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2026, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_frame_cache_key = __pyx_t_1; + __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":2027 + * # in the global context and another in the local context. + * frame_cache_key = frame.f_code + * if frame_cache_key in cache_skips: # <<<<<<<<<<<<<< + * if not is_stepping: + * # if DEBUG: print('skipped: trace_dispatch (cache hit)', frame_cache_key, frame.f_lineno, event, frame.f_code.co_name) + */ + if (unlikely(__pyx_v_cache_skips == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); + __PYX_ERR(0, 2027, __pyx_L7_error) + } + __pyx_t_13 = (__Pyx_PyDict_ContainsTF(__pyx_v_frame_cache_key, __pyx_v_cache_skips, Py_EQ)); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(0, 2027, __pyx_L7_error) + if (__pyx_t_13) { + + /* "_pydevd_bundle/pydevd_cython.pyx":2028 + * frame_cache_key = frame.f_code + * if frame_cache_key in cache_skips: + * if not is_stepping: # <<<<<<<<<<<<<< + * # if DEBUG: print('skipped: trace_dispatch (cache hit)', frame_cache_key, frame.f_lineno, event, frame.f_code.co_name) + * return None if event == "call" else NO_FTRACE + */ + __pyx_t_13 = (!__pyx_v_is_stepping); + if (__pyx_t_13) { + + /* "_pydevd_bundle/pydevd_cython.pyx":2030 + * if not is_stepping: + * # if DEBUG: print('skipped: trace_dispatch (cache hit)', frame_cache_key, frame.f_lineno, event, frame.f_code.co_name) + * return None if event == "call" else NO_FTRACE # <<<<<<<<<<<<<< + * else: + * # When stepping we can't take into account caching based on the breakpoints (only global filtering). + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_13 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_call, Py_EQ)); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(0, 2030, __pyx_L7_error) + if (__pyx_t_13) { + __Pyx_INCREF(Py_None); + __pyx_t_1 = Py_None; + } else { + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2030, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_1 = __pyx_t_6; + __pyx_t_6 = 0; + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L11_try_return; + + /* "_pydevd_bundle/pydevd_cython.pyx":2028 + * frame_cache_key = frame.f_code + * if frame_cache_key in cache_skips: + * if not is_stepping: # <<<<<<<<<<<<<< + * # if DEBUG: print('skipped: trace_dispatch (cache hit)', frame_cache_key, frame.f_lineno, event, frame.f_code.co_name) + * return None if event == "call" else NO_FTRACE + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":2033 + * else: + * # When stepping we can't take into account caching based on the breakpoints (only global filtering). + * if cache_skips.get(frame_cache_key) == 1: # <<<<<<<<<<<<<< + * if ( + * additional_info.pydev_original_step_cmd in (107, 144) + */ + /*else*/ { + if (unlikely(__pyx_v_cache_skips == Py_None)) { + PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get"); + __PYX_ERR(0, 2033, __pyx_L7_error) + } + __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_cache_skips, __pyx_v_frame_cache_key, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2033, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_13 = (__Pyx_PyInt_BoolEqObjC(__pyx_t_1, __pyx_int_1, 1, 0)); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(0, 2033, __pyx_L7_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_13) { + + /* "_pydevd_bundle/pydevd_cython.pyx":2035 + * if cache_skips.get(frame_cache_key) == 1: + * if ( + * additional_info.pydev_original_step_cmd in (107, 144) # <<<<<<<<<<<<<< + * and not _global_notify_skipped_step_in + * ): + */ + switch (__pyx_v_additional_info->pydev_original_step_cmd) { + case 0x6B: + case 0x90: + __pyx_t_7 = 1; + break; + default: + __pyx_t_7 = 0; + break; + } + __pyx_t_14 = __pyx_t_7; + if (__pyx_t_14) { + } else { + __pyx_t_13 = __pyx_t_14; + goto __pyx_L19_bool_binop_done; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":2036 + * if ( + * additional_info.pydev_original_step_cmd in (107, 144) + * and not _global_notify_skipped_step_in # <<<<<<<<<<<<<< + * ): + * notify_skipped_step_in_because_of_filters(py_db, frame) + */ + __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_v_14_pydevd_bundle_13pydevd_cython__global_notify_skipped_step_in); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 2036, __pyx_L7_error) + __pyx_t_7 = (!__pyx_t_14); + __pyx_t_13 = __pyx_t_7; + __pyx_L19_bool_binop_done:; + + /* "_pydevd_bundle/pydevd_cython.pyx":2034 + * # When stepping we can't take into account caching based on the breakpoints (only global filtering). + * if cache_skips.get(frame_cache_key) == 1: + * if ( # <<<<<<<<<<<<<< + * additional_info.pydev_original_step_cmd in (107, 144) + * and not _global_notify_skipped_step_in + */ + if (__pyx_t_13) { + + /* "_pydevd_bundle/pydevd_cython.pyx":2038 + * and not _global_notify_skipped_step_in + * ): + * notify_skipped_step_in_because_of_filters(py_db, frame) # <<<<<<<<<<<<<< + * + * back_frame = frame.f_back + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_notify_skipped_step_in_because_o); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2038, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_5 = NULL; + __pyx_t_12 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_12 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_py_db, __pyx_v_frame}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_12, 2+__pyx_t_12); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2038, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":2034 + * # When stepping we can't take into account caching based on the breakpoints (only global filtering). + * if cache_skips.get(frame_cache_key) == 1: + * if ( # <<<<<<<<<<<<<< + * additional_info.pydev_original_step_cmd in (107, 144) + * and not _global_notify_skipped_step_in + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":2040 + * notify_skipped_step_in_because_of_filters(py_db, frame) + * + * back_frame = frame.f_back # <<<<<<<<<<<<<< + * if back_frame is not None and pydev_step_cmd in ( + * 107, + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2040, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_back_frame = __pyx_t_1; + __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":2041 + * + * back_frame = frame.f_back + * if back_frame is not None and pydev_step_cmd in ( # <<<<<<<<<<<<<< + * 107, + * 144, + */ + __pyx_t_7 = (__pyx_v_back_frame != Py_None); + if (__pyx_t_7) { + } else { + __pyx_t_13 = __pyx_t_7; + goto __pyx_L22_bool_binop_done; + } + switch (__pyx_v_pydev_step_cmd) { + case 0x6B: + + /* "_pydevd_bundle/pydevd_cython.pyx":2042 + * back_frame = frame.f_back + * if back_frame is not None and pydev_step_cmd in ( + * 107, # <<<<<<<<<<<<<< + * 144, + * 109, + */ + case 0x90: + + /* "_pydevd_bundle/pydevd_cython.pyx":2043 + * if back_frame is not None and pydev_step_cmd in ( + * 107, + * 144, # <<<<<<<<<<<<<< + * 109, + * 160, + */ + case 0x6D: + + /* "_pydevd_bundle/pydevd_cython.pyx":2044 + * 107, + * 144, + * 109, # <<<<<<<<<<<<<< + * 160, + * ): + */ + case 0xA0: + + /* "_pydevd_bundle/pydevd_cython.pyx":2041 + * + * back_frame = frame.f_back + * if back_frame is not None and pydev_step_cmd in ( # <<<<<<<<<<<<<< + * 107, + * 144, + */ + __pyx_t_7 = 1; + break; + default: + __pyx_t_7 = 0; + break; + } + __pyx_t_14 = __pyx_t_7; + __pyx_t_13 = __pyx_t_14; + __pyx_L22_bool_binop_done:; + if (__pyx_t_13) { + + /* "_pydevd_bundle/pydevd_cython.pyx":2047 + * 160, + * ): + * back_frame_cache_key = back_frame.f_code # <<<<<<<<<<<<<< + * if cache_skips.get(back_frame_cache_key) == 1: + * # if DEBUG: print('skipped: trace_dispatch (cache hit: 1)', frame_cache_key, frame.f_lineno, event, frame.f_code.co_name) + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_back_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2047, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_back_frame_cache_key = __pyx_t_1; + __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":2048 + * ): + * back_frame_cache_key = back_frame.f_code + * if cache_skips.get(back_frame_cache_key) == 1: # <<<<<<<<<<<<<< + * # if DEBUG: print('skipped: trace_dispatch (cache hit: 1)', frame_cache_key, frame.f_lineno, event, frame.f_code.co_name) + * return None if event == "call" else NO_FTRACE + */ + if (unlikely(__pyx_v_cache_skips == Py_None)) { + PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get"); + __PYX_ERR(0, 2048, __pyx_L7_error) + } + __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_cache_skips, __pyx_v_back_frame_cache_key, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2048, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_13 = (__Pyx_PyInt_BoolEqObjC(__pyx_t_1, __pyx_int_1, 1, 0)); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(0, 2048, __pyx_L7_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_13) { + + /* "_pydevd_bundle/pydevd_cython.pyx":2050 + * if cache_skips.get(back_frame_cache_key) == 1: + * # if DEBUG: print('skipped: trace_dispatch (cache hit: 1)', frame_cache_key, frame.f_lineno, event, frame.f_code.co_name) + * return None if event == "call" else NO_FTRACE # <<<<<<<<<<<<<< + * else: + * # if DEBUG: print('skipped: trace_dispatch (cache hit: 2)', frame_cache_key, frame.f_lineno, event, frame.f_code.co_name) + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_13 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_call, Py_EQ)); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(0, 2050, __pyx_L7_error) + if (__pyx_t_13) { + __Pyx_INCREF(Py_None); + __pyx_t_1 = Py_None; + } else { + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2050, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_1 = __pyx_t_6; + __pyx_t_6 = 0; + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L11_try_return; + + /* "_pydevd_bundle/pydevd_cython.pyx":2048 + * ): + * back_frame_cache_key = back_frame.f_code + * if cache_skips.get(back_frame_cache_key) == 1: # <<<<<<<<<<<<<< + * # if DEBUG: print('skipped: trace_dispatch (cache hit: 1)', frame_cache_key, frame.f_lineno, event, frame.f_code.co_name) + * return None if event == "call" else NO_FTRACE + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":2041 + * + * back_frame = frame.f_back + * if back_frame is not None and pydev_step_cmd in ( # <<<<<<<<<<<<<< + * 107, + * 144, + */ + goto __pyx_L21; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":2053 + * else: + * # if DEBUG: print('skipped: trace_dispatch (cache hit: 2)', frame_cache_key, frame.f_lineno, event, frame.f_code.co_name) + * return None if event == "call" else NO_FTRACE # <<<<<<<<<<<<<< + * + * try: + */ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __pyx_t_13 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_call, Py_EQ)); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(0, 2053, __pyx_L7_error) + if (__pyx_t_13) { + __Pyx_INCREF(Py_None); + __pyx_t_1 = Py_None; + } else { + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2053, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_1 = __pyx_t_6; + __pyx_t_6 = 0; + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L11_try_return; + } + __pyx_L21:; + + /* "_pydevd_bundle/pydevd_cython.pyx":2033 + * else: + * # When stepping we can't take into account caching based on the breakpoints (only global filtering). + * if cache_skips.get(frame_cache_key) == 1: # <<<<<<<<<<<<<< + * if ( + * additional_info.pydev_original_step_cmd in (107, 144) + */ + } + } + + /* "_pydevd_bundle/pydevd_cython.pyx":2027 + * # in the global context and another in the local context. + * frame_cache_key = frame.f_code + * if frame_cache_key in cache_skips: # <<<<<<<<<<<<<< + * if not is_stepping: + * # if DEBUG: print('skipped: trace_dispatch (cache hit)', frame_cache_key, frame.f_lineno, event, frame.f_code.co_name) + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":2055 + * return None if event == "call" else NO_FTRACE + * + * try: # <<<<<<<<<<<<<< + * # Make fast path faster! + * abs_path_canonical_path_and_base = NORM_PATHS_AND_BASE_CONTAINER[frame.f_code.co_filename] + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17); + __Pyx_XGOTREF(__pyx_t_15); + __Pyx_XGOTREF(__pyx_t_16); + __Pyx_XGOTREF(__pyx_t_17); + /*try:*/ { + + /* "_pydevd_bundle/pydevd_cython.pyx":2057 + * try: + * # Make fast path faster! + * abs_path_canonical_path_and_base = NORM_PATHS_AND_BASE_CONTAINER[frame.f_code.co_filename] # <<<<<<<<<<<<<< + * except: + * abs_path_canonical_path_and_base = get_abs_path_real_path_and_base_from_frame(frame) + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2057, __pyx_L25_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2057, __pyx_L25_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2057, __pyx_L25_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2057, __pyx_L25_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (!(likely(PyTuple_CheckExact(__pyx_t_6))||((__pyx_t_6) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_6))) __PYX_ERR(0, 2057, __pyx_L25_error) + __pyx_v_abs_path_canonical_path_and_base = ((PyObject*)__pyx_t_6); + __pyx_t_6 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":2055 + * return None if event == "call" else NO_FTRACE + * + * try: # <<<<<<<<<<<<<< + * # Make fast path faster! + * abs_path_canonical_path_and_base = NORM_PATHS_AND_BASE_CONTAINER[frame.f_code.co_filename] + */ + } + __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; + __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; + __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; + goto __pyx_L30_try_end; + __pyx_L25_error:; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":2058 + * # Make fast path faster! + * abs_path_canonical_path_and_base = NORM_PATHS_AND_BASE_CONTAINER[frame.f_code.co_filename] + * except: # <<<<<<<<<<<<<< + * abs_path_canonical_path_and_base = get_abs_path_real_path_and_base_from_frame(frame) + * + */ + /*except:*/ { + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.ThreadTracer.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_1) < 0) __PYX_ERR(0, 2058, __pyx_L27_except_error) + __Pyx_XGOTREF(__pyx_t_6); + __Pyx_XGOTREF(__pyx_t_5); + __Pyx_XGOTREF(__pyx_t_1); + + /* "_pydevd_bundle/pydevd_cython.pyx":2059 + * abs_path_canonical_path_and_base = NORM_PATHS_AND_BASE_CONTAINER[frame.f_code.co_filename] + * except: + * abs_path_canonical_path_and_base = get_abs_path_real_path_and_base_from_frame(frame) # <<<<<<<<<<<<<< + * + * file_type = py_db.get_file_type( + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_get_abs_path_real_path_and_base); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2059, __pyx_L27_except_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = NULL; + __pyx_t_12 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_12 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_frame}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2059, __pyx_L27_except_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + if (!(likely(PyTuple_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_4))) __PYX_ERR(0, 2059, __pyx_L27_except_error) + __Pyx_XDECREF_SET(__pyx_v_abs_path_canonical_path_and_base, ((PyObject*)__pyx_t_4)); + __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + goto __pyx_L26_exception_handled; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":2055 + * return None if event == "call" else NO_FTRACE + * + * try: # <<<<<<<<<<<<<< + * # Make fast path faster! + * abs_path_canonical_path_and_base = NORM_PATHS_AND_BASE_CONTAINER[frame.f_code.co_filename] + */ + __pyx_L27_except_error:; + __Pyx_XGIVEREF(__pyx_t_15); + __Pyx_XGIVEREF(__pyx_t_16); + __Pyx_XGIVEREF(__pyx_t_17); + __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17); + goto __pyx_L7_error; + __pyx_L26_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_15); + __Pyx_XGIVEREF(__pyx_t_16); + __Pyx_XGIVEREF(__pyx_t_17); + __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17); + __pyx_L30_try_end:; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":2061 + * abs_path_canonical_path_and_base = get_abs_path_real_path_and_base_from_frame(frame) + * + * file_type = py_db.get_file_type( # <<<<<<<<<<<<<< + * frame, abs_path_canonical_path_and_base + * ) # we don't want to debug threading or anything related to pydevd + */ + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_get_file_type); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2061, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_5); + + /* "_pydevd_bundle/pydevd_cython.pyx":2062 + * + * file_type = py_db.get_file_type( + * frame, abs_path_canonical_path_and_base # <<<<<<<<<<<<<< + * ) # we don't want to debug threading or anything related to pydevd + * + */ + __pyx_t_6 = NULL; + __pyx_t_12 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_12 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_v_frame, __pyx_v_abs_path_canonical_path_and_base}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_12, 2+__pyx_t_12); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2061, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __pyx_v_file_type = __pyx_t_1; + __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":2065 + * ) # we don't want to debug threading or anything related to pydevd + * + * if file_type is not None: # <<<<<<<<<<<<<< + * if file_type == 1: # inlining LIB_FILE = 1 + * if not py_db.in_project_scope(frame, abs_path_canonical_path_and_base[0]): + */ + __pyx_t_13 = (__pyx_v_file_type != Py_None); + if (__pyx_t_13) { + + /* "_pydevd_bundle/pydevd_cython.pyx":2066 + * + * if file_type is not None: + * if file_type == 1: # inlining LIB_FILE = 1 # <<<<<<<<<<<<<< + * if not py_db.in_project_scope(frame, abs_path_canonical_path_and_base[0]): + * # if DEBUG: print('skipped: trace_dispatch (not in scope)', abs_path_canonical_path_and_base[2], frame.f_lineno, event, frame.f_code.co_name, file_type) + */ + __pyx_t_13 = (__Pyx_PyInt_BoolEqObjC(__pyx_v_file_type, __pyx_int_1, 1, 0)); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(0, 2066, __pyx_L7_error) + if (__pyx_t_13) { + + /* "_pydevd_bundle/pydevd_cython.pyx":2067 + * if file_type is not None: + * if file_type == 1: # inlining LIB_FILE = 1 + * if not py_db.in_project_scope(frame, abs_path_canonical_path_and_base[0]): # <<<<<<<<<<<<<< + * # if DEBUG: print('skipped: trace_dispatch (not in scope)', abs_path_canonical_path_and_base[2], frame.f_lineno, event, frame.f_code.co_name, file_type) + * cache_skips[frame_cache_key] = 1 + */ + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_in_project_scope); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2067, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_5); + if (unlikely(__pyx_v_abs_path_canonical_path_and_base == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 2067, __pyx_L7_error) + } + __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v_abs_path_canonical_path_and_base, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2067, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_4 = NULL; + __pyx_t_12 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_12 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_v_frame, __pyx_t_6}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_12, 2+__pyx_t_12); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2067, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(0, 2067, __pyx_L7_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_14 = (!__pyx_t_13); + if (__pyx_t_14) { + + /* "_pydevd_bundle/pydevd_cython.pyx":2069 + * if not py_db.in_project_scope(frame, abs_path_canonical_path_and_base[0]): + * # if DEBUG: print('skipped: trace_dispatch (not in scope)', abs_path_canonical_path_and_base[2], frame.f_lineno, event, frame.f_code.co_name, file_type) + * cache_skips[frame_cache_key] = 1 # <<<<<<<<<<<<<< + * return None if event == "call" else NO_FTRACE + * else: + */ + if (unlikely(__pyx_v_cache_skips == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 2069, __pyx_L7_error) + } + if (unlikely((PyDict_SetItem(__pyx_v_cache_skips, __pyx_v_frame_cache_key, __pyx_int_1) < 0))) __PYX_ERR(0, 2069, __pyx_L7_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":2070 + * # if DEBUG: print('skipped: trace_dispatch (not in scope)', abs_path_canonical_path_and_base[2], frame.f_lineno, event, frame.f_code.co_name, file_type) + * cache_skips[frame_cache_key] = 1 + * return None if event == "call" else NO_FTRACE # <<<<<<<<<<<<<< + * else: + * # if DEBUG: print('skipped: trace_dispatch', abs_path_canonical_path_and_base[2], frame.f_lineno, event, frame.f_code.co_name, file_type) + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_14 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_call, Py_EQ)); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 2070, __pyx_L7_error) + if (__pyx_t_14) { + __Pyx_INCREF(Py_None); + __pyx_t_1 = Py_None; + } else { + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2070, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_1 = __pyx_t_5; + __pyx_t_5 = 0; + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L11_try_return; + + /* "_pydevd_bundle/pydevd_cython.pyx":2067 + * if file_type is not None: + * if file_type == 1: # inlining LIB_FILE = 1 + * if not py_db.in_project_scope(frame, abs_path_canonical_path_and_base[0]): # <<<<<<<<<<<<<< + * # if DEBUG: print('skipped: trace_dispatch (not in scope)', abs_path_canonical_path_and_base[2], frame.f_lineno, event, frame.f_code.co_name, file_type) + * cache_skips[frame_cache_key] = 1 + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":2066 + * + * if file_type is not None: + * if file_type == 1: # inlining LIB_FILE = 1 # <<<<<<<<<<<<<< + * if not py_db.in_project_scope(frame, abs_path_canonical_path_and_base[0]): + * # if DEBUG: print('skipped: trace_dispatch (not in scope)', abs_path_canonical_path_and_base[2], frame.f_lineno, event, frame.f_code.co_name, file_type) + */ + goto __pyx_L34; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":2073 + * else: + * # if DEBUG: print('skipped: trace_dispatch', abs_path_canonical_path_and_base[2], frame.f_lineno, event, frame.f_code.co_name, file_type) + * cache_skips[frame_cache_key] = 1 # <<<<<<<<<<<<<< + * return None if event == "call" else NO_FTRACE + * + */ + /*else*/ { + if (unlikely(__pyx_v_cache_skips == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 2073, __pyx_L7_error) + } + if (unlikely((PyDict_SetItem(__pyx_v_cache_skips, __pyx_v_frame_cache_key, __pyx_int_1) < 0))) __PYX_ERR(0, 2073, __pyx_L7_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":2074 + * # if DEBUG: print('skipped: trace_dispatch', abs_path_canonical_path_and_base[2], frame.f_lineno, event, frame.f_code.co_name, file_type) + * cache_skips[frame_cache_key] = 1 + * return None if event == "call" else NO_FTRACE # <<<<<<<<<<<<<< + * + * if py_db.is_files_filter_enabled: + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_14 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_call, Py_EQ)); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 2074, __pyx_L7_error) + if (__pyx_t_14) { + __Pyx_INCREF(Py_None); + __pyx_t_1 = Py_None; + } else { + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2074, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_1 = __pyx_t_5; + __pyx_t_5 = 0; + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L11_try_return; + } + __pyx_L34:; + + /* "_pydevd_bundle/pydevd_cython.pyx":2065 + * ) # we don't want to debug threading or anything related to pydevd + * + * if file_type is not None: # <<<<<<<<<<<<<< + * if file_type == 1: # inlining LIB_FILE = 1 + * if not py_db.in_project_scope(frame, abs_path_canonical_path_and_base[0]): + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":2076 + * return None if event == "call" else NO_FTRACE + * + * if py_db.is_files_filter_enabled: # <<<<<<<<<<<<<< + * if py_db.apply_files_filter(frame, abs_path_canonical_path_and_base[0], False): + * cache_skips[frame_cache_key] = 1 + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_is_files_filter_enabled); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2076, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 2076, __pyx_L7_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_14) { + + /* "_pydevd_bundle/pydevd_cython.pyx":2077 + * + * if py_db.is_files_filter_enabled: + * if py_db.apply_files_filter(frame, abs_path_canonical_path_and_base[0], False): # <<<<<<<<<<<<<< + * cache_skips[frame_cache_key] = 1 + * + */ + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_apply_files_filter); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2077, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_5); + if (unlikely(__pyx_v_abs_path_canonical_path_and_base == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 2077, __pyx_L7_error) + } + __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v_abs_path_canonical_path_and_base, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2077, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_4 = NULL; + __pyx_t_12 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_12 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[4] = {__pyx_t_4, __pyx_v_frame, __pyx_t_6, Py_False}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_12, 3+__pyx_t_12); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2077, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 2077, __pyx_L7_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_14) { + + /* "_pydevd_bundle/pydevd_cython.pyx":2078 + * if py_db.is_files_filter_enabled: + * if py_db.apply_files_filter(frame, abs_path_canonical_path_and_base[0], False): + * cache_skips[frame_cache_key] = 1 # <<<<<<<<<<<<<< + * + * if ( + */ + if (unlikely(__pyx_v_cache_skips == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 2078, __pyx_L7_error) + } + if (unlikely((PyDict_SetItem(__pyx_v_cache_skips, __pyx_v_frame_cache_key, __pyx_int_1) < 0))) __PYX_ERR(0, 2078, __pyx_L7_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":2081 + * + * if ( + * is_stepping # <<<<<<<<<<<<<< + * and additional_info.pydev_original_step_cmd in (107, 144) + * and not _global_notify_skipped_step_in + */ + if (__pyx_v_is_stepping) { + } else { + __pyx_t_14 = __pyx_v_is_stepping; + goto __pyx_L39_bool_binop_done; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":2082 + * if ( + * is_stepping + * and additional_info.pydev_original_step_cmd in (107, 144) # <<<<<<<<<<<<<< + * and not _global_notify_skipped_step_in + * ): + */ + switch (__pyx_v_additional_info->pydev_original_step_cmd) { + case 0x6B: + case 0x90: + __pyx_t_13 = 1; + break; + default: + __pyx_t_13 = 0; + break; + } + __pyx_t_7 = __pyx_t_13; + if (__pyx_t_7) { + } else { + __pyx_t_14 = __pyx_t_7; + goto __pyx_L39_bool_binop_done; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":2083 + * is_stepping + * and additional_info.pydev_original_step_cmd in (107, 144) + * and not _global_notify_skipped_step_in # <<<<<<<<<<<<<< + * ): + * notify_skipped_step_in_because_of_filters(py_db, frame) + */ + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_14_pydevd_bundle_13pydevd_cython__global_notify_skipped_step_in); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 2083, __pyx_L7_error) + __pyx_t_13 = (!__pyx_t_7); + __pyx_t_14 = __pyx_t_13; + __pyx_L39_bool_binop_done:; + + /* "_pydevd_bundle/pydevd_cython.pyx":2080 + * cache_skips[frame_cache_key] = 1 + * + * if ( # <<<<<<<<<<<<<< + * is_stepping + * and additional_info.pydev_original_step_cmd in (107, 144) + */ + if (__pyx_t_14) { + + /* "_pydevd_bundle/pydevd_cython.pyx":2085 + * and not _global_notify_skipped_step_in + * ): + * notify_skipped_step_in_because_of_filters(py_db, frame) # <<<<<<<<<<<<<< + * + * # A little gotcha, sometimes when we're stepping in we have to stop in a + */ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_notify_skipped_step_in_because_o); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2085, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = NULL; + __pyx_t_12 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_12 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_v_py_db, __pyx_v_frame}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_12, 2+__pyx_t_12); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2085, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":2080 + * cache_skips[frame_cache_key] = 1 + * + * if ( # <<<<<<<<<<<<<< + * is_stepping + * and additional_info.pydev_original_step_cmd in (107, 144) + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":2090 + * # return event showing the back frame as the current frame, so, we need + * # to check not only the current frame but the back frame too. + * back_frame = frame.f_back # <<<<<<<<<<<<<< + * if back_frame is not None and pydev_step_cmd in ( + * 107, + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2090, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_XDECREF_SET(__pyx_v_back_frame, __pyx_t_1); + __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":2091 + * # to check not only the current frame but the back frame too. + * back_frame = frame.f_back + * if back_frame is not None and pydev_step_cmd in ( # <<<<<<<<<<<<<< + * 107, + * 144, + */ + __pyx_t_13 = (__pyx_v_back_frame != Py_None); + if (__pyx_t_13) { + } else { + __pyx_t_14 = __pyx_t_13; + goto __pyx_L43_bool_binop_done; + } + switch (__pyx_v_pydev_step_cmd) { + case 0x6B: + + /* "_pydevd_bundle/pydevd_cython.pyx":2092 + * back_frame = frame.f_back + * if back_frame is not None and pydev_step_cmd in ( + * 107, # <<<<<<<<<<<<<< + * 144, + * 109, + */ + case 0x90: + + /* "_pydevd_bundle/pydevd_cython.pyx":2093 + * if back_frame is not None and pydev_step_cmd in ( + * 107, + * 144, # <<<<<<<<<<<<<< + * 109, + * 160, + */ + case 0x6D: + + /* "_pydevd_bundle/pydevd_cython.pyx":2094 + * 107, + * 144, + * 109, # <<<<<<<<<<<<<< + * 160, + * ): + */ + case 0xA0: + + /* "_pydevd_bundle/pydevd_cython.pyx":2091 + * # to check not only the current frame but the back frame too. + * back_frame = frame.f_back + * if back_frame is not None and pydev_step_cmd in ( # <<<<<<<<<<<<<< + * 107, + * 144, + */ + __pyx_t_13 = 1; + break; + default: + __pyx_t_13 = 0; + break; + } + __pyx_t_7 = __pyx_t_13; + __pyx_t_14 = __pyx_t_7; + __pyx_L43_bool_binop_done:; + if (__pyx_t_14) { + + /* "_pydevd_bundle/pydevd_cython.pyx":2097 + * 160, + * ): + * if py_db.apply_files_filter(back_frame, back_frame.f_code.co_filename, False): # <<<<<<<<<<<<<< + * back_frame_cache_key = back_frame.f_code + * cache_skips[back_frame_cache_key] = 1 + */ + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_apply_files_filter); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2097, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_back_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2097, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_co_filename); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2097, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = NULL; + __pyx_t_12 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_12 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[4] = {__pyx_t_6, __pyx_v_back_frame, __pyx_t_4, Py_False}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_12, 3+__pyx_t_12); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2097, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 2097, __pyx_L7_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_14) { + + /* "_pydevd_bundle/pydevd_cython.pyx":2098 + * ): + * if py_db.apply_files_filter(back_frame, back_frame.f_code.co_filename, False): + * back_frame_cache_key = back_frame.f_code # <<<<<<<<<<<<<< + * cache_skips[back_frame_cache_key] = 1 + * # if DEBUG: print('skipped: trace_dispatch (filtered out: 1)', frame_cache_key, frame.f_lineno, event, frame.f_code.co_name) + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_back_frame, __pyx_n_s_f_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2098, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_XDECREF_SET(__pyx_v_back_frame_cache_key, __pyx_t_1); + __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":2099 + * if py_db.apply_files_filter(back_frame, back_frame.f_code.co_filename, False): + * back_frame_cache_key = back_frame.f_code + * cache_skips[back_frame_cache_key] = 1 # <<<<<<<<<<<<<< + * # if DEBUG: print('skipped: trace_dispatch (filtered out: 1)', frame_cache_key, frame.f_lineno, event, frame.f_code.co_name) + * return None if event == "call" else NO_FTRACE + */ + if (unlikely(__pyx_v_cache_skips == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 2099, __pyx_L7_error) + } + if (unlikely((PyDict_SetItem(__pyx_v_cache_skips, __pyx_v_back_frame_cache_key, __pyx_int_1) < 0))) __PYX_ERR(0, 2099, __pyx_L7_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":2101 + * cache_skips[back_frame_cache_key] = 1 + * # if DEBUG: print('skipped: trace_dispatch (filtered out: 1)', frame_cache_key, frame.f_lineno, event, frame.f_code.co_name) + * return None if event == "call" else NO_FTRACE # <<<<<<<<<<<<<< + * else: + * # if DEBUG: print('skipped: trace_dispatch (filtered out: 2)', frame_cache_key, frame.f_lineno, event, frame.f_code.co_name) + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_14 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_call, Py_EQ)); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 2101, __pyx_L7_error) + if (__pyx_t_14) { + __Pyx_INCREF(Py_None); + __pyx_t_1 = Py_None; + } else { + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2101, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_1 = __pyx_t_5; + __pyx_t_5 = 0; + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L11_try_return; + + /* "_pydevd_bundle/pydevd_cython.pyx":2097 + * 160, + * ): + * if py_db.apply_files_filter(back_frame, back_frame.f_code.co_filename, False): # <<<<<<<<<<<<<< + * back_frame_cache_key = back_frame.f_code + * cache_skips[back_frame_cache_key] = 1 + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":2091 + * # to check not only the current frame but the back frame too. + * back_frame = frame.f_back + * if back_frame is not None and pydev_step_cmd in ( # <<<<<<<<<<<<<< + * 107, + * 144, + */ + goto __pyx_L42; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":2104 + * else: + * # if DEBUG: print('skipped: trace_dispatch (filtered out: 2)', frame_cache_key, frame.f_lineno, event, frame.f_code.co_name) + * return None if event == "call" else NO_FTRACE # <<<<<<<<<<<<<< + * + * # if DEBUG: print('trace_dispatch', filename, frame.f_lineno, event, frame.f_code.co_name, file_type) + */ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __pyx_t_14 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_call, Py_EQ)); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 2104, __pyx_L7_error) + if (__pyx_t_14) { + __Pyx_INCREF(Py_None); + __pyx_t_1 = Py_None; + } else { + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2104, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_1 = __pyx_t_5; + __pyx_t_5 = 0; + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L11_try_return; + } + __pyx_L42:; + + /* "_pydevd_bundle/pydevd_cython.pyx":2077 + * + * if py_db.is_files_filter_enabled: + * if py_db.apply_files_filter(frame, abs_path_canonical_path_and_base[0], False): # <<<<<<<<<<<<<< + * cache_skips[frame_cache_key] = 1 + * + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":2076 + * return None if event == "call" else NO_FTRACE + * + * if py_db.is_files_filter_enabled: # <<<<<<<<<<<<<< + * if py_db.apply_files_filter(frame, abs_path_canonical_path_and_base[0], False): + * cache_skips[frame_cache_key] = 1 + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":2112 + * ret = PyDBFrame( + * ( + * py_db, # <<<<<<<<<<<<<< + * abs_path_canonical_path_and_base, + * additional_info, + */ + __pyx_t_1 = PyTuple_New(6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2112, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_v_py_db); + __Pyx_GIVEREF(__pyx_v_py_db); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_py_db)) __PYX_ERR(0, 2112, __pyx_L7_error); + __Pyx_INCREF(__pyx_v_abs_path_canonical_path_and_base); + __Pyx_GIVEREF(__pyx_v_abs_path_canonical_path_and_base); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_abs_path_canonical_path_and_base)) __PYX_ERR(0, 2112, __pyx_L7_error); + __Pyx_INCREF((PyObject *)__pyx_v_additional_info); + __Pyx_GIVEREF((PyObject *)__pyx_v_additional_info); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, ((PyObject *)__pyx_v_additional_info))) __PYX_ERR(0, 2112, __pyx_L7_error); + __Pyx_INCREF(__pyx_v_t); + __Pyx_GIVEREF(__pyx_v_t); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_v_t)) __PYX_ERR(0, 2112, __pyx_L7_error); + __Pyx_INCREF(__pyx_v_frame_skips_cache); + __Pyx_GIVEREF(__pyx_v_frame_skips_cache); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_v_frame_skips_cache)) __PYX_ERR(0, 2112, __pyx_L7_error); + __Pyx_INCREF(__pyx_v_frame_cache_key); + __Pyx_GIVEREF(__pyx_v_frame_cache_key); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 5, __pyx_v_frame_cache_key)) __PYX_ERR(0, 2112, __pyx_L7_error); + + /* "_pydevd_bundle/pydevd_cython.pyx":2110 + * # Just create PyDBFrame directly (removed support for Python versions < 2.5, which required keeping a weak + * # reference to the frame). + * ret = PyDBFrame( # <<<<<<<<<<<<<< + * ( + * py_db, + */ + __pyx_t_5 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBFrame), __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2110, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":2119 + * frame_cache_key, + * ) + * ).trace_dispatch(frame, event, arg) # <<<<<<<<<<<<<< + * if ret is None: + * # 1 means skipped because of filters. + */ + if (!(likely(PyString_CheckExact(__pyx_v_event))||((__pyx_v_event) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_v_event))) __PYX_ERR(0, 2119, __pyx_L7_error) + __pyx_t_1 = ((struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_t_5)->__pyx_vtab)->trace_dispatch(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_t_5), __pyx_v_frame, ((PyObject*)__pyx_v_event), __pyx_v_arg, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2119, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_v_ret = __pyx_t_1; + __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":2120 + * ) + * ).trace_dispatch(frame, event, arg) + * if ret is None: # <<<<<<<<<<<<<< + * # 1 means skipped because of filters. + * # 2 means skipped because no breakpoints were hit. + */ + __pyx_t_14 = (__pyx_v_ret == Py_None); + if (__pyx_t_14) { + + /* "_pydevd_bundle/pydevd_cython.pyx":2123 + * # 1 means skipped because of filters. + * # 2 means skipped because no breakpoints were hit. + * cache_skips[frame_cache_key] = 2 # <<<<<<<<<<<<<< + * return None if event == "call" else NO_FTRACE + * + */ + if (unlikely(__pyx_v_cache_skips == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 2123, __pyx_L7_error) + } + if (unlikely((PyDict_SetItem(__pyx_v_cache_skips, __pyx_v_frame_cache_key, __pyx_int_2) < 0))) __PYX_ERR(0, 2123, __pyx_L7_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":2124 + * # 2 means skipped because no breakpoints were hit. + * cache_skips[frame_cache_key] = 2 + * return None if event == "call" else NO_FTRACE # <<<<<<<<<<<<<< + * + * # fmt: off + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_14 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_call, Py_EQ)); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 2124, __pyx_L7_error) + if (__pyx_t_14) { + __Pyx_INCREF(Py_None); + __pyx_t_1 = Py_None; + } else { + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2124, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_1 = __pyx_t_5; + __pyx_t_5 = 0; + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L11_try_return; + + /* "_pydevd_bundle/pydevd_cython.pyx":2120 + * ) + * ).trace_dispatch(frame, event, arg) + * if ret is None: # <<<<<<<<<<<<<< + * # 1 means skipped because of filters. + * # 2 means skipped because no breakpoints were hit. + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":2128 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * frame.f_trace = SafeCallWrapper(ret) # Make sure we keep the returned tracer. # <<<<<<<<<<<<<< + * # ELSE + * # frame.f_trace = ret # Make sure we keep the returned tracer. + */ + __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper), __pyx_v_ret); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2128, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_1); + if (__Pyx_PyObject_SetAttrStr(__pyx_v_frame, __pyx_n_s_f_trace, __pyx_t_1) < 0) __PYX_ERR(0, 2128, __pyx_L7_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":2133 + * # ENDIF + * # fmt: on + * return ret # <<<<<<<<<<<<<< + * + * except SystemExit: + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_ret); + __pyx_r = __pyx_v_ret; + goto __pyx_L11_try_return; + + /* "_pydevd_bundle/pydevd_cython.pyx":2013 + * + * additional_info.is_tracing += 1 + * try: # <<<<<<<<<<<<<< + * pydev_step_cmd = additional_info.pydev_step_cmd + * is_stepping = pydev_step_cmd != -1 + */ + } + __pyx_L7_error:; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":2135 + * return ret + * + * except SystemExit: # <<<<<<<<<<<<<< + * return None if event == "call" else NO_FTRACE + * + */ + __pyx_t_11 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_SystemExit); + if (__pyx_t_11) { + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.ThreadTracer.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_5, &__pyx_t_4) < 0) __PYX_ERR(0, 2135, __pyx_L9_except_error) + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_5); + __Pyx_XGOTREF(__pyx_t_4); + + /* "_pydevd_bundle/pydevd_cython.pyx":2136 + * + * except SystemExit: + * return None if event == "call" else NO_FTRACE # <<<<<<<<<<<<<< + * + * except Exception: + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_14 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_call, Py_EQ)); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 2136, __pyx_L9_except_error) + if (__pyx_t_14) { + __Pyx_INCREF(Py_None); + __pyx_t_6 = Py_None; + } else { + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2136, __pyx_L9_except_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = __pyx_t_3; + __pyx_t_3 = 0; + } + __pyx_r = __pyx_t_6; + __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + goto __pyx_L10_except_return; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":2138 + * return None if event == "call" else NO_FTRACE + * + * except Exception: # <<<<<<<<<<<<<< + * if py_db.pydb_disposed: + * return None if event == "call" else NO_FTRACE # Don't log errors when we're shutting down. + */ + __pyx_t_11 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); + if (__pyx_t_11) { + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.ThreadTracer.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_1) < 0) __PYX_ERR(0, 2138, __pyx_L9_except_error) + __Pyx_XGOTREF(__pyx_t_4); + __Pyx_XGOTREF(__pyx_t_5); + __Pyx_XGOTREF(__pyx_t_1); + + /* "_pydevd_bundle/pydevd_cython.pyx":2139 + * + * except Exception: + * if py_db.pydb_disposed: # <<<<<<<<<<<<<< + * return None if event == "call" else NO_FTRACE # Don't log errors when we're shutting down. + * # Log it + */ + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_db, __pyx_n_s_pydb_disposed); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2139, __pyx_L9_except_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 2139, __pyx_L9_except_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (__pyx_t_14) { + + /* "_pydevd_bundle/pydevd_cython.pyx":2140 + * except Exception: + * if py_db.pydb_disposed: + * return None if event == "call" else NO_FTRACE # Don't log errors when we're shutting down. # <<<<<<<<<<<<<< + * # Log it + * try: + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_14 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_call, Py_EQ)); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 2140, __pyx_L9_except_error) + if (__pyx_t_14) { + __Pyx_INCREF(Py_None); + __pyx_t_6 = Py_None; + } else { + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2140, __pyx_L9_except_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = __pyx_t_3; + __pyx_t_3 = 0; + } + __pyx_r = __pyx_t_6; + __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + goto __pyx_L10_except_return; + + /* "_pydevd_bundle/pydevd_cython.pyx":2139 + * + * except Exception: + * if py_db.pydb_disposed: # <<<<<<<<<<<<<< + * return None if event == "call" else NO_FTRACE # Don't log errors when we're shutting down. + * # Log it + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":2142 + * return None if event == "call" else NO_FTRACE # Don't log errors when we're shutting down. + * # Log it + * try: # <<<<<<<<<<<<<< + * if pydev_log_exception is not None: + * # This can actually happen during the interpreter shutdown in Python 2.7 + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_17, &__pyx_t_16, &__pyx_t_15); + __Pyx_XGOTREF(__pyx_t_17); + __Pyx_XGOTREF(__pyx_t_16); + __Pyx_XGOTREF(__pyx_t_15); + /*try:*/ { + + /* "_pydevd_bundle/pydevd_cython.pyx":2143 + * # Log it + * try: + * if pydev_log_exception is not None: # <<<<<<<<<<<<<< + * # This can actually happen during the interpreter shutdown in Python 2.7 + * pydev_log_exception() + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pydev_log_exception); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2143, __pyx_L52_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_14 = (__pyx_t_6 != Py_None); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (__pyx_t_14) { + + /* "_pydevd_bundle/pydevd_cython.pyx":2145 + * if pydev_log_exception is not None: + * # This can actually happen during the interpreter shutdown in Python 2.7 + * pydev_log_exception() # <<<<<<<<<<<<<< + * except: + * # Error logging? We're really in the interpreter shutdown... + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pydev_log_exception); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2145, __pyx_L52_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = NULL; + __pyx_t_12 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_12 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; + __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_12, 0+__pyx_t_12); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2145, __pyx_L52_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":2143 + * # Log it + * try: + * if pydev_log_exception is not None: # <<<<<<<<<<<<<< + * # This can actually happen during the interpreter shutdown in Python 2.7 + * pydev_log_exception() + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":2142 + * return None if event == "call" else NO_FTRACE # Don't log errors when we're shutting down. + * # Log it + * try: # <<<<<<<<<<<<<< + * if pydev_log_exception is not None: + * # This can actually happen during the interpreter shutdown in Python 2.7 + */ + } + __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; + __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; + __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; + goto __pyx_L59_try_end; + __pyx_L52_error:; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":2146 + * # This can actually happen during the interpreter shutdown in Python 2.7 + * pydev_log_exception() + * except: # <<<<<<<<<<<<<< + * # Error logging? We're really in the interpreter shutdown... + * # (https://github.com/fabioz/PyDev.Debugger/issues/8) + */ + /*except:*/ { + __Pyx_ErrRestore(0,0,0); + goto __pyx_L53_exception_handled; + } + __pyx_L53_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_17); + __Pyx_XGIVEREF(__pyx_t_16); + __Pyx_XGIVEREF(__pyx_t_15); + __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_16, __pyx_t_15); + __pyx_L59_try_end:; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":2150 + * # (https://github.com/fabioz/PyDev.Debugger/issues/8) + * pass + * return None if event == "call" else NO_FTRACE # <<<<<<<<<<<<<< + * finally: + * additional_info.is_tracing -= 1 + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_14 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_call, Py_EQ)); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 2150, __pyx_L9_except_error) + if (__pyx_t_14) { + __Pyx_INCREF(Py_None); + __pyx_t_6 = Py_None; + } else { + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2150, __pyx_L9_except_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = __pyx_t_3; + __pyx_t_3 = 0; + } + __pyx_r = __pyx_t_6; + __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + goto __pyx_L10_except_return; + } + goto __pyx_L9_except_error; + + /* "_pydevd_bundle/pydevd_cython.pyx":2013 + * + * additional_info.is_tracing += 1 + * try: # <<<<<<<<<<<<<< + * pydev_step_cmd = additional_info.pydev_step_cmd + * is_stepping = pydev_step_cmd != -1 + */ + __pyx_L9_except_error:; + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_XGIVEREF(__pyx_t_10); + __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10); + goto __pyx_L5_error; + __pyx_L11_try_return:; + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_XGIVEREF(__pyx_t_10); + __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10); + goto __pyx_L4_return; + __pyx_L10_except_return:; + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_XGIVEREF(__pyx_t_10); + __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10); + goto __pyx_L4_return; + } + } + + /* "_pydevd_bundle/pydevd_cython.pyx":2152 + * return None if event == "call" else NO_FTRACE + * finally: + * additional_info.is_tracing -= 1 # <<<<<<<<<<<<<< + * + * + */ + /*finally:*/ { + __pyx_L5_error:; + /*exception exit:*/{ + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __pyx_t_10 = 0; __pyx_t_9 = 0; __pyx_t_8 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_10, &__pyx_t_9, &__pyx_t_8) < 0)) __Pyx_ErrFetch(&__pyx_t_10, &__pyx_t_9, &__pyx_t_8); + __Pyx_XGOTREF(__pyx_t_10); + __Pyx_XGOTREF(__pyx_t_9); + __Pyx_XGOTREF(__pyx_t_8); + __Pyx_XGOTREF(__pyx_t_15); + __Pyx_XGOTREF(__pyx_t_16); + __Pyx_XGOTREF(__pyx_t_17); + __pyx_t_11 = __pyx_lineno; __pyx_t_18 = __pyx_clineno; __pyx_t_19 = __pyx_filename; + { + __pyx_v_additional_info->is_tracing = (__pyx_v_additional_info->is_tracing - 1); + } + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_15); + __Pyx_XGIVEREF(__pyx_t_16); + __Pyx_XGIVEREF(__pyx_t_17); + __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17); + } + __Pyx_XGIVEREF(__pyx_t_10); + __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_ErrRestore(__pyx_t_10, __pyx_t_9, __pyx_t_8); + __pyx_t_10 = 0; __pyx_t_9 = 0; __pyx_t_8 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; + __pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_18; __pyx_filename = __pyx_t_19; + goto __pyx_L1_error; + } + __pyx_L4_return: { + __pyx_t_17 = __pyx_r; + __pyx_r = 0; + __pyx_v_additional_info->is_tracing = (__pyx_v_additional_info->is_tracing - 1); + __pyx_r = __pyx_t_17; + __pyx_t_17 = 0; + goto __pyx_L0; + } + } + + /* "_pydevd_bundle/pydevd_cython.pyx":1980 + * # fmt: on + * + * def __call__(self, frame, event, arg): # <<<<<<<<<<<<<< + * """This is the callback used when we enter some context in the debugger. + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.ThreadTracer.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_frame_cache_key); + __Pyx_XDECREF(__pyx_v_cache_skips); + __Pyx_XDECREF(__pyx_v_abs_path_canonical_path_and_base); + __Pyx_XDECREF((PyObject *)__pyx_v_additional_info); + __Pyx_XDECREF(__pyx_v_py_db); + __Pyx_XDECREF(__pyx_v_t); + __Pyx_XDECREF(__pyx_v_frame_skips_cache); + __Pyx_XDECREF(__pyx_v_back_frame); + __Pyx_XDECREF(__pyx_v_back_frame_cache_key); + __Pyx_XDECREF(__pyx_v_file_type); + __Pyx_XDECREF(__pyx_v_ret); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":1969 + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cdef class ThreadTracer: + * cdef public tuple _args; # <<<<<<<<<<<<<< + * def __init__(self, tuple args): + * self._args = args + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_5_args_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_5_args_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_5_args___get__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_ThreadTracer *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_5_args___get__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_ThreadTracer *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->_args); + __pyx_r = __pyx_v_self->_args; + goto __pyx_L0; + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_5_args_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_5_args_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_5_args_2__set__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_ThreadTracer *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_5_args_2__set__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_ThreadTracer *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__set__", 1); + if (!(likely(PyTuple_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v_value))) __PYX_ERR(0, 1969, __pyx_L1_error) + __pyx_t_1 = __pyx_v_value; + __Pyx_INCREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v_self->_args); + __Pyx_DECREF(__pyx_v_self->_args); + __pyx_v_self->_args = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.ThreadTracer._args.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_5_args_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_5_args_5__del__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_5_args_4__del__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_ThreadTracer *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_5_args_4__del__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_ThreadTracer *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 1); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->_args); + __Pyx_DECREF(__pyx_v_self->_args); + __pyx_v_self->_args = ((PyObject*)Py_None); + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_5__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_5__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { + __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} + if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_4__reduce_cython__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_ThreadTracer *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_4__reduce_cython__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_ThreadTracer *__pyx_v_self) { + PyObject *__pyx_v_state = 0; + PyObject *__pyx_v__dict = 0; + int __pyx_v_use_setstate; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__reduce_cython__", 1); + + /* "(tree fragment)":5 + * cdef object _dict + * cdef bint use_setstate + * state = (self._args,) # <<<<<<<<<<<<<< + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: + */ + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_v_self->_args); + __Pyx_GIVEREF(__pyx_v_self->_args); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->_args)) __PYX_ERR(2, 5, __pyx_L1_error); + __pyx_v_state = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "(tree fragment)":6 + * cdef bint use_setstate + * state = (self._args,) + * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< + * if _dict is not None: + * state += (_dict,) + */ + __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v__dict = __pyx_t_1; + __pyx_t_1 = 0; + + /* "(tree fragment)":7 + * state = (self._args,) + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: # <<<<<<<<<<<<<< + * state += (_dict,) + * use_setstate = True + */ + __pyx_t_2 = (__pyx_v__dict != Py_None); + if (__pyx_t_2) { + + /* "(tree fragment)":8 + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: + * state += (_dict,) # <<<<<<<<<<<<<< + * use_setstate = True + * else: + */ + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_v__dict); + __Pyx_GIVEREF(__pyx_v__dict); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict)) __PYX_ERR(2, 8, __pyx_L1_error); + __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_3)); + __pyx_t_3 = 0; + + /* "(tree fragment)":9 + * if _dict is not None: + * state += (_dict,) + * use_setstate = True # <<<<<<<<<<<<<< + * else: + * use_setstate = self._args is not None + */ + __pyx_v_use_setstate = 1; + + /* "(tree fragment)":7 + * state = (self._args,) + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: # <<<<<<<<<<<<<< + * state += (_dict,) + * use_setstate = True + */ + goto __pyx_L3; + } + + /* "(tree fragment)":11 + * use_setstate = True + * else: + * use_setstate = self._args is not None # <<<<<<<<<<<<<< + * if use_setstate: + * return __pyx_unpickle_ThreadTracer, (type(self), 0x121e1fb, None), state + */ + /*else*/ { + __pyx_t_2 = (__pyx_v_self->_args != ((PyObject*)Py_None)); + __pyx_v_use_setstate = __pyx_t_2; + } + __pyx_L3:; + + /* "(tree fragment)":12 + * else: + * use_setstate = self._args is not None + * if use_setstate: # <<<<<<<<<<<<<< + * return __pyx_unpickle_ThreadTracer, (type(self), 0x121e1fb, None), state + * else: + */ + if (__pyx_v_use_setstate) { + + /* "(tree fragment)":13 + * use_setstate = self._args is not None + * if use_setstate: + * return __pyx_unpickle_ThreadTracer, (type(self), 0x121e1fb, None), state # <<<<<<<<<<<<<< + * else: + * return __pyx_unpickle_ThreadTracer, (type(self), 0x121e1fb, state) + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyx_unpickle_ThreadTracer); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(2, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_int_18997755); + __Pyx_GIVEREF(__pyx_int_18997755); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_18997755)) __PYX_ERR(2, 13, __pyx_L1_error); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None)) __PYX_ERR(2, 13, __pyx_L1_error); + __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_3); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3)) __PYX_ERR(2, 13, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1)) __PYX_ERR(2, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_state); + __Pyx_GIVEREF(__pyx_v_state); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_state)) __PYX_ERR(2, 13, __pyx_L1_error); + __pyx_t_3 = 0; + __pyx_t_1 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + + /* "(tree fragment)":12 + * else: + * use_setstate = self._args is not None + * if use_setstate: # <<<<<<<<<<<<<< + * return __pyx_unpickle_ThreadTracer, (type(self), 0x121e1fb, None), state + * else: + */ + } + + /* "(tree fragment)":15 + * return __pyx_unpickle_ThreadTracer, (type(self), 0x121e1fb, None), state + * else: + * return __pyx_unpickle_ThreadTracer, (type(self), 0x121e1fb, state) # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * __pyx_unpickle_ThreadTracer__set_state(self, __pyx_state) + */ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_ThreadTracer); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(2, 15, __pyx_L1_error); + __Pyx_INCREF(__pyx_int_18997755); + __Pyx_GIVEREF(__pyx_int_18997755); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_18997755)) __PYX_ERR(2, 15, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_state); + __Pyx_GIVEREF(__pyx_v_state); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state)) __PYX_ERR(2, 15, __pyx_L1_error); + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_4); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4)) __PYX_ERR(2, 15, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(2, 15, __pyx_L1_error); + __pyx_t_4 = 0; + __pyx_t_1 = 0; + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + } + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.ThreadTracer.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_state); + __Pyx_XDECREF(__pyx_v__dict); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":16 + * else: + * return __pyx_unpickle_ThreadTracer, (type(self), 0x121e1fb, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_ThreadTracer__set_state(self, __pyx_state) + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_7__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_7__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 16, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(2, 16, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + } + __pyx_v___pyx_state = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 16, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.ThreadTracer.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_6__setstate_cython__(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_ThreadTracer *)__pyx_v_self), __pyx_v___pyx_state); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_6__setstate_cython__(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_ThreadTracer *__pyx_v_self, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__setstate_cython__", 1); + + /* "(tree fragment)":17 + * return __pyx_unpickle_ThreadTracer, (type(self), 0x121e1fb, state) + * def __setstate_cython__(self, __pyx_state): + * __pyx_unpickle_ThreadTracer__set_state(self, __pyx_state) # <<<<<<<<<<<<<< + */ + if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(2, 17, __pyx_L1_error) + __pyx_t_1 = __pyx_f_14_pydevd_bundle_13pydevd_cython___pyx_unpickle_ThreadTracer__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle_ThreadTracer, (type(self), 0x121e1fb, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_ThreadTracer__set_state(self, __pyx_state) + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.ThreadTracer.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":2167 + * _original_call = ThreadTracer.__call__ + * + * def __call__(self, frame, event, arg): # <<<<<<<<<<<<<< + * constructed_tid_to_last_frame[self._args[1].ident] = frame + * return _original_call(self, frame, event, arg) + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_23__call__(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_23__call__ = {"__call__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_23__call__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_23__call__(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_self = 0; + PyObject *__pyx_v_frame = 0; + PyObject *__pyx_v_event = 0; + PyObject *__pyx_v_arg = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[4] = {0,0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__call__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_frame,&__pyx_n_s_event,&__pyx_n_s_arg,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); + CYTHON_FALLTHROUGH; + case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_self)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 2167, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_frame)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 2167, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("__call__", 1, 4, 4, 1); __PYX_ERR(0, 2167, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_event)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 2167, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("__call__", 1, 4, 4, 2); __PYX_ERR(0, 2167, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 3: + if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_arg)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[3]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 2167, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("__call__", 1, 4, 4, 3); __PYX_ERR(0, 2167, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__call__") < 0)) __PYX_ERR(0, 2167, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 4)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); + } + __pyx_v_self = values[0]; + __pyx_v_frame = values[1]; + __pyx_v_event = values[2]; + __pyx_v_arg = values[3]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__call__", 1, 4, 4, __pyx_nargs); __PYX_ERR(0, 2167, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_22__call__(__pyx_self, __pyx_v_self, __pyx_v_frame, __pyx_v_event, __pyx_v_arg); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_22__call__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_frame, PyObject *__pyx_v_event, PyObject *__pyx_v_arg) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + unsigned int __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__call__", 1); + + /* "_pydevd_bundle/pydevd_cython.pyx":2168 + * + * def __call__(self, frame, event, arg): + * constructed_tid_to_last_frame[self._args[1].ident] = frame # <<<<<<<<<<<<<< + * return _original_call(self, frame, event, arg) + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_constructed_tid_to_last_frame); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2168, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_args_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2168, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2168, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ident_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2168, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely((PyObject_SetItem(__pyx_t_1, __pyx_t_2, __pyx_v_frame) < 0))) __PYX_ERR(0, 2168, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":2169 + * def __call__(self, frame, event, arg): + * constructed_tid_to_last_frame[self._args[1].ident] = frame + * return _original_call(self, frame, event, arg) # <<<<<<<<<<<<<< + * + * ThreadTracer.__call__ = __call__ + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_original_call); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2169, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[5] = {__pyx_t_3, __pyx_v_self, __pyx_v_frame, __pyx_v_event, __pyx_v_arg}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 4+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2169, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "_pydevd_bundle/pydevd_cython.pyx":2167 + * _original_call = ThreadTracer.__call__ + * + * def __call__(self, frame, event, arg): # <<<<<<<<<<<<<< + * constructed_tid_to_last_frame[self._args[1].ident] = frame + * return _original_call(self, frame, event, arg) + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_bundle/pydevd_cython.pyx":2175 + * if PYDEVD_USE_SYS_MONITORING: + * + * def fix_top_level_trace_and_get_trace_func(*args, **kwargs): # <<<<<<<<<<<<<< + * raise RuntimeError("Not used in sys.monitoring mode.") + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_25fix_top_level_trace_and_get_trace_func(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_25fix_top_level_trace_and_get_trace_func = {"fix_top_level_trace_and_get_trace_func", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_25fix_top_level_trace_and_get_trace_func, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_25fix_top_level_trace_and_get_trace_func(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + CYTHON_UNUSED PyObject *__pyx_v_args = 0; + CYTHON_UNUSED PyObject *__pyx_v_kwargs = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("fix_top_level_trace_and_get_trace_func (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "fix_top_level_trace_and_get_trace_func", 1))) return NULL; + __Pyx_INCREF(__pyx_args); + __pyx_v_args = __pyx_args; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_24fix_top_level_trace_and_get_trace_func(__pyx_self, __pyx_v_args, __pyx_v_kwargs); + + /* function exit code */ + __Pyx_DECREF(__pyx_v_args); + __Pyx_XDECREF(__pyx_v_kwargs); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_24fix_top_level_trace_and_get_trace_func(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_args, CYTHON_UNUSED PyObject *__pyx_v_kwargs) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("fix_top_level_trace_and_get_trace_func", 1); + + /* "_pydevd_bundle/pydevd_cython.pyx":2176 + * + * def fix_top_level_trace_and_get_trace_func(*args, **kwargs): + * raise RuntimeError("Not used in sys.monitoring mode.") # <<<<<<<<<<<<<< + */ + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2176, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(0, 2176, __pyx_L1_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":2175 + * if PYDEVD_USE_SYS_MONITORING: + * + * def fix_top_level_trace_and_get_trace_func(*args, **kwargs): # <<<<<<<<<<<<<< + * raise RuntimeError("Not used in sys.monitoring mode.") + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.fix_top_level_trace_and_get_trace_func", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __pyx_unpickle_PyDBAdditionalThreadInfo(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError + * cdef object __pyx_result + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_27__pyx_unpickle_PyDBAdditionalThreadInfo(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_27__pyx_unpickle_PyDBAdditionalThreadInfo = {"__pyx_unpickle_PyDBAdditionalThreadInfo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_27__pyx_unpickle_PyDBAdditionalThreadInfo, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_27__pyx_unpickle_PyDBAdditionalThreadInfo(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v___pyx_type = 0; + long __pyx_v___pyx_checksum; + PyObject *__pyx_v___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__pyx_unpickle_PyDBAdditionalThreadInfo (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_type)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_checksum)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_PyDBAdditionalThreadInfo", 1, 3, 3, 1); __PYX_ERR(2, 1, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_PyDBAdditionalThreadInfo", 1, 3, 3, 2); __PYX_ERR(2, 1, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__pyx_unpickle_PyDBAdditionalThreadInfo") < 0)) __PYX_ERR(2, 1, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 3)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + } + __pyx_v___pyx_type = values[0]; + __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(2, 1, __pyx_L3_error) + __pyx_v___pyx_state = values[2]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_PyDBAdditionalThreadInfo", 1, 3, 3, __pyx_nargs); __PYX_ERR(2, 1, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.__pyx_unpickle_PyDBAdditionalThreadInfo", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_26__pyx_unpickle_PyDBAdditionalThreadInfo(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_26__pyx_unpickle_PyDBAdditionalThreadInfo(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_v___pyx_PickleError = 0; + PyObject *__pyx_v___pyx_result = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + unsigned int __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_unpickle_PyDBAdditionalThreadInfo", 1); + + /* "(tree fragment)":4 + * cdef object __pyx_PickleError + * cdef object __pyx_result + * if __pyx_checksum not in (0xd33aa14, 0x024feed, 0x4342dfb): # <<<<<<<<<<<<<< + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xd33aa14, 0x024feed, 0x4342dfb) = (conditional_breakpoint_exception, is_in_wait_loop, is_tracing, pydev_call_from_jinja2, pydev_call_inside_jinja2, pydev_django_resolve_frame, pydev_func_name, pydev_message, pydev_next_line, pydev_notify_kill, pydev_original_step_cmd, pydev_smart_child_offset, pydev_smart_parent_offset, pydev_smart_step_into_variants, pydev_smart_step_stop, pydev_state, pydev_step_cmd, pydev_step_stop, pydev_use_scoped_step_frame, step_in_initial_location, suspend_type, suspended_at_unhandled, target_id_to_smart_step_into_variant, thread_tracer, top_level_thread_tracer_no_back_frames, top_level_thread_tracer_unhandled, trace_suspend_type, weak_thread))" % __pyx_checksum + */ + __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__13, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(2, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_2) { + + /* "(tree fragment)":5 + * cdef object __pyx_result + * if __pyx_checksum not in (0xd33aa14, 0x024feed, 0x4342dfb): + * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xd33aa14, 0x024feed, 0x4342dfb) = (conditional_breakpoint_exception, is_in_wait_loop, is_tracing, pydev_call_from_jinja2, pydev_call_inside_jinja2, pydev_django_resolve_frame, pydev_func_name, pydev_message, pydev_next_line, pydev_notify_kill, pydev_original_step_cmd, pydev_smart_child_offset, pydev_smart_parent_offset, pydev_smart_step_into_variants, pydev_smart_step_stop, pydev_state, pydev_step_cmd, pydev_step_stop, pydev_use_scoped_step_frame, step_in_initial_location, suspend_type, suspended_at_unhandled, target_id_to_smart_step_into_variant, thread_tracer, top_level_thread_tracer_no_back_frames, top_level_thread_tracer_unhandled, trace_suspend_type, weak_thread))" % __pyx_checksum + * __pyx_result = PyDBAdditionalThreadInfo.__new__(__pyx_type) + */ + __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_n_s_PickleError); + __Pyx_GIVEREF(__pyx_n_s_PickleError); + if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PickleError)) __PYX_ERR(2, 5, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_t_1); + __pyx_v___pyx_PickleError = __pyx_t_1; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "(tree fragment)":6 + * if __pyx_checksum not in (0xd33aa14, 0x024feed, 0x4342dfb): + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xd33aa14, 0x024feed, 0x4342dfb) = (conditional_breakpoint_exception, is_in_wait_loop, is_tracing, pydev_call_from_jinja2, pydev_call_inside_jinja2, pydev_django_resolve_frame, pydev_func_name, pydev_message, pydev_next_line, pydev_notify_kill, pydev_original_step_cmd, pydev_smart_child_offset, pydev_smart_parent_offset, pydev_smart_step_into_variants, pydev_smart_step_stop, pydev_state, pydev_step_cmd, pydev_step_stop, pydev_use_scoped_step_frame, step_in_initial_location, suspend_type, suspended_at_unhandled, target_id_to_smart_step_into_variant, thread_tracer, top_level_thread_tracer_no_back_frames, top_level_thread_tracer_unhandled, trace_suspend_type, weak_thread))" % __pyx_checksum # <<<<<<<<<<<<<< + * __pyx_result = PyDBAdditionalThreadInfo.__new__(__pyx_type) + * if __pyx_state is not None: + */ + __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_0x_x_vs_0, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_Raise(__pyx_v___pyx_PickleError, __pyx_t_1, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(2, 6, __pyx_L1_error) + + /* "(tree fragment)":4 + * cdef object __pyx_PickleError + * cdef object __pyx_result + * if __pyx_checksum not in (0xd33aa14, 0x024feed, 0x4342dfb): # <<<<<<<<<<<<<< + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xd33aa14, 0x024feed, 0x4342dfb) = (conditional_breakpoint_exception, is_in_wait_loop, is_tracing, pydev_call_from_jinja2, pydev_call_inside_jinja2, pydev_django_resolve_frame, pydev_func_name, pydev_message, pydev_next_line, pydev_notify_kill, pydev_original_step_cmd, pydev_smart_child_offset, pydev_smart_parent_offset, pydev_smart_step_into_variants, pydev_smart_step_stop, pydev_state, pydev_step_cmd, pydev_step_stop, pydev_use_scoped_step_frame, step_in_initial_location, suspend_type, suspended_at_unhandled, target_id_to_smart_step_into_variant, thread_tracer, top_level_thread_tracer_no_back_frames, top_level_thread_tracer_unhandled, trace_suspend_type, weak_thread))" % __pyx_checksum + */ + } + + /* "(tree fragment)":7 + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xd33aa14, 0x024feed, 0x4342dfb) = (conditional_breakpoint_exception, is_in_wait_loop, is_tracing, pydev_call_from_jinja2, pydev_call_inside_jinja2, pydev_django_resolve_frame, pydev_func_name, pydev_message, pydev_next_line, pydev_notify_kill, pydev_original_step_cmd, pydev_smart_child_offset, pydev_smart_parent_offset, pydev_smart_step_into_variants, pydev_smart_step_stop, pydev_state, pydev_step_cmd, pydev_step_stop, pydev_use_scoped_step_frame, step_in_initial_location, suspend_type, suspended_at_unhandled, target_id_to_smart_step_into_variant, thread_tracer, top_level_thread_tracer_no_back_frames, top_level_thread_tracer_unhandled, trace_suspend_type, weak_thread))" % __pyx_checksum + * __pyx_result = PyDBAdditionalThreadInfo.__new__(__pyx_type) # <<<<<<<<<<<<<< + * if __pyx_state is not None: + * __pyx_unpickle_PyDBAdditionalThreadInfo__set_state( __pyx_result, __pyx_state) + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo), __pyx_n_s_new); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v___pyx_type}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_v___pyx_result = __pyx_t_1; + __pyx_t_1 = 0; + + /* "(tree fragment)":8 + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xd33aa14, 0x024feed, 0x4342dfb) = (conditional_breakpoint_exception, is_in_wait_loop, is_tracing, pydev_call_from_jinja2, pydev_call_inside_jinja2, pydev_django_resolve_frame, pydev_func_name, pydev_message, pydev_next_line, pydev_notify_kill, pydev_original_step_cmd, pydev_smart_child_offset, pydev_smart_parent_offset, pydev_smart_step_into_variants, pydev_smart_step_stop, pydev_state, pydev_step_cmd, pydev_step_stop, pydev_use_scoped_step_frame, step_in_initial_location, suspend_type, suspended_at_unhandled, target_id_to_smart_step_into_variant, thread_tracer, top_level_thread_tracer_no_back_frames, top_level_thread_tracer_unhandled, trace_suspend_type, weak_thread))" % __pyx_checksum + * __pyx_result = PyDBAdditionalThreadInfo.__new__(__pyx_type) + * if __pyx_state is not None: # <<<<<<<<<<<<<< + * __pyx_unpickle_PyDBAdditionalThreadInfo__set_state( __pyx_result, __pyx_state) + * return __pyx_result + */ + __pyx_t_2 = (__pyx_v___pyx_state != Py_None); + if (__pyx_t_2) { + + /* "(tree fragment)":9 + * __pyx_result = PyDBAdditionalThreadInfo.__new__(__pyx_type) + * if __pyx_state is not None: + * __pyx_unpickle_PyDBAdditionalThreadInfo__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< + * return __pyx_result + * cdef __pyx_unpickle_PyDBAdditionalThreadInfo__set_state(PyDBAdditionalThreadInfo __pyx_result, tuple __pyx_state): + */ + if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(2, 9, __pyx_L1_error) + __pyx_t_1 = __pyx_f_14_pydevd_bundle_13pydevd_cython___pyx_unpickle_PyDBAdditionalThreadInfo__set_state(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":8 + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xd33aa14, 0x024feed, 0x4342dfb) = (conditional_breakpoint_exception, is_in_wait_loop, is_tracing, pydev_call_from_jinja2, pydev_call_inside_jinja2, pydev_django_resolve_frame, pydev_func_name, pydev_message, pydev_next_line, pydev_notify_kill, pydev_original_step_cmd, pydev_smart_child_offset, pydev_smart_parent_offset, pydev_smart_step_into_variants, pydev_smart_step_stop, pydev_state, pydev_step_cmd, pydev_step_stop, pydev_use_scoped_step_frame, step_in_initial_location, suspend_type, suspended_at_unhandled, target_id_to_smart_step_into_variant, thread_tracer, top_level_thread_tracer_no_back_frames, top_level_thread_tracer_unhandled, trace_suspend_type, weak_thread))" % __pyx_checksum + * __pyx_result = PyDBAdditionalThreadInfo.__new__(__pyx_type) + * if __pyx_state is not None: # <<<<<<<<<<<<<< + * __pyx_unpickle_PyDBAdditionalThreadInfo__set_state( __pyx_result, __pyx_state) + * return __pyx_result + */ + } + + /* "(tree fragment)":10 + * if __pyx_state is not None: + * __pyx_unpickle_PyDBAdditionalThreadInfo__set_state( __pyx_result, __pyx_state) + * return __pyx_result # <<<<<<<<<<<<<< + * cdef __pyx_unpickle_PyDBAdditionalThreadInfo__set_state(PyDBAdditionalThreadInfo __pyx_result, tuple __pyx_state): + * __pyx_result.conditional_breakpoint_exception = __pyx_state[0]; __pyx_result.is_in_wait_loop = __pyx_state[1]; __pyx_result.is_tracing = __pyx_state[2]; __pyx_result.pydev_call_from_jinja2 = __pyx_state[3]; __pyx_result.pydev_call_inside_jinja2 = __pyx_state[4]; __pyx_result.pydev_django_resolve_frame = __pyx_state[5]; __pyx_result.pydev_func_name = __pyx_state[6]; __pyx_result.pydev_message = __pyx_state[7]; __pyx_result.pydev_next_line = __pyx_state[8]; __pyx_result.pydev_notify_kill = __pyx_state[9]; __pyx_result.pydev_original_step_cmd = __pyx_state[10]; __pyx_result.pydev_smart_child_offset = __pyx_state[11]; __pyx_result.pydev_smart_parent_offset = __pyx_state[12]; __pyx_result.pydev_smart_step_into_variants = __pyx_state[13]; __pyx_result.pydev_smart_step_stop = __pyx_state[14]; __pyx_result.pydev_state = __pyx_state[15]; __pyx_result.pydev_step_cmd = __pyx_state[16]; __pyx_result.pydev_step_stop = __pyx_state[17]; __pyx_result.pydev_use_scoped_step_frame = __pyx_state[18]; __pyx_result.step_in_initial_location = __pyx_state[19]; __pyx_result.suspend_type = __pyx_state[20]; __pyx_result.suspended_at_unhandled = __pyx_state[21]; __pyx_result.target_id_to_smart_step_into_variant = __pyx_state[22]; __pyx_result.thread_tracer = __pyx_state[23]; __pyx_result.top_level_thread_tracer_no_back_frames = __pyx_state[24]; __pyx_result.top_level_thread_tracer_unhandled = __pyx_state[25]; __pyx_result.trace_suspend_type = __pyx_state[26]; __pyx_result.weak_thread = __pyx_state[27] + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v___pyx_result); + __pyx_r = __pyx_v___pyx_result; + goto __pyx_L0; + + /* "(tree fragment)":1 + * def __pyx_unpickle_PyDBAdditionalThreadInfo(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError + * cdef object __pyx_result + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.__pyx_unpickle_PyDBAdditionalThreadInfo", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v___pyx_PickleError); + __Pyx_XDECREF(__pyx_v___pyx_result); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":11 + * __pyx_unpickle_PyDBAdditionalThreadInfo__set_state( __pyx_result, __pyx_state) + * return __pyx_result + * cdef __pyx_unpickle_PyDBAdditionalThreadInfo__set_state(PyDBAdditionalThreadInfo __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< + * __pyx_result.conditional_breakpoint_exception = __pyx_state[0]; __pyx_result.is_in_wait_loop = __pyx_state[1]; __pyx_result.is_tracing = __pyx_state[2]; __pyx_result.pydev_call_from_jinja2 = __pyx_state[3]; __pyx_result.pydev_call_inside_jinja2 = __pyx_state[4]; __pyx_result.pydev_django_resolve_frame = __pyx_state[5]; __pyx_result.pydev_func_name = __pyx_state[6]; __pyx_result.pydev_message = __pyx_state[7]; __pyx_result.pydev_next_line = __pyx_state[8]; __pyx_result.pydev_notify_kill = __pyx_state[9]; __pyx_result.pydev_original_step_cmd = __pyx_state[10]; __pyx_result.pydev_smart_child_offset = __pyx_state[11]; __pyx_result.pydev_smart_parent_offset = __pyx_state[12]; __pyx_result.pydev_smart_step_into_variants = __pyx_state[13]; __pyx_result.pydev_smart_step_stop = __pyx_state[14]; __pyx_result.pydev_state = __pyx_state[15]; __pyx_result.pydev_step_cmd = __pyx_state[16]; __pyx_result.pydev_step_stop = __pyx_state[17]; __pyx_result.pydev_use_scoped_step_frame = __pyx_state[18]; __pyx_result.step_in_initial_location = __pyx_state[19]; __pyx_result.suspend_type = __pyx_state[20]; __pyx_result.suspended_at_unhandled = __pyx_state[21]; __pyx_result.target_id_to_smart_step_into_variant = __pyx_state[22]; __pyx_result.thread_tracer = __pyx_state[23]; __pyx_result.top_level_thread_tracer_no_back_frames = __pyx_state[24]; __pyx_result.top_level_thread_tracer_unhandled = __pyx_state[25]; __pyx_result.trace_suspend_type = __pyx_state[26]; __pyx_result.weak_thread = __pyx_state[27] + * if len(__pyx_state) > 28 and hasattr(__pyx_result, '__dict__'): + */ + +static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython___pyx_unpickle_PyDBAdditionalThreadInfo__set_state(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + int __pyx_t_3; + Py_ssize_t __pyx_t_4; + int __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + unsigned int __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_unpickle_PyDBAdditionalThreadInfo__set_state", 1); + + /* "(tree fragment)":12 + * return __pyx_result + * cdef __pyx_unpickle_PyDBAdditionalThreadInfo__set_state(PyDBAdditionalThreadInfo __pyx_result, tuple __pyx_state): + * __pyx_result.conditional_breakpoint_exception = __pyx_state[0]; __pyx_result.is_in_wait_loop = __pyx_state[1]; __pyx_result.is_tracing = __pyx_state[2]; __pyx_result.pydev_call_from_jinja2 = __pyx_state[3]; __pyx_result.pydev_call_inside_jinja2 = __pyx_state[4]; __pyx_result.pydev_django_resolve_frame = __pyx_state[5]; __pyx_result.pydev_func_name = __pyx_state[6]; __pyx_result.pydev_message = __pyx_state[7]; __pyx_result.pydev_next_line = __pyx_state[8]; __pyx_result.pydev_notify_kill = __pyx_state[9]; __pyx_result.pydev_original_step_cmd = __pyx_state[10]; __pyx_result.pydev_smart_child_offset = __pyx_state[11]; __pyx_result.pydev_smart_parent_offset = __pyx_state[12]; __pyx_result.pydev_smart_step_into_variants = __pyx_state[13]; __pyx_result.pydev_smart_step_stop = __pyx_state[14]; __pyx_result.pydev_state = __pyx_state[15]; __pyx_result.pydev_step_cmd = __pyx_state[16]; __pyx_result.pydev_step_stop = __pyx_state[17]; __pyx_result.pydev_use_scoped_step_frame = __pyx_state[18]; __pyx_result.step_in_initial_location = __pyx_state[19]; __pyx_result.suspend_type = __pyx_state[20]; __pyx_result.suspended_at_unhandled = __pyx_state[21]; __pyx_result.target_id_to_smart_step_into_variant = __pyx_state[22]; __pyx_result.thread_tracer = __pyx_state[23]; __pyx_result.top_level_thread_tracer_no_back_frames = __pyx_state[24]; __pyx_result.top_level_thread_tracer_unhandled = __pyx_state[25]; __pyx_result.trace_suspend_type = __pyx_state[26]; __pyx_result.weak_thread = __pyx_state[27] # <<<<<<<<<<<<<< + * if len(__pyx_state) > 28 and hasattr(__pyx_result, '__dict__'): + * __pyx_result.__dict__.update(__pyx_state[28]) + */ + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_1))) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v___pyx_result->conditional_breakpoint_exception); + __Pyx_DECREF(__pyx_v___pyx_result->conditional_breakpoint_exception); + __pyx_v___pyx_result->conditional_breakpoint_exception = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v___pyx_result->is_in_wait_loop = __pyx_t_2; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v___pyx_result->is_tracing = __pyx_t_3; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v___pyx_result->pydev_call_from_jinja2); + __Pyx_DECREF(__pyx_v___pyx_result->pydev_call_from_jinja2); + __pyx_v___pyx_result->pydev_call_from_jinja2 = __pyx_t_1; + __pyx_t_1 = 0; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v___pyx_result->pydev_call_inside_jinja2); + __Pyx_DECREF(__pyx_v___pyx_result->pydev_call_inside_jinja2); + __pyx_v___pyx_result->pydev_call_inside_jinja2 = __pyx_t_1; + __pyx_t_1 = 0; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 5, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v___pyx_result->pydev_django_resolve_frame = __pyx_t_2; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 6, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_1))) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v___pyx_result->pydev_func_name); + __Pyx_DECREF(__pyx_v___pyx_result->pydev_func_name); + __pyx_v___pyx_result->pydev_func_name = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 7, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_1))) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v___pyx_result->pydev_message); + __Pyx_DECREF(__pyx_v___pyx_result->pydev_message); + __pyx_v___pyx_result->pydev_message = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 8, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v___pyx_result->pydev_next_line = __pyx_t_3; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 9, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v___pyx_result->pydev_notify_kill = __pyx_t_2; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 10, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v___pyx_result->pydev_original_step_cmd = __pyx_t_3; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 11, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v___pyx_result->pydev_smart_child_offset = __pyx_t_3; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 12, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v___pyx_result->pydev_smart_parent_offset = __pyx_t_3; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 13, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_1))) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v___pyx_result->pydev_smart_step_into_variants); + __Pyx_DECREF(__pyx_v___pyx_result->pydev_smart_step_into_variants); + __pyx_v___pyx_result->pydev_smart_step_into_variants = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 14, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v___pyx_result->pydev_smart_step_stop); + __Pyx_DECREF(__pyx_v___pyx_result->pydev_smart_step_stop); + __pyx_v___pyx_result->pydev_smart_step_stop = __pyx_t_1; + __pyx_t_1 = 0; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 15, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v___pyx_result->pydev_state = __pyx_t_3; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 16, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v___pyx_result->pydev_step_cmd = __pyx_t_3; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 17, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v___pyx_result->pydev_step_stop); + __Pyx_DECREF(__pyx_v___pyx_result->pydev_step_stop); + __pyx_v___pyx_result->pydev_step_stop = __pyx_t_1; + __pyx_t_1 = 0; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 18, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v___pyx_result->pydev_use_scoped_step_frame = __pyx_t_2; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 19, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v___pyx_result->step_in_initial_location); + __Pyx_DECREF(__pyx_v___pyx_result->step_in_initial_location); + __pyx_v___pyx_result->step_in_initial_location = __pyx_t_1; + __pyx_t_1 = 0; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 20, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v___pyx_result->suspend_type = __pyx_t_3; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 21, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v___pyx_result->suspended_at_unhandled = __pyx_t_2; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 22, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_1))) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v___pyx_result->target_id_to_smart_step_into_variant); + __Pyx_DECREF(__pyx_v___pyx_result->target_id_to_smart_step_into_variant); + __pyx_v___pyx_result->target_id_to_smart_step_into_variant = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 23, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v___pyx_result->thread_tracer); + __Pyx_DECREF(__pyx_v___pyx_result->thread_tracer); + __pyx_v___pyx_result->thread_tracer = __pyx_t_1; + __pyx_t_1 = 0; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 24, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v___pyx_result->top_level_thread_tracer_no_back_frames); + __Pyx_DECREF(__pyx_v___pyx_result->top_level_thread_tracer_no_back_frames); + __pyx_v___pyx_result->top_level_thread_tracer_no_back_frames = __pyx_t_1; + __pyx_t_1 = 0; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 25, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v___pyx_result->top_level_thread_tracer_unhandled); + __Pyx_DECREF(__pyx_v___pyx_result->top_level_thread_tracer_unhandled); + __pyx_v___pyx_result->top_level_thread_tracer_unhandled = __pyx_t_1; + __pyx_t_1 = 0; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 26, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_1))) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v___pyx_result->trace_suspend_type); + __Pyx_DECREF(__pyx_v___pyx_result->trace_suspend_type); + __pyx_v___pyx_result->trace_suspend_type = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 27, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v___pyx_result->weak_thread); + __Pyx_DECREF(__pyx_v___pyx_result->weak_thread); + __pyx_v___pyx_result->weak_thread = __pyx_t_1; + __pyx_t_1 = 0; + + /* "(tree fragment)":13 + * cdef __pyx_unpickle_PyDBAdditionalThreadInfo__set_state(PyDBAdditionalThreadInfo __pyx_result, tuple __pyx_state): + * __pyx_result.conditional_breakpoint_exception = __pyx_state[0]; __pyx_result.is_in_wait_loop = __pyx_state[1]; __pyx_result.is_tracing = __pyx_state[2]; __pyx_result.pydev_call_from_jinja2 = __pyx_state[3]; __pyx_result.pydev_call_inside_jinja2 = __pyx_state[4]; __pyx_result.pydev_django_resolve_frame = __pyx_state[5]; __pyx_result.pydev_func_name = __pyx_state[6]; __pyx_result.pydev_message = __pyx_state[7]; __pyx_result.pydev_next_line = __pyx_state[8]; __pyx_result.pydev_notify_kill = __pyx_state[9]; __pyx_result.pydev_original_step_cmd = __pyx_state[10]; __pyx_result.pydev_smart_child_offset = __pyx_state[11]; __pyx_result.pydev_smart_parent_offset = __pyx_state[12]; __pyx_result.pydev_smart_step_into_variants = __pyx_state[13]; __pyx_result.pydev_smart_step_stop = __pyx_state[14]; __pyx_result.pydev_state = __pyx_state[15]; __pyx_result.pydev_step_cmd = __pyx_state[16]; __pyx_result.pydev_step_stop = __pyx_state[17]; __pyx_result.pydev_use_scoped_step_frame = __pyx_state[18]; __pyx_result.step_in_initial_location = __pyx_state[19]; __pyx_result.suspend_type = __pyx_state[20]; __pyx_result.suspended_at_unhandled = __pyx_state[21]; __pyx_result.target_id_to_smart_step_into_variant = __pyx_state[22]; __pyx_result.thread_tracer = __pyx_state[23]; __pyx_result.top_level_thread_tracer_no_back_frames = __pyx_state[24]; __pyx_result.top_level_thread_tracer_unhandled = __pyx_state[25]; __pyx_result.trace_suspend_type = __pyx_state[26]; __pyx_result.weak_thread = __pyx_state[27] + * if len(__pyx_state) > 28 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< + * __pyx_result.__dict__.update(__pyx_state[28]) + */ + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(2, 13, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(2, 13, __pyx_L1_error) + __pyx_t_5 = (__pyx_t_4 > 28); + if (__pyx_t_5) { + } else { + __pyx_t_2 = __pyx_t_5; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(2, 13, __pyx_L1_error) + __pyx_t_2 = __pyx_t_5; + __pyx_L4_bool_binop_done:; + if (__pyx_t_2) { + + /* "(tree fragment)":14 + * __pyx_result.conditional_breakpoint_exception = __pyx_state[0]; __pyx_result.is_in_wait_loop = __pyx_state[1]; __pyx_result.is_tracing = __pyx_state[2]; __pyx_result.pydev_call_from_jinja2 = __pyx_state[3]; __pyx_result.pydev_call_inside_jinja2 = __pyx_state[4]; __pyx_result.pydev_django_resolve_frame = __pyx_state[5]; __pyx_result.pydev_func_name = __pyx_state[6]; __pyx_result.pydev_message = __pyx_state[7]; __pyx_result.pydev_next_line = __pyx_state[8]; __pyx_result.pydev_notify_kill = __pyx_state[9]; __pyx_result.pydev_original_step_cmd = __pyx_state[10]; __pyx_result.pydev_smart_child_offset = __pyx_state[11]; __pyx_result.pydev_smart_parent_offset = __pyx_state[12]; __pyx_result.pydev_smart_step_into_variants = __pyx_state[13]; __pyx_result.pydev_smart_step_stop = __pyx_state[14]; __pyx_result.pydev_state = __pyx_state[15]; __pyx_result.pydev_step_cmd = __pyx_state[16]; __pyx_result.pydev_step_stop = __pyx_state[17]; __pyx_result.pydev_use_scoped_step_frame = __pyx_state[18]; __pyx_result.step_in_initial_location = __pyx_state[19]; __pyx_result.suspend_type = __pyx_state[20]; __pyx_result.suspended_at_unhandled = __pyx_state[21]; __pyx_result.target_id_to_smart_step_into_variant = __pyx_state[22]; __pyx_result.thread_tracer = __pyx_state[23]; __pyx_result.top_level_thread_tracer_no_back_frames = __pyx_state[24]; __pyx_result.top_level_thread_tracer_unhandled = __pyx_state[25]; __pyx_result.trace_suspend_type = __pyx_state[26]; __pyx_result.weak_thread = __pyx_state[27] + * if len(__pyx_state) > 28 and hasattr(__pyx_result, '__dict__'): + * __pyx_result.__dict__.update(__pyx_state[28]) # <<<<<<<<<<<<<< + */ + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 14, __pyx_L1_error) + } + __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 28, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_8 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_6}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":13 + * cdef __pyx_unpickle_PyDBAdditionalThreadInfo__set_state(PyDBAdditionalThreadInfo __pyx_result, tuple __pyx_state): + * __pyx_result.conditional_breakpoint_exception = __pyx_state[0]; __pyx_result.is_in_wait_loop = __pyx_state[1]; __pyx_result.is_tracing = __pyx_state[2]; __pyx_result.pydev_call_from_jinja2 = __pyx_state[3]; __pyx_result.pydev_call_inside_jinja2 = __pyx_state[4]; __pyx_result.pydev_django_resolve_frame = __pyx_state[5]; __pyx_result.pydev_func_name = __pyx_state[6]; __pyx_result.pydev_message = __pyx_state[7]; __pyx_result.pydev_next_line = __pyx_state[8]; __pyx_result.pydev_notify_kill = __pyx_state[9]; __pyx_result.pydev_original_step_cmd = __pyx_state[10]; __pyx_result.pydev_smart_child_offset = __pyx_state[11]; __pyx_result.pydev_smart_parent_offset = __pyx_state[12]; __pyx_result.pydev_smart_step_into_variants = __pyx_state[13]; __pyx_result.pydev_smart_step_stop = __pyx_state[14]; __pyx_result.pydev_state = __pyx_state[15]; __pyx_result.pydev_step_cmd = __pyx_state[16]; __pyx_result.pydev_step_stop = __pyx_state[17]; __pyx_result.pydev_use_scoped_step_frame = __pyx_state[18]; __pyx_result.step_in_initial_location = __pyx_state[19]; __pyx_result.suspend_type = __pyx_state[20]; __pyx_result.suspended_at_unhandled = __pyx_state[21]; __pyx_result.target_id_to_smart_step_into_variant = __pyx_state[22]; __pyx_result.thread_tracer = __pyx_state[23]; __pyx_result.top_level_thread_tracer_no_back_frames = __pyx_state[24]; __pyx_result.top_level_thread_tracer_unhandled = __pyx_state[25]; __pyx_result.trace_suspend_type = __pyx_state[26]; __pyx_result.weak_thread = __pyx_state[27] + * if len(__pyx_state) > 28 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< + * __pyx_result.__dict__.update(__pyx_state[28]) + */ + } + + /* "(tree fragment)":11 + * __pyx_unpickle_PyDBAdditionalThreadInfo__set_state( __pyx_result, __pyx_state) + * return __pyx_result + * cdef __pyx_unpickle_PyDBAdditionalThreadInfo__set_state(PyDBAdditionalThreadInfo __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< + * __pyx_result.conditional_breakpoint_exception = __pyx_state[0]; __pyx_result.is_in_wait_loop = __pyx_state[1]; __pyx_result.is_tracing = __pyx_state[2]; __pyx_result.pydev_call_from_jinja2 = __pyx_state[3]; __pyx_result.pydev_call_inside_jinja2 = __pyx_state[4]; __pyx_result.pydev_django_resolve_frame = __pyx_state[5]; __pyx_result.pydev_func_name = __pyx_state[6]; __pyx_result.pydev_message = __pyx_state[7]; __pyx_result.pydev_next_line = __pyx_state[8]; __pyx_result.pydev_notify_kill = __pyx_state[9]; __pyx_result.pydev_original_step_cmd = __pyx_state[10]; __pyx_result.pydev_smart_child_offset = __pyx_state[11]; __pyx_result.pydev_smart_parent_offset = __pyx_state[12]; __pyx_result.pydev_smart_step_into_variants = __pyx_state[13]; __pyx_result.pydev_smart_step_stop = __pyx_state[14]; __pyx_result.pydev_state = __pyx_state[15]; __pyx_result.pydev_step_cmd = __pyx_state[16]; __pyx_result.pydev_step_stop = __pyx_state[17]; __pyx_result.pydev_use_scoped_step_frame = __pyx_state[18]; __pyx_result.step_in_initial_location = __pyx_state[19]; __pyx_result.suspend_type = __pyx_state[20]; __pyx_result.suspended_at_unhandled = __pyx_state[21]; __pyx_result.target_id_to_smart_step_into_variant = __pyx_state[22]; __pyx_result.thread_tracer = __pyx_state[23]; __pyx_result.top_level_thread_tracer_no_back_frames = __pyx_state[24]; __pyx_result.top_level_thread_tracer_unhandled = __pyx_state[25]; __pyx_result.trace_suspend_type = __pyx_state[26]; __pyx_result.weak_thread = __pyx_state[27] + * if len(__pyx_state) > 28 and hasattr(__pyx_result, '__dict__'): + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.__pyx_unpickle_PyDBAdditionalThreadInfo__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __pyx_unpickle__TryExceptContainerObj(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError + * cdef object __pyx_result + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_29__pyx_unpickle__TryExceptContainerObj(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_29__pyx_unpickle__TryExceptContainerObj = {"__pyx_unpickle__TryExceptContainerObj", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_29__pyx_unpickle__TryExceptContainerObj, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_29__pyx_unpickle__TryExceptContainerObj(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v___pyx_type = 0; + long __pyx_v___pyx_checksum; + PyObject *__pyx_v___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__pyx_unpickle__TryExceptContainerObj (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_type)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_checksum)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle__TryExceptContainerObj", 1, 3, 3, 1); __PYX_ERR(2, 1, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle__TryExceptContainerObj", 1, 3, 3, 2); __PYX_ERR(2, 1, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__pyx_unpickle__TryExceptContainerObj") < 0)) __PYX_ERR(2, 1, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 3)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + } + __pyx_v___pyx_type = values[0]; + __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(2, 1, __pyx_L3_error) + __pyx_v___pyx_state = values[2]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle__TryExceptContainerObj", 1, 3, 3, __pyx_nargs); __PYX_ERR(2, 1, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.__pyx_unpickle__TryExceptContainerObj", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_28__pyx_unpickle__TryExceptContainerObj(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_28__pyx_unpickle__TryExceptContainerObj(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_v___pyx_PickleError = 0; + PyObject *__pyx_v___pyx_result = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + unsigned int __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_unpickle__TryExceptContainerObj", 1); + + /* "(tree fragment)":4 + * cdef object __pyx_PickleError + * cdef object __pyx_result + * if __pyx_checksum not in (0xdbf5e44, 0xde17cd3, 0xc8b6eb1): # <<<<<<<<<<<<<< + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xdbf5e44, 0xde17cd3, 0xc8b6eb1) = (try_except_infos))" % __pyx_checksum + */ + __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__14, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(2, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_2) { + + /* "(tree fragment)":5 + * cdef object __pyx_result + * if __pyx_checksum not in (0xdbf5e44, 0xde17cd3, 0xc8b6eb1): + * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xdbf5e44, 0xde17cd3, 0xc8b6eb1) = (try_except_infos))" % __pyx_checksum + * __pyx_result = _TryExceptContainerObj.__new__(__pyx_type) + */ + __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_n_s_PickleError); + __Pyx_GIVEREF(__pyx_n_s_PickleError); + if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PickleError)) __PYX_ERR(2, 5, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_t_1); + __pyx_v___pyx_PickleError = __pyx_t_1; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "(tree fragment)":6 + * if __pyx_checksum not in (0xdbf5e44, 0xde17cd3, 0xc8b6eb1): + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xdbf5e44, 0xde17cd3, 0xc8b6eb1) = (try_except_infos))" % __pyx_checksum # <<<<<<<<<<<<<< + * __pyx_result = _TryExceptContainerObj.__new__(__pyx_type) + * if __pyx_state is not None: + */ + __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_Raise(__pyx_v___pyx_PickleError, __pyx_t_1, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(2, 6, __pyx_L1_error) + + /* "(tree fragment)":4 + * cdef object __pyx_PickleError + * cdef object __pyx_result + * if __pyx_checksum not in (0xdbf5e44, 0xde17cd3, 0xc8b6eb1): # <<<<<<<<<<<<<< + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xdbf5e44, 0xde17cd3, 0xc8b6eb1) = (try_except_infos))" % __pyx_checksum + */ + } + + /* "(tree fragment)":7 + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xdbf5e44, 0xde17cd3, 0xc8b6eb1) = (try_except_infos))" % __pyx_checksum + * __pyx_result = _TryExceptContainerObj.__new__(__pyx_type) # <<<<<<<<<<<<<< + * if __pyx_state is not None: + * __pyx_unpickle__TryExceptContainerObj__set_state(<_TryExceptContainerObj> __pyx_result, __pyx_state) + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj), __pyx_n_s_new); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v___pyx_type}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_v___pyx_result = __pyx_t_1; + __pyx_t_1 = 0; + + /* "(tree fragment)":8 + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xdbf5e44, 0xde17cd3, 0xc8b6eb1) = (try_except_infos))" % __pyx_checksum + * __pyx_result = _TryExceptContainerObj.__new__(__pyx_type) + * if __pyx_state is not None: # <<<<<<<<<<<<<< + * __pyx_unpickle__TryExceptContainerObj__set_state(<_TryExceptContainerObj> __pyx_result, __pyx_state) + * return __pyx_result + */ + __pyx_t_2 = (__pyx_v___pyx_state != Py_None); + if (__pyx_t_2) { + + /* "(tree fragment)":9 + * __pyx_result = _TryExceptContainerObj.__new__(__pyx_type) + * if __pyx_state is not None: + * __pyx_unpickle__TryExceptContainerObj__set_state(<_TryExceptContainerObj> __pyx_result, __pyx_state) # <<<<<<<<<<<<<< + * return __pyx_result + * cdef __pyx_unpickle__TryExceptContainerObj__set_state(_TryExceptContainerObj __pyx_result, tuple __pyx_state): + */ + if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(2, 9, __pyx_L1_error) + __pyx_t_1 = __pyx_f_14_pydevd_bundle_13pydevd_cython___pyx_unpickle__TryExceptContainerObj__set_state(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":8 + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xdbf5e44, 0xde17cd3, 0xc8b6eb1) = (try_except_infos))" % __pyx_checksum + * __pyx_result = _TryExceptContainerObj.__new__(__pyx_type) + * if __pyx_state is not None: # <<<<<<<<<<<<<< + * __pyx_unpickle__TryExceptContainerObj__set_state(<_TryExceptContainerObj> __pyx_result, __pyx_state) + * return __pyx_result + */ + } + + /* "(tree fragment)":10 + * if __pyx_state is not None: + * __pyx_unpickle__TryExceptContainerObj__set_state(<_TryExceptContainerObj> __pyx_result, __pyx_state) + * return __pyx_result # <<<<<<<<<<<<<< + * cdef __pyx_unpickle__TryExceptContainerObj__set_state(_TryExceptContainerObj __pyx_result, tuple __pyx_state): + * __pyx_result.try_except_infos = __pyx_state[0] + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v___pyx_result); + __pyx_r = __pyx_v___pyx_result; + goto __pyx_L0; + + /* "(tree fragment)":1 + * def __pyx_unpickle__TryExceptContainerObj(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError + * cdef object __pyx_result + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.__pyx_unpickle__TryExceptContainerObj", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v___pyx_PickleError); + __Pyx_XDECREF(__pyx_v___pyx_result); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":11 + * __pyx_unpickle__TryExceptContainerObj__set_state(<_TryExceptContainerObj> __pyx_result, __pyx_state) + * return __pyx_result + * cdef __pyx_unpickle__TryExceptContainerObj__set_state(_TryExceptContainerObj __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< + * __pyx_result.try_except_infos = __pyx_state[0] + * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): + */ + +static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython___pyx_unpickle__TryExceptContainerObj__set_state(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + Py_ssize_t __pyx_t_3; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + unsigned int __pyx_t_8; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_unpickle__TryExceptContainerObj__set_state", 1); + + /* "(tree fragment)":12 + * return __pyx_result + * cdef __pyx_unpickle__TryExceptContainerObj__set_state(_TryExceptContainerObj __pyx_result, tuple __pyx_state): + * __pyx_result.try_except_infos = __pyx_state[0] # <<<<<<<<<<<<<< + * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): + * __pyx_result.__dict__.update(__pyx_state[1]) + */ + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!(likely(PyList_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_1))) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v___pyx_result->try_except_infos); + __Pyx_DECREF(__pyx_v___pyx_result->try_except_infos); + __pyx_v___pyx_result->try_except_infos = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "(tree fragment)":13 + * cdef __pyx_unpickle__TryExceptContainerObj__set_state(_TryExceptContainerObj __pyx_result, tuple __pyx_state): + * __pyx_result.try_except_infos = __pyx_state[0] + * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< + * __pyx_result.__dict__.update(__pyx_state[1]) + */ + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(2, 13, __pyx_L1_error) + } + __pyx_t_3 = __Pyx_PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(2, 13, __pyx_L1_error) + __pyx_t_4 = (__pyx_t_3 > 1); + if (__pyx_t_4) { + } else { + __pyx_t_2 = __pyx_t_4; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 13, __pyx_L1_error) + __pyx_t_2 = __pyx_t_4; + __pyx_L4_bool_binop_done:; + if (__pyx_t_2) { + + /* "(tree fragment)":14 + * __pyx_result.try_except_infos = __pyx_state[0] + * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): + * __pyx_result.__dict__.update(__pyx_state[1]) # <<<<<<<<<<<<<< + */ + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_update); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 14, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_7 = NULL; + __pyx_t_8 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_8 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_5}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":13 + * cdef __pyx_unpickle__TryExceptContainerObj__set_state(_TryExceptContainerObj __pyx_result, tuple __pyx_state): + * __pyx_result.try_except_infos = __pyx_state[0] + * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< + * __pyx_result.__dict__.update(__pyx_state[1]) + */ + } + + /* "(tree fragment)":11 + * __pyx_unpickle__TryExceptContainerObj__set_state(<_TryExceptContainerObj> __pyx_result, __pyx_state) + * return __pyx_result + * cdef __pyx_unpickle__TryExceptContainerObj__set_state(_TryExceptContainerObj __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< + * __pyx_result.try_except_infos = __pyx_state[0] + * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.__pyx_unpickle__TryExceptContainerObj__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __pyx_unpickle_PyDBFrame(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError + * cdef object __pyx_result + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_31__pyx_unpickle_PyDBFrame(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_31__pyx_unpickle_PyDBFrame = {"__pyx_unpickle_PyDBFrame", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_31__pyx_unpickle_PyDBFrame, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_31__pyx_unpickle_PyDBFrame(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v___pyx_type = 0; + long __pyx_v___pyx_checksum; + PyObject *__pyx_v___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__pyx_unpickle_PyDBFrame (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_type)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_checksum)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_PyDBFrame", 1, 3, 3, 1); __PYX_ERR(2, 1, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_PyDBFrame", 1, 3, 3, 2); __PYX_ERR(2, 1, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__pyx_unpickle_PyDBFrame") < 0)) __PYX_ERR(2, 1, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 3)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + } + __pyx_v___pyx_type = values[0]; + __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(2, 1, __pyx_L3_error) + __pyx_v___pyx_state = values[2]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_PyDBFrame", 1, 3, 3, __pyx_nargs); __PYX_ERR(2, 1, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.__pyx_unpickle_PyDBFrame", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_30__pyx_unpickle_PyDBFrame(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_30__pyx_unpickle_PyDBFrame(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_v___pyx_PickleError = 0; + PyObject *__pyx_v___pyx_result = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + unsigned int __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_unpickle_PyDBFrame", 1); + + /* "(tree fragment)":4 + * cdef object __pyx_PickleError + * cdef object __pyx_result + * if __pyx_checksum not in (0x3a8c26e, 0xb793695, 0x506e682): # <<<<<<<<<<<<<< + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x3a8c26e, 0xb793695, 0x506e682) = (_args, exc_info, should_skip))" % __pyx_checksum + */ + __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__15, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(2, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_2) { + + /* "(tree fragment)":5 + * cdef object __pyx_result + * if __pyx_checksum not in (0x3a8c26e, 0xb793695, 0x506e682): + * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x3a8c26e, 0xb793695, 0x506e682) = (_args, exc_info, should_skip))" % __pyx_checksum + * __pyx_result = PyDBFrame.__new__(__pyx_type) + */ + __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_n_s_PickleError); + __Pyx_GIVEREF(__pyx_n_s_PickleError); + if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PickleError)) __PYX_ERR(2, 5, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_t_1); + __pyx_v___pyx_PickleError = __pyx_t_1; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "(tree fragment)":6 + * if __pyx_checksum not in (0x3a8c26e, 0xb793695, 0x506e682): + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x3a8c26e, 0xb793695, 0x506e682) = (_args, exc_info, should_skip))" % __pyx_checksum # <<<<<<<<<<<<<< + * __pyx_result = PyDBFrame.__new__(__pyx_type) + * if __pyx_state is not None: + */ + __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_Raise(__pyx_v___pyx_PickleError, __pyx_t_1, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(2, 6, __pyx_L1_error) + + /* "(tree fragment)":4 + * cdef object __pyx_PickleError + * cdef object __pyx_result + * if __pyx_checksum not in (0x3a8c26e, 0xb793695, 0x506e682): # <<<<<<<<<<<<<< + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x3a8c26e, 0xb793695, 0x506e682) = (_args, exc_info, should_skip))" % __pyx_checksum + */ + } + + /* "(tree fragment)":7 + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x3a8c26e, 0xb793695, 0x506e682) = (_args, exc_info, should_skip))" % __pyx_checksum + * __pyx_result = PyDBFrame.__new__(__pyx_type) # <<<<<<<<<<<<<< + * if __pyx_state is not None: + * __pyx_unpickle_PyDBFrame__set_state( __pyx_result, __pyx_state) + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBFrame), __pyx_n_s_new); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v___pyx_type}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_v___pyx_result = __pyx_t_1; + __pyx_t_1 = 0; + + /* "(tree fragment)":8 + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x3a8c26e, 0xb793695, 0x506e682) = (_args, exc_info, should_skip))" % __pyx_checksum + * __pyx_result = PyDBFrame.__new__(__pyx_type) + * if __pyx_state is not None: # <<<<<<<<<<<<<< + * __pyx_unpickle_PyDBFrame__set_state( __pyx_result, __pyx_state) + * return __pyx_result + */ + __pyx_t_2 = (__pyx_v___pyx_state != Py_None); + if (__pyx_t_2) { + + /* "(tree fragment)":9 + * __pyx_result = PyDBFrame.__new__(__pyx_type) + * if __pyx_state is not None: + * __pyx_unpickle_PyDBFrame__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< + * return __pyx_result + * cdef __pyx_unpickle_PyDBFrame__set_state(PyDBFrame __pyx_result, tuple __pyx_state): + */ + if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(2, 9, __pyx_L1_error) + __pyx_t_1 = __pyx_f_14_pydevd_bundle_13pydevd_cython___pyx_unpickle_PyDBFrame__set_state(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":8 + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x3a8c26e, 0xb793695, 0x506e682) = (_args, exc_info, should_skip))" % __pyx_checksum + * __pyx_result = PyDBFrame.__new__(__pyx_type) + * if __pyx_state is not None: # <<<<<<<<<<<<<< + * __pyx_unpickle_PyDBFrame__set_state( __pyx_result, __pyx_state) + * return __pyx_result + */ + } + + /* "(tree fragment)":10 + * if __pyx_state is not None: + * __pyx_unpickle_PyDBFrame__set_state( __pyx_result, __pyx_state) + * return __pyx_result # <<<<<<<<<<<<<< + * cdef __pyx_unpickle_PyDBFrame__set_state(PyDBFrame __pyx_result, tuple __pyx_state): + * __pyx_result._args = __pyx_state[0]; __pyx_result.exc_info = __pyx_state[1]; __pyx_result.should_skip = __pyx_state[2] + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v___pyx_result); + __pyx_r = __pyx_v___pyx_result; + goto __pyx_L0; + + /* "(tree fragment)":1 + * def __pyx_unpickle_PyDBFrame(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError + * cdef object __pyx_result + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.__pyx_unpickle_PyDBFrame", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v___pyx_PickleError); + __Pyx_XDECREF(__pyx_v___pyx_result); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":11 + * __pyx_unpickle_PyDBFrame__set_state( __pyx_result, __pyx_state) + * return __pyx_result + * cdef __pyx_unpickle_PyDBFrame__set_state(PyDBFrame __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< + * __pyx_result._args = __pyx_state[0]; __pyx_result.exc_info = __pyx_state[1]; __pyx_result.should_skip = __pyx_state[2] + * if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'): + */ + +static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython___pyx_unpickle_PyDBFrame__set_state(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + int __pyx_t_3; + Py_ssize_t __pyx_t_4; + int __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + unsigned int __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_unpickle_PyDBFrame__set_state", 1); + + /* "(tree fragment)":12 + * return __pyx_result + * cdef __pyx_unpickle_PyDBFrame__set_state(PyDBFrame __pyx_result, tuple __pyx_state): + * __pyx_result._args = __pyx_state[0]; __pyx_result.exc_info = __pyx_state[1]; __pyx_result.should_skip = __pyx_state[2] # <<<<<<<<<<<<<< + * if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'): + * __pyx_result.__dict__.update(__pyx_state[3]) + */ + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_1))) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v___pyx_result->_args); + __Pyx_DECREF(__pyx_v___pyx_result->_args); + __pyx_v___pyx_result->_args = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v___pyx_result->exc_info); + __Pyx_DECREF(__pyx_v___pyx_result->exc_info); + __pyx_v___pyx_result->exc_info = __pyx_t_1; + __pyx_t_1 = 0; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v___pyx_result->should_skip = __pyx_t_2; + + /* "(tree fragment)":13 + * cdef __pyx_unpickle_PyDBFrame__set_state(PyDBFrame __pyx_result, tuple __pyx_state): + * __pyx_result._args = __pyx_state[0]; __pyx_result.exc_info = __pyx_state[1]; __pyx_result.should_skip = __pyx_state[2] + * if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< + * __pyx_result.__dict__.update(__pyx_state[3]) + */ + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(2, 13, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(2, 13, __pyx_L1_error) + __pyx_t_5 = (__pyx_t_4 > 3); + if (__pyx_t_5) { + } else { + __pyx_t_3 = __pyx_t_5; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(2, 13, __pyx_L1_error) + __pyx_t_3 = __pyx_t_5; + __pyx_L4_bool_binop_done:; + if (__pyx_t_3) { + + /* "(tree fragment)":14 + * __pyx_result._args = __pyx_state[0]; __pyx_result.exc_info = __pyx_state[1]; __pyx_result.should_skip = __pyx_state[2] + * if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'): + * __pyx_result.__dict__.update(__pyx_state[3]) # <<<<<<<<<<<<<< + */ + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 14, __pyx_L1_error) + } + __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_8 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_6}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":13 + * cdef __pyx_unpickle_PyDBFrame__set_state(PyDBFrame __pyx_result, tuple __pyx_state): + * __pyx_result._args = __pyx_state[0]; __pyx_result.exc_info = __pyx_state[1]; __pyx_result.should_skip = __pyx_state[2] + * if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< + * __pyx_result.__dict__.update(__pyx_state[3]) + */ + } + + /* "(tree fragment)":11 + * __pyx_unpickle_PyDBFrame__set_state( __pyx_result, __pyx_state) + * return __pyx_result + * cdef __pyx_unpickle_PyDBFrame__set_state(PyDBFrame __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< + * __pyx_result._args = __pyx_state[0]; __pyx_result.exc_info = __pyx_state[1]; __pyx_result.should_skip = __pyx_state[2] + * if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'): + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.__pyx_unpickle_PyDBFrame__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __pyx_unpickle_SafeCallWrapper(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError + * cdef object __pyx_result + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_33__pyx_unpickle_SafeCallWrapper(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_33__pyx_unpickle_SafeCallWrapper = {"__pyx_unpickle_SafeCallWrapper", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_33__pyx_unpickle_SafeCallWrapper, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_33__pyx_unpickle_SafeCallWrapper(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v___pyx_type = 0; + long __pyx_v___pyx_checksum; + PyObject *__pyx_v___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__pyx_unpickle_SafeCallWrapper (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_type)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_checksum)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_SafeCallWrapper", 1, 3, 3, 1); __PYX_ERR(2, 1, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_SafeCallWrapper", 1, 3, 3, 2); __PYX_ERR(2, 1, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__pyx_unpickle_SafeCallWrapper") < 0)) __PYX_ERR(2, 1, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 3)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + } + __pyx_v___pyx_type = values[0]; + __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(2, 1, __pyx_L3_error) + __pyx_v___pyx_state = values[2]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_SafeCallWrapper", 1, 3, 3, __pyx_nargs); __PYX_ERR(2, 1, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.__pyx_unpickle_SafeCallWrapper", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_32__pyx_unpickle_SafeCallWrapper(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_32__pyx_unpickle_SafeCallWrapper(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_v___pyx_PickleError = 0; + PyObject *__pyx_v___pyx_result = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + unsigned int __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_unpickle_SafeCallWrapper", 1); + + /* "(tree fragment)":4 + * cdef object __pyx_PickleError + * cdef object __pyx_result + * if __pyx_checksum not in (0xa14289b, 0x3cc10aa, 0x77c077b): # <<<<<<<<<<<<<< + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xa14289b, 0x3cc10aa, 0x77c077b) = (method_object))" % __pyx_checksum + */ + __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__16, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(2, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_2) { + + /* "(tree fragment)":5 + * cdef object __pyx_result + * if __pyx_checksum not in (0xa14289b, 0x3cc10aa, 0x77c077b): + * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xa14289b, 0x3cc10aa, 0x77c077b) = (method_object))" % __pyx_checksum + * __pyx_result = SafeCallWrapper.__new__(__pyx_type) + */ + __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_n_s_PickleError); + __Pyx_GIVEREF(__pyx_n_s_PickleError); + if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PickleError)) __PYX_ERR(2, 5, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_t_1); + __pyx_v___pyx_PickleError = __pyx_t_1; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "(tree fragment)":6 + * if __pyx_checksum not in (0xa14289b, 0x3cc10aa, 0x77c077b): + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xa14289b, 0x3cc10aa, 0x77c077b) = (method_object))" % __pyx_checksum # <<<<<<<<<<<<<< + * __pyx_result = SafeCallWrapper.__new__(__pyx_type) + * if __pyx_state is not None: + */ + __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_4, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_Raise(__pyx_v___pyx_PickleError, __pyx_t_1, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(2, 6, __pyx_L1_error) + + /* "(tree fragment)":4 + * cdef object __pyx_PickleError + * cdef object __pyx_result + * if __pyx_checksum not in (0xa14289b, 0x3cc10aa, 0x77c077b): # <<<<<<<<<<<<<< + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xa14289b, 0x3cc10aa, 0x77c077b) = (method_object))" % __pyx_checksum + */ + } + + /* "(tree fragment)":7 + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xa14289b, 0x3cc10aa, 0x77c077b) = (method_object))" % __pyx_checksum + * __pyx_result = SafeCallWrapper.__new__(__pyx_type) # <<<<<<<<<<<<<< + * if __pyx_state is not None: + * __pyx_unpickle_SafeCallWrapper__set_state( __pyx_result, __pyx_state) + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper), __pyx_n_s_new); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v___pyx_type}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_v___pyx_result = __pyx_t_1; + __pyx_t_1 = 0; + + /* "(tree fragment)":8 + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xa14289b, 0x3cc10aa, 0x77c077b) = (method_object))" % __pyx_checksum + * __pyx_result = SafeCallWrapper.__new__(__pyx_type) + * if __pyx_state is not None: # <<<<<<<<<<<<<< + * __pyx_unpickle_SafeCallWrapper__set_state( __pyx_result, __pyx_state) + * return __pyx_result + */ + __pyx_t_2 = (__pyx_v___pyx_state != Py_None); + if (__pyx_t_2) { + + /* "(tree fragment)":9 + * __pyx_result = SafeCallWrapper.__new__(__pyx_type) + * if __pyx_state is not None: + * __pyx_unpickle_SafeCallWrapper__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< + * return __pyx_result + * cdef __pyx_unpickle_SafeCallWrapper__set_state(SafeCallWrapper __pyx_result, tuple __pyx_state): + */ + if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(2, 9, __pyx_L1_error) + __pyx_t_1 = __pyx_f_14_pydevd_bundle_13pydevd_cython___pyx_unpickle_SafeCallWrapper__set_state(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":8 + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xa14289b, 0x3cc10aa, 0x77c077b) = (method_object))" % __pyx_checksum + * __pyx_result = SafeCallWrapper.__new__(__pyx_type) + * if __pyx_state is not None: # <<<<<<<<<<<<<< + * __pyx_unpickle_SafeCallWrapper__set_state( __pyx_result, __pyx_state) + * return __pyx_result + */ + } + + /* "(tree fragment)":10 + * if __pyx_state is not None: + * __pyx_unpickle_SafeCallWrapper__set_state( __pyx_result, __pyx_state) + * return __pyx_result # <<<<<<<<<<<<<< + * cdef __pyx_unpickle_SafeCallWrapper__set_state(SafeCallWrapper __pyx_result, tuple __pyx_state): + * __pyx_result.method_object = __pyx_state[0] + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v___pyx_result); + __pyx_r = __pyx_v___pyx_result; + goto __pyx_L0; + + /* "(tree fragment)":1 + * def __pyx_unpickle_SafeCallWrapper(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError + * cdef object __pyx_result + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.__pyx_unpickle_SafeCallWrapper", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v___pyx_PickleError); + __Pyx_XDECREF(__pyx_v___pyx_result); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":11 + * __pyx_unpickle_SafeCallWrapper__set_state( __pyx_result, __pyx_state) + * return __pyx_result + * cdef __pyx_unpickle_SafeCallWrapper__set_state(SafeCallWrapper __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< + * __pyx_result.method_object = __pyx_state[0] + * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): + */ + +static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython___pyx_unpickle_SafeCallWrapper__set_state(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + Py_ssize_t __pyx_t_3; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + unsigned int __pyx_t_8; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_unpickle_SafeCallWrapper__set_state", 1); + + /* "(tree fragment)":12 + * return __pyx_result + * cdef __pyx_unpickle_SafeCallWrapper__set_state(SafeCallWrapper __pyx_result, tuple __pyx_state): + * __pyx_result.method_object = __pyx_state[0] # <<<<<<<<<<<<<< + * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): + * __pyx_result.__dict__.update(__pyx_state[1]) + */ + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v___pyx_result->method_object); + __Pyx_DECREF(__pyx_v___pyx_result->method_object); + __pyx_v___pyx_result->method_object = __pyx_t_1; + __pyx_t_1 = 0; + + /* "(tree fragment)":13 + * cdef __pyx_unpickle_SafeCallWrapper__set_state(SafeCallWrapper __pyx_result, tuple __pyx_state): + * __pyx_result.method_object = __pyx_state[0] + * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< + * __pyx_result.__dict__.update(__pyx_state[1]) + */ + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(2, 13, __pyx_L1_error) + } + __pyx_t_3 = __Pyx_PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(2, 13, __pyx_L1_error) + __pyx_t_4 = (__pyx_t_3 > 1); + if (__pyx_t_4) { + } else { + __pyx_t_2 = __pyx_t_4; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 13, __pyx_L1_error) + __pyx_t_2 = __pyx_t_4; + __pyx_L4_bool_binop_done:; + if (__pyx_t_2) { + + /* "(tree fragment)":14 + * __pyx_result.method_object = __pyx_state[0] + * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): + * __pyx_result.__dict__.update(__pyx_state[1]) # <<<<<<<<<<<<<< + */ + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_update); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 14, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_7 = NULL; + __pyx_t_8 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_8 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_5}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":13 + * cdef __pyx_unpickle_SafeCallWrapper__set_state(SafeCallWrapper __pyx_result, tuple __pyx_state): + * __pyx_result.method_object = __pyx_state[0] + * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< + * __pyx_result.__dict__.update(__pyx_state[1]) + */ + } + + /* "(tree fragment)":11 + * __pyx_unpickle_SafeCallWrapper__set_state( __pyx_result, __pyx_state) + * return __pyx_result + * cdef __pyx_unpickle_SafeCallWrapper__set_state(SafeCallWrapper __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< + * __pyx_result.method_object = __pyx_state[0] + * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.__pyx_unpickle_SafeCallWrapper__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError + * cdef object __pyx_result + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_35__pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_35__pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions = {"__pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_35__pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_35__pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v___pyx_type = 0; + long __pyx_v___pyx_checksum; + PyObject *__pyx_v___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_type)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_checksum)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions", 1, 3, 3, 1); __PYX_ERR(2, 1, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions", 1, 3, 3, 2); __PYX_ERR(2, 1, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions") < 0)) __PYX_ERR(2, 1, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 3)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + } + __pyx_v___pyx_type = values[0]; + __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(2, 1, __pyx_L3_error) + __pyx_v___pyx_state = values[2]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions", 1, 3, 3, __pyx_nargs); __PYX_ERR(2, 1, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.__pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_34__pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_34__pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_v___pyx_PickleError = 0; + PyObject *__pyx_v___pyx_result = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + unsigned int __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions", 1); + + /* "(tree fragment)":4 + * cdef object __pyx_PickleError + * cdef object __pyx_result + * if __pyx_checksum not in (0x121e1fb, 0xf3a61b1, 0x3d7902a): # <<<<<<<<<<<<<< + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x121e1fb, 0xf3a61b1, 0x3d7902a) = (_args))" % __pyx_checksum + */ + __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__17, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(2, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_2) { + + /* "(tree fragment)":5 + * cdef object __pyx_result + * if __pyx_checksum not in (0x121e1fb, 0xf3a61b1, 0x3d7902a): + * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x121e1fb, 0xf3a61b1, 0x3d7902a) = (_args))" % __pyx_checksum + * __pyx_result = TopLevelThreadTracerOnlyUnhandledExceptions.__new__(__pyx_type) + */ + __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_n_s_PickleError); + __Pyx_GIVEREF(__pyx_n_s_PickleError); + if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PickleError)) __PYX_ERR(2, 5, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_t_1); + __pyx_v___pyx_PickleError = __pyx_t_1; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "(tree fragment)":6 + * if __pyx_checksum not in (0x121e1fb, 0xf3a61b1, 0x3d7902a): + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x121e1fb, 0xf3a61b1, 0x3d7902a) = (_args))" % __pyx_checksum # <<<<<<<<<<<<<< + * __pyx_result = TopLevelThreadTracerOnlyUnhandledExceptions.__new__(__pyx_type) + * if __pyx_state is not None: + */ + __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_5, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_Raise(__pyx_v___pyx_PickleError, __pyx_t_1, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(2, 6, __pyx_L1_error) + + /* "(tree fragment)":4 + * cdef object __pyx_PickleError + * cdef object __pyx_result + * if __pyx_checksum not in (0x121e1fb, 0xf3a61b1, 0x3d7902a): # <<<<<<<<<<<<<< + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x121e1fb, 0xf3a61b1, 0x3d7902a) = (_args))" % __pyx_checksum + */ + } + + /* "(tree fragment)":7 + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x121e1fb, 0xf3a61b1, 0x3d7902a) = (_args))" % __pyx_checksum + * __pyx_result = TopLevelThreadTracerOnlyUnhandledExceptions.__new__(__pyx_type) # <<<<<<<<<<<<<< + * if __pyx_state is not None: + * __pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions__set_state( __pyx_result, __pyx_state) + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions), __pyx_n_s_new); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v___pyx_type}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_v___pyx_result = __pyx_t_1; + __pyx_t_1 = 0; + + /* "(tree fragment)":8 + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x121e1fb, 0xf3a61b1, 0x3d7902a) = (_args))" % __pyx_checksum + * __pyx_result = TopLevelThreadTracerOnlyUnhandledExceptions.__new__(__pyx_type) + * if __pyx_state is not None: # <<<<<<<<<<<<<< + * __pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions__set_state( __pyx_result, __pyx_state) + * return __pyx_result + */ + __pyx_t_2 = (__pyx_v___pyx_state != Py_None); + if (__pyx_t_2) { + + /* "(tree fragment)":9 + * __pyx_result = TopLevelThreadTracerOnlyUnhandledExceptions.__new__(__pyx_type) + * if __pyx_state is not None: + * __pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< + * return __pyx_result + * cdef __pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions__set_state(TopLevelThreadTracerOnlyUnhandledExceptions __pyx_result, tuple __pyx_state): + */ + if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(2, 9, __pyx_L1_error) + __pyx_t_1 = __pyx_f_14_pydevd_bundle_13pydevd_cython___pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions__set_state(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":8 + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x121e1fb, 0xf3a61b1, 0x3d7902a) = (_args))" % __pyx_checksum + * __pyx_result = TopLevelThreadTracerOnlyUnhandledExceptions.__new__(__pyx_type) + * if __pyx_state is not None: # <<<<<<<<<<<<<< + * __pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions__set_state( __pyx_result, __pyx_state) + * return __pyx_result + */ + } + + /* "(tree fragment)":10 + * if __pyx_state is not None: + * __pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions__set_state( __pyx_result, __pyx_state) + * return __pyx_result # <<<<<<<<<<<<<< + * cdef __pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions__set_state(TopLevelThreadTracerOnlyUnhandledExceptions __pyx_result, tuple __pyx_state): + * __pyx_result._args = __pyx_state[0] + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v___pyx_result); + __pyx_r = __pyx_v___pyx_result; + goto __pyx_L0; + + /* "(tree fragment)":1 + * def __pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError + * cdef object __pyx_result + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.__pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v___pyx_PickleError); + __Pyx_XDECREF(__pyx_v___pyx_result); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":11 + * __pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions__set_state( __pyx_result, __pyx_state) + * return __pyx_result + * cdef __pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions__set_state(TopLevelThreadTracerOnlyUnhandledExceptions __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< + * __pyx_result._args = __pyx_state[0] + * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): + */ + +static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython___pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions__set_state(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + Py_ssize_t __pyx_t_3; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + unsigned int __pyx_t_8; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions__set_state", 1); + + /* "(tree fragment)":12 + * return __pyx_result + * cdef __pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions__set_state(TopLevelThreadTracerOnlyUnhandledExceptions __pyx_result, tuple __pyx_state): + * __pyx_result._args = __pyx_state[0] # <<<<<<<<<<<<<< + * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): + * __pyx_result.__dict__.update(__pyx_state[1]) + */ + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_1))) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v___pyx_result->_args); + __Pyx_DECREF(__pyx_v___pyx_result->_args); + __pyx_v___pyx_result->_args = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "(tree fragment)":13 + * cdef __pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions__set_state(TopLevelThreadTracerOnlyUnhandledExceptions __pyx_result, tuple __pyx_state): + * __pyx_result._args = __pyx_state[0] + * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< + * __pyx_result.__dict__.update(__pyx_state[1]) + */ + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(2, 13, __pyx_L1_error) + } + __pyx_t_3 = __Pyx_PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(2, 13, __pyx_L1_error) + __pyx_t_4 = (__pyx_t_3 > 1); + if (__pyx_t_4) { + } else { + __pyx_t_2 = __pyx_t_4; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 13, __pyx_L1_error) + __pyx_t_2 = __pyx_t_4; + __pyx_L4_bool_binop_done:; + if (__pyx_t_2) { + + /* "(tree fragment)":14 + * __pyx_result._args = __pyx_state[0] + * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): + * __pyx_result.__dict__.update(__pyx_state[1]) # <<<<<<<<<<<<<< + */ + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_update); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 14, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_7 = NULL; + __pyx_t_8 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_8 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_5}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":13 + * cdef __pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions__set_state(TopLevelThreadTracerOnlyUnhandledExceptions __pyx_result, tuple __pyx_state): + * __pyx_result._args = __pyx_state[0] + * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< + * __pyx_result.__dict__.update(__pyx_state[1]) + */ + } + + /* "(tree fragment)":11 + * __pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions__set_state( __pyx_result, __pyx_state) + * return __pyx_result + * cdef __pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions__set_state(TopLevelThreadTracerOnlyUnhandledExceptions __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< + * __pyx_result._args = __pyx_state[0] + * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.__pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __pyx_unpickle_TopLevelThreadTracerNoBackFrame(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError + * cdef object __pyx_result + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_37__pyx_unpickle_TopLevelThreadTracerNoBackFrame(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_37__pyx_unpickle_TopLevelThreadTracerNoBackFrame = {"__pyx_unpickle_TopLevelThreadTracerNoBackFrame", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_37__pyx_unpickle_TopLevelThreadTracerNoBackFrame, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_37__pyx_unpickle_TopLevelThreadTracerNoBackFrame(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v___pyx_type = 0; + long __pyx_v___pyx_checksum; + PyObject *__pyx_v___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__pyx_unpickle_TopLevelThreadTracerNoBackFrame (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_type)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_checksum)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_TopLevelThreadTracerNoBackFrame", 1, 3, 3, 1); __PYX_ERR(2, 1, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_TopLevelThreadTracerNoBackFrame", 1, 3, 3, 2); __PYX_ERR(2, 1, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__pyx_unpickle_TopLevelThreadTracerNoBackFrame") < 0)) __PYX_ERR(2, 1, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 3)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + } + __pyx_v___pyx_type = values[0]; + __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(2, 1, __pyx_L3_error) + __pyx_v___pyx_state = values[2]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_TopLevelThreadTracerNoBackFrame", 1, 3, 3, __pyx_nargs); __PYX_ERR(2, 1, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.__pyx_unpickle_TopLevelThreadTracerNoBackFrame", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_36__pyx_unpickle_TopLevelThreadTracerNoBackFrame(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_36__pyx_unpickle_TopLevelThreadTracerNoBackFrame(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_v___pyx_PickleError = 0; + PyObject *__pyx_v___pyx_result = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + unsigned int __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_unpickle_TopLevelThreadTracerNoBackFrame", 1); + + /* "(tree fragment)":4 + * cdef object __pyx_PickleError + * cdef object __pyx_result + * if __pyx_checksum not in (0x3f5f7e9, 0x0ff9c96, 0xa3a9ec1): # <<<<<<<<<<<<<< + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x3f5f7e9, 0x0ff9c96, 0xa3a9ec1) = (_args, _frame_trace_dispatch, _last_exc_arg, _last_raise_line, _raise_lines, try_except_infos))" % __pyx_checksum + */ + __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__18, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(2, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_2) { + + /* "(tree fragment)":5 + * cdef object __pyx_result + * if __pyx_checksum not in (0x3f5f7e9, 0x0ff9c96, 0xa3a9ec1): + * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x3f5f7e9, 0x0ff9c96, 0xa3a9ec1) = (_args, _frame_trace_dispatch, _last_exc_arg, _last_raise_line, _raise_lines, try_except_infos))" % __pyx_checksum + * __pyx_result = TopLevelThreadTracerNoBackFrame.__new__(__pyx_type) + */ + __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_n_s_PickleError); + __Pyx_GIVEREF(__pyx_n_s_PickleError); + if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PickleError)) __PYX_ERR(2, 5, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_t_1); + __pyx_v___pyx_PickleError = __pyx_t_1; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "(tree fragment)":6 + * if __pyx_checksum not in (0x3f5f7e9, 0x0ff9c96, 0xa3a9ec1): + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x3f5f7e9, 0x0ff9c96, 0xa3a9ec1) = (_args, _frame_trace_dispatch, _last_exc_arg, _last_raise_line, _raise_lines, try_except_infos))" % __pyx_checksum # <<<<<<<<<<<<<< + * __pyx_result = TopLevelThreadTracerNoBackFrame.__new__(__pyx_type) + * if __pyx_state is not None: + */ + __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_6, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_Raise(__pyx_v___pyx_PickleError, __pyx_t_1, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(2, 6, __pyx_L1_error) + + /* "(tree fragment)":4 + * cdef object __pyx_PickleError + * cdef object __pyx_result + * if __pyx_checksum not in (0x3f5f7e9, 0x0ff9c96, 0xa3a9ec1): # <<<<<<<<<<<<<< + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x3f5f7e9, 0x0ff9c96, 0xa3a9ec1) = (_args, _frame_trace_dispatch, _last_exc_arg, _last_raise_line, _raise_lines, try_except_infos))" % __pyx_checksum + */ + } + + /* "(tree fragment)":7 + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x3f5f7e9, 0x0ff9c96, 0xa3a9ec1) = (_args, _frame_trace_dispatch, _last_exc_arg, _last_raise_line, _raise_lines, try_except_infos))" % __pyx_checksum + * __pyx_result = TopLevelThreadTracerNoBackFrame.__new__(__pyx_type) # <<<<<<<<<<<<<< + * if __pyx_state is not None: + * __pyx_unpickle_TopLevelThreadTracerNoBackFrame__set_state( __pyx_result, __pyx_state) + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame), __pyx_n_s_new); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v___pyx_type}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_v___pyx_result = __pyx_t_1; + __pyx_t_1 = 0; + + /* "(tree fragment)":8 + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x3f5f7e9, 0x0ff9c96, 0xa3a9ec1) = (_args, _frame_trace_dispatch, _last_exc_arg, _last_raise_line, _raise_lines, try_except_infos))" % __pyx_checksum + * __pyx_result = TopLevelThreadTracerNoBackFrame.__new__(__pyx_type) + * if __pyx_state is not None: # <<<<<<<<<<<<<< + * __pyx_unpickle_TopLevelThreadTracerNoBackFrame__set_state( __pyx_result, __pyx_state) + * return __pyx_result + */ + __pyx_t_2 = (__pyx_v___pyx_state != Py_None); + if (__pyx_t_2) { + + /* "(tree fragment)":9 + * __pyx_result = TopLevelThreadTracerNoBackFrame.__new__(__pyx_type) + * if __pyx_state is not None: + * __pyx_unpickle_TopLevelThreadTracerNoBackFrame__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< + * return __pyx_result + * cdef __pyx_unpickle_TopLevelThreadTracerNoBackFrame__set_state(TopLevelThreadTracerNoBackFrame __pyx_result, tuple __pyx_state): + */ + if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(2, 9, __pyx_L1_error) + __pyx_t_1 = __pyx_f_14_pydevd_bundle_13pydevd_cython___pyx_unpickle_TopLevelThreadTracerNoBackFrame__set_state(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":8 + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x3f5f7e9, 0x0ff9c96, 0xa3a9ec1) = (_args, _frame_trace_dispatch, _last_exc_arg, _last_raise_line, _raise_lines, try_except_infos))" % __pyx_checksum + * __pyx_result = TopLevelThreadTracerNoBackFrame.__new__(__pyx_type) + * if __pyx_state is not None: # <<<<<<<<<<<<<< + * __pyx_unpickle_TopLevelThreadTracerNoBackFrame__set_state( __pyx_result, __pyx_state) + * return __pyx_result + */ + } + + /* "(tree fragment)":10 + * if __pyx_state is not None: + * __pyx_unpickle_TopLevelThreadTracerNoBackFrame__set_state( __pyx_result, __pyx_state) + * return __pyx_result # <<<<<<<<<<<<<< + * cdef __pyx_unpickle_TopLevelThreadTracerNoBackFrame__set_state(TopLevelThreadTracerNoBackFrame __pyx_result, tuple __pyx_state): + * __pyx_result._args = __pyx_state[0]; __pyx_result._frame_trace_dispatch = __pyx_state[1]; __pyx_result._last_exc_arg = __pyx_state[2]; __pyx_result._last_raise_line = __pyx_state[3]; __pyx_result._raise_lines = __pyx_state[4]; __pyx_result.try_except_infos = __pyx_state[5] + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v___pyx_result); + __pyx_r = __pyx_v___pyx_result; + goto __pyx_L0; + + /* "(tree fragment)":1 + * def __pyx_unpickle_TopLevelThreadTracerNoBackFrame(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError + * cdef object __pyx_result + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.__pyx_unpickle_TopLevelThreadTracerNoBackFrame", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v___pyx_PickleError); + __Pyx_XDECREF(__pyx_v___pyx_result); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":11 + * __pyx_unpickle_TopLevelThreadTracerNoBackFrame__set_state( __pyx_result, __pyx_state) + * return __pyx_result + * cdef __pyx_unpickle_TopLevelThreadTracerNoBackFrame__set_state(TopLevelThreadTracerNoBackFrame __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< + * __pyx_result._args = __pyx_state[0]; __pyx_result._frame_trace_dispatch = __pyx_state[1]; __pyx_result._last_exc_arg = __pyx_state[2]; __pyx_result._last_raise_line = __pyx_state[3]; __pyx_result._raise_lines = __pyx_state[4]; __pyx_result.try_except_infos = __pyx_state[5] + * if len(__pyx_state) > 6 and hasattr(__pyx_result, '__dict__'): + */ + +static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython___pyx_unpickle_TopLevelThreadTracerNoBackFrame__set_state(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + int __pyx_t_3; + Py_ssize_t __pyx_t_4; + int __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + unsigned int __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_unpickle_TopLevelThreadTracerNoBackFrame__set_state", 1); + + /* "(tree fragment)":12 + * return __pyx_result + * cdef __pyx_unpickle_TopLevelThreadTracerNoBackFrame__set_state(TopLevelThreadTracerNoBackFrame __pyx_result, tuple __pyx_state): + * __pyx_result._args = __pyx_state[0]; __pyx_result._frame_trace_dispatch = __pyx_state[1]; __pyx_result._last_exc_arg = __pyx_state[2]; __pyx_result._last_raise_line = __pyx_state[3]; __pyx_result._raise_lines = __pyx_state[4]; __pyx_result.try_except_infos = __pyx_state[5] # <<<<<<<<<<<<<< + * if len(__pyx_state) > 6 and hasattr(__pyx_result, '__dict__'): + * __pyx_result.__dict__.update(__pyx_state[6]) + */ + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_1))) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v___pyx_result->_args); + __Pyx_DECREF(__pyx_v___pyx_result->_args); + __pyx_v___pyx_result->_args = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v___pyx_result->_frame_trace_dispatch); + __Pyx_DECREF(__pyx_v___pyx_result->_frame_trace_dispatch); + __pyx_v___pyx_result->_frame_trace_dispatch = __pyx_t_1; + __pyx_t_1 = 0; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v___pyx_result->_last_exc_arg); + __Pyx_DECREF(__pyx_v___pyx_result->_last_exc_arg); + __pyx_v___pyx_result->_last_exc_arg = __pyx_t_1; + __pyx_t_1 = 0; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v___pyx_result->_last_raise_line = __pyx_t_2; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!(likely(PySet_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("set", __pyx_t_1))) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v___pyx_result->_raise_lines); + __Pyx_DECREF(__pyx_v___pyx_result->_raise_lines); + __pyx_v___pyx_result->_raise_lines = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 5, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v___pyx_result->try_except_infos); + __Pyx_DECREF(__pyx_v___pyx_result->try_except_infos); + __pyx_v___pyx_result->try_except_infos = __pyx_t_1; + __pyx_t_1 = 0; + + /* "(tree fragment)":13 + * cdef __pyx_unpickle_TopLevelThreadTracerNoBackFrame__set_state(TopLevelThreadTracerNoBackFrame __pyx_result, tuple __pyx_state): + * __pyx_result._args = __pyx_state[0]; __pyx_result._frame_trace_dispatch = __pyx_state[1]; __pyx_result._last_exc_arg = __pyx_state[2]; __pyx_result._last_raise_line = __pyx_state[3]; __pyx_result._raise_lines = __pyx_state[4]; __pyx_result.try_except_infos = __pyx_state[5] + * if len(__pyx_state) > 6 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< + * __pyx_result.__dict__.update(__pyx_state[6]) + */ + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(2, 13, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(2, 13, __pyx_L1_error) + __pyx_t_5 = (__pyx_t_4 > 6); + if (__pyx_t_5) { + } else { + __pyx_t_3 = __pyx_t_5; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(2, 13, __pyx_L1_error) + __pyx_t_3 = __pyx_t_5; + __pyx_L4_bool_binop_done:; + if (__pyx_t_3) { + + /* "(tree fragment)":14 + * __pyx_result._args = __pyx_state[0]; __pyx_result._frame_trace_dispatch = __pyx_state[1]; __pyx_result._last_exc_arg = __pyx_state[2]; __pyx_result._last_raise_line = __pyx_state[3]; __pyx_result._raise_lines = __pyx_state[4]; __pyx_result.try_except_infos = __pyx_state[5] + * if len(__pyx_state) > 6 and hasattr(__pyx_result, '__dict__'): + * __pyx_result.__dict__.update(__pyx_state[6]) # <<<<<<<<<<<<<< + */ + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 14, __pyx_L1_error) + } + __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 6, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_8 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_6}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":13 + * cdef __pyx_unpickle_TopLevelThreadTracerNoBackFrame__set_state(TopLevelThreadTracerNoBackFrame __pyx_result, tuple __pyx_state): + * __pyx_result._args = __pyx_state[0]; __pyx_result._frame_trace_dispatch = __pyx_state[1]; __pyx_result._last_exc_arg = __pyx_state[2]; __pyx_result._last_raise_line = __pyx_state[3]; __pyx_result._raise_lines = __pyx_state[4]; __pyx_result.try_except_infos = __pyx_state[5] + * if len(__pyx_state) > 6 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< + * __pyx_result.__dict__.update(__pyx_state[6]) + */ + } + + /* "(tree fragment)":11 + * __pyx_unpickle_TopLevelThreadTracerNoBackFrame__set_state( __pyx_result, __pyx_state) + * return __pyx_result + * cdef __pyx_unpickle_TopLevelThreadTracerNoBackFrame__set_state(TopLevelThreadTracerNoBackFrame __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< + * __pyx_result._args = __pyx_state[0]; __pyx_result._frame_trace_dispatch = __pyx_state[1]; __pyx_result._last_exc_arg = __pyx_state[2]; __pyx_result._last_raise_line = __pyx_state[3]; __pyx_result._raise_lines = __pyx_state[4]; __pyx_result.try_except_infos = __pyx_state[5] + * if len(__pyx_state) > 6 and hasattr(__pyx_result, '__dict__'): + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.__pyx_unpickle_TopLevelThreadTracerNoBackFrame__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __pyx_unpickle_ThreadTracer(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError + * cdef object __pyx_result + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_39__pyx_unpickle_ThreadTracer(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_14_pydevd_bundle_13pydevd_cython_39__pyx_unpickle_ThreadTracer = {"__pyx_unpickle_ThreadTracer", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_39__pyx_unpickle_ThreadTracer, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_14_pydevd_bundle_13pydevd_cython_39__pyx_unpickle_ThreadTracer(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v___pyx_type = 0; + long __pyx_v___pyx_checksum; + PyObject *__pyx_v___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__pyx_unpickle_ThreadTracer (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_type)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_checksum)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ThreadTracer", 1, 3, 3, 1); __PYX_ERR(2, 1, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ThreadTracer", 1, 3, 3, 2); __PYX_ERR(2, 1, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__pyx_unpickle_ThreadTracer") < 0)) __PYX_ERR(2, 1, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 3)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + } + __pyx_v___pyx_type = values[0]; + __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(2, 1, __pyx_L3_error) + __pyx_v___pyx_state = values[2]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ThreadTracer", 1, 3, 3, __pyx_nargs); __PYX_ERR(2, 1, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.__pyx_unpickle_ThreadTracer", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_14_pydevd_bundle_13pydevd_cython_38__pyx_unpickle_ThreadTracer(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_14_pydevd_bundle_13pydevd_cython_38__pyx_unpickle_ThreadTracer(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_v___pyx_PickleError = 0; + PyObject *__pyx_v___pyx_result = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + unsigned int __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_unpickle_ThreadTracer", 1); + + /* "(tree fragment)":4 + * cdef object __pyx_PickleError + * cdef object __pyx_result + * if __pyx_checksum not in (0x121e1fb, 0xf3a61b1, 0x3d7902a): # <<<<<<<<<<<<<< + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x121e1fb, 0xf3a61b1, 0x3d7902a) = (_args))" % __pyx_checksum + */ + __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__17, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(2, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_2) { + + /* "(tree fragment)":5 + * cdef object __pyx_result + * if __pyx_checksum not in (0x121e1fb, 0xf3a61b1, 0x3d7902a): + * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x121e1fb, 0xf3a61b1, 0x3d7902a) = (_args))" % __pyx_checksum + * __pyx_result = ThreadTracer.__new__(__pyx_type) + */ + __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_n_s_PickleError); + __Pyx_GIVEREF(__pyx_n_s_PickleError); + if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PickleError)) __PYX_ERR(2, 5, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_t_1); + __pyx_v___pyx_PickleError = __pyx_t_1; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "(tree fragment)":6 + * if __pyx_checksum not in (0x121e1fb, 0xf3a61b1, 0x3d7902a): + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x121e1fb, 0xf3a61b1, 0x3d7902a) = (_args))" % __pyx_checksum # <<<<<<<<<<<<<< + * __pyx_result = ThreadTracer.__new__(__pyx_type) + * if __pyx_state is not None: + */ + __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_5, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_Raise(__pyx_v___pyx_PickleError, __pyx_t_1, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(2, 6, __pyx_L1_error) + + /* "(tree fragment)":4 + * cdef object __pyx_PickleError + * cdef object __pyx_result + * if __pyx_checksum not in (0x121e1fb, 0xf3a61b1, 0x3d7902a): # <<<<<<<<<<<<<< + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x121e1fb, 0xf3a61b1, 0x3d7902a) = (_args))" % __pyx_checksum + */ + } + + /* "(tree fragment)":7 + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x121e1fb, 0xf3a61b1, 0x3d7902a) = (_args))" % __pyx_checksum + * __pyx_result = ThreadTracer.__new__(__pyx_type) # <<<<<<<<<<<<<< + * if __pyx_state is not None: + * __pyx_unpickle_ThreadTracer__set_state( __pyx_result, __pyx_state) + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_ThreadTracer), __pyx_n_s_new); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v___pyx_type}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_v___pyx_result = __pyx_t_1; + __pyx_t_1 = 0; + + /* "(tree fragment)":8 + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x121e1fb, 0xf3a61b1, 0x3d7902a) = (_args))" % __pyx_checksum + * __pyx_result = ThreadTracer.__new__(__pyx_type) + * if __pyx_state is not None: # <<<<<<<<<<<<<< + * __pyx_unpickle_ThreadTracer__set_state( __pyx_result, __pyx_state) + * return __pyx_result + */ + __pyx_t_2 = (__pyx_v___pyx_state != Py_None); + if (__pyx_t_2) { + + /* "(tree fragment)":9 + * __pyx_result = ThreadTracer.__new__(__pyx_type) + * if __pyx_state is not None: + * __pyx_unpickle_ThreadTracer__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< + * return __pyx_result + * cdef __pyx_unpickle_ThreadTracer__set_state(ThreadTracer __pyx_result, tuple __pyx_state): + */ + if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(2, 9, __pyx_L1_error) + __pyx_t_1 = __pyx_f_14_pydevd_bundle_13pydevd_cython___pyx_unpickle_ThreadTracer__set_state(((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_ThreadTracer *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":8 + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x121e1fb, 0xf3a61b1, 0x3d7902a) = (_args))" % __pyx_checksum + * __pyx_result = ThreadTracer.__new__(__pyx_type) + * if __pyx_state is not None: # <<<<<<<<<<<<<< + * __pyx_unpickle_ThreadTracer__set_state( __pyx_result, __pyx_state) + * return __pyx_result + */ + } + + /* "(tree fragment)":10 + * if __pyx_state is not None: + * __pyx_unpickle_ThreadTracer__set_state( __pyx_result, __pyx_state) + * return __pyx_result # <<<<<<<<<<<<<< + * cdef __pyx_unpickle_ThreadTracer__set_state(ThreadTracer __pyx_result, tuple __pyx_state): + * __pyx_result._args = __pyx_state[0] + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v___pyx_result); + __pyx_r = __pyx_v___pyx_result; + goto __pyx_L0; + + /* "(tree fragment)":1 + * def __pyx_unpickle_ThreadTracer(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError + * cdef object __pyx_result + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.__pyx_unpickle_ThreadTracer", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v___pyx_PickleError); + __Pyx_XDECREF(__pyx_v___pyx_result); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":11 + * __pyx_unpickle_ThreadTracer__set_state( __pyx_result, __pyx_state) + * return __pyx_result + * cdef __pyx_unpickle_ThreadTracer__set_state(ThreadTracer __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< + * __pyx_result._args = __pyx_state[0] + * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): + */ + +static PyObject *__pyx_f_14_pydevd_bundle_13pydevd_cython___pyx_unpickle_ThreadTracer__set_state(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_ThreadTracer *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + Py_ssize_t __pyx_t_3; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + unsigned int __pyx_t_8; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_unpickle_ThreadTracer__set_state", 1); + + /* "(tree fragment)":12 + * return __pyx_result + * cdef __pyx_unpickle_ThreadTracer__set_state(ThreadTracer __pyx_result, tuple __pyx_state): + * __pyx_result._args = __pyx_state[0] # <<<<<<<<<<<<<< + * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): + * __pyx_result.__dict__.update(__pyx_state[1]) + */ + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_1))) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v___pyx_result->_args); + __Pyx_DECREF(__pyx_v___pyx_result->_args); + __pyx_v___pyx_result->_args = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "(tree fragment)":13 + * cdef __pyx_unpickle_ThreadTracer__set_state(ThreadTracer __pyx_result, tuple __pyx_state): + * __pyx_result._args = __pyx_state[0] + * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< + * __pyx_result.__dict__.update(__pyx_state[1]) + */ + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(2, 13, __pyx_L1_error) + } + __pyx_t_3 = __Pyx_PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(2, 13, __pyx_L1_error) + __pyx_t_4 = (__pyx_t_3 > 1); + if (__pyx_t_4) { + } else { + __pyx_t_2 = __pyx_t_4; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 13, __pyx_L1_error) + __pyx_t_2 = __pyx_t_4; + __pyx_L4_bool_binop_done:; + if (__pyx_t_2) { + + /* "(tree fragment)":14 + * __pyx_result._args = __pyx_state[0] + * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): + * __pyx_result.__dict__.update(__pyx_state[1]) # <<<<<<<<<<<<<< + */ + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_update); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 14, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_7 = NULL; + __pyx_t_8 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_8 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_5}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":13 + * cdef __pyx_unpickle_ThreadTracer__set_state(ThreadTracer __pyx_result, tuple __pyx_state): + * __pyx_result._args = __pyx_state[0] + * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< + * __pyx_result.__dict__.update(__pyx_state[1]) + */ + } + + /* "(tree fragment)":11 + * __pyx_unpickle_ThreadTracer__set_state( __pyx_result, __pyx_state) + * return __pyx_result + * cdef __pyx_unpickle_ThreadTracer__set_state(ThreadTracer __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< + * __pyx_result._args = __pyx_state[0] + * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython.__pyx_unpickle_ThreadTracer__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo __pyx_vtable_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo; + +static PyObject *__pyx_tp_new_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *p; + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { + o = (*t->tp_alloc)(t, 0); + } else { + o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); + } + if (unlikely(!o)) return 0; + #endif + p = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)o); + p->__pyx_vtab = __pyx_vtabptr_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo; + p->pydev_step_stop = Py_None; Py_INCREF(Py_None); + p->pydev_smart_step_stop = Py_None; Py_INCREF(Py_None); + p->pydev_call_from_jinja2 = Py_None; Py_INCREF(Py_None); + p->pydev_call_inside_jinja2 = Py_None; Py_INCREF(Py_None); + p->conditional_breakpoint_exception = ((PyObject*)Py_None); Py_INCREF(Py_None); + p->pydev_message = ((PyObject*)Py_None); Py_INCREF(Py_None); + p->pydev_func_name = ((PyObject*)Py_None); Py_INCREF(Py_None); + p->trace_suspend_type = ((PyObject*)Py_None); Py_INCREF(Py_None); + p->top_level_thread_tracer_no_back_frames = Py_None; Py_INCREF(Py_None); + p->top_level_thread_tracer_unhandled = Py_None; Py_INCREF(Py_None); + p->thread_tracer = Py_None; Py_INCREF(Py_None); + p->step_in_initial_location = Py_None; Py_INCREF(Py_None); + p->pydev_smart_step_into_variants = ((PyObject*)Py_None); Py_INCREF(Py_None); + p->target_id_to_smart_step_into_variant = ((PyObject*)Py_None); Py_INCREF(Py_None); + p->weak_thread = Py_None; Py_INCREF(Py_None); + return o; +} + +static void __pyx_tp_dealloc_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo(PyObject *o) { + struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *p = (struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->pydev_step_stop); + Py_CLEAR(p->pydev_smart_step_stop); + Py_CLEAR(p->pydev_call_from_jinja2); + Py_CLEAR(p->pydev_call_inside_jinja2); + Py_CLEAR(p->conditional_breakpoint_exception); + Py_CLEAR(p->pydev_message); + Py_CLEAR(p->pydev_func_name); + Py_CLEAR(p->trace_suspend_type); + Py_CLEAR(p->top_level_thread_tracer_no_back_frames); + Py_CLEAR(p->top_level_thread_tracer_unhandled); + Py_CLEAR(p->thread_tracer); + Py_CLEAR(p->step_in_initial_location); + Py_CLEAR(p->pydev_smart_step_into_variants); + Py_CLEAR(p->target_id_to_smart_step_into_variant); + Py_CLEAR(p->weak_thread); + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif +} + +static int __pyx_tp_traverse_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *p = (struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)o; + if (p->pydev_step_stop) { + e = (*v)(p->pydev_step_stop, a); if (e) return e; + } + if (p->pydev_smart_step_stop) { + e = (*v)(p->pydev_smart_step_stop, a); if (e) return e; + } + if (p->pydev_call_from_jinja2) { + e = (*v)(p->pydev_call_from_jinja2, a); if (e) return e; + } + if (p->pydev_call_inside_jinja2) { + e = (*v)(p->pydev_call_inside_jinja2, a); if (e) return e; + } + if (p->conditional_breakpoint_exception) { + e = (*v)(p->conditional_breakpoint_exception, a); if (e) return e; + } + if (p->top_level_thread_tracer_no_back_frames) { + e = (*v)(p->top_level_thread_tracer_no_back_frames, a); if (e) return e; + } + if (p->top_level_thread_tracer_unhandled) { + e = (*v)(p->top_level_thread_tracer_unhandled, a); if (e) return e; + } + if (p->thread_tracer) { + e = (*v)(p->thread_tracer, a); if (e) return e; + } + if (p->step_in_initial_location) { + e = (*v)(p->step_in_initial_location, a); if (e) return e; + } + if (p->pydev_smart_step_into_variants) { + e = (*v)(p->pydev_smart_step_into_variants, a); if (e) return e; + } + if (p->target_id_to_smart_step_into_variant) { + e = (*v)(p->target_id_to_smart_step_into_variant, a); if (e) return e; + } + if (p->weak_thread) { + e = (*v)(p->weak_thread, a); if (e) return e; + } + return 0; +} + +static int __pyx_tp_clear_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo(PyObject *o) { + PyObject* tmp; + struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *p = (struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)o; + tmp = ((PyObject*)p->pydev_step_stop); + p->pydev_step_stop = Py_None; Py_INCREF(Py_None); + Py_XDECREF(tmp); + tmp = ((PyObject*)p->pydev_smart_step_stop); + p->pydev_smart_step_stop = Py_None; Py_INCREF(Py_None); + Py_XDECREF(tmp); + tmp = ((PyObject*)p->pydev_call_from_jinja2); + p->pydev_call_from_jinja2 = Py_None; Py_INCREF(Py_None); + Py_XDECREF(tmp); + tmp = ((PyObject*)p->pydev_call_inside_jinja2); + p->pydev_call_inside_jinja2 = Py_None; Py_INCREF(Py_None); + Py_XDECREF(tmp); + tmp = ((PyObject*)p->conditional_breakpoint_exception); + p->conditional_breakpoint_exception = ((PyObject*)Py_None); Py_INCREF(Py_None); + Py_XDECREF(tmp); + tmp = ((PyObject*)p->top_level_thread_tracer_no_back_frames); + p->top_level_thread_tracer_no_back_frames = Py_None; Py_INCREF(Py_None); + Py_XDECREF(tmp); + tmp = ((PyObject*)p->top_level_thread_tracer_unhandled); + p->top_level_thread_tracer_unhandled = Py_None; Py_INCREF(Py_None); + Py_XDECREF(tmp); + tmp = ((PyObject*)p->thread_tracer); + p->thread_tracer = Py_None; Py_INCREF(Py_None); + Py_XDECREF(tmp); + tmp = ((PyObject*)p->step_in_initial_location); + p->step_in_initial_location = Py_None; Py_INCREF(Py_None); + Py_XDECREF(tmp); + tmp = ((PyObject*)p->pydev_smart_step_into_variants); + p->pydev_smart_step_into_variants = ((PyObject*)Py_None); Py_INCREF(Py_None); + Py_XDECREF(tmp); + tmp = ((PyObject*)p->target_id_to_smart_step_into_variant); + p->target_id_to_smart_step_into_variant = ((PyObject*)Py_None); Py_INCREF(Py_None); + Py_XDECREF(tmp); + tmp = ((PyObject*)p->weak_thread); + p->weak_thread = Py_None; Py_INCREF(Py_None); + Py_XDECREF(tmp); + return 0; +} + +static PyObject *__pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_state(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11pydev_state_1__get__(o); +} + +static int __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_state(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11pydev_state_3__set__(o, v); + } + else { + PyErr_SetString(PyExc_NotImplementedError, "__del__"); + return -1; + } +} + +static PyObject *__pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_step_stop(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_step_stop_1__get__(o); +} + +static int __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_step_stop(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_step_stop_3__set__(o, v); + } + else { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_step_stop_5__del__(o); + } +} + +static PyObject *__pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_original_step_cmd(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_23pydev_original_step_cmd_1__get__(o); +} + +static int __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_original_step_cmd(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_23pydev_original_step_cmd_3__set__(o, v); + } + else { + PyErr_SetString(PyExc_NotImplementedError, "__del__"); + return -1; + } +} + +static PyObject *__pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_step_cmd(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_14pydev_step_cmd_1__get__(o); +} + +static int __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_step_cmd(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_14pydev_step_cmd_3__set__(o, v); + } + else { + PyErr_SetString(PyExc_NotImplementedError, "__del__"); + return -1; + } +} + +static PyObject *__pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_notify_kill(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_17pydev_notify_kill_1__get__(o); +} + +static int __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_notify_kill(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_17pydev_notify_kill_3__set__(o, v); + } + else { + PyErr_SetString(PyExc_NotImplementedError, "__del__"); + return -1; + } +} + +static PyObject *__pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_smart_step_stop(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_21pydev_smart_step_stop_1__get__(o); +} + +static int __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_smart_step_stop(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_21pydev_smart_step_stop_3__set__(o, v); + } + else { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_21pydev_smart_step_stop_5__del__(o); + } +} + +static PyObject *__pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_django_resolve_frame(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_26pydev_django_resolve_frame_1__get__(o); +} + +static int __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_django_resolve_frame(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_26pydev_django_resolve_frame_3__set__(o, v); + } + else { + PyErr_SetString(PyExc_NotImplementedError, "__del__"); + return -1; + } +} + +static PyObject *__pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_call_from_jinja2(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22pydev_call_from_jinja2_1__get__(o); +} + +static int __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_call_from_jinja2(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22pydev_call_from_jinja2_3__set__(o, v); + } + else { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22pydev_call_from_jinja2_5__del__(o); + } +} + +static PyObject *__pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_call_inside_jinja2(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_call_inside_jinja2_1__get__(o); +} + +static int __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_call_inside_jinja2(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_call_inside_jinja2_3__set__(o, v); + } + else { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_call_inside_jinja2_5__del__(o); + } +} + +static PyObject *__pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_is_tracing(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_10is_tracing_1__get__(o); +} + +static int __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_is_tracing(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_10is_tracing_3__set__(o, v); + } + else { + PyErr_SetString(PyExc_NotImplementedError, "__del__"); + return -1; + } +} + +static PyObject *__pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_conditional_breakpoint_exception(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_32conditional_breakpoint_exception_1__get__(o); +} + +static int __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_conditional_breakpoint_exception(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_32conditional_breakpoint_exception_3__set__(o, v); + } + else { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_32conditional_breakpoint_exception_5__del__(o); + } +} + +static PyObject *__pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_message(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13pydev_message_1__get__(o); +} + +static int __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_message(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13pydev_message_3__set__(o, v); + } + else { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13pydev_message_5__del__(o); + } +} + +static PyObject *__pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_suspend_type(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_12suspend_type_1__get__(o); +} + +static int __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_suspend_type(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_12suspend_type_3__set__(o, v); + } + else { + PyErr_SetString(PyExc_NotImplementedError, "__del__"); + return -1; + } +} + +static PyObject *__pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_next_line(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_next_line_1__get__(o); +} + +static int __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_next_line(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_next_line_3__set__(o, v); + } + else { + PyErr_SetString(PyExc_NotImplementedError, "__del__"); + return -1; + } +} + +static PyObject *__pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_func_name(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_func_name_1__get__(o); +} + +static int __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_func_name(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_func_name_3__set__(o, v); + } + else { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15pydev_func_name_5__del__(o); + } +} + +static PyObject *__pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_suspended_at_unhandled(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22suspended_at_unhandled_1__get__(o); +} + +static int __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_suspended_at_unhandled(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_22suspended_at_unhandled_3__set__(o, v); + } + else { + PyErr_SetString(PyExc_NotImplementedError, "__del__"); + return -1; + } +} + +static PyObject *__pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_trace_suspend_type(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_18trace_suspend_type_1__get__(o); +} + +static int __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_trace_suspend_type(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_18trace_suspend_type_3__set__(o, v); + } + else { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_18trace_suspend_type_5__del__(o); + } +} + +static PyObject *__pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_top_level_thread_tracer_no_back_frames(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_38top_level_thread_tracer_no_back_frames_1__get__(o); +} + +static int __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_top_level_thread_tracer_no_back_frames(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_38top_level_thread_tracer_no_back_frames_3__set__(o, v); + } + else { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_38top_level_thread_tracer_no_back_frames_5__del__(o); + } +} + +static PyObject *__pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_top_level_thread_tracer_unhandled(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_33top_level_thread_tracer_unhandled_1__get__(o); +} + +static int __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_top_level_thread_tracer_unhandled(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_33top_level_thread_tracer_unhandled_3__set__(o, v); + } + else { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_33top_level_thread_tracer_unhandled_5__del__(o); + } +} + +static PyObject *__pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_thread_tracer(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13thread_tracer_1__get__(o); +} + +static int __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_thread_tracer(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13thread_tracer_3__set__(o, v); + } + else { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13thread_tracer_5__del__(o); + } +} + +static PyObject *__pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_step_in_initial_location(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24step_in_initial_location_1__get__(o); +} + +static int __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_step_in_initial_location(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24step_in_initial_location_3__set__(o, v); + } + else { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24step_in_initial_location_5__del__(o); + } +} + +static PyObject *__pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_smart_parent_offset(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_25pydev_smart_parent_offset_1__get__(o); +} + +static int __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_smart_parent_offset(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_25pydev_smart_parent_offset_3__set__(o, v); + } + else { + PyErr_SetString(PyExc_NotImplementedError, "__del__"); + return -1; + } +} + +static PyObject *__pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_smart_child_offset(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_smart_child_offset_1__get__(o); +} + +static int __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_smart_child_offset(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_24pydev_smart_child_offset_3__set__(o, v); + } + else { + PyErr_SetString(PyExc_NotImplementedError, "__del__"); + return -1; + } +} + +static PyObject *__pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_smart_step_into_variants(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_30pydev_smart_step_into_variants_1__get__(o); +} + +static int __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_smart_step_into_variants(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_30pydev_smart_step_into_variants_3__set__(o, v); + } + else { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_30pydev_smart_step_into_variants_5__del__(o); + } +} + +static PyObject *__pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_target_id_to_smart_step_into_variant(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_36target_id_to_smart_step_into_variant_1__get__(o); +} + +static int __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_target_id_to_smart_step_into_variant(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_36target_id_to_smart_step_into_variant_3__set__(o, v); + } + else { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_36target_id_to_smart_step_into_variant_5__del__(o); + } +} + +static PyObject *__pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_use_scoped_step_frame(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_27pydev_use_scoped_step_frame_1__get__(o); +} + +static int __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_use_scoped_step_frame(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_27pydev_use_scoped_step_frame_3__set__(o, v); + } + else { + PyErr_SetString(PyExc_NotImplementedError, "__del__"); + return -1; + } +} + +static PyObject *__pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_weak_thread(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11weak_thread_1__get__(o); +} + +static int __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_weak_thread(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11weak_thread_3__set__(o, v); + } + else { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11weak_thread_5__del__(o); + } +} + +static PyObject *__pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_is_in_wait_loop(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15is_in_wait_loop_1__get__(o); +} + +static int __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_is_in_wait_loop(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15is_in_wait_loop_3__set__(o, v); + } + else { + PyErr_SetString(PyExc_NotImplementedError, "__del__"); + return -1; + } +} + +static PyMethodDef __pyx_methods_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo[] = { + {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {0, 0, 0, 0} +}; + +static struct PyGetSetDef __pyx_getsets_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo[] = { + {(char *)"pydev_state", __pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_state, __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_state, (char *)0, 0}, + {(char *)"pydev_step_stop", __pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_step_stop, __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_step_stop, (char *)0, 0}, + {(char *)"pydev_original_step_cmd", __pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_original_step_cmd, __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_original_step_cmd, (char *)0, 0}, + {(char *)"pydev_step_cmd", __pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_step_cmd, __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_step_cmd, (char *)0, 0}, + {(char *)"pydev_notify_kill", __pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_notify_kill, __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_notify_kill, (char *)0, 0}, + {(char *)"pydev_smart_step_stop", __pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_smart_step_stop, __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_smart_step_stop, (char *)0, 0}, + {(char *)"pydev_django_resolve_frame", __pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_django_resolve_frame, __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_django_resolve_frame, (char *)0, 0}, + {(char *)"pydev_call_from_jinja2", __pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_call_from_jinja2, __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_call_from_jinja2, (char *)0, 0}, + {(char *)"pydev_call_inside_jinja2", __pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_call_inside_jinja2, __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_call_inside_jinja2, (char *)0, 0}, + {(char *)"is_tracing", __pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_is_tracing, __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_is_tracing, (char *)0, 0}, + {(char *)"conditional_breakpoint_exception", __pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_conditional_breakpoint_exception, __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_conditional_breakpoint_exception, (char *)0, 0}, + {(char *)"pydev_message", __pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_message, __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_message, (char *)0, 0}, + {(char *)"suspend_type", __pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_suspend_type, __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_suspend_type, (char *)0, 0}, + {(char *)"pydev_next_line", __pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_next_line, __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_next_line, (char *)0, 0}, + {(char *)"pydev_func_name", __pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_func_name, __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_func_name, (char *)0, 0}, + {(char *)"suspended_at_unhandled", __pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_suspended_at_unhandled, __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_suspended_at_unhandled, (char *)0, 0}, + {(char *)"trace_suspend_type", __pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_trace_suspend_type, __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_trace_suspend_type, (char *)0, 0}, + {(char *)"top_level_thread_tracer_no_back_frames", __pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_top_level_thread_tracer_no_back_frames, __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_top_level_thread_tracer_no_back_frames, (char *)0, 0}, + {(char *)"top_level_thread_tracer_unhandled", __pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_top_level_thread_tracer_unhandled, __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_top_level_thread_tracer_unhandled, (char *)0, 0}, + {(char *)"thread_tracer", __pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_thread_tracer, __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_thread_tracer, (char *)0, 0}, + {(char *)"step_in_initial_location", __pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_step_in_initial_location, __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_step_in_initial_location, (char *)0, 0}, + {(char *)"pydev_smart_parent_offset", __pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_smart_parent_offset, __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_smart_parent_offset, (char *)0, 0}, + {(char *)"pydev_smart_child_offset", __pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_smart_child_offset, __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_smart_child_offset, (char *)0, 0}, + {(char *)"pydev_smart_step_into_variants", __pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_smart_step_into_variants, __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_smart_step_into_variants, (char *)0, 0}, + {(char *)"target_id_to_smart_step_into_variant", __pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_target_id_to_smart_step_into_variant, __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_target_id_to_smart_step_into_variant, (char *)0, 0}, + {(char *)"pydev_use_scoped_step_frame", __pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_use_scoped_step_frame, __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_pydev_use_scoped_step_frame, (char *)0, 0}, + {(char *)"weak_thread", __pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_weak_thread, __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_weak_thread, (char *)0, 0}, + {(char *)"is_in_wait_loop", __pyx_getprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_is_in_wait_loop, __pyx_setprop_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_is_in_wait_loop, (char *)0, 0}, + {0, 0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo}, + {Py_tp_str, (void *)__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11__str__}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo}, + {Py_tp_clear, (void *)__pyx_tp_clear_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo}, + {Py_tp_methods, (void *)__pyx_methods_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo}, + {Py_tp_getset, (void *)__pyx_getsets_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo}, + {Py_tp_init, (void *)__pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_1__init__}, + {Py_tp_new, (void *)__pyx_tp_new_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo}, + {0, 0}, +}; +static PyType_Spec __pyx_type_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo_spec = { + "_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo", + sizeof(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, + __pyx_type_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo_slots, +}; +#else + +static PyTypeObject __pyx_type_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo = { + PyVarObject_HEAD_INIT(0, 0) + "_pydevd_bundle.pydevd_cython.""PyDBAdditionalThreadInfo", /*tp_name*/ + sizeof(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_11__str__, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo, /*tp_traverse*/ + __pyx_tp_clear_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo, /*tp_methods*/ + 0, /*tp_members*/ + __pyx_getsets_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + __pyx_pw_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_1__init__, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +static PyObject *__pyx_tp_new_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *p; + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { + o = (*t->tp_alloc)(t, 0); + } else { + o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); + } + if (unlikely(!o)) return 0; + #endif + p = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *)o); + p->try_except_infos = ((PyObject*)Py_None); Py_INCREF(Py_None); + return o; +} + +static void __pyx_tp_dealloc_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj(PyObject *o) { + struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *p = (struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->try_except_infos); + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif +} + +static int __pyx_tp_traverse_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *p = (struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *)o; + if (p->try_except_infos) { + e = (*v)(p->try_except_infos, a); if (e) return e; + } + return 0; +} + +static int __pyx_tp_clear_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj(PyObject *o) { + PyObject* tmp; + struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *p = (struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj *)o; + tmp = ((PyObject*)p->try_except_infos); + p->try_except_infos = ((PyObject*)Py_None); Py_INCREF(Py_None); + Py_XDECREF(tmp); + return 0; +} + +static PyObject *__pyx_getprop_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_try_except_infos(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_16try_except_infos_1__get__(o); +} + +static int __pyx_setprop_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_try_except_infos(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_16try_except_infos_3__set__(o, v); + } + else { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_16try_except_infos_5__del__(o); + } +} + +static PyMethodDef __pyx_methods_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj[] = { + {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {0, 0, 0, 0} +}; + +static struct PyGetSetDef __pyx_getsets_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj[] = { + {(char *)"try_except_infos", __pyx_getprop_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_try_except_infos, __pyx_setprop_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_try_except_infos, (char *)0, 0}, + {0, 0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj}, + {Py_tp_clear, (void *)__pyx_tp_clear_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj}, + {Py_tp_methods, (void *)__pyx_methods_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj}, + {Py_tp_getset, (void *)__pyx_getsets_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj}, + {Py_tp_init, (void *)__pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_1__init__}, + {Py_tp_new, (void *)__pyx_tp_new_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj}, + {0, 0}, +}; +static PyType_Spec __pyx_type_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj_spec = { + "_pydevd_bundle.pydevd_cython._TryExceptContainerObj", + sizeof(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, + __pyx_type_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj_slots, +}; +#else + +static PyTypeObject __pyx_type_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj = { + PyVarObject_HEAD_INIT(0, 0) + "_pydevd_bundle.pydevd_cython.""_TryExceptContainerObj", /*tp_name*/ + sizeof(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj, /*tp_traverse*/ + __pyx_tp_clear_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj, /*tp_methods*/ + 0, /*tp_members*/ + __pyx_getsets_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + __pyx_pw_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_1__init__, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif +static struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBFrame __pyx_vtable_14_pydevd_bundle_13pydevd_cython_PyDBFrame; + +static PyObject *__pyx_tp_new_14_pydevd_bundle_13pydevd_cython_PyDBFrame(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *p; + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { + o = (*t->tp_alloc)(t, 0); + } else { + o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); + } + if (unlikely(!o)) return 0; + #endif + p = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)o); + p->__pyx_vtab = __pyx_vtabptr_14_pydevd_bundle_13pydevd_cython_PyDBFrame; + p->_args = ((PyObject*)Py_None); Py_INCREF(Py_None); + p->exc_info = Py_None; Py_INCREF(Py_None); + return o; +} + +static void __pyx_tp_dealloc_14_pydevd_bundle_13pydevd_cython_PyDBFrame(PyObject *o) { + struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *p = (struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_14_pydevd_bundle_13pydevd_cython_PyDBFrame) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->_args); + Py_CLEAR(p->exc_info); + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif +} + +static int __pyx_tp_traverse_14_pydevd_bundle_13pydevd_cython_PyDBFrame(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *p = (struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)o; + if (p->_args) { + e = (*v)(p->_args, a); if (e) return e; + } + if (p->exc_info) { + e = (*v)(p->exc_info, a); if (e) return e; + } + return 0; +} + +static int __pyx_tp_clear_14_pydevd_bundle_13pydevd_cython_PyDBFrame(PyObject *o) { + PyObject* tmp; + struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *p = (struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *)o; + tmp = ((PyObject*)p->_args); + p->_args = ((PyObject*)Py_None); Py_INCREF(Py_None); + Py_XDECREF(tmp); + tmp = ((PyObject*)p->exc_info); + p->exc_info = Py_None; Py_INCREF(Py_None); + Py_XDECREF(tmp); + return 0; +} + +static PyMethodDef __pyx_methods_14_pydevd_bundle_13pydevd_cython_PyDBFrame[] = { + {"set_suspend", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_3set_suspend, METH_VARARGS|METH_KEYWORDS, 0}, + {"do_wait_suspend", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_5do_wait_suspend, METH_VARARGS|METH_KEYWORDS, 0}, + {"trace_exception", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_7trace_exception, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {"handle_user_exception", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_9handle_user_exception, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_13__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_15__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_14_pydevd_bundle_13pydevd_cython_PyDBFrame_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_14_pydevd_bundle_13pydevd_cython_PyDBFrame}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_14_pydevd_bundle_13pydevd_cython_PyDBFrame}, + {Py_tp_clear, (void *)__pyx_tp_clear_14_pydevd_bundle_13pydevd_cython_PyDBFrame}, + {Py_tp_methods, (void *)__pyx_methods_14_pydevd_bundle_13pydevd_cython_PyDBFrame}, + {Py_tp_init, (void *)__pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_1__init__}, + {Py_tp_new, (void *)__pyx_tp_new_14_pydevd_bundle_13pydevd_cython_PyDBFrame}, + {0, 0}, +}; +static PyType_Spec __pyx_type_14_pydevd_bundle_13pydevd_cython_PyDBFrame_spec = { + "_pydevd_bundle.pydevd_cython.PyDBFrame", + sizeof(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, + __pyx_type_14_pydevd_bundle_13pydevd_cython_PyDBFrame_slots, +}; +#else + +static PyTypeObject __pyx_type_14_pydevd_bundle_13pydevd_cython_PyDBFrame = { + PyVarObject_HEAD_INIT(0, 0) + "_pydevd_bundle.pydevd_cython.""PyDBFrame", /*tp_name*/ + sizeof(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_14_pydevd_bundle_13pydevd_cython_PyDBFrame, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_14_pydevd_bundle_13pydevd_cython_PyDBFrame, /*tp_traverse*/ + __pyx_tp_clear_14_pydevd_bundle_13pydevd_cython_PyDBFrame, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_14_pydevd_bundle_13pydevd_cython_PyDBFrame, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + __pyx_pw_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_1__init__, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_14_pydevd_bundle_13pydevd_cython_PyDBFrame, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +static PyObject *__pyx_tp_new_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper *p; + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { + o = (*t->tp_alloc)(t, 0); + } else { + o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); + } + if (unlikely(!o)) return 0; + #endif + p = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper *)o); + p->method_object = Py_None; Py_INCREF(Py_None); + return o; +} + +static void __pyx_tp_dealloc_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper(PyObject *o) { + struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper *p = (struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->method_object); + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif +} + +static int __pyx_tp_traverse_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper *p = (struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper *)o; + if (p->method_object) { + e = (*v)(p->method_object, a); if (e) return e; + } + return 0; +} + +static int __pyx_tp_clear_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper(PyObject *o) { + PyObject* tmp; + struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper *p = (struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper *)o; + tmp = ((PyObject*)p->method_object); + p->method_object = Py_None; Py_INCREF(Py_None); + Py_XDECREF(tmp); + return 0; +} + +static PyMethodDef __pyx_methods_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper[] = { + {"get_method_object", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_5get_method_object, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper}, + {Py_tp_call, (void *)__pyx_pw_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_3__call__}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper}, + {Py_tp_clear, (void *)__pyx_tp_clear_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper}, + {Py_tp_methods, (void *)__pyx_methods_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper}, + {Py_tp_init, (void *)__pyx_pw_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_1__init__}, + {Py_tp_new, (void *)__pyx_tp_new_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper}, + {0, 0}, +}; +static PyType_Spec __pyx_type_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper_spec = { + "_pydevd_bundle.pydevd_cython.SafeCallWrapper", + sizeof(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, + __pyx_type_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper_slots, +}; +#else + +static PyTypeObject __pyx_type_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper = { + PyVarObject_HEAD_INIT(0, 0) + "_pydevd_bundle.pydevd_cython.""SafeCallWrapper", /*tp_name*/ + sizeof(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + __pyx_pw_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_3__call__, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper, /*tp_traverse*/ + __pyx_tp_clear_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + __pyx_pw_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_1__init__, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +static PyObject *__pyx_tp_new_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions *p; + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { + o = (*t->tp_alloc)(t, 0); + } else { + o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); + } + if (unlikely(!o)) return 0; + #endif + p = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions *)o); + p->_args = ((PyObject*)Py_None); Py_INCREF(Py_None); + return o; +} + +static void __pyx_tp_dealloc_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions(PyObject *o) { + struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions *p = (struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->_args); + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif +} + +static int __pyx_tp_traverse_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions *p = (struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions *)o; + if (p->_args) { + e = (*v)(p->_args, a); if (e) return e; + } + return 0; +} + +static int __pyx_tp_clear_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions(PyObject *o) { + PyObject* tmp; + struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions *p = (struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions *)o; + tmp = ((PyObject*)p->_args); + p->_args = ((PyObject*)Py_None); Py_INCREF(Py_None); + Py_XDECREF(tmp); + return 0; +} + +static PyObject *__pyx_getprop_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions__args(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_5_args_1__get__(o); +} + +static int __pyx_setprop_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions__args(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_5_args_3__set__(o, v); + } + else { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_5_args_5__del__(o); + } +} + +static PyMethodDef __pyx_methods_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions[] = { + {"trace_unhandled_exceptions", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_3trace_unhandled_exceptions, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {"get_trace_dispatch_func", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_5get_trace_dispatch_func, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {0, 0, 0, 0} +}; + +static struct PyGetSetDef __pyx_getsets_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions[] = { + {(char *)"_args", __pyx_getprop_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions__args, __pyx_setprop_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions__args, (char *)0, 0}, + {0, 0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions}, + {Py_tp_clear, (void *)__pyx_tp_clear_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions}, + {Py_tp_methods, (void *)__pyx_methods_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions}, + {Py_tp_getset, (void *)__pyx_getsets_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions}, + {Py_tp_init, (void *)__pyx_pw_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_1__init__}, + {Py_tp_new, (void *)__pyx_tp_new_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions}, + {0, 0}, +}; +static PyType_Spec __pyx_type_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions_spec = { + "_pydevd_bundle.pydevd_cython.TopLevelThreadTracerOnlyUnhandledExceptions", + sizeof(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, + __pyx_type_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions_slots, +}; +#else + +static PyTypeObject __pyx_type_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions = { + PyVarObject_HEAD_INIT(0, 0) + "_pydevd_bundle.pydevd_cython.""TopLevelThreadTracerOnlyUnhandledExceptions", /*tp_name*/ + sizeof(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions, /*tp_traverse*/ + __pyx_tp_clear_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions, /*tp_methods*/ + 0, /*tp_members*/ + __pyx_getsets_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + __pyx_pw_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_1__init__, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +static PyObject *__pyx_tp_new_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *p; + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { + o = (*t->tp_alloc)(t, 0); + } else { + o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); + } + if (unlikely(!o)) return 0; + #endif + p = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *)o); + p->_frame_trace_dispatch = Py_None; Py_INCREF(Py_None); + p->_args = ((PyObject*)Py_None); Py_INCREF(Py_None); + p->try_except_infos = Py_None; Py_INCREF(Py_None); + p->_last_exc_arg = Py_None; Py_INCREF(Py_None); + p->_raise_lines = ((PyObject*)Py_None); Py_INCREF(Py_None); + return o; +} + +static void __pyx_tp_dealloc_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame(PyObject *o) { + struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *p = (struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->_frame_trace_dispatch); + Py_CLEAR(p->_args); + Py_CLEAR(p->try_except_infos); + Py_CLEAR(p->_last_exc_arg); + Py_CLEAR(p->_raise_lines); + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif +} + +static int __pyx_tp_traverse_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *p = (struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *)o; + if (p->_frame_trace_dispatch) { + e = (*v)(p->_frame_trace_dispatch, a); if (e) return e; + } + if (p->_args) { + e = (*v)(p->_args, a); if (e) return e; + } + if (p->try_except_infos) { + e = (*v)(p->try_except_infos, a); if (e) return e; + } + if (p->_last_exc_arg) { + e = (*v)(p->_last_exc_arg, a); if (e) return e; + } + if (p->_raise_lines) { + e = (*v)(p->_raise_lines, a); if (e) return e; + } + return 0; +} + +static int __pyx_tp_clear_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame(PyObject *o) { + PyObject* tmp; + struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *p = (struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame *)o; + tmp = ((PyObject*)p->_frame_trace_dispatch); + p->_frame_trace_dispatch = Py_None; Py_INCREF(Py_None); + Py_XDECREF(tmp); + tmp = ((PyObject*)p->_args); + p->_args = ((PyObject*)Py_None); Py_INCREF(Py_None); + Py_XDECREF(tmp); + tmp = ((PyObject*)p->try_except_infos); + p->try_except_infos = Py_None; Py_INCREF(Py_None); + Py_XDECREF(tmp); + tmp = ((PyObject*)p->_last_exc_arg); + p->_last_exc_arg = Py_None; Py_INCREF(Py_None); + Py_XDECREF(tmp); + tmp = ((PyObject*)p->_raise_lines); + p->_raise_lines = ((PyObject*)Py_None); Py_INCREF(Py_None); + Py_XDECREF(tmp); + return 0; +} + +static PyObject *__pyx_getprop_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame__frame_trace_dispatch(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_21_frame_trace_dispatch_1__get__(o); +} + +static int __pyx_setprop_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame__frame_trace_dispatch(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_21_frame_trace_dispatch_3__set__(o, v); + } + else { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_21_frame_trace_dispatch_5__del__(o); + } +} + +static PyObject *__pyx_getprop_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame__args(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_5_args_1__get__(o); +} + +static int __pyx_setprop_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame__args(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_5_args_3__set__(o, v); + } + else { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_5_args_5__del__(o); + } +} + +static PyObject *__pyx_getprop_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_try_except_infos(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_16try_except_infos_1__get__(o); +} + +static int __pyx_setprop_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_try_except_infos(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_16try_except_infos_3__set__(o, v); + } + else { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_16try_except_infos_5__del__(o); + } +} + +static PyObject *__pyx_getprop_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame__last_exc_arg(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_13_last_exc_arg_1__get__(o); +} + +static int __pyx_setprop_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame__last_exc_arg(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_13_last_exc_arg_3__set__(o, v); + } + else { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_13_last_exc_arg_5__del__(o); + } +} + +static PyObject *__pyx_getprop_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame__raise_lines(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_12_raise_lines_1__get__(o); +} + +static int __pyx_setprop_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame__raise_lines(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_12_raise_lines_3__set__(o, v); + } + else { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_12_raise_lines_5__del__(o); + } +} + +static PyObject *__pyx_getprop_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame__last_raise_line(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_16_last_raise_line_1__get__(o); +} + +static int __pyx_setprop_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame__last_raise_line(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_16_last_raise_line_3__set__(o, v); + } + else { + PyErr_SetString(PyExc_NotImplementedError, "__del__"); + return -1; + } +} + +static PyMethodDef __pyx_methods_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame[] = { + {"trace_dispatch_and_unhandled_exceptions", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_3trace_dispatch_and_unhandled_exceptions, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {"get_trace_dispatch_func", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_5get_trace_dispatch_func, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {0, 0, 0, 0} +}; + +static struct PyGetSetDef __pyx_getsets_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame[] = { + {(char *)"_frame_trace_dispatch", __pyx_getprop_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame__frame_trace_dispatch, __pyx_setprop_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame__frame_trace_dispatch, (char *)0, 0}, + {(char *)"_args", __pyx_getprop_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame__args, __pyx_setprop_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame__args, (char *)0, 0}, + {(char *)"try_except_infos", __pyx_getprop_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_try_except_infos, __pyx_setprop_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_try_except_infos, (char *)0, 0}, + {(char *)"_last_exc_arg", __pyx_getprop_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame__last_exc_arg, __pyx_setprop_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame__last_exc_arg, (char *)0, 0}, + {(char *)"_raise_lines", __pyx_getprop_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame__raise_lines, __pyx_setprop_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame__raise_lines, (char *)0, 0}, + {(char *)"_last_raise_line", __pyx_getprop_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame__last_raise_line, __pyx_setprop_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame__last_raise_line, (char *)0, 0}, + {0, 0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame}, + {Py_tp_clear, (void *)__pyx_tp_clear_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame}, + {Py_tp_methods, (void *)__pyx_methods_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame}, + {Py_tp_getset, (void *)__pyx_getsets_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame}, + {Py_tp_init, (void *)__pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_1__init__}, + {Py_tp_new, (void *)__pyx_tp_new_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame}, + {0, 0}, +}; +static PyType_Spec __pyx_type_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame_spec = { + "_pydevd_bundle.pydevd_cython.TopLevelThreadTracerNoBackFrame", + sizeof(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, + __pyx_type_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame_slots, +}; +#else + +static PyTypeObject __pyx_type_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame = { + PyVarObject_HEAD_INIT(0, 0) + "_pydevd_bundle.pydevd_cython.""TopLevelThreadTracerNoBackFrame", /*tp_name*/ + sizeof(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame, /*tp_traverse*/ + __pyx_tp_clear_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame, /*tp_methods*/ + 0, /*tp_members*/ + __pyx_getsets_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + __pyx_pw_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_1__init__, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +static PyObject *__pyx_tp_new_14_pydevd_bundle_13pydevd_cython_ThreadTracer(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_ThreadTracer *p; + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { + o = (*t->tp_alloc)(t, 0); + } else { + o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); + } + if (unlikely(!o)) return 0; + #endif + p = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_ThreadTracer *)o); + p->_args = ((PyObject*)Py_None); Py_INCREF(Py_None); + return o; +} + +static void __pyx_tp_dealloc_14_pydevd_bundle_13pydevd_cython_ThreadTracer(PyObject *o) { + struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_ThreadTracer *p = (struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_ThreadTracer *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_14_pydevd_bundle_13pydevd_cython_ThreadTracer) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->_args); + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif +} + +static int __pyx_tp_traverse_14_pydevd_bundle_13pydevd_cython_ThreadTracer(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_ThreadTracer *p = (struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_ThreadTracer *)o; + if (p->_args) { + e = (*v)(p->_args, a); if (e) return e; + } + return 0; +} + +static int __pyx_tp_clear_14_pydevd_bundle_13pydevd_cython_ThreadTracer(PyObject *o) { + PyObject* tmp; + struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_ThreadTracer *p = (struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_ThreadTracer *)o; + tmp = ((PyObject*)p->_args); + p->_args = ((PyObject*)Py_None); Py_INCREF(Py_None); + Py_XDECREF(tmp); + return 0; +} + +static PyObject *__pyx_getprop_14_pydevd_bundle_13pydevd_cython_12ThreadTracer__args(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_5_args_1__get__(o); +} + +static int __pyx_setprop_14_pydevd_bundle_13pydevd_cython_12ThreadTracer__args(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_5_args_3__set__(o, v); + } + else { + return __pyx_pw_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_5_args_5__del__(o); + } +} + +static PyMethodDef __pyx_methods_14_pydevd_bundle_13pydevd_cython_ThreadTracer[] = { + {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {0, 0, 0, 0} +}; + +static struct PyGetSetDef __pyx_getsets_14_pydevd_bundle_13pydevd_cython_ThreadTracer[] = { + {(char *)"_args", __pyx_getprop_14_pydevd_bundle_13pydevd_cython_12ThreadTracer__args, __pyx_setprop_14_pydevd_bundle_13pydevd_cython_12ThreadTracer__args, (char *)0, 0}, + {0, 0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_14_pydevd_bundle_13pydevd_cython_ThreadTracer_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_14_pydevd_bundle_13pydevd_cython_ThreadTracer}, + {Py_tp_call, (void *)__pyx_pw_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_3__call__}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_14_pydevd_bundle_13pydevd_cython_ThreadTracer}, + {Py_tp_clear, (void *)__pyx_tp_clear_14_pydevd_bundle_13pydevd_cython_ThreadTracer}, + {Py_tp_methods, (void *)__pyx_methods_14_pydevd_bundle_13pydevd_cython_ThreadTracer}, + {Py_tp_getset, (void *)__pyx_getsets_14_pydevd_bundle_13pydevd_cython_ThreadTracer}, + {Py_tp_init, (void *)__pyx_pw_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_1__init__}, + {Py_tp_new, (void *)__pyx_tp_new_14_pydevd_bundle_13pydevd_cython_ThreadTracer}, + {0, 0}, +}; +static PyType_Spec __pyx_type_14_pydevd_bundle_13pydevd_cython_ThreadTracer_spec = { + "_pydevd_bundle.pydevd_cython.ThreadTracer", + sizeof(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_ThreadTracer), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, + __pyx_type_14_pydevd_bundle_13pydevd_cython_ThreadTracer_slots, +}; +#else + +static PyTypeObject __pyx_type_14_pydevd_bundle_13pydevd_cython_ThreadTracer = { + PyVarObject_HEAD_INIT(0, 0) + "_pydevd_bundle.pydevd_cython.""ThreadTracer", /*tp_name*/ + sizeof(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_ThreadTracer), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_14_pydevd_bundle_13pydevd_cython_ThreadTracer, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + __pyx_pw_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_3__call__, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_14_pydevd_bundle_13pydevd_cython_ThreadTracer, /*tp_traverse*/ + __pyx_tp_clear_14_pydevd_bundle_13pydevd_cython_ThreadTracer, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_14_pydevd_bundle_13pydevd_cython_ThreadTracer, /*tp_methods*/ + 0, /*tp_members*/ + __pyx_getsets_14_pydevd_bundle_13pydevd_cython_ThreadTracer, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + __pyx_pw_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_1__init__, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_14_pydevd_bundle_13pydevd_cython_ThreadTracer, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +static PyMethodDef __pyx_methods[] = { + {0, 0, 0, 0} +}; +#ifndef CYTHON_SMALL_CODE +#if defined(__clang__) + #define CYTHON_SMALL_CODE +#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) + #define CYTHON_SMALL_CODE __attribute__((cold)) +#else + #define CYTHON_SMALL_CODE +#endif +#endif +/* #### Code section: pystring_table ### */ + +static int __Pyx_CreateStringTabAndInitStrings(void) { + __Pyx_StringTabEntry __pyx_string_tab[] = { + {&__pyx_kp_s_, __pyx_k_, sizeof(__pyx_k_), 0, 0, 1, 0}, + {&__pyx_kp_s_1, __pyx_k_1, sizeof(__pyx_k_1), 0, 0, 1, 0}, + {&__pyx_n_s_ALL, __pyx_k_ALL, sizeof(__pyx_k_ALL), 0, 0, 1, 1}, + {&__pyx_n_s_AttributeError, __pyx_k_AttributeError, sizeof(__pyx_k_AttributeError), 0, 0, 1, 1}, + {&__pyx_n_s_CMD_SET_FUNCTION_BREAK, __pyx_k_CMD_SET_FUNCTION_BREAK, sizeof(__pyx_k_CMD_SET_FUNCTION_BREAK), 0, 0, 1, 1}, + {&__pyx_n_s_DEBUG_START, __pyx_k_DEBUG_START, sizeof(__pyx_k_DEBUG_START), 0, 0, 1, 1}, + {&__pyx_n_s_DEBUG_START_PY3K, __pyx_k_DEBUG_START_PY3K, sizeof(__pyx_k_DEBUG_START_PY3K), 0, 0, 1, 1}, + {&__pyx_n_s_EXCEPTION_TYPE_HANDLED, __pyx_k_EXCEPTION_TYPE_HANDLED, sizeof(__pyx_k_EXCEPTION_TYPE_HANDLED), 0, 0, 1, 1}, + {&__pyx_n_s_EXCEPTION_TYPE_USER_UNHANDLED, __pyx_k_EXCEPTION_TYPE_USER_UNHANDLED, sizeof(__pyx_k_EXCEPTION_TYPE_USER_UNHANDLED), 0, 0, 1, 1}, + {&__pyx_kp_s_Error_in_linecache_checkcache_r, __pyx_k_Error_in_linecache_checkcache_r, sizeof(__pyx_k_Error_in_linecache_checkcache_r), 0, 0, 1, 0}, + {&__pyx_kp_s_Error_in_linecache_getline_r_s_f, __pyx_k_Error_in_linecache_getline_r_s_f, sizeof(__pyx_k_Error_in_linecache_getline_r_s_f), 0, 0, 1, 0}, + {&__pyx_n_s_ForkSafeLock, __pyx_k_ForkSafeLock, sizeof(__pyx_k_ForkSafeLock), 0, 0, 1, 1}, + {&__pyx_n_s_GeneratorExit, __pyx_k_GeneratorExit, sizeof(__pyx_k_GeneratorExit), 0, 0, 1, 1}, + {&__pyx_n_s_IGNORE_EXCEPTION_TAG, __pyx_k_IGNORE_EXCEPTION_TAG, sizeof(__pyx_k_IGNORE_EXCEPTION_TAG), 0, 0, 1, 1}, + {&__pyx_kp_s_IgnoreException, __pyx_k_IgnoreException, sizeof(__pyx_k_IgnoreException), 0, 0, 1, 0}, + {&__pyx_kp_s_Ignore_exception_s_in_library_s, __pyx_k_Ignore_exception_s_in_library_s, sizeof(__pyx_k_Ignore_exception_s_in_library_s), 0, 0, 1, 0}, + {&__pyx_n_s_ImportError, __pyx_k_ImportError, sizeof(__pyx_k_ImportError), 0, 0, 1, 1}, + {&__pyx_kp_s_Incompatible_checksums_0x_x_vs_0, __pyx_k_Incompatible_checksums_0x_x_vs_0, sizeof(__pyx_k_Incompatible_checksums_0x_x_vs_0), 0, 0, 1, 0}, + {&__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2, __pyx_k_Incompatible_checksums_0x_x_vs_0_2, sizeof(__pyx_k_Incompatible_checksums_0x_x_vs_0_2), 0, 0, 1, 0}, + {&__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3, __pyx_k_Incompatible_checksums_0x_x_vs_0_3, sizeof(__pyx_k_Incompatible_checksums_0x_x_vs_0_3), 0, 0, 1, 0}, + {&__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_4, __pyx_k_Incompatible_checksums_0x_x_vs_0_4, sizeof(__pyx_k_Incompatible_checksums_0x_x_vs_0_4), 0, 0, 1, 0}, + {&__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_5, __pyx_k_Incompatible_checksums_0x_x_vs_0_5, sizeof(__pyx_k_Incompatible_checksums_0x_x_vs_0_5), 0, 0, 1, 0}, + {&__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_6, __pyx_k_Incompatible_checksums_0x_x_vs_0_6, sizeof(__pyx_k_Incompatible_checksums_0x_x_vs_0_6), 0, 0, 1, 0}, + {&__pyx_n_s_KeyboardInterrupt, __pyx_k_KeyboardInterrupt, sizeof(__pyx_k_KeyboardInterrupt), 0, 0, 1, 1}, + {&__pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER, __pyx_k_NORM_PATHS_AND_BASE_CONTAINER, sizeof(__pyx_k_NORM_PATHS_AND_BASE_CONTAINER), 0, 0, 1, 1}, + {&__pyx_n_s_NO_FTRACE, __pyx_k_NO_FTRACE, sizeof(__pyx_k_NO_FTRACE), 0, 0, 1, 1}, + {&__pyx_n_s_NameError, __pyx_k_NameError, sizeof(__pyx_k_NameError), 0, 0, 1, 1}, + {&__pyx_n_s_None, __pyx_k_None, sizeof(__pyx_k_None), 0, 0, 1, 1}, + {&__pyx_kp_s_Not_used_in_sys_monitoring_mode, __pyx_k_Not_used_in_sys_monitoring_mode, sizeof(__pyx_k_Not_used_in_sys_monitoring_mode), 0, 0, 1, 0}, + {&__pyx_n_s_PYDEVD_IPYTHON_CONTEXT, __pyx_k_PYDEVD_IPYTHON_CONTEXT, sizeof(__pyx_k_PYDEVD_IPYTHON_CONTEXT), 0, 0, 1, 1}, + {&__pyx_n_s_PYDEVD_USE_SYS_MONITORING, __pyx_k_PYDEVD_USE_SYS_MONITORING, sizeof(__pyx_k_PYDEVD_USE_SYS_MONITORING), 0, 0, 1, 1}, + {&__pyx_n_s_PYDEV_FILE, __pyx_k_PYDEV_FILE, sizeof(__pyx_k_PYDEV_FILE), 0, 0, 1, 1}, + {&__pyx_n_s_PYTHON_SUSPEND, __pyx_k_PYTHON_SUSPEND, sizeof(__pyx_k_PYTHON_SUSPEND), 0, 0, 1, 1}, + {&__pyx_n_s_PickleError, __pyx_k_PickleError, sizeof(__pyx_k_PickleError), 0, 0, 1, 1}, + {&__pyx_n_s_PyDBAdditionalThreadInfo, __pyx_k_PyDBAdditionalThreadInfo, sizeof(__pyx_k_PyDBAdditionalThreadInfo), 0, 0, 1, 1}, + {&__pyx_n_s_PyDBAdditionalThreadInfo___reduc, __pyx_k_PyDBAdditionalThreadInfo___reduc, sizeof(__pyx_k_PyDBAdditionalThreadInfo___reduc), 0, 0, 1, 1}, + {&__pyx_n_s_PyDBAdditionalThreadInfo___setst, __pyx_k_PyDBAdditionalThreadInfo___setst, sizeof(__pyx_k_PyDBAdditionalThreadInfo___setst), 0, 0, 1, 1}, + {&__pyx_n_s_PyDBAdditionalThreadInfo__get_re, __pyx_k_PyDBAdditionalThreadInfo__get_re, sizeof(__pyx_k_PyDBAdditionalThreadInfo__get_re), 0, 0, 1, 1}, + {&__pyx_n_s_PyDBAdditionalThreadInfo__is_ste, __pyx_k_PyDBAdditionalThreadInfo__is_ste, sizeof(__pyx_k_PyDBAdditionalThreadInfo__is_ste), 0, 0, 1, 1}, + {&__pyx_n_s_PyDBAdditionalThreadInfo_get_top, __pyx_k_PyDBAdditionalThreadInfo_get_top, sizeof(__pyx_k_PyDBAdditionalThreadInfo_get_top), 0, 0, 1, 1}, + {&__pyx_n_s_PyDBAdditionalThreadInfo_update, __pyx_k_PyDBAdditionalThreadInfo_update, sizeof(__pyx_k_PyDBAdditionalThreadInfo_update), 0, 0, 1, 1}, + {&__pyx_n_s_PyDBFrame, __pyx_k_PyDBFrame, sizeof(__pyx_k_PyDBFrame), 0, 0, 1, 1}, + {&__pyx_n_s_PyDBFrame___reduce_cython, __pyx_k_PyDBFrame___reduce_cython, sizeof(__pyx_k_PyDBFrame___reduce_cython), 0, 0, 1, 1}, + {&__pyx_n_s_PyDBFrame___setstate_cython, __pyx_k_PyDBFrame___setstate_cython, sizeof(__pyx_k_PyDBFrame___setstate_cython), 0, 0, 1, 1}, + {&__pyx_n_s_PyDBFrame_do_wait_suspend, __pyx_k_PyDBFrame_do_wait_suspend, sizeof(__pyx_k_PyDBFrame_do_wait_suspend), 0, 0, 1, 1}, + {&__pyx_n_s_PyDBFrame_handle_user_exception, __pyx_k_PyDBFrame_handle_user_exception, sizeof(__pyx_k_PyDBFrame_handle_user_exception), 0, 0, 1, 1}, + {&__pyx_n_s_PyDBFrame_set_suspend, __pyx_k_PyDBFrame_set_suspend, sizeof(__pyx_k_PyDBFrame_set_suspend), 0, 0, 1, 1}, + {&__pyx_n_s_PyDBFrame_trace_dispatch, __pyx_k_PyDBFrame_trace_dispatch, sizeof(__pyx_k_PyDBFrame_trace_dispatch), 0, 0, 1, 1}, + {&__pyx_n_s_PyDBFrame_trace_exception, __pyx_k_PyDBFrame_trace_exception, sizeof(__pyx_k_PyDBFrame_trace_exception), 0, 0, 1, 1}, + {&__pyx_n_s_RETURN_VALUES_DICT, __pyx_k_RETURN_VALUES_DICT, sizeof(__pyx_k_RETURN_VALUES_DICT), 0, 0, 1, 1}, + {&__pyx_n_s_RuntimeError, __pyx_k_RuntimeError, sizeof(__pyx_k_RuntimeError), 0, 0, 1, 1}, + {&__pyx_n_s_STATE_RUN, __pyx_k_STATE_RUN, sizeof(__pyx_k_STATE_RUN), 0, 0, 1, 1}, + {&__pyx_n_s_STATE_SUSPEND, __pyx_k_STATE_SUSPEND, sizeof(__pyx_k_STATE_SUSPEND), 0, 0, 1, 1}, + {&__pyx_n_s_SUPPORT_GEVENT, __pyx_k_SUPPORT_GEVENT, sizeof(__pyx_k_SUPPORT_GEVENT), 0, 0, 1, 1}, + {&__pyx_n_s_SafeCallWrapper, __pyx_k_SafeCallWrapper, sizeof(__pyx_k_SafeCallWrapper), 0, 0, 1, 1}, + {&__pyx_n_s_SafeCallWrapper___reduce_cython, __pyx_k_SafeCallWrapper___reduce_cython, sizeof(__pyx_k_SafeCallWrapper___reduce_cython), 0, 0, 1, 1}, + {&__pyx_n_s_SafeCallWrapper___setstate_cytho, __pyx_k_SafeCallWrapper___setstate_cytho, sizeof(__pyx_k_SafeCallWrapper___setstate_cytho), 0, 0, 1, 1}, + {&__pyx_n_s_SafeCallWrapper_get_method_objec, __pyx_k_SafeCallWrapper_get_method_objec, sizeof(__pyx_k_SafeCallWrapper_get_method_objec), 0, 0, 1, 1}, + {&__pyx_kp_s_State_s_Stop_s_Cmd_s_Kill_s, __pyx_k_State_s_Stop_s_Cmd_s_Kill_s, sizeof(__pyx_k_State_s_Stop_s_Cmd_s_Kill_s), 0, 0, 1, 0}, + {&__pyx_n_s_StopAsyncIteration, __pyx_k_StopAsyncIteration, sizeof(__pyx_k_StopAsyncIteration), 0, 0, 1, 1}, + {&__pyx_n_s_StopIteration, __pyx_k_StopIteration, sizeof(__pyx_k_StopIteration), 0, 0, 1, 1}, + {&__pyx_kp_s_Stop_inside_ipython_call, __pyx_k_Stop_inside_ipython_call, sizeof(__pyx_k_Stop_inside_ipython_call), 0, 0, 1, 0}, + {&__pyx_n_s_SystemExit, __pyx_k_SystemExit, sizeof(__pyx_k_SystemExit), 0, 0, 1, 1}, + {&__pyx_n_s_TRACE_PROPERTY, __pyx_k_TRACE_PROPERTY, sizeof(__pyx_k_TRACE_PROPERTY), 0, 0, 1, 1}, + {&__pyx_n_s_Thread, __pyx_k_Thread, sizeof(__pyx_k_Thread), 0, 0, 1, 1}, + {&__pyx_n_s_ThreadTracer, __pyx_k_ThreadTracer, sizeof(__pyx_k_ThreadTracer), 0, 0, 1, 1}, + {&__pyx_n_s_ThreadTracer___reduce_cython, __pyx_k_ThreadTracer___reduce_cython, sizeof(__pyx_k_ThreadTracer___reduce_cython), 0, 0, 1, 1}, + {&__pyx_n_s_ThreadTracer___setstate_cython, __pyx_k_ThreadTracer___setstate_cython, sizeof(__pyx_k_ThreadTracer___setstate_cython), 0, 0, 1, 1}, + {&__pyx_n_s_TopLevelThreadTracerNoBackFrame, __pyx_k_TopLevelThreadTracerNoBackFrame, sizeof(__pyx_k_TopLevelThreadTracerNoBackFrame), 0, 0, 1, 1}, + {&__pyx_n_s_TopLevelThreadTracerNoBackFrame_2, __pyx_k_TopLevelThreadTracerNoBackFrame_2, sizeof(__pyx_k_TopLevelThreadTracerNoBackFrame_2), 0, 0, 1, 1}, + {&__pyx_n_s_TopLevelThreadTracerNoBackFrame_3, __pyx_k_TopLevelThreadTracerNoBackFrame_3, sizeof(__pyx_k_TopLevelThreadTracerNoBackFrame_3), 0, 0, 1, 1}, + {&__pyx_n_s_TopLevelThreadTracerNoBackFrame_4, __pyx_k_TopLevelThreadTracerNoBackFrame_4, sizeof(__pyx_k_TopLevelThreadTracerNoBackFrame_4), 0, 0, 1, 1}, + {&__pyx_n_s_TopLevelThreadTracerNoBackFrame_5, __pyx_k_TopLevelThreadTracerNoBackFrame_5, sizeof(__pyx_k_TopLevelThreadTracerNoBackFrame_5), 0, 0, 1, 1}, + {&__pyx_n_s_TopLevelThreadTracerOnlyUnhandle, __pyx_k_TopLevelThreadTracerOnlyUnhandle, sizeof(__pyx_k_TopLevelThreadTracerOnlyUnhandle), 0, 0, 1, 1}, + {&__pyx_n_s_TopLevelThreadTracerOnlyUnhandle_2, __pyx_k_TopLevelThreadTracerOnlyUnhandle_2, sizeof(__pyx_k_TopLevelThreadTracerOnlyUnhandle_2), 0, 0, 1, 1}, + {&__pyx_n_s_TopLevelThreadTracerOnlyUnhandle_3, __pyx_k_TopLevelThreadTracerOnlyUnhandle_3, sizeof(__pyx_k_TopLevelThreadTracerOnlyUnhandle_3), 0, 0, 1, 1}, + {&__pyx_n_s_TopLevelThreadTracerOnlyUnhandle_4, __pyx_k_TopLevelThreadTracerOnlyUnhandle_4, sizeof(__pyx_k_TopLevelThreadTracerOnlyUnhandle_4), 0, 0, 1, 1}, + {&__pyx_n_s_TopLevelThreadTracerOnlyUnhandle_5, __pyx_k_TopLevelThreadTracerOnlyUnhandle_5, sizeof(__pyx_k_TopLevelThreadTracerOnlyUnhandle_5), 0, 0, 1, 1}, + {&__pyx_n_s_TryExceptContainerObj, __pyx_k_TryExceptContainerObj, sizeof(__pyx_k_TryExceptContainerObj), 0, 0, 1, 1}, + {&__pyx_n_s_TryExceptContainerObj___reduce, __pyx_k_TryExceptContainerObj___reduce, sizeof(__pyx_k_TryExceptContainerObj___reduce), 0, 0, 1, 1}, + {&__pyx_n_s_TryExceptContainerObj___setstat, __pyx_k_TryExceptContainerObj___setstat, sizeof(__pyx_k_TryExceptContainerObj___setstat), 0, 0, 1, 1}, + {&__pyx_n_s_USE_CUSTOM_SYS_CURRENT_FRAMES_MA, __pyx_k_USE_CUSTOM_SYS_CURRENT_FRAMES_MA, sizeof(__pyx_k_USE_CUSTOM_SYS_CURRENT_FRAMES_MA), 0, 0, 1, 1}, + {&__pyx_kp_s_Unable_to_get_topmost_frame_for, __pyx_k_Unable_to_get_topmost_frame_for, sizeof(__pyx_k_Unable_to_get_topmost_frame_for), 0, 0, 1, 0}, + {&__pyx_kp_s__10, __pyx_k__10, sizeof(__pyx_k__10), 0, 0, 1, 0}, + {&__pyx_kp_u__10, __pyx_k__10, sizeof(__pyx_k__10), 0, 1, 0, 0}, + {&__pyx_n_s__19, __pyx_k__19, sizeof(__pyx_k__19), 0, 0, 1, 1}, + {&__pyx_kp_s__4, __pyx_k__4, sizeof(__pyx_k__4), 0, 0, 1, 0}, + {&__pyx_kp_s__8, __pyx_k__8, sizeof(__pyx_k__8), 0, 0, 1, 0}, + {&__pyx_kp_s__9, __pyx_k__9, sizeof(__pyx_k__9), 0, 0, 1, 0}, + {&__pyx_n_s_abs_real_path_and_base, __pyx_k_abs_real_path_and_base, sizeof(__pyx_k_abs_real_path_and_base), 0, 0, 1, 1}, + {&__pyx_n_s_absolute_filename, __pyx_k_absolute_filename, sizeof(__pyx_k_absolute_filename), 0, 0, 1, 1}, + {&__pyx_n_s_active, __pyx_k_active, sizeof(__pyx_k_active), 0, 0, 1, 1}, + {&__pyx_n_s_add, __pyx_k_add, sizeof(__pyx_k_add), 0, 0, 1, 1}, + {&__pyx_n_s_add_additional_info, __pyx_k_add_additional_info, sizeof(__pyx_k_add_additional_info), 0, 0, 1, 1}, + {&__pyx_n_s_add_command, __pyx_k_add_command, sizeof(__pyx_k_add_command), 0, 0, 1, 1}, + {&__pyx_n_s_add_exception_to_frame, __pyx_k_add_exception_to_frame, sizeof(__pyx_k_add_exception_to_frame), 0, 0, 1, 1}, + {&__pyx_n_s_additional_info, __pyx_k_additional_info, sizeof(__pyx_k_additional_info), 0, 0, 1, 1}, + {&__pyx_n_s_any_thread_stepping, __pyx_k_any_thread_stepping, sizeof(__pyx_k_any_thread_stepping), 0, 0, 1, 1}, + {&__pyx_n_s_append, __pyx_k_append, sizeof(__pyx_k_append), 0, 0, 1, 1}, + {&__pyx_n_s_apply_files_filter, __pyx_k_apply_files_filter, sizeof(__pyx_k_apply_files_filter), 0, 0, 1, 1}, + {&__pyx_n_s_apply_to_settrace, __pyx_k_apply_to_settrace, sizeof(__pyx_k_apply_to_settrace), 0, 0, 1, 1}, + {&__pyx_n_s_arg, __pyx_k_arg, sizeof(__pyx_k_arg), 0, 0, 1, 1}, + {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1}, + {&__pyx_n_s_args_2, __pyx_k_args_2, sizeof(__pyx_k_args_2), 0, 0, 1, 1}, + {&__pyx_n_s_asyncio_coroutines, __pyx_k_asyncio_coroutines, sizeof(__pyx_k_asyncio_coroutines), 0, 0, 1, 1}, + {&__pyx_n_s_basename, __pyx_k_basename, sizeof(__pyx_k_basename), 0, 0, 1, 1}, + {&__pyx_n_s_bootstrap, __pyx_k_bootstrap, sizeof(__pyx_k_bootstrap), 0, 0, 1, 1}, + {&__pyx_n_s_bootstrap_2, __pyx_k_bootstrap_2, sizeof(__pyx_k_bootstrap_2), 0, 0, 1, 1}, + {&__pyx_n_s_bootstrap_inner, __pyx_k_bootstrap_inner, sizeof(__pyx_k_bootstrap_inner), 0, 0, 1, 1}, + {&__pyx_n_s_bootstrap_inner_2, __pyx_k_bootstrap_inner_2, sizeof(__pyx_k_bootstrap_inner_2), 0, 0, 1, 1}, + {&__pyx_n_s_break_on_caught_exceptions, __pyx_k_break_on_caught_exceptions, sizeof(__pyx_k_break_on_caught_exceptions), 0, 0, 1, 1}, + {&__pyx_n_s_break_on_user_uncaught_exception, __pyx_k_break_on_user_uncaught_exception, sizeof(__pyx_k_break_on_user_uncaught_exception), 0, 0, 1, 1}, + {&__pyx_n_s_breakpoints, __pyx_k_breakpoints, sizeof(__pyx_k_breakpoints), 0, 0, 1, 1}, + {&__pyx_n_s_call, __pyx_k_call, sizeof(__pyx_k_call), 0, 0, 1, 1}, + {&__pyx_n_s_call_2, __pyx_k_call_2, sizeof(__pyx_k_call_2), 0, 0, 1, 1}, + {&__pyx_n_s_can_skip, __pyx_k_can_skip, sizeof(__pyx_k_can_skip), 0, 0, 1, 1}, + {&__pyx_n_s_canonical_normalized_filename, __pyx_k_canonical_normalized_filename, sizeof(__pyx_k_canonical_normalized_filename), 0, 0, 1, 1}, + {&__pyx_kp_s_cell, __pyx_k_cell, sizeof(__pyx_k_cell), 0, 0, 1, 0}, + {&__pyx_n_s_check_excs, __pyx_k_check_excs, sizeof(__pyx_k_check_excs), 0, 0, 1, 1}, + {&__pyx_n_s_check_trace_obj, __pyx_k_check_trace_obj, sizeof(__pyx_k_check_trace_obj), 0, 0, 1, 1}, + {&__pyx_n_s_checkcache, __pyx_k_checkcache, sizeof(__pyx_k_checkcache), 0, 0, 1, 1}, + {&__pyx_n_s_children_variants, __pyx_k_children_variants, sizeof(__pyx_k_children_variants), 0, 0, 1, 1}, + {&__pyx_n_s_class_getitem, __pyx_k_class_getitem, sizeof(__pyx_k_class_getitem), 0, 0, 1, 1}, + {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, + {&__pyx_n_s_cmd_factory, __pyx_k_cmd_factory, sizeof(__pyx_k_cmd_factory), 0, 0, 1, 1}, + {&__pyx_n_s_cmd_step_into, __pyx_k_cmd_step_into, sizeof(__pyx_k_cmd_step_into), 0, 0, 1, 1}, + {&__pyx_n_s_cmd_step_over, __pyx_k_cmd_step_over, sizeof(__pyx_k_cmd_step_over), 0, 0, 1, 1}, + {&__pyx_n_s_co_filename, __pyx_k_co_filename, sizeof(__pyx_k_co_filename), 0, 0, 1, 1}, + {&__pyx_n_s_co_firstlineno, __pyx_k_co_firstlineno, sizeof(__pyx_k_co_firstlineno), 0, 0, 1, 1}, + {&__pyx_n_s_co_flags, __pyx_k_co_flags, sizeof(__pyx_k_co_flags), 0, 0, 1, 1}, + {&__pyx_n_s_co_name, __pyx_k_co_name, sizeof(__pyx_k_co_name), 0, 0, 1, 1}, + {&__pyx_n_s_collect_return_info, __pyx_k_collect_return_info, sizeof(__pyx_k_collect_return_info), 0, 0, 1, 1}, + {&__pyx_n_s_collect_try_except_info, __pyx_k_collect_try_except_info, sizeof(__pyx_k_collect_try_except_info), 0, 0, 1, 1}, + {&__pyx_n_s_compile, __pyx_k_compile, sizeof(__pyx_k_compile), 0, 0, 1, 1}, + {&__pyx_n_s_condition, __pyx_k_condition, sizeof(__pyx_k_condition), 0, 0, 1, 1}, + {&__pyx_n_s_constant_to_str, __pyx_k_constant_to_str, sizeof(__pyx_k_constant_to_str), 0, 0, 1, 1}, + {&__pyx_n_s_constructed_tid_to_last_frame, __pyx_k_constructed_tid_to_last_frame, sizeof(__pyx_k_constructed_tid_to_last_frame), 0, 0, 1, 1}, + {&__pyx_n_s_container_obj, __pyx_k_container_obj, sizeof(__pyx_k_container_obj), 0, 0, 1, 1}, + {&__pyx_n_s_critical, __pyx_k_critical, sizeof(__pyx_k_critical), 0, 0, 1, 1}, + {&__pyx_n_s_curr_stat, __pyx_k_curr_stat, sizeof(__pyx_k_curr_stat), 0, 0, 1, 1}, + {&__pyx_n_s_current_frames, __pyx_k_current_frames, sizeof(__pyx_k_current_frames), 0, 0, 1, 1}, + {&__pyx_n_s_custom_key, __pyx_k_custom_key, sizeof(__pyx_k_custom_key), 0, 0, 1, 1}, + {&__pyx_n_s_debug, __pyx_k_debug, sizeof(__pyx_k_debug), 0, 0, 1, 1}, + {&__pyx_n_s_dict, __pyx_k_dict, sizeof(__pyx_k_dict), 0, 0, 1, 1}, + {&__pyx_n_s_dict_2, __pyx_k_dict_2, sizeof(__pyx_k_dict_2), 0, 0, 1, 1}, + {&__pyx_n_s_dis, __pyx_k_dis, sizeof(__pyx_k_dis), 0, 0, 1, 1}, + {&__pyx_kp_u_disable, __pyx_k_disable, sizeof(__pyx_k_disable), 0, 1, 0, 0}, + {&__pyx_n_s_disable_tracing, __pyx_k_disable_tracing, sizeof(__pyx_k_disable_tracing), 0, 0, 1, 1}, + {&__pyx_n_s_do_wait_suspend, __pyx_k_do_wait_suspend, sizeof(__pyx_k_do_wait_suspend), 0, 0, 1, 1}, + {&__pyx_kp_u_enable, __pyx_k_enable, sizeof(__pyx_k_enable), 0, 1, 0, 0}, + {&__pyx_n_s_enable_tracing, __pyx_k_enable_tracing, sizeof(__pyx_k_enable_tracing), 0, 0, 1, 1}, + {&__pyx_n_s_encode, __pyx_k_encode, sizeof(__pyx_k_encode), 0, 0, 1, 1}, + {&__pyx_n_s_endswith, __pyx_k_endswith, sizeof(__pyx_k_endswith), 0, 0, 1, 1}, + {&__pyx_n_s_enter, __pyx_k_enter, sizeof(__pyx_k_enter), 0, 0, 1, 1}, + {&__pyx_n_s_event, __pyx_k_event, sizeof(__pyx_k_event), 0, 0, 1, 1}, + {&__pyx_n_s_exc_break, __pyx_k_exc_break, sizeof(__pyx_k_exc_break), 0, 0, 1, 1}, + {&__pyx_n_s_exc_break_caught, __pyx_k_exc_break_caught, sizeof(__pyx_k_exc_break_caught), 0, 0, 1, 1}, + {&__pyx_n_s_exc_break_user, __pyx_k_exc_break_user, sizeof(__pyx_k_exc_break_user), 0, 0, 1, 1}, + {&__pyx_n_s_exc_info, __pyx_k_exc_info, sizeof(__pyx_k_exc_info), 0, 0, 1, 1}, + {&__pyx_n_s_exc_lineno, __pyx_k_exc_lineno, sizeof(__pyx_k_exc_lineno), 0, 0, 1, 1}, + {&__pyx_n_s_except_line, __pyx_k_except_line, sizeof(__pyx_k_except_line), 0, 0, 1, 1}, + {&__pyx_n_s_exception, __pyx_k_exception, sizeof(__pyx_k_exception), 0, 0, 1, 1}, + {&__pyx_n_s_exception_break, __pyx_k_exception_break, sizeof(__pyx_k_exception_break), 0, 0, 1, 1}, + {&__pyx_n_s_exception_breakpoint, __pyx_k_exception_breakpoint, sizeof(__pyx_k_exception_breakpoint), 0, 0, 1, 1}, + {&__pyx_n_s_exception_type, __pyx_k_exception_type, sizeof(__pyx_k_exception_type), 0, 0, 1, 1}, + {&__pyx_n_s_exclude_exception_by_filter, __pyx_k_exclude_exception_by_filter, sizeof(__pyx_k_exclude_exception_by_filter), 0, 0, 1, 1}, + {&__pyx_n_s_exec, __pyx_k_exec, sizeof(__pyx_k_exec), 0, 0, 1, 1}, + {&__pyx_n_s_execfile, __pyx_k_execfile, sizeof(__pyx_k_execfile), 0, 0, 1, 1}, + {&__pyx_n_s_exit, __pyx_k_exit, sizeof(__pyx_k_exit), 0, 0, 1, 1}, + {&__pyx_n_s_expression, __pyx_k_expression, sizeof(__pyx_k_expression), 0, 0, 1, 1}, + {&__pyx_n_s_f, __pyx_k_f, sizeof(__pyx_k_f), 0, 0, 1, 1}, + {&__pyx_n_s_f_back, __pyx_k_f_back, sizeof(__pyx_k_f_back), 0, 0, 1, 1}, + {&__pyx_n_s_f_code, __pyx_k_f_code, sizeof(__pyx_k_f_code), 0, 0, 1, 1}, + {&__pyx_n_s_f_globals, __pyx_k_f_globals, sizeof(__pyx_k_f_globals), 0, 0, 1, 1}, + {&__pyx_n_s_f_lasti, __pyx_k_f_lasti, sizeof(__pyx_k_f_lasti), 0, 0, 1, 1}, + {&__pyx_n_s_f_lineno, __pyx_k_f_lineno, sizeof(__pyx_k_f_lineno), 0, 0, 1, 1}, + {&__pyx_n_s_f_locals, __pyx_k_f_locals, sizeof(__pyx_k_f_locals), 0, 0, 1, 1}, + {&__pyx_n_s_f_trace, __pyx_k_f_trace, sizeof(__pyx_k_f_trace), 0, 0, 1, 1}, + {&__pyx_n_s_f_unhandled, __pyx_k_f_unhandled, sizeof(__pyx_k_f_unhandled), 0, 0, 1, 1}, + {&__pyx_n_s_filename, __pyx_k_filename, sizeof(__pyx_k_filename), 0, 0, 1, 1}, + {&__pyx_n_s_filename_to_lines_where_exceptio, __pyx_k_filename_to_lines_where_exceptio, sizeof(__pyx_k_filename_to_lines_where_exceptio), 0, 0, 1, 1}, + {&__pyx_n_s_filename_to_stat_info, __pyx_k_filename_to_stat_info, sizeof(__pyx_k_filename_to_stat_info), 0, 0, 1, 1}, + {&__pyx_n_s_findlinestarts, __pyx_k_findlinestarts, sizeof(__pyx_k_findlinestarts), 0, 0, 1, 1}, + {&__pyx_n_s_fix_top_level_trace_and_get_trac, __pyx_k_fix_top_level_trace_and_get_trac, sizeof(__pyx_k_fix_top_level_trace_and_get_trac), 0, 0, 1, 1}, + {&__pyx_n_s_force_only_unhandled_tracer, __pyx_k_force_only_unhandled_tracer, sizeof(__pyx_k_force_only_unhandled_tracer), 0, 0, 1, 1}, + {&__pyx_n_s_frame, __pyx_k_frame, sizeof(__pyx_k_frame), 0, 0, 1, 1}, + {&__pyx_n_s_frame_cache_key, __pyx_k_frame_cache_key, sizeof(__pyx_k_frame_cache_key), 0, 0, 1, 1}, + {&__pyx_n_s_frame_id_to_frame, __pyx_k_frame_id_to_frame, sizeof(__pyx_k_frame_id_to_frame), 0, 0, 1, 1}, + {&__pyx_n_s_frame_skips_cache, __pyx_k_frame_skips_cache, sizeof(__pyx_k_frame_skips_cache), 0, 0, 1, 1}, + {&__pyx_n_s_frame_trace_dispatch, __pyx_k_frame_trace_dispatch, sizeof(__pyx_k_frame_trace_dispatch), 0, 0, 1, 1}, + {&__pyx_n_s_from_user_input, __pyx_k_from_user_input, sizeof(__pyx_k_from_user_input), 0, 0, 1, 1}, + {&__pyx_n_s_func_name, __pyx_k_func_name, sizeof(__pyx_k_func_name), 0, 0, 1, 1}, + {&__pyx_n_s_function_breakpoint_name_to_brea, __pyx_k_function_breakpoint_name_to_brea, sizeof(__pyx_k_function_breakpoint_name_to_brea), 0, 0, 1, 1}, + {&__pyx_kp_u_gc, __pyx_k_gc, sizeof(__pyx_k_gc), 0, 1, 0, 0}, + {&__pyx_n_s_get, __pyx_k_get, sizeof(__pyx_k_get), 0, 0, 1, 1}, + {&__pyx_n_s_get_abs_path_real_path_and_base, __pyx_k_get_abs_path_real_path_and_base, sizeof(__pyx_k_get_abs_path_real_path_and_base), 0, 0, 1, 1}, + {&__pyx_n_s_get_breakpoint, __pyx_k_get_breakpoint, sizeof(__pyx_k_get_breakpoint), 0, 0, 1, 1}, + {&__pyx_n_s_get_clsname_for_code, __pyx_k_get_clsname_for_code, sizeof(__pyx_k_get_clsname_for_code), 0, 0, 1, 1}, + {&__pyx_n_s_get_current_thread_id, __pyx_k_get_current_thread_id, sizeof(__pyx_k_get_current_thread_id), 0, 0, 1, 1}, + {&__pyx_n_s_get_exception_breakpoint, __pyx_k_get_exception_breakpoint, sizeof(__pyx_k_get_exception_breakpoint), 0, 0, 1, 1}, + {&__pyx_n_s_get_file_type, __pyx_k_get_file_type, sizeof(__pyx_k_get_file_type), 0, 0, 1, 1}, + {&__pyx_n_s_get_global_debugger, __pyx_k_get_global_debugger, sizeof(__pyx_k_get_global_debugger), 0, 0, 1, 1}, + {&__pyx_n_s_get_internal_queue_and_event, __pyx_k_get_internal_queue_and_event, sizeof(__pyx_k_get_internal_queue_and_event), 0, 0, 1, 1}, + {&__pyx_n_s_get_method_object, __pyx_k_get_method_object, sizeof(__pyx_k_get_method_object), 0, 0, 1, 1}, + {&__pyx_n_s_get_related_thread, __pyx_k_get_related_thread, sizeof(__pyx_k_get_related_thread), 0, 0, 1, 1}, + {&__pyx_n_s_get_smart_step_into_variant_from, __pyx_k_get_smart_step_into_variant_from, sizeof(__pyx_k_get_smart_step_into_variant_from), 0, 0, 1, 1}, + {&__pyx_n_s_get_thread_id, __pyx_k_get_thread_id, sizeof(__pyx_k_get_thread_id), 0, 0, 1, 1}, + {&__pyx_n_s_get_topmost_frame, __pyx_k_get_topmost_frame, sizeof(__pyx_k_get_topmost_frame), 0, 0, 1, 1}, + {&__pyx_n_s_get_trace_dispatch_func, __pyx_k_get_trace_dispatch_func, sizeof(__pyx_k_get_trace_dispatch_func), 0, 0, 1, 1}, + {&__pyx_n_s_getline, __pyx_k_getline, sizeof(__pyx_k_getline), 0, 0, 1, 1}, + {&__pyx_n_s_getstate, __pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 0, 1, 1}, + {&__pyx_n_s_global_cache_frame_skips, __pyx_k_global_cache_frame_skips, sizeof(__pyx_k_global_cache_frame_skips), 0, 0, 1, 1}, + {&__pyx_n_s_global_cache_skips, __pyx_k_global_cache_skips, sizeof(__pyx_k_global_cache_skips), 0, 0, 1, 1}, + {&__pyx_n_s_global_notify_skipped_step_in_l, __pyx_k_global_notify_skipped_step_in_l, sizeof(__pyx_k_global_notify_skipped_step_in_l), 0, 0, 1, 1}, + {&__pyx_n_s_handle_breakpoint_condition, __pyx_k_handle_breakpoint_condition, sizeof(__pyx_k_handle_breakpoint_condition), 0, 0, 1, 1}, + {&__pyx_n_s_handle_breakpoint_expression, __pyx_k_handle_breakpoint_expression, sizeof(__pyx_k_handle_breakpoint_expression), 0, 0, 1, 1}, + {&__pyx_n_s_handle_exception, __pyx_k_handle_exception, sizeof(__pyx_k_handle_exception), 0, 0, 1, 1}, + {&__pyx_n_s_handle_user_exception, __pyx_k_handle_user_exception, sizeof(__pyx_k_handle_user_exception), 0, 0, 1, 1}, + {&__pyx_n_s_has_condition, __pyx_k_has_condition, sizeof(__pyx_k_has_condition), 0, 0, 1, 1}, + {&__pyx_n_s_has_plugin_exception_breaks, __pyx_k_has_plugin_exception_breaks, sizeof(__pyx_k_has_plugin_exception_breaks), 0, 0, 1, 1}, + {&__pyx_n_s_has_plugin_line_breaks, __pyx_k_has_plugin_line_breaks, sizeof(__pyx_k_has_plugin_line_breaks), 0, 0, 1, 1}, + {&__pyx_n_s_i, __pyx_k_i, sizeof(__pyx_k_i), 0, 0, 1, 1}, + {&__pyx_n_s_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 0, 1, 1}, + {&__pyx_n_s_ident, __pyx_k_ident, sizeof(__pyx_k_ident), 0, 0, 1, 1}, + {&__pyx_n_s_ident_2, __pyx_k_ident_2, sizeof(__pyx_k_ident_2), 0, 0, 1, 1}, + {&__pyx_n_s_ignore_exception_trace, __pyx_k_ignore_exception_trace, sizeof(__pyx_k_ignore_exception_trace), 0, 0, 1, 1}, + {&__pyx_n_s_ignore_exceptions_thrown_in_line, __pyx_k_ignore_exceptions_thrown_in_line, sizeof(__pyx_k_ignore_exceptions_thrown_in_line), 0, 0, 1, 1}, + {&__pyx_n_s_ignore_system_exit_code, __pyx_k_ignore_system_exit_code, sizeof(__pyx_k_ignore_system_exit_code), 0, 0, 1, 1}, + {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, + {&__pyx_n_s_in_project_scope, __pyx_k_in_project_scope, sizeof(__pyx_k_in_project_scope), 0, 0, 1, 1}, + {&__pyx_n_s_info, __pyx_k_info, sizeof(__pyx_k_info), 0, 0, 1, 1}, + {&__pyx_n_s_initial_trace_obj, __pyx_k_initial_trace_obj, sizeof(__pyx_k_initial_trace_obj), 0, 0, 1, 1}, + {&__pyx_n_s_initializing, __pyx_k_initializing, sizeof(__pyx_k_initializing), 0, 0, 1, 1}, + {&__pyx_kp_s_invalid, __pyx_k_invalid, sizeof(__pyx_k_invalid), 0, 0, 1, 0}, + {&__pyx_n_s_is_coroutine, __pyx_k_is_coroutine, sizeof(__pyx_k_is_coroutine), 0, 0, 1, 1}, + {&__pyx_n_s_is_files_filter_enabled, __pyx_k_is_files_filter_enabled, sizeof(__pyx_k_is_files_filter_enabled), 0, 0, 1, 1}, + {&__pyx_n_s_is_line_in_except_block, __pyx_k_is_line_in_except_block, sizeof(__pyx_k_is_line_in_except_block), 0, 0, 1, 1}, + {&__pyx_n_s_is_line_in_try_block, __pyx_k_is_line_in_try_block, sizeof(__pyx_k_is_line_in_try_block), 0, 0, 1, 1}, + {&__pyx_n_s_is_logpoint, __pyx_k_is_logpoint, sizeof(__pyx_k_is_logpoint), 0, 0, 1, 1}, + {&__pyx_n_s_is_stepping, __pyx_k_is_stepping, sizeof(__pyx_k_is_stepping), 0, 0, 1, 1}, + {&__pyx_n_s_is_thread_alive, __pyx_k_is_thread_alive, sizeof(__pyx_k_is_thread_alive), 0, 0, 1, 1}, + {&__pyx_n_s_is_unhandled_exception, __pyx_k_is_unhandled_exception, sizeof(__pyx_k_is_unhandled_exception), 0, 0, 1, 1}, + {&__pyx_n_s_is_unwind, __pyx_k_is_unwind, sizeof(__pyx_k_is_unwind), 0, 0, 1, 1}, + {&__pyx_n_s_is_user_uncaught, __pyx_k_is_user_uncaught, sizeof(__pyx_k_is_user_uncaught), 0, 0, 1, 1}, + {&__pyx_kp_u_isenabled, __pyx_k_isenabled, sizeof(__pyx_k_isenabled), 0, 1, 0, 0}, + {&__pyx_n_s_j, __pyx_k_j, sizeof(__pyx_k_j), 0, 0, 1, 1}, + {&__pyx_n_s_just_raised, __pyx_k_just_raised, sizeof(__pyx_k_just_raised), 0, 0, 1, 1}, + {&__pyx_n_s_kwargs, __pyx_k_kwargs, sizeof(__pyx_k_kwargs), 0, 0, 1, 1}, + {&__pyx_kp_s_lambda, __pyx_k_lambda, sizeof(__pyx_k_lambda), 0, 0, 1, 0}, + {&__pyx_n_s_last_raise_line, __pyx_k_last_raise_line, sizeof(__pyx_k_last_raise_line), 0, 0, 1, 1}, + {&__pyx_n_s_last_stat, __pyx_k_last_stat, sizeof(__pyx_k_last_stat), 0, 0, 1, 1}, + {&__pyx_n_s_line, __pyx_k_line, sizeof(__pyx_k_line), 0, 0, 1, 1}, + {&__pyx_n_s_linecache, __pyx_k_linecache, sizeof(__pyx_k_linecache), 0, 0, 1, 1}, + {&__pyx_n_s_lines, __pyx_k_lines, sizeof(__pyx_k_lines), 0, 0, 1, 1}, + {&__pyx_n_s_lines_ignored, __pyx_k_lines_ignored, sizeof(__pyx_k_lines_ignored), 0, 0, 1, 1}, + {&__pyx_n_s_linesep, __pyx_k_linesep, sizeof(__pyx_k_linesep), 0, 0, 1, 1}, + {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, + {&__pyx_n_s_main_2, __pyx_k_main_2, sizeof(__pyx_k_main_2), 0, 0, 1, 1}, + {&__pyx_n_s_make_console_message, __pyx_k_make_console_message, sizeof(__pyx_k_make_console_message), 0, 0, 1, 1}, + {&__pyx_n_s_make_io_message, __pyx_k_make_io_message, sizeof(__pyx_k_make_io_message), 0, 0, 1, 1}, + {&__pyx_n_s_match, __pyx_k_match, sizeof(__pyx_k_match), 0, 0, 1, 1}, + {&__pyx_n_s_maybe_user_uncaught_exc_info, __pyx_k_maybe_user_uncaught_exc_info, sizeof(__pyx_k_maybe_user_uncaught_exc_info), 0, 0, 1, 1}, + {&__pyx_n_s_merged, __pyx_k_merged, sizeof(__pyx_k_merged), 0, 0, 1, 1}, + {&__pyx_n_s_method_object, __pyx_k_method_object, sizeof(__pyx_k_method_object), 0, 0, 1, 1}, + {&__pyx_kp_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 0}, + {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, + {&__pyx_n_s_name_2, __pyx_k_name_2, sizeof(__pyx_k_name_2), 0, 0, 1, 1}, + {&__pyx_n_s_new, __pyx_k_new, sizeof(__pyx_k_new), 0, 0, 1, 1}, + {&__pyx_n_s_next_additional_info, __pyx_k_next_additional_info, sizeof(__pyx_k_next_additional_info), 0, 0, 1, 1}, + {&__pyx_n_s_notify_on_first_raise_only, __pyx_k_notify_on_first_raise_only, sizeof(__pyx_k_notify_on_first_raise_only), 0, 0, 1, 1}, + {&__pyx_n_s_notify_skipped_step_in_because_o, __pyx_k_notify_skipped_step_in_because_o, sizeof(__pyx_k_notify_skipped_step_in_because_o), 0, 0, 1, 1}, + {&__pyx_n_s_notify_thread_not_alive, __pyx_k_notify_thread_not_alive, sizeof(__pyx_k_notify_thread_not_alive), 0, 0, 1, 1}, + {&__pyx_n_s_original_call, __pyx_k_original_call, sizeof(__pyx_k_original_call), 0, 0, 1, 1}, + {&__pyx_n_s_original_step_cmd, __pyx_k_original_step_cmd, sizeof(__pyx_k_original_step_cmd), 0, 0, 1, 1}, + {&__pyx_n_s_os, __pyx_k_os, sizeof(__pyx_k_os), 0, 0, 1, 1}, + {&__pyx_n_s_os_path, __pyx_k_os_path, sizeof(__pyx_k_os_path), 0, 0, 1, 1}, + {&__pyx_n_s_path, __pyx_k_path, sizeof(__pyx_k_path), 0, 0, 1, 1}, + {&__pyx_n_s_pickle, __pyx_k_pickle, sizeof(__pyx_k_pickle), 0, 0, 1, 1}, + {&__pyx_n_s_plugin, __pyx_k_plugin, sizeof(__pyx_k_plugin), 0, 0, 1, 1}, + {&__pyx_n_s_pop, __pyx_k_pop, sizeof(__pyx_k_pop), 0, 0, 1, 1}, + {&__pyx_n_s_prev_user_uncaught_exc_info, __pyx_k_prev_user_uncaught_exc_info, sizeof(__pyx_k_prev_user_uncaught_exc_info), 0, 0, 1, 1}, + {&__pyx_n_s_py_db, __pyx_k_py_db, sizeof(__pyx_k_py_db), 0, 0, 1, 1}, + {&__pyx_kp_s_pyc, __pyx_k_pyc, sizeof(__pyx_k_pyc), 0, 0, 1, 0}, + {&__pyx_n_s_pydb_disposed, __pyx_k_pydb_disposed, sizeof(__pyx_k_pydb_disposed), 0, 0, 1, 1}, + {&__pyx_n_s_pydev_bundle, __pyx_k_pydev_bundle, sizeof(__pyx_k_pydev_bundle), 0, 0, 1, 1}, + {&__pyx_n_s_pydev_bundle__pydev_saved_modul, __pyx_k_pydev_bundle__pydev_saved_modul, sizeof(__pyx_k_pydev_bundle__pydev_saved_modul), 0, 0, 1, 1}, + {&__pyx_n_s_pydev_bundle_pydev_is_thread_al, __pyx_k_pydev_bundle_pydev_is_thread_al, sizeof(__pyx_k_pydev_bundle_pydev_is_thread_al), 0, 0, 1, 1}, + {&__pyx_n_s_pydev_bundle_pydev_log, __pyx_k_pydev_bundle_pydev_log, sizeof(__pyx_k_pydev_bundle_pydev_log), 0, 0, 1, 1}, + {&__pyx_n_s_pydev_do_not_trace, __pyx_k_pydev_do_not_trace, sizeof(__pyx_k_pydev_do_not_trace), 0, 0, 1, 1}, + {&__pyx_kp_s_pydev_execfile_py, __pyx_k_pydev_execfile_py, sizeof(__pyx_k_pydev_execfile_py), 0, 0, 1, 0}, + {&__pyx_n_s_pydev_log, __pyx_k_pydev_log, sizeof(__pyx_k_pydev_log), 0, 0, 1, 1}, + {&__pyx_n_s_pydev_log_exception, __pyx_k_pydev_log_exception, sizeof(__pyx_k_pydev_log_exception), 0, 0, 1, 1}, + {&__pyx_n_s_pydev_monkey, __pyx_k_pydev_monkey, sizeof(__pyx_k_pydev_monkey), 0, 0, 1, 1}, + {&__pyx_n_s_pydevd, __pyx_k_pydevd, sizeof(__pyx_k_pydevd), 0, 0, 1, 1}, + {&__pyx_n_s_pydevd_bundle, __pyx_k_pydevd_bundle, sizeof(__pyx_k_pydevd_bundle), 0, 0, 1, 1}, + {&__pyx_n_s_pydevd_bundle_pydevd_bytecode_u, __pyx_k_pydevd_bundle_pydevd_bytecode_u, sizeof(__pyx_k_pydevd_bundle_pydevd_bytecode_u), 0, 0, 1, 1}, + {&__pyx_n_s_pydevd_bundle_pydevd_comm_const, __pyx_k_pydevd_bundle_pydevd_comm_const, sizeof(__pyx_k_pydevd_bundle_pydevd_comm_const), 0, 0, 1, 1}, + {&__pyx_n_s_pydevd_bundle_pydevd_constants, __pyx_k_pydevd_bundle_pydevd_constants, sizeof(__pyx_k_pydevd_bundle_pydevd_constants), 0, 0, 1, 1}, + {&__pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_k_pydevd_bundle_pydevd_cython, sizeof(__pyx_k_pydevd_bundle_pydevd_cython), 0, 0, 1, 1}, + {&__pyx_kp_s_pydevd_bundle_pydevd_cython_pyx, __pyx_k_pydevd_bundle_pydevd_cython_pyx, sizeof(__pyx_k_pydevd_bundle_pydevd_cython_pyx), 0, 0, 1, 0}, + {&__pyx_n_s_pydevd_bundle_pydevd_frame_util, __pyx_k_pydevd_bundle_pydevd_frame_util, sizeof(__pyx_k_pydevd_bundle_pydevd_frame_util), 0, 0, 1, 1}, + {&__pyx_n_s_pydevd_bundle_pydevd_utils, __pyx_k_pydevd_bundle_pydevd_utils, sizeof(__pyx_k_pydevd_bundle_pydevd_utils), 0, 0, 1, 1}, + {&__pyx_n_s_pydevd_dont_trace, __pyx_k_pydevd_dont_trace, sizeof(__pyx_k_pydevd_dont_trace), 0, 0, 1, 1}, + {&__pyx_n_s_pydevd_file_utils, __pyx_k_pydevd_file_utils, sizeof(__pyx_k_pydevd_file_utils), 0, 0, 1, 1}, + {&__pyx_kp_s_pydevd_py, __pyx_k_pydevd_py, sizeof(__pyx_k_pydevd_py), 0, 0, 1, 0}, + {&__pyx_kp_s_pydevd_traceproperty_py, __pyx_k_pydevd_traceproperty_py, sizeof(__pyx_k_pydevd_traceproperty_py), 0, 0, 1, 0}, + {&__pyx_n_s_pydevd_tracing, __pyx_k_pydevd_tracing, sizeof(__pyx_k_pydevd_tracing), 0, 0, 1, 1}, + {&__pyx_n_s_pyx_PickleError, __pyx_k_pyx_PickleError, sizeof(__pyx_k_pyx_PickleError), 0, 0, 1, 1}, + {&__pyx_n_s_pyx_checksum, __pyx_k_pyx_checksum, sizeof(__pyx_k_pyx_checksum), 0, 0, 1, 1}, + {&__pyx_n_s_pyx_result, __pyx_k_pyx_result, sizeof(__pyx_k_pyx_result), 0, 0, 1, 1}, + {&__pyx_n_s_pyx_state, __pyx_k_pyx_state, sizeof(__pyx_k_pyx_state), 0, 0, 1, 1}, + {&__pyx_n_s_pyx_type, __pyx_k_pyx_type, sizeof(__pyx_k_pyx_type), 0, 0, 1, 1}, + {&__pyx_n_s_pyx_unpickle_PyDBAdditionalThr, __pyx_k_pyx_unpickle_PyDBAdditionalThr, sizeof(__pyx_k_pyx_unpickle_PyDBAdditionalThr), 0, 0, 1, 1}, + {&__pyx_n_s_pyx_unpickle_PyDBFrame, __pyx_k_pyx_unpickle_PyDBFrame, sizeof(__pyx_k_pyx_unpickle_PyDBFrame), 0, 0, 1, 1}, + {&__pyx_n_s_pyx_unpickle_SafeCallWrapper, __pyx_k_pyx_unpickle_SafeCallWrapper, sizeof(__pyx_k_pyx_unpickle_SafeCallWrapper), 0, 0, 1, 1}, + {&__pyx_n_s_pyx_unpickle_ThreadTracer, __pyx_k_pyx_unpickle_ThreadTracer, sizeof(__pyx_k_pyx_unpickle_ThreadTracer), 0, 0, 1, 1}, + {&__pyx_n_s_pyx_unpickle_TopLevelThreadTra, __pyx_k_pyx_unpickle_TopLevelThreadTra, sizeof(__pyx_k_pyx_unpickle_TopLevelThreadTra), 0, 0, 1, 1}, + {&__pyx_n_s_pyx_unpickle_TopLevelThreadTra_2, __pyx_k_pyx_unpickle_TopLevelThreadTra_2, sizeof(__pyx_k_pyx_unpickle_TopLevelThreadTra_2), 0, 0, 1, 1}, + {&__pyx_n_s_pyx_unpickle__TryExceptContain, __pyx_k_pyx_unpickle__TryExceptContain, sizeof(__pyx_k_pyx_unpickle__TryExceptContain), 0, 0, 1, 1}, + {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1}, + {&__pyx_n_s_qname, __pyx_k_qname, sizeof(__pyx_k_qname), 0, 0, 1, 1}, + {&__pyx_n_s_quitting, __pyx_k_quitting, sizeof(__pyx_k_quitting), 0, 0, 1, 1}, + {&__pyx_n_s_raise_lines, __pyx_k_raise_lines, sizeof(__pyx_k_raise_lines), 0, 0, 1, 1}, + {&__pyx_n_s_raise_lines_in_except, __pyx_k_raise_lines_in_except, sizeof(__pyx_k_raise_lines_in_except), 0, 0, 1, 1}, + {&__pyx_n_s_re, __pyx_k_re, sizeof(__pyx_k_re), 0, 0, 1, 1}, + {&__pyx_n_s_reduce, __pyx_k_reduce, sizeof(__pyx_k_reduce), 0, 0, 1, 1}, + {&__pyx_n_s_reduce_cython, __pyx_k_reduce_cython, sizeof(__pyx_k_reduce_cython), 0, 0, 1, 1}, + {&__pyx_n_s_reduce_ex, __pyx_k_reduce_ex, sizeof(__pyx_k_reduce_ex), 0, 0, 1, 1}, + {&__pyx_n_s_ref, __pyx_k_ref, sizeof(__pyx_k_ref), 0, 0, 1, 1}, + {&__pyx_n_s_remove_additional_info, __pyx_k_remove_additional_info, sizeof(__pyx_k_remove_additional_info), 0, 0, 1, 1}, + {&__pyx_n_s_remove_exception_from_frame, __pyx_k_remove_exception_from_frame, sizeof(__pyx_k_remove_exception_from_frame), 0, 0, 1, 1}, + {&__pyx_n_s_remove_return_values_flag, __pyx_k_remove_return_values_flag, sizeof(__pyx_k_remove_return_values_flag), 0, 0, 1, 1}, + {&__pyx_n_s_result, __pyx_k_result, sizeof(__pyx_k_result), 0, 0, 1, 1}, + {&__pyx_n_s_ret, __pyx_k_ret, sizeof(__pyx_k_ret), 0, 0, 1, 1}, + {&__pyx_n_s_return, __pyx_k_return, sizeof(__pyx_k_return), 0, 0, 1, 1}, + {&__pyx_n_s_return_line, __pyx_k_return_line, sizeof(__pyx_k_return_line), 0, 0, 1, 1}, + {&__pyx_n_s_returns, __pyx_k_returns, sizeof(__pyx_k_returns), 0, 0, 1, 1}, + {&__pyx_n_s_rfind, __pyx_k_rfind, sizeof(__pyx_k_rfind), 0, 0, 1, 1}, + {&__pyx_n_s_run, __pyx_k_run, sizeof(__pyx_k_run), 0, 0, 1, 1}, + {&__pyx_kp_s_s_raised_from_within_the_callba, __pyx_k_s_raised_from_within_the_callba, sizeof(__pyx_k_s_raised_from_within_the_callba), 0, 0, 1, 0}, + {&__pyx_kp_s_s_s, __pyx_k_s_s, sizeof(__pyx_k_s_s), 0, 0, 1, 0}, + {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1}, + {&__pyx_n_s_send_caught_exception_stack, __pyx_k_send_caught_exception_stack, sizeof(__pyx_k_send_caught_exception_stack), 0, 0, 1, 1}, + {&__pyx_n_s_send_caught_exception_stack_proc, __pyx_k_send_caught_exception_stack_proc, sizeof(__pyx_k_send_caught_exception_stack_proc), 0, 0, 1, 1}, + {&__pyx_n_s_set, __pyx_k_set, sizeof(__pyx_k_set), 0, 0, 1, 1}, + {&__pyx_n_s_set_additional_thread_info, __pyx_k_set_additional_thread_info, sizeof(__pyx_k_set_additional_thread_info), 0, 0, 1, 1}, + {&__pyx_n_s_set_additional_thread_info_lock, __pyx_k_set_additional_thread_info_lock, sizeof(__pyx_k_set_additional_thread_info_lock), 0, 0, 1, 1}, + {&__pyx_n_s_set_suspend, __pyx_k_set_suspend, sizeof(__pyx_k_set_suspend), 0, 0, 1, 1}, + {&__pyx_n_s_set_trace_for_frame_and_parents, __pyx_k_set_trace_for_frame_and_parents, sizeof(__pyx_k_set_trace_for_frame_and_parents), 0, 0, 1, 1}, + {&__pyx_n_s_setstate, __pyx_k_setstate, sizeof(__pyx_k_setstate), 0, 0, 1, 1}, + {&__pyx_n_s_setstate_cython, __pyx_k_setstate_cython, sizeof(__pyx_k_setstate_cython), 0, 0, 1, 1}, + {&__pyx_n_s_should_stop, __pyx_k_should_stop, sizeof(__pyx_k_should_stop), 0, 0, 1, 1}, + {&__pyx_n_s_should_stop_on_exception, __pyx_k_should_stop_on_exception, sizeof(__pyx_k_should_stop_on_exception), 0, 0, 1, 1}, + {&__pyx_n_s_should_trace_hook, __pyx_k_should_trace_hook, sizeof(__pyx_k_should_trace_hook), 0, 0, 1, 1}, + {&__pyx_n_s_show_return_values, __pyx_k_show_return_values, sizeof(__pyx_k_show_return_values), 0, 0, 1, 1}, + {&__pyx_n_s_skip_on_exceptions_thrown_in_sam, __pyx_k_skip_on_exceptions_thrown_in_sam, sizeof(__pyx_k_skip_on_exceptions_thrown_in_sam), 0, 0, 1, 1}, + {&__pyx_n_s_spec, __pyx_k_spec, sizeof(__pyx_k_spec), 0, 0, 1, 1}, + {&__pyx_n_s_st_mtime, __pyx_k_st_mtime, sizeof(__pyx_k_st_mtime), 0, 0, 1, 1}, + {&__pyx_n_s_st_size, __pyx_k_st_size, sizeof(__pyx_k_st_size), 0, 0, 1, 1}, + {&__pyx_n_s_startswith, __pyx_k_startswith, sizeof(__pyx_k_startswith), 0, 0, 1, 1}, + {&__pyx_n_s_stat, __pyx_k_stat, sizeof(__pyx_k_stat), 0, 0, 1, 1}, + {&__pyx_n_s_state, __pyx_k_state, sizeof(__pyx_k_state), 0, 0, 1, 1}, + {&__pyx_n_s_stop, __pyx_k_stop, sizeof(__pyx_k_stop), 0, 0, 1, 1}, + {&__pyx_n_s_stop_on_unhandled_exception, __pyx_k_stop_on_unhandled_exception, sizeof(__pyx_k_stop_on_unhandled_exception), 0, 0, 1, 1}, + {&__pyx_n_s_stopped, __pyx_k_stopped, sizeof(__pyx_k_stopped), 0, 0, 1, 1}, + {&__pyx_kp_s_stringsource, __pyx_k_stringsource, sizeof(__pyx_k_stringsource), 0, 0, 1, 0}, + {&__pyx_n_s_suspend, __pyx_k_suspend, sizeof(__pyx_k_suspend), 0, 0, 1, 1}, + {&__pyx_n_s_suspend_other_threads, __pyx_k_suspend_other_threads, sizeof(__pyx_k_suspend_other_threads), 0, 0, 1, 1}, + {&__pyx_n_s_suspend_policy, __pyx_k_suspend_policy, sizeof(__pyx_k_suspend_policy), 0, 0, 1, 1}, + {&__pyx_n_s_suspended_at_unhandled, __pyx_k_suspended_at_unhandled, sizeof(__pyx_k_suspended_at_unhandled), 0, 0, 1, 1}, + {&__pyx_n_s_sys, __pyx_k_sys, sizeof(__pyx_k_sys), 0, 0, 1, 1}, + {&__pyx_n_s_t, __pyx_k_t, sizeof(__pyx_k_t), 0, 0, 1, 1}, + {&__pyx_n_s_tb_frame, __pyx_k_tb_frame, sizeof(__pyx_k_tb_frame), 0, 0, 1, 1}, + {&__pyx_n_s_tb_lineno, __pyx_k_tb_lineno, sizeof(__pyx_k_tb_lineno), 0, 0, 1, 1}, + {&__pyx_n_s_tb_next, __pyx_k_tb_next, sizeof(__pyx_k_tb_next), 0, 0, 1, 1}, + {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, + {&__pyx_n_s_thread, __pyx_k_thread, sizeof(__pyx_k_thread), 0, 0, 1, 1}, + {&__pyx_kp_s_thread__ident_is_None_in__get_re, __pyx_k_thread__ident_is_None_in__get_re, sizeof(__pyx_k_thread__ident_is_None_in__get_re), 0, 0, 1, 0}, + {&__pyx_n_s_thread_trace_func, __pyx_k_thread_trace_func, sizeof(__pyx_k_thread_trace_func), 0, 0, 1, 1}, + {&__pyx_n_s_thread_tracer, __pyx_k_thread_tracer, sizeof(__pyx_k_thread_tracer), 0, 0, 1, 1}, + {&__pyx_n_s_threading, __pyx_k_threading, sizeof(__pyx_k_threading), 0, 0, 1, 1}, + {&__pyx_n_s_threading_active, __pyx_k_threading_active, sizeof(__pyx_k_threading_active), 0, 0, 1, 1}, + {&__pyx_n_s_threading_current_thread, __pyx_k_threading_current_thread, sizeof(__pyx_k_threading_current_thread), 0, 0, 1, 1}, + {&__pyx_n_s_threading_get_ident, __pyx_k_threading_get_ident, sizeof(__pyx_k_threading_get_ident), 0, 0, 1, 1}, + {&__pyx_n_s_top_level_thread_tracer, __pyx_k_top_level_thread_tracer, sizeof(__pyx_k_top_level_thread_tracer), 0, 0, 1, 1}, + {&__pyx_n_s_top_level_thread_tracer_no_back, __pyx_k_top_level_thread_tracer_no_back, sizeof(__pyx_k_top_level_thread_tracer_no_back), 0, 0, 1, 1}, + {&__pyx_n_s_top_level_thread_tracer_unhandle, __pyx_k_top_level_thread_tracer_unhandle, sizeof(__pyx_k_top_level_thread_tracer_unhandle), 0, 0, 1, 1}, + {&__pyx_n_s_trace, __pyx_k_trace, sizeof(__pyx_k_trace), 0, 0, 1, 1}, + {&__pyx_n_s_trace_dispatch, __pyx_k_trace_dispatch, sizeof(__pyx_k_trace_dispatch), 0, 0, 1, 1}, + {&__pyx_n_s_trace_dispatch_and_unhandled_exc, __pyx_k_trace_dispatch_and_unhandled_exc, sizeof(__pyx_k_trace_dispatch_and_unhandled_exc), 0, 0, 1, 1}, + {&__pyx_n_s_trace_exception, __pyx_k_trace_exception, sizeof(__pyx_k_trace_exception), 0, 0, 1, 1}, + {&__pyx_n_s_trace_obj, __pyx_k_trace_obj, sizeof(__pyx_k_trace_obj), 0, 0, 1, 1}, + {&__pyx_n_s_trace_unhandled_exceptions, __pyx_k_trace_unhandled_exceptions, sizeof(__pyx_k_trace_unhandled_exceptions), 0, 0, 1, 1}, + {&__pyx_n_s_try_exc_info, __pyx_k_try_exc_info, sizeof(__pyx_k_try_exc_info), 0, 0, 1, 1}, + {&__pyx_n_s_try_except_info, __pyx_k_try_except_info, sizeof(__pyx_k_try_except_info), 0, 0, 1, 1}, + {&__pyx_n_s_try_except_infos, __pyx_k_try_except_infos, sizeof(__pyx_k_try_except_infos), 0, 0, 1, 1}, + {&__pyx_n_s_update, __pyx_k_update, sizeof(__pyx_k_update), 0, 0, 1, 1}, + {&__pyx_n_s_update_stepping_info, __pyx_k_update_stepping_info, sizeof(__pyx_k_update_stepping_info), 0, 0, 1, 1}, + {&__pyx_n_s_use_setstate, __pyx_k_use_setstate, sizeof(__pyx_k_use_setstate), 0, 0, 1, 1}, + {&__pyx_kp_s_utf_8, __pyx_k_utf_8, sizeof(__pyx_k_utf_8), 0, 0, 1, 0}, + {&__pyx_n_s_valid_try_except_infos, __pyx_k_valid_try_except_infos, sizeof(__pyx_k_valid_try_except_infos), 0, 0, 1, 1}, + {&__pyx_n_s_value, __pyx_k_value, sizeof(__pyx_k_value), 0, 0, 1, 1}, + {&__pyx_n_s_values, __pyx_k_values, sizeof(__pyx_k_values), 0, 0, 1, 1}, + {&__pyx_n_s_version, __pyx_k_version, sizeof(__pyx_k_version), 0, 0, 1, 1}, + {&__pyx_n_s_was_just_raised, __pyx_k_was_just_raised, sizeof(__pyx_k_was_just_raised), 0, 0, 1, 1}, + {&__pyx_n_s_weak_thread, __pyx_k_weak_thread, sizeof(__pyx_k_weak_thread), 0, 0, 1, 1}, + {&__pyx_n_s_weakref, __pyx_k_weakref, sizeof(__pyx_k_weakref), 0, 0, 1, 1}, + {&__pyx_n_s_writer, __pyx_k_writer, sizeof(__pyx_k_writer), 0, 0, 1, 1}, + {0, 0, 0, 0, 0, 0, 0} + }; + return __Pyx_InitStrings(__pyx_string_tab); +} +/* #### Code section: cached_builtins ### */ +static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) { + __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(0, 357, __pyx_L1_error) + __pyx_builtin_NameError = __Pyx_GetBuiltinName(__pyx_n_s_NameError); if (!__pyx_builtin_NameError) __PYX_ERR(0, 391, __pyx_L1_error) + __pyx_builtin_StopIteration = __Pyx_GetBuiltinName(__pyx_n_s_StopIteration); if (!__pyx_builtin_StopIteration) __PYX_ERR(0, 392, __pyx_L1_error) + __pyx_builtin_id = __Pyx_GetBuiltinName(__pyx_n_s_id); if (!__pyx_builtin_id) __PYX_ERR(0, 197, __pyx_L1_error) + __pyx_builtin_AttributeError = __Pyx_GetBuiltinName(__pyx_n_s_AttributeError); if (!__pyx_builtin_AttributeError) __PYX_ERR(0, 231, __pyx_L1_error) + __pyx_builtin_KeyboardInterrupt = __Pyx_GetBuiltinName(__pyx_n_s_KeyboardInterrupt); if (!__pyx_builtin_KeyboardInterrupt) __PYX_ERR(0, 1110, __pyx_L1_error) + __pyx_builtin_SystemExit = __Pyx_GetBuiltinName(__pyx_n_s_SystemExit); if (!__pyx_builtin_SystemExit) __PYX_ERR(0, 1110, __pyx_L1_error) + __pyx_builtin_GeneratorExit = __Pyx_GetBuiltinName(__pyx_n_s_GeneratorExit); if (!__pyx_builtin_GeneratorExit) __PYX_ERR(0, 1411, __pyx_L1_error) + __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(0, 2176, __pyx_L1_error) + return 0; + __pyx_L1_error:; + return -1; +} +/* #### Code section: cached_constants ### */ + +static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); + + /* "_pydevd_bundle/pydevd_cython.pyx":250 + * additional_info.weak_thread = weakref.ref(thread) + * add_additional_info(additional_info) + * del _next_additional_info[:] # <<<<<<<<<<<<<< + * _next_additional_info.append(PyDBAdditionalThreadInfo()) + * + */ + __pyx_slice__2 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__2)) __PYX_ERR(0, 250, __pyx_L1_error) + __Pyx_GOTREF(__pyx_slice__2); + __Pyx_GIVEREF(__pyx_slice__2); + + /* "_pydevd_bundle/pydevd_cython.pyx":233 + * raise AttributeError() + * except: + * with _set_additional_thread_info_lock: # <<<<<<<<<<<<<< + * # If it's not there, set it within a lock to avoid any racing + * # conditions. + */ + __pyx_tuple__3 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 233, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__3); + __Pyx_GIVEREF(__pyx_tuple__3); + + /* "_pydevd_bundle/pydevd_cython.pyx":1110 + * ) + * py_db.writer.add_command(cmd) + * if not issubclass(exc, (KeyboardInterrupt, SystemExit)): # <<<<<<<<<<<<<< + * pydev_log.exception() + * + */ + __pyx_tuple__5 = PyTuple_Pack(2, __pyx_builtin_KeyboardInterrupt, __pyx_builtin_SystemExit); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 1110, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__5); + __Pyx_GIVEREF(__pyx_tuple__5); + + /* "_pydevd_bundle/pydevd_cython.pyx":1152 + * filename = frame.f_code.co_filename + * if filename.endswith(".pyc"): + * filename = filename[:-1] # <<<<<<<<<<<<<< + * + * if not filename.endswith(PYDEVD_IPYTHON_CONTEXT[0]): + */ + __pyx_slice__6 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__6)) __PYX_ERR(0, 1152, __pyx_L1_error) + __Pyx_GOTREF(__pyx_slice__6); + __Pyx_GIVEREF(__pyx_slice__6); + + /* "_pydevd_bundle/pydevd_cython.pyx":1367 + * ) + * py_db.writer.add_command(cmd) + * if not issubclass(exc, (KeyboardInterrupt, SystemExit)): # <<<<<<<<<<<<<< + * pydev_log.exception() + * raise + */ + __pyx_tuple__7 = PyTuple_Pack(2, __pyx_builtin_KeyboardInterrupt, __pyx_builtin_SystemExit); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 1367, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__7); + __Pyx_GIVEREF(__pyx_tuple__7); + + /* "_pydevd_bundle/pydevd_cython.pyx":1747 + * if f_unhandled.f_code.co_name in ("__bootstrap", "_bootstrap"): + * # We need __bootstrap_inner, not __bootstrap. + * return None, False # <<<<<<<<<<<<<< + * + * elif f_unhandled.f_code.co_name in ("__bootstrap_inner", "_bootstrap_inner"): + */ + __pyx_tuple__11 = PyTuple_Pack(2, Py_None, Py_False); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 1747, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__11); + __Pyx_GIVEREF(__pyx_tuple__11); + + /* "_pydevd_bundle/pydevd_cython.pyx":2176 + * + * def fix_top_level_trace_and_get_trace_func(*args, **kwargs): + * raise RuntimeError("Not used in sys.monitoring mode.") # <<<<<<<<<<<<<< + */ + __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_s_Not_used_in_sys_monitoring_mode); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 2176, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__12); + __Pyx_GIVEREF(__pyx_tuple__12); + + /* "(tree fragment)":4 + * cdef object __pyx_PickleError + * cdef object __pyx_result + * if __pyx_checksum not in (0xd33aa14, 0x024feed, 0x4342dfb): # <<<<<<<<<<<<<< + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xd33aa14, 0x024feed, 0x4342dfb) = (conditional_breakpoint_exception, is_in_wait_loop, is_tracing, pydev_call_from_jinja2, pydev_call_inside_jinja2, pydev_django_resolve_frame, pydev_func_name, pydev_message, pydev_next_line, pydev_notify_kill, pydev_original_step_cmd, pydev_smart_child_offset, pydev_smart_parent_offset, pydev_smart_step_into_variants, pydev_smart_step_stop, pydev_state, pydev_step_cmd, pydev_step_stop, pydev_use_scoped_step_frame, step_in_initial_location, suspend_type, suspended_at_unhandled, target_id_to_smart_step_into_variant, thread_tracer, top_level_thread_tracer_no_back_frames, top_level_thread_tracer_unhandled, trace_suspend_type, weak_thread))" % __pyx_checksum + */ + __pyx_tuple__13 = PyTuple_Pack(3, __pyx_int_221489684, __pyx_int_2424557, __pyx_int_70528507); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(2, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__13); + __Pyx_GIVEREF(__pyx_tuple__13); + __pyx_tuple__14 = PyTuple_Pack(3, __pyx_int_230645316, __pyx_int_232881363, __pyx_int_210464433); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(2, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__14); + __Pyx_GIVEREF(__pyx_tuple__14); + __pyx_tuple__15 = PyTuple_Pack(3, __pyx_int_61391470, __pyx_int_192493205, __pyx_int_84338306); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(2, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__15); + __Pyx_GIVEREF(__pyx_tuple__15); + __pyx_tuple__16 = PyTuple_Pack(3, __pyx_int_169093275, __pyx_int_63705258, __pyx_int_125568891); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(2, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__16); + __Pyx_GIVEREF(__pyx_tuple__16); + __pyx_tuple__17 = PyTuple_Pack(3, __pyx_int_18997755, __pyx_int_255484337, __pyx_int_64458794); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(2, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__17); + __Pyx_GIVEREF(__pyx_tuple__17); + __pyx_tuple__18 = PyTuple_Pack(3, __pyx_int_66451433, __pyx_int_16751766, __pyx_int_171613889); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(2, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__18); + __Pyx_GIVEREF(__pyx_tuple__18); + + /* "_pydevd_bundle/pydevd_cython.pyx":130 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cpdef object _get_related_thread(self): # <<<<<<<<<<<<<< + * # ELSE + * # def _get_related_thread(self): + */ + __pyx_tuple__20 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(0, 130, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__20); + __Pyx_GIVEREF(__pyx_tuple__20); + __pyx_codeobj__21 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__20, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_bundle_pydevd_cython_pyx, __pyx_n_s_get_related_thread, 130, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__21)) __PYX_ERR(0, 130, __pyx_L1_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":159 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cpdef bint _is_stepping(self): # <<<<<<<<<<<<<< + * # ELSE + * # def _is_stepping(self): + */ + __pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__20, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_bundle_pydevd_cython_pyx, __pyx_n_s_is_stepping, 159, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) __PYX_ERR(0, 159, __pyx_L1_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":177 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cpdef get_topmost_frame(self, thread): # <<<<<<<<<<<<<< + * # ELSE + * # def get_topmost_frame(self, thread): + */ + __pyx_tuple__23 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_thread); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 177, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__23); + __Pyx_GIVEREF(__pyx_tuple__23); + __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__23, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_bundle_pydevd_cython_pyx, __pyx_n_s_get_topmost_frame, 177, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(0, 177, __pyx_L1_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":206 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cpdef update_stepping_info(self): # <<<<<<<<<<<<<< + * # ELSE + * # def update_stepping_info(self): + */ + __pyx_codeobj__25 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__20, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_bundle_pydevd_cython_pyx, __pyx_n_s_update_stepping_info, 206, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__25)) __PYX_ERR(0, 206, __pyx_L1_error) + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + __pyx_tuple__26 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_state, __pyx_n_s_dict_2, __pyx_n_s_use_setstate); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(2, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__26); + __Pyx_GIVEREF(__pyx_tuple__26); + __pyx_codeobj__27 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__26, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__27)) __PYX_ERR(2, 1, __pyx_L1_error) + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle_PyDBAdditionalThreadInfo, (type(self), 0xd33aa14, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_PyDBAdditionalThreadInfo__set_state(self, __pyx_state) + */ + __pyx_tuple__28 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_pyx_state); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(2, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__28); + __Pyx_GIVEREF(__pyx_tuple__28); + __pyx_codeobj__29 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__28, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__29)) __PYX_ERR(2, 16, __pyx_L1_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":223 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cpdef set_additional_thread_info(thread): # <<<<<<<<<<<<<< + * # ELSE + * # def set_additional_thread_info(thread): + */ + __pyx_tuple__30 = PyTuple_Pack(1, __pyx_n_s_thread); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 223, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__30); + __Pyx_GIVEREF(__pyx_tuple__30); + __pyx_codeobj__31 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__30, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_bundle_pydevd_cython_pyx, __pyx_n_s_set_additional_thread_info, 223, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__31)) __PYX_ERR(0, 223, __pyx_L1_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":305 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cpdef add_additional_info(PyDBAdditionalThreadInfo info): # <<<<<<<<<<<<<< + * # ELSE + * # def add_additional_info(info): + */ + __pyx_tuple__32 = PyTuple_Pack(1, __pyx_n_s_info); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(0, 305, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__32); + __Pyx_GIVEREF(__pyx_tuple__32); + __pyx_codeobj__33 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__32, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_bundle_pydevd_cython_pyx, __pyx_n_s_add_additional_info, 305, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__33)) __PYX_ERR(0, 305, __pyx_L1_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":317 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cpdef remove_additional_info(PyDBAdditionalThreadInfo info): # <<<<<<<<<<<<<< + * # ELSE + * # def remove_additional_info(info): + */ + __pyx_codeobj__34 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__32, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_bundle_pydevd_cython_pyx, __pyx_n_s_remove_additional_info, 317, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__34)) __PYX_ERR(0, 317, __pyx_L1_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":329 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cpdef bint any_thread_stepping(): # <<<<<<<<<<<<<< + * # ELSE + * # def any_thread_stepping(): + */ + __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_bundle_pydevd_cython_pyx, __pyx_n_s_any_thread_stepping, 329, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) __PYX_ERR(0, 329, __pyx_L1_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":336 + * return bool(_infos_stepping) + * import linecache + * import os.path # <<<<<<<<<<<<<< + * import re + * + */ + __pyx_tuple__36 = PyTuple_Pack(2, __pyx_n_s_os, __pyx_n_s_path); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(0, 336, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__36); + __Pyx_GIVEREF(__pyx_tuple__36); + + /* "_pydevd_bundle/pydevd_cython.pyx":359 + * except ImportError: + * + * def get_smart_step_into_variant_from_frame_offset(*args, **kwargs): # <<<<<<<<<<<<<< + * return None + * + */ + __pyx_tuple__37 = PyTuple_Pack(2, __pyx_n_s_args, __pyx_n_s_kwargs); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(0, 359, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__37); + __Pyx_GIVEREF(__pyx_tuple__37); + __pyx_codeobj__38 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__37, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_bundle_pydevd_cython_pyx, __pyx_n_s_get_smart_step_into_variant_from, 359, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__38)) __PYX_ERR(0, 359, __pyx_L1_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":382 + * basename = os.path.basename + * + * IGNORE_EXCEPTION_TAG = re.compile("[^#]*#.*@IgnoreException") # <<<<<<<<<<<<<< + * DEBUG_START = ("pydevd.py", "run") + * DEBUG_START_PY3K = ("_pydev_execfile.py", "execfile") + */ + __pyx_tuple__39 = PyTuple_Pack(1, __pyx_kp_s_IgnoreException); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(0, 382, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__39); + __Pyx_GIVEREF(__pyx_tuple__39); + + /* "_pydevd_bundle/pydevd_cython.pyx":383 + * + * IGNORE_EXCEPTION_TAG = re.compile("[^#]*#.*@IgnoreException") + * DEBUG_START = ("pydevd.py", "run") # <<<<<<<<<<<<<< + * DEBUG_START_PY3K = ("_pydev_execfile.py", "execfile") + * TRACE_PROPERTY = "pydevd_traceproperty.py" + */ + __pyx_tuple__40 = PyTuple_Pack(2, __pyx_kp_s_pydevd_py, __pyx_n_s_run); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(0, 383, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__40); + __Pyx_GIVEREF(__pyx_tuple__40); + + /* "_pydevd_bundle/pydevd_cython.pyx":384 + * IGNORE_EXCEPTION_TAG = re.compile("[^#]*#.*@IgnoreException") + * DEBUG_START = ("pydevd.py", "run") + * DEBUG_START_PY3K = ("_pydev_execfile.py", "execfile") # <<<<<<<<<<<<<< + * TRACE_PROPERTY = "pydevd_traceproperty.py" + * + */ + __pyx_tuple__41 = PyTuple_Pack(2, __pyx_kp_s_pydev_execfile_py, __pyx_n_s_execfile); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(0, 384, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__41); + __Pyx_GIVEREF(__pyx_tuple__41); + + /* "_pydevd_bundle/pydevd_cython.pyx":396 + * + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * def is_unhandled_exception(container_obj, py_db, frame, int last_raise_line, set raise_lines): # <<<<<<<<<<<<<< + * # ELSE + * # def is_unhandled_exception(container_obj, py_db, frame, last_raise_line, raise_lines): + */ + __pyx_tuple__42 = PyTuple_Pack(8, __pyx_n_s_container_obj, __pyx_n_s_py_db, __pyx_n_s_frame, __pyx_n_s_last_raise_line, __pyx_n_s_raise_lines, __pyx_n_s_try_except_infos, __pyx_n_s_valid_try_except_infos, __pyx_n_s_try_except_info); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(0, 396, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__42); + __Pyx_GIVEREF(__pyx_tuple__42); + __pyx_codeobj__43 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__42, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_bundle_pydevd_cython_pyx, __pyx_n_s_is_unhandled_exception, 396, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__43)) __PYX_ERR(0, 396, __pyx_L1_error) + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + __pyx_codeobj__44 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__26, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__44)) __PYX_ERR(2, 1, __pyx_L1_error) + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xdbf5e44, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle__TryExceptContainerObj__set_state(self, __pyx_state) + */ + __pyx_codeobj__45 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__28, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__45)) __PYX_ERR(2, 16, __pyx_L1_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":492 + * # ENDIF + * + * def set_suspend(self, *args, **kwargs): # <<<<<<<<<<<<<< + * self._args[0].set_suspend(*args, **kwargs) + * + */ + __pyx_tuple__46 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_args, __pyx_n_s_kwargs); if (unlikely(!__pyx_tuple__46)) __PYX_ERR(0, 492, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__46); + __Pyx_GIVEREF(__pyx_tuple__46); + __pyx_codeobj__47 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__46, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_bundle_pydevd_cython_pyx, __pyx_n_s_set_suspend, 492, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__47)) __PYX_ERR(0, 492, __pyx_L1_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":495 + * self._args[0].set_suspend(*args, **kwargs) + * + * def do_wait_suspend(self, *args, **kwargs): # <<<<<<<<<<<<<< + * self._args[0].do_wait_suspend(*args, **kwargs) + * + */ + __pyx_codeobj__48 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__46, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_bundle_pydevd_cython_pyx, __pyx_n_s_do_wait_suspend, 495, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__48)) __PYX_ERR(0, 495, __pyx_L1_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":499 + * + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * def trace_exception(self, frame, str event, arg): # <<<<<<<<<<<<<< + * cdef bint should_stop; + * cdef tuple exc_info; + */ + __pyx_tuple__49 = PyTuple_Pack(10, __pyx_n_s_self, __pyx_n_s_frame, __pyx_n_s_event, __pyx_n_s_arg, __pyx_n_s_should_stop, __pyx_n_s_exc_info, __pyx_n_s_frame_skips_cache, __pyx_n_s_frame_cache_key, __pyx_n_s_custom_key, __pyx_n_s_container_obj); if (unlikely(!__pyx_tuple__49)) __PYX_ERR(0, 499, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__49); + __Pyx_GIVEREF(__pyx_tuple__49); + __pyx_codeobj__50 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__49, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_bundle_pydevd_cython_pyx, __pyx_n_s_trace_exception, 499, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__50)) __PYX_ERR(0, 499, __pyx_L1_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":528 + * return self.trace_exception + * + * def handle_user_exception(self, frame): # <<<<<<<<<<<<<< + * exc_info = self.exc_info + * if exc_info: + */ + __pyx_tuple__51 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_frame, __pyx_n_s_exc_info); if (unlikely(!__pyx_tuple__51)) __PYX_ERR(0, 528, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__51); + __Pyx_GIVEREF(__pyx_tuple__51); + __pyx_codeobj__52 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__51, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_bundle_pydevd_cython_pyx, __pyx_n_s_handle_user_exception, 528, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__52)) __PYX_ERR(0, 528, __pyx_L1_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":636 + * + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cpdef trace_dispatch(self, frame, str event, arg): # <<<<<<<<<<<<<< + * cdef tuple abs_path_canonical_path_and_base; + * cdef bint is_exception_event; + */ + __pyx_tuple__53 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_frame, __pyx_n_s_event, __pyx_n_s_arg); if (unlikely(!__pyx_tuple__53)) __PYX_ERR(0, 636, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__53); + __Pyx_GIVEREF(__pyx_tuple__53); + __pyx_codeobj__54 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__53, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_bundle_pydevd_cython_pyx, __pyx_n_s_trace_dispatch, 636, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__54)) __PYX_ERR(0, 636, __pyx_L1_error) + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + __pyx_codeobj__55 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__26, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__55)) __PYX_ERR(2, 1, __pyx_L1_error) + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle_PyDBFrame, (type(self), 0x3a8c26e, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_PyDBFrame__set_state(self, __pyx_state) + */ + __pyx_codeobj__56 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__28, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__56)) __PYX_ERR(2, 16, __pyx_L1_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":1378 + * + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * def should_stop_on_exception(py_db, PyDBAdditionalThreadInfo info, frame, thread, arg, prev_user_uncaught_exc_info, is_unwind=False): # <<<<<<<<<<<<<< + * cdef bint should_stop; + * cdef bint was_just_raised; + */ + __pyx_tuple__57 = PyTuple_Pack(22, __pyx_n_s_py_db, __pyx_n_s_info, __pyx_n_s_frame, __pyx_n_s_thread, __pyx_n_s_arg, __pyx_n_s_prev_user_uncaught_exc_info, __pyx_n_s_is_unwind, __pyx_n_s_should_stop, __pyx_n_s_was_just_raised, __pyx_n_s_check_excs, __pyx_n_s_maybe_user_uncaught_exc_info, __pyx_n_s_exception, __pyx_n_s_value, __pyx_n_s_trace, __pyx_n_s_exception_breakpoint, __pyx_n_s_result, __pyx_n_s_exc_break_user, __pyx_n_s_exc_break_caught, __pyx_n_s_exc_break, __pyx_n_s_is_user_uncaught, __pyx_n_s_exc_info, __pyx_n_s_lines); if (unlikely(!__pyx_tuple__57)) __PYX_ERR(0, 1378, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__57); + __Pyx_GIVEREF(__pyx_tuple__57); + __pyx_codeobj__58 = (PyObject*)__Pyx_PyCode_New(7, 0, 0, 22, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__57, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_bundle_pydevd_cython_pyx, __pyx_n_s_should_stop_on_exception, 1378, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__58)) __PYX_ERR(0, 1378, __pyx_L1_error) + __pyx_tuple__59 = PyTuple_Pack(1, ((PyObject *)Py_False)); if (unlikely(!__pyx_tuple__59)) __PYX_ERR(0, 1378, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__59); + __Pyx_GIVEREF(__pyx_tuple__59); + + /* "_pydevd_bundle/pydevd_cython.pyx":1511 + * + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * def handle_exception(py_db, thread, frame, arg, str exception_type): # <<<<<<<<<<<<<< + * cdef bint stopped; + * cdef tuple abs_real_path_and_base; + */ + __pyx_tuple__60 = PyTuple_Pack(21, __pyx_n_s_py_db, __pyx_n_s_thread, __pyx_n_s_frame, __pyx_n_s_arg, __pyx_n_s_exception_type, __pyx_n_s_stopped, __pyx_n_s_abs_real_path_and_base, __pyx_n_s_absolute_filename, __pyx_n_s_canonical_normalized_filename, __pyx_n_s_lines_ignored, __pyx_n_s_frame_id_to_frame, __pyx_n_s_merged, __pyx_n_s_trace_obj, __pyx_n_s_initial_trace_obj, __pyx_n_s_check_trace_obj, __pyx_n_s_curr_stat, __pyx_n_s_last_stat, __pyx_n_s_from_user_input, __pyx_n_s_exc_lineno, __pyx_n_s_line, __pyx_n_s_f); if (unlikely(!__pyx_tuple__60)) __PYX_ERR(0, 1511, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__60); + __Pyx_GIVEREF(__pyx_tuple__60); + __pyx_codeobj__61 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 21, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__60, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_bundle_pydevd_cython_pyx, __pyx_n_s_handle_exception, 1511, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__61)) __PYX_ERR(0, 1511, __pyx_L1_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":1675 + * + * + * def notify_skipped_step_in_because_of_filters(py_db, frame): # <<<<<<<<<<<<<< + * global _global_notify_skipped_step_in + * + */ + __pyx_tuple__62 = PyTuple_Pack(2, __pyx_n_s_py_db, __pyx_n_s_frame); if (unlikely(!__pyx_tuple__62)) __PYX_ERR(0, 1675, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__62); + __Pyx_GIVEREF(__pyx_tuple__62); + __pyx_codeobj__63 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__62, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_bundle_pydevd_cython_pyx, __pyx_n_s_notify_skipped_step_in_because_o, 1675, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__63)) __PYX_ERR(0, 1675, __pyx_L1_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":1701 + * Py_XDECREF (method_obj) + * return SafeCallWrapper(ret) if ret is not None else None + * def get_method_object(self): # <<<<<<<<<<<<<< + * return self.method_object + * # ELSE + */ + __pyx_codeobj__64 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__20, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_bundle_pydevd_cython_pyx, __pyx_n_s_get_method_object, 1701, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__64)) __PYX_ERR(0, 1701, __pyx_L1_error) + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + __pyx_codeobj__65 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__26, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__65)) __PYX_ERR(2, 1, __pyx_L1_error) + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle_SafeCallWrapper, (type(self), 0xa14289b, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_SafeCallWrapper__set_state(self, __pyx_state) + */ + __pyx_codeobj__66 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__28, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__66)) __PYX_ERR(2, 16, __pyx_L1_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":1708 + * + * + * def fix_top_level_trace_and_get_trace_func(py_db, frame): # <<<<<<<<<<<<<< + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + */ + __pyx_tuple__67 = PyTuple_Pack(15, __pyx_n_s_py_db, __pyx_n_s_frame, __pyx_n_s_filename, __pyx_n_s_name_2, __pyx_n_s_args, __pyx_n_s_thread, __pyx_n_s_f_unhandled, __pyx_n_s_force_only_unhandled_tracer, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_t, __pyx_n_s_additional_info, __pyx_n_s_top_level_thread_tracer, __pyx_n_s_f_trace, __pyx_n_s_thread_tracer); if (unlikely(!__pyx_tuple__67)) __PYX_ERR(0, 1708, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__67); + __Pyx_GIVEREF(__pyx_tuple__67); + __pyx_codeobj__68 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 15, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__67, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_bundle_pydevd_cython_pyx, __pyx_n_s_fix_top_level_trace_and_get_trac, 1708, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__68)) __PYX_ERR(0, 1708, __pyx_L1_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":1846 + * + * + * def trace_dispatch(py_db, frame, event, arg): # <<<<<<<<<<<<<< + * thread_trace_func, apply_to_settrace = py_db.fix_top_level_trace_and_get_trace_func(py_db, frame) + * if thread_trace_func is None: + */ + __pyx_tuple__69 = PyTuple_Pack(6, __pyx_n_s_py_db, __pyx_n_s_frame, __pyx_n_s_event, __pyx_n_s_arg, __pyx_n_s_thread_trace_func, __pyx_n_s_apply_to_settrace); if (unlikely(!__pyx_tuple__69)) __PYX_ERR(0, 1846, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__69); + __Pyx_GIVEREF(__pyx_tuple__69); + __pyx_codeobj__70 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__69, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_bundle_pydevd_cython_pyx, __pyx_n_s_trace_dispatch, 1846, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__70)) __PYX_ERR(0, 1846, __pyx_L1_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":1869 + * # fmt: on + * + * def trace_unhandled_exceptions(self, frame, event, arg): # <<<<<<<<<<<<<< + * # Note that we ignore the frame as this tracing method should only be put in topmost frames already. + * # print('trace_unhandled_exceptions', event, frame.f_code.co_name, frame.f_code.co_filename, frame.f_code.co_firstlineno) + */ + __pyx_tuple__71 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_frame, __pyx_n_s_event, __pyx_n_s_arg, __pyx_n_s_py_db, __pyx_n_s_t, __pyx_n_s_additional_info); if (unlikely(!__pyx_tuple__71)) __PYX_ERR(0, 1869, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__71); + __Pyx_GIVEREF(__pyx_tuple__71); + __pyx_codeobj__72 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__71, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_bundle_pydevd_cython_pyx, __pyx_n_s_trace_unhandled_exceptions, 1869, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__72)) __PYX_ERR(0, 1869, __pyx_L1_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":1883 + * return self.trace_unhandled_exceptions + * + * def get_trace_dispatch_func(self): # <<<<<<<<<<<<<< + * return self.trace_unhandled_exceptions + * + */ + __pyx_codeobj__73 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__20, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_bundle_pydevd_cython_pyx, __pyx_n_s_get_trace_dispatch_func, 1883, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__73)) __PYX_ERR(0, 1883, __pyx_L1_error) + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + __pyx_codeobj__74 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__26, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__74)) __PYX_ERR(2, 1, __pyx_L1_error) + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions, (type(self), 0x121e1fb, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions__set_state(self, __pyx_state) + */ + __pyx_codeobj__75 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__28, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__75)) __PYX_ERR(2, 16, __pyx_L1_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":1927 + * # fmt: on + * + * def trace_dispatch_and_unhandled_exceptions(self, frame, event, arg): # <<<<<<<<<<<<<< + * # DEBUG = 'code_to_debug' in frame.f_code.co_filename + * # if DEBUG: print('trace_dispatch_and_unhandled_exceptions: %s %s %s %s %s %s' % (event, frame.f_code.co_name, frame.f_code.co_filename, frame.f_code.co_firstlineno, self._frame_trace_dispatch, frame.f_lineno)) + */ + __pyx_tuple__76 = PyTuple_Pack(9, __pyx_n_s_self, __pyx_n_s_frame, __pyx_n_s_event, __pyx_n_s_arg, __pyx_n_s_frame_trace_dispatch, __pyx_n_s_py_db, __pyx_n_s_t, __pyx_n_s_additional_info, __pyx_n_s_ret); if (unlikely(!__pyx_tuple__76)) __PYX_ERR(0, 1927, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__76); + __Pyx_GIVEREF(__pyx_tuple__76); + __pyx_codeobj__77 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__76, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_bundle_pydevd_cython_pyx, __pyx_n_s_trace_dispatch_and_unhandled_exc, 1927, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__77)) __PYX_ERR(0, 1927, __pyx_L1_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":1962 + * return ret + * + * def get_trace_dispatch_func(self): # <<<<<<<<<<<<<< + * return self.trace_dispatch_and_unhandled_exceptions + * + */ + __pyx_codeobj__78 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__20, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_bundle_pydevd_cython_pyx, __pyx_n_s_get_trace_dispatch_func, 1962, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__78)) __PYX_ERR(0, 1962, __pyx_L1_error) + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + __pyx_codeobj__79 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__26, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__79)) __PYX_ERR(2, 1, __pyx_L1_error) + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle_TopLevelThreadTracerNoBackFrame, (type(self), 0x3f5f7e9, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_TopLevelThreadTracerNoBackFrame__set_state(self, __pyx_state) + */ + __pyx_codeobj__80 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__28, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__80)) __PYX_ERR(2, 16, __pyx_L1_error) + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + __pyx_codeobj__81 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__26, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__81)) __PYX_ERR(2, 1, __pyx_L1_error) + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle_ThreadTracer, (type(self), 0x121e1fb, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_ThreadTracer__set_state(self, __pyx_state) + */ + __pyx_codeobj__82 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__28, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__82)) __PYX_ERR(2, 16, __pyx_L1_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":2167 + * _original_call = ThreadTracer.__call__ + * + * def __call__(self, frame, event, arg): # <<<<<<<<<<<<<< + * constructed_tid_to_last_frame[self._args[1].ident] = frame + * return _original_call(self, frame, event, arg) + */ + __pyx_codeobj__83 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__53, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_bundle_pydevd_cython_pyx, __pyx_n_s_call_2, 2167, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__83)) __PYX_ERR(0, 2167, __pyx_L1_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":2175 + * if PYDEVD_USE_SYS_MONITORING: + * + * def fix_top_level_trace_and_get_trace_func(*args, **kwargs): # <<<<<<<<<<<<<< + * raise RuntimeError("Not used in sys.monitoring mode.") + */ + __pyx_codeobj__84 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__37, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_bundle_pydevd_cython_pyx, __pyx_n_s_fix_top_level_trace_and_get_trac, 2175, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__84)) __PYX_ERR(0, 2175, __pyx_L1_error) + + /* "(tree fragment)":1 + * def __pyx_unpickle_PyDBAdditionalThreadInfo(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError + * cdef object __pyx_result + */ + __pyx_tuple__85 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__85)) __PYX_ERR(2, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__85); + __Pyx_GIVEREF(__pyx_tuple__85); + __pyx_codeobj__86 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__85, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_PyDBAdditionalThr, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__86)) __PYX_ERR(2, 1, __pyx_L1_error) + __pyx_codeobj__87 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__85, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle__TryExceptContain, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__87)) __PYX_ERR(2, 1, __pyx_L1_error) + __pyx_codeobj__88 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__85, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_PyDBFrame, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__88)) __PYX_ERR(2, 1, __pyx_L1_error) + __pyx_codeobj__89 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__85, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_SafeCallWrapper, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__89)) __PYX_ERR(2, 1, __pyx_L1_error) + __pyx_codeobj__90 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__85, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_TopLevelThreadTra, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__90)) __PYX_ERR(2, 1, __pyx_L1_error) + __pyx_codeobj__91 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__85, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_TopLevelThreadTra_2, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__91)) __PYX_ERR(2, 1, __pyx_L1_error) + __pyx_codeobj__92 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__85, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_ThreadTracer, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__92)) __PYX_ERR(2, 1, __pyx_L1_error) + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_RefNannyFinishContext(); + return -1; +} +/* #### Code section: init_constants ### */ + +static CYTHON_SMALL_CODE int __Pyx_InitConstants(void) { + __pyx_umethod_PyDict_Type_get.type = (PyObject*)&PyDict_Type; + __pyx_umethod_PyDict_Type_get.method_name = &__pyx_n_s_get; + __pyx_umethod_PyDict_Type_update.type = (PyObject*)&PyDict_Type; + __pyx_umethod_PyDict_Type_update.method_name = &__pyx_n_s_update; + __pyx_umethod_PyString_Type_rfind.type = (PyObject*)&PyString_Type; + __pyx_umethod_PyString_Type_rfind.method_name = &__pyx_n_s_rfind; + if (__Pyx_CreateStringTabAndInitStrings() < 0) __PYX_ERR(0, 1, __pyx_L1_error); + __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_11 = PyInt_FromLong(11); if (unlikely(!__pyx_int_11)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_111 = PyInt_FromLong(111); if (unlikely(!__pyx_int_111)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_137 = PyInt_FromLong(137); if (unlikely(!__pyx_int_137)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_160 = PyInt_FromLong(160); if (unlikely(!__pyx_int_160)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_2424557 = PyInt_FromLong(2424557L); if (unlikely(!__pyx_int_2424557)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_16751766 = PyInt_FromLong(16751766L); if (unlikely(!__pyx_int_16751766)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_18997755 = PyInt_FromLong(18997755L); if (unlikely(!__pyx_int_18997755)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_61391470 = PyInt_FromLong(61391470L); if (unlikely(!__pyx_int_61391470)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_63705258 = PyInt_FromLong(63705258L); if (unlikely(!__pyx_int_63705258)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_64458794 = PyInt_FromLong(64458794L); if (unlikely(!__pyx_int_64458794)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_66451433 = PyInt_FromLong(66451433L); if (unlikely(!__pyx_int_66451433)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_70528507 = PyInt_FromLong(70528507L); if (unlikely(!__pyx_int_70528507)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_84338306 = PyInt_FromLong(84338306L); if (unlikely(!__pyx_int_84338306)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_125568891 = PyInt_FromLong(125568891L); if (unlikely(!__pyx_int_125568891)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_169093275 = PyInt_FromLong(169093275L); if (unlikely(!__pyx_int_169093275)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_171613889 = PyInt_FromLong(171613889L); if (unlikely(!__pyx_int_171613889)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_192493205 = PyInt_FromLong(192493205L); if (unlikely(!__pyx_int_192493205)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_210464433 = PyInt_FromLong(210464433L); if (unlikely(!__pyx_int_210464433)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_221489684 = PyInt_FromLong(221489684L); if (unlikely(!__pyx_int_221489684)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_230645316 = PyInt_FromLong(230645316L); if (unlikely(!__pyx_int_230645316)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_232881363 = PyInt_FromLong(232881363L); if (unlikely(!__pyx_int_232881363)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_255484337 = PyInt_FromLong(255484337L); if (unlikely(!__pyx_int_255484337)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) __PYX_ERR(0, 1, __pyx_L1_error) + return 0; + __pyx_L1_error:; + return -1; +} +/* #### Code section: init_globals ### */ + +static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) { + return 0; +} +/* #### Code section: init_module ### */ + +static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/ + +static int __Pyx_modinit_global_init_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); + /*--- Global init code ---*/ + __pyx_v_14_pydevd_bundle_13pydevd_cython__all_infos = ((PyObject*)Py_None); Py_INCREF(Py_None); + __pyx_v_14_pydevd_bundle_13pydevd_cython__infos_stepping = ((PyObject*)Py_None); Py_INCREF(Py_None); + __pyx_v_14_pydevd_bundle_13pydevd_cython__update_infos_lock = Py_None; Py_INCREF(Py_None); + __pyx_v_14_pydevd_bundle_13pydevd_cython__global_notify_skipped_step_in = ((PyObject*)Py_None); Py_INCREF(Py_None); + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_variable_export_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); + /*--- Variable export code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_function_export_code(void) { + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); + /*--- Function export code ---*/ + if (__Pyx_ExportFunction("set_additional_thread_info", (void (*)(void))__pyx_f_14_pydevd_bundle_13pydevd_cython_set_additional_thread_info, "PyObject *(PyObject *, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("add_additional_info", (void (*)(void))__pyx_f_14_pydevd_bundle_13pydevd_cython_add_additional_info, "PyObject *(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("remove_additional_info", (void (*)(void))__pyx_f_14_pydevd_bundle_13pydevd_cython_remove_additional_info, "PyObject *(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("any_thread_stepping", (void (*)(void))__pyx_f_14_pydevd_bundle_13pydevd_cython_any_thread_stepping, "int (int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_RefNannyFinishContext(); + return -1; +} + +static int __Pyx_modinit_type_init_code(void) { + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); + /*--- Type init code ---*/ + __pyx_vtabptr_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo = &__pyx_vtable_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo; + __pyx_vtable_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo.get_topmost_frame = (PyObject *(*)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *, PyObject *, int __pyx_skip_dispatch))__pyx_f_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_get_topmost_frame; + __pyx_vtable_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo.update_stepping_info = (PyObject *(*)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *, int __pyx_skip_dispatch))__pyx_f_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_update_stepping_info; + __pyx_vtable_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo._get_related_thread = (PyObject *(*)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *, int __pyx_skip_dispatch))__pyx_f_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo__get_related_thread; + __pyx_vtable_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo._is_stepping = (int (*)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *, int __pyx_skip_dispatch))__pyx_f_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo__is_stepping; + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo_spec, NULL); if (unlikely(!__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo)) __PYX_ERR(0, 30, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo_spec, __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo) < 0) __PYX_ERR(0, 30, __pyx_L1_error) + #else + __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo = &__pyx_type_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo) < 0) __PYX_ERR(0, 30, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo->tp_dictoffset && __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo->tp_getattro = __Pyx_PyObject_GenericGetAttr; + } + #endif + if (__Pyx_SetVtable(__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo, __pyx_vtabptr_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo) < 0) __PYX_ERR(0, 30, __pyx_L1_error) + #if !CYTHON_COMPILING_IN_LIMITED_API + if (__Pyx_MergeVtables(__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo) < 0) __PYX_ERR(0, 30, __pyx_L1_error) + #endif + if (PyObject_SetAttr(__pyx_m, __pyx_n_s_PyDBAdditionalThreadInfo, (PyObject *) __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo) < 0) __PYX_ERR(0, 30, __pyx_L1_error) + #if !CYTHON_COMPILING_IN_LIMITED_API + if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo) < 0) __PYX_ERR(0, 30, __pyx_L1_error) + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj_spec, NULL); if (unlikely(!__pyx_ptype_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj)) __PYX_ERR(0, 436, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj_spec, __pyx_ptype_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj) < 0) __PYX_ERR(0, 436, __pyx_L1_error) + #else + __pyx_ptype_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj = &__pyx_type_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj) < 0) __PYX_ERR(0, 436, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj->tp_dictoffset && __pyx_ptype_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj->tp_getattro = __Pyx_PyObject_GenericGetAttr; + } + #endif + if (PyObject_SetAttr(__pyx_m, __pyx_n_s_TryExceptContainerObj, (PyObject *) __pyx_ptype_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj) < 0) __PYX_ERR(0, 436, __pyx_L1_error) + #if !CYTHON_COMPILING_IN_LIMITED_API + if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj) < 0) __PYX_ERR(0, 436, __pyx_L1_error) + #endif + __pyx_vtabptr_14_pydevd_bundle_13pydevd_cython_PyDBFrame = &__pyx_vtable_14_pydevd_bundle_13pydevd_cython_PyDBFrame; + __pyx_vtable_14_pydevd_bundle_13pydevd_cython_PyDBFrame.get_func_name = (PyObject *(*)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *, PyObject *))__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_get_func_name; + __pyx_vtable_14_pydevd_bundle_13pydevd_cython_PyDBFrame._show_return_values = (PyObject *(*)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *, PyObject *, PyObject *))__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame__show_return_values; + __pyx_vtable_14_pydevd_bundle_13pydevd_cython_PyDBFrame._remove_return_values = (PyObject *(*)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *, PyObject *, PyObject *))__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame__remove_return_values; + __pyx_vtable_14_pydevd_bundle_13pydevd_cython_PyDBFrame._get_unfiltered_back_frame = (PyObject *(*)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *, PyObject *, PyObject *))__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame__get_unfiltered_back_frame; + __pyx_vtable_14_pydevd_bundle_13pydevd_cython_PyDBFrame._is_same_frame = (PyObject *(*)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *, PyObject *, PyObject *))__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame__is_same_frame; + __pyx_vtable_14_pydevd_bundle_13pydevd_cython_PyDBFrame.trace_dispatch = (PyObject *(*)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBFrame *, PyObject *, PyObject *, PyObject *, int __pyx_skip_dispatch))__pyx_f_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_trace_dispatch; + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBFrame = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_14_pydevd_bundle_13pydevd_cython_PyDBFrame_spec, NULL); if (unlikely(!__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBFrame)) __PYX_ERR(0, 457, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_14_pydevd_bundle_13pydevd_cython_PyDBFrame_spec, __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBFrame) < 0) __PYX_ERR(0, 457, __pyx_L1_error) + #else + __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBFrame = &__pyx_type_14_pydevd_bundle_13pydevd_cython_PyDBFrame; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBFrame) < 0) __PYX_ERR(0, 457, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBFrame->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBFrame->tp_dictoffset && __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBFrame->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBFrame->tp_getattro = __Pyx_PyObject_GenericGetAttr; + } + #endif + if (__Pyx_SetVtable(__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBFrame, __pyx_vtabptr_14_pydevd_bundle_13pydevd_cython_PyDBFrame) < 0) __PYX_ERR(0, 457, __pyx_L1_error) + #if !CYTHON_COMPILING_IN_LIMITED_API + if (__Pyx_MergeVtables(__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBFrame) < 0) __PYX_ERR(0, 457, __pyx_L1_error) + #endif + if (PyObject_SetAttr(__pyx_m, __pyx_n_s_PyDBFrame, (PyObject *) __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBFrame) < 0) __PYX_ERR(0, 457, __pyx_L1_error) + #if !CYTHON_COMPILING_IN_LIMITED_API + if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBFrame) < 0) __PYX_ERR(0, 457, __pyx_L1_error) + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper_spec, NULL); if (unlikely(!__pyx_ptype_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper)) __PYX_ERR(0, 1689, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper_spec, __pyx_ptype_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper) < 0) __PYX_ERR(0, 1689, __pyx_L1_error) + #else + __pyx_ptype_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper = &__pyx_type_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper) < 0) __PYX_ERR(0, 1689, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper->tp_dictoffset && __pyx_ptype_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper->tp_getattro = __Pyx_PyObject_GenericGetAttr; + } + #endif + if (PyObject_SetAttr(__pyx_m, __pyx_n_s_SafeCallWrapper, (PyObject *) __pyx_ptype_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper) < 0) __PYX_ERR(0, 1689, __pyx_L1_error) + #if !CYTHON_COMPILING_IN_LIMITED_API + if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper) < 0) __PYX_ERR(0, 1689, __pyx_L1_error) + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions_spec, NULL); if (unlikely(!__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions)) __PYX_ERR(0, 1857, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions_spec, __pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions) < 0) __PYX_ERR(0, 1857, __pyx_L1_error) + #else + __pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions = &__pyx_type_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions) < 0) __PYX_ERR(0, 1857, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions->tp_dictoffset && __pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions->tp_getattro = __Pyx_PyObject_GenericGetAttr; + } + #endif + if (PyObject_SetAttr(__pyx_m, __pyx_n_s_TopLevelThreadTracerOnlyUnhandle, (PyObject *) __pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions) < 0) __PYX_ERR(0, 1857, __pyx_L1_error) + #if !CYTHON_COMPILING_IN_LIMITED_API + if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions) < 0) __PYX_ERR(0, 1857, __pyx_L1_error) + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame_spec, NULL); if (unlikely(!__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame)) __PYX_ERR(0, 1888, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame_spec, __pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame) < 0) __PYX_ERR(0, 1888, __pyx_L1_error) + #else + __pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame = &__pyx_type_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame) < 0) __PYX_ERR(0, 1888, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame->tp_dictoffset && __pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame->tp_getattro = __Pyx_PyObject_GenericGetAttr; + } + #endif + if (PyObject_SetAttr(__pyx_m, __pyx_n_s_TopLevelThreadTracerNoBackFrame, (PyObject *) __pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame) < 0) __PYX_ERR(0, 1888, __pyx_L1_error) + #if !CYTHON_COMPILING_IN_LIMITED_API + if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame) < 0) __PYX_ERR(0, 1888, __pyx_L1_error) + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_14_pydevd_bundle_13pydevd_cython_ThreadTracer = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_14_pydevd_bundle_13pydevd_cython_ThreadTracer_spec, NULL); if (unlikely(!__pyx_ptype_14_pydevd_bundle_13pydevd_cython_ThreadTracer)) __PYX_ERR(0, 1968, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_14_pydevd_bundle_13pydevd_cython_ThreadTracer_spec, __pyx_ptype_14_pydevd_bundle_13pydevd_cython_ThreadTracer) < 0) __PYX_ERR(0, 1968, __pyx_L1_error) + #else + __pyx_ptype_14_pydevd_bundle_13pydevd_cython_ThreadTracer = &__pyx_type_14_pydevd_bundle_13pydevd_cython_ThreadTracer; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_14_pydevd_bundle_13pydevd_cython_ThreadTracer) < 0) __PYX_ERR(0, 1968, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_14_pydevd_bundle_13pydevd_cython_ThreadTracer->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_14_pydevd_bundle_13pydevd_cython_ThreadTracer->tp_dictoffset && __pyx_ptype_14_pydevd_bundle_13pydevd_cython_ThreadTracer->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_14_pydevd_bundle_13pydevd_cython_ThreadTracer->tp_getattro = __Pyx_PyObject_GenericGetAttr; + } + #endif + #if CYTHON_UPDATE_DESCRIPTOR_DOC + { + PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_ThreadTracer, "__call__"); if (unlikely(!wrapper)) __PYX_ERR(0, 1968, __pyx_L1_error) + if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) { + __pyx_wrapperbase_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_2__call__ = *((PyWrapperDescrObject *)wrapper)->d_base; + __pyx_wrapperbase_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_2__call__.doc = __pyx_doc_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_2__call__; + ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_2__call__; + } + } + #endif + if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ThreadTracer, (PyObject *) __pyx_ptype_14_pydevd_bundle_13pydevd_cython_ThreadTracer) < 0) __PYX_ERR(0, 1968, __pyx_L1_error) + #if !CYTHON_COMPILING_IN_LIMITED_API + if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_14_pydevd_bundle_13pydevd_cython_ThreadTracer) < 0) __PYX_ERR(0, 1968, __pyx_L1_error) + #endif + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_RefNannyFinishContext(); + return -1; +} + +static int __Pyx_modinit_type_import_code(void) { + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); + /*--- Type import code ---*/ + __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_ptype_7cpython_4type_type = __Pyx_ImportType_3_0_11(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "type", + #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 + sizeof(PyTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(PyTypeObject), + #elif CYTHON_COMPILING_IN_LIMITED_API + sizeof(PyTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(PyTypeObject), + #else + sizeof(PyHeapTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(PyHeapTypeObject), + #endif + __Pyx_ImportType_CheckSize_Warn_3_0_11); if (!__pyx_ptype_7cpython_4type_type) __PYX_ERR(3, 9, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_RefNannyFinishContext(); + return -1; +} + +static int __Pyx_modinit_variable_import_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); + /*--- Variable import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_function_import_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); + /*--- Function import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + + +#if PY_MAJOR_VERSION >= 3 +#if CYTHON_PEP489_MULTI_PHASE_INIT +static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ +static int __pyx_pymod_exec_pydevd_cython(PyObject* module); /*proto*/ +static PyModuleDef_Slot __pyx_moduledef_slots[] = { + {Py_mod_create, (void*)__pyx_pymod_create}, + {Py_mod_exec, (void*)__pyx_pymod_exec_pydevd_cython}, + {0, NULL} +}; +#endif + +#ifdef __cplusplus +namespace { + struct PyModuleDef __pyx_moduledef = + #else + static struct PyModuleDef __pyx_moduledef = + #endif + { + PyModuleDef_HEAD_INIT, + "pydevd_cython", + 0, /* m_doc */ + #if CYTHON_PEP489_MULTI_PHASE_INIT + 0, /* m_size */ + #elif CYTHON_USE_MODULE_STATE + sizeof(__pyx_mstate), /* m_size */ + #else + -1, /* m_size */ + #endif + __pyx_methods /* m_methods */, + #if CYTHON_PEP489_MULTI_PHASE_INIT + __pyx_moduledef_slots, /* m_slots */ + #else + NULL, /* m_reload */ + #endif + #if CYTHON_USE_MODULE_STATE + __pyx_m_traverse, /* m_traverse */ + __pyx_m_clear, /* m_clear */ + NULL /* m_free */ + #else + NULL, /* m_traverse */ + NULL, /* m_clear */ + NULL /* m_free */ + #endif + }; + #ifdef __cplusplus +} /* anonymous namespace */ +#endif +#endif + +#ifndef CYTHON_NO_PYINIT_EXPORT +#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC +#elif PY_MAJOR_VERSION < 3 +#ifdef __cplusplus +#define __Pyx_PyMODINIT_FUNC extern "C" void +#else +#define __Pyx_PyMODINIT_FUNC void +#endif +#else +#ifdef __cplusplus +#define __Pyx_PyMODINIT_FUNC extern "C" PyObject * +#else +#define __Pyx_PyMODINIT_FUNC PyObject * +#endif +#endif + + +#if PY_MAJOR_VERSION < 3 +__Pyx_PyMODINIT_FUNC initpydevd_cython(void) CYTHON_SMALL_CODE; /*proto*/ +__Pyx_PyMODINIT_FUNC initpydevd_cython(void) +#else +__Pyx_PyMODINIT_FUNC PyInit_pydevd_cython(void) CYTHON_SMALL_CODE; /*proto*/ +__Pyx_PyMODINIT_FUNC PyInit_pydevd_cython(void) +#if CYTHON_PEP489_MULTI_PHASE_INIT +{ + return PyModuleDef_Init(&__pyx_moduledef); +} +static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { + #if PY_VERSION_HEX >= 0x030700A1 + static PY_INT64_T main_interpreter_id = -1; + PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp); + if (main_interpreter_id == -1) { + main_interpreter_id = current_id; + return (unlikely(current_id == -1)) ? -1 : 0; + } else if (unlikely(main_interpreter_id != current_id)) + #else + static PyInterpreterState *main_interpreter = NULL; + PyInterpreterState *current_interpreter = PyThreadState_Get()->interp; + if (!main_interpreter) { + main_interpreter = current_interpreter; + } else if (unlikely(main_interpreter != current_interpreter)) + #endif + { + PyErr_SetString( + PyExc_ImportError, + "Interpreter change detected - this module can only be loaded into one interpreter per process."); + return -1; + } + return 0; +} +#if CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *module, const char* from_name, const char* to_name, int allow_none) +#else +static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none) +#endif +{ + PyObject *value = PyObject_GetAttrString(spec, from_name); + int result = 0; + if (likely(value)) { + if (allow_none || value != Py_None) { +#if CYTHON_COMPILING_IN_LIMITED_API + result = PyModule_AddObject(module, to_name, value); +#else + result = PyDict_SetItemString(moddict, to_name, value); +#endif + } + Py_DECREF(value); + } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { + PyErr_Clear(); + } else { + result = -1; + } + return result; +} +static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def) { + PyObject *module = NULL, *moddict, *modname; + CYTHON_UNUSED_VAR(def); + if (__Pyx_check_single_interpreter()) + return NULL; + if (__pyx_m) + return __Pyx_NewRef(__pyx_m); + modname = PyObject_GetAttrString(spec, "name"); + if (unlikely(!modname)) goto bad; + module = PyModule_NewObject(modname); + Py_DECREF(modname); + if (unlikely(!module)) goto bad; +#if CYTHON_COMPILING_IN_LIMITED_API + moddict = module; +#else + moddict = PyModule_GetDict(module); + if (unlikely(!moddict)) goto bad; +#endif + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad; + return module; +bad: + Py_XDECREF(module); + return NULL; +} + + +static CYTHON_SMALL_CODE int __pyx_pymod_exec_pydevd_cython(PyObject *__pyx_pyinit_module) +#endif +#endif +{ + int stringtab_initialized = 0; + #if CYTHON_USE_MODULE_STATE + int pystate_addmodule_run = 0; + #endif + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + int __pyx_t_6; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + int __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + #if CYTHON_PEP489_MULTI_PHASE_INIT + if (__pyx_m) { + if (__pyx_m == __pyx_pyinit_module) return 0; + PyErr_SetString(PyExc_RuntimeError, "Module 'pydevd_cython' has already been imported. Re-initialisation is not supported."); + return -1; + } + #elif PY_MAJOR_VERSION >= 3 + if (__pyx_m) return __Pyx_NewRef(__pyx_m); + #endif + /*--- Module creation code ---*/ + #if CYTHON_PEP489_MULTI_PHASE_INIT + __pyx_m = __pyx_pyinit_module; + Py_INCREF(__pyx_m); + #else + #if PY_MAJOR_VERSION < 3 + __pyx_m = Py_InitModule4("pydevd_cython", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); + if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) + #elif CYTHON_USE_MODULE_STATE + __pyx_t_1 = PyModule_Create(&__pyx_moduledef); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error) + { + int add_module_result = PyState_AddModule(__pyx_t_1, &__pyx_moduledef); + __pyx_t_1 = 0; /* transfer ownership from __pyx_t_1 to "pydevd_cython" pseudovariable */ + if (unlikely((add_module_result < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + pystate_addmodule_run = 1; + } + #else + __pyx_m = PyModule_Create(&__pyx_moduledef); + if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #endif + CYTHON_UNUSED_VAR(__pyx_t_1); + __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) + Py_INCREF(__pyx_d); + __pyx_b = __Pyx_PyImport_AddModuleRef(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_cython_runtime = __Pyx_PyImport_AddModuleRef((const char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #if CYTHON_REFNANNY +__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); +if (!__Pyx_RefNanny) { + PyErr_Clear(); + __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); + if (!__Pyx_RefNanny) + Py_FatalError("failed to import 'refnanny' module"); +} +#endif + __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_pydevd_cython(void)", 0); + if (__Pyx_check_binary_version(__PYX_LIMITED_VERSION_HEX, __Pyx_get_runtime_version(), CYTHON_COMPILING_IN_LIMITED_API) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #ifdef __Pxy_PyFrame_Initialize_Offsets + __Pxy_PyFrame_Initialize_Offsets(); + #endif + __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) + #ifdef __Pyx_CyFunction_USED + if (__pyx_CyFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_FusedFunction_USED + if (__pyx_FusedFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_Coroutine_USED + if (__pyx_Coroutine_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_Generator_USED + if (__pyx_Generator_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_AsyncGen_USED + if (__pyx_AsyncGen_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_StopAsyncIteration_USED + if (__pyx_StopAsyncIteration_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + /*--- Library function declarations ---*/ + /*--- Threads initialization code ---*/ + #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS + PyEval_InitThreads(); + #endif + /*--- Initialize various global constants etc. ---*/ + if (__Pyx_InitConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + stringtab_initialized = 1; + if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) + if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + if (__pyx_module_is_main__pydevd_bundle__pydevd_cython) { + if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name, __pyx_n_s_main_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + } + #if PY_MAJOR_VERSION >= 3 + { + PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) + if (!PyDict_GetItemString(modules, "_pydevd_bundle.pydevd_cython")) { + if (unlikely((PyDict_SetItemString(modules, "_pydevd_bundle.pydevd_cython", __pyx_m) < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + } + } + #endif + /*--- Builtin init code ---*/ + if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + /*--- Constants init code ---*/ + if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + /*--- Global type/function init code ---*/ + (void)__Pyx_modinit_global_init_code(); + (void)__Pyx_modinit_variable_export_code(); + if (unlikely((__Pyx_modinit_function_export_code() < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + if (unlikely((__Pyx_modinit_type_init_code() < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + if (unlikely((__Pyx_modinit_type_import_code() < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + (void)__Pyx_modinit_variable_import_code(); + (void)__Pyx_modinit_function_import_code(); + /*--- Execution code ---*/ + #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) + if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + + /* "_pydevd_bundle/pydevd_cython.pyx":8 + * # DO NOT edit manually! + * from _pydevd_bundle.pydevd_constants import ( + * STATE_RUN, # <<<<<<<<<<<<<< + * PYTHON_SUSPEND, + * SUPPORT_GEVENT, + */ + __pyx_t_2 = PyList_New(8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_STATE_RUN); + __Pyx_GIVEREF(__pyx_n_s_STATE_RUN); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_STATE_RUN)) __PYX_ERR(0, 8, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_PYTHON_SUSPEND); + __Pyx_GIVEREF(__pyx_n_s_PYTHON_SUSPEND); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_PYTHON_SUSPEND)) __PYX_ERR(0, 8, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_SUPPORT_GEVENT); + __Pyx_GIVEREF(__pyx_n_s_SUPPORT_GEVENT); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_n_s_SUPPORT_GEVENT)) __PYX_ERR(0, 8, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_ForkSafeLock); + __Pyx_GIVEREF(__pyx_n_s_ForkSafeLock); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_n_s_ForkSafeLock)) __PYX_ERR(0, 8, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_current_frames); + __Pyx_GIVEREF(__pyx_n_s_current_frames); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 4, __pyx_n_s_current_frames)) __PYX_ERR(0, 8, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_STATE_SUSPEND); + __Pyx_GIVEREF(__pyx_n_s_STATE_SUSPEND); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 5, __pyx_n_s_STATE_SUSPEND)) __PYX_ERR(0, 8, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_get_global_debugger); + __Pyx_GIVEREF(__pyx_n_s_get_global_debugger); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 6, __pyx_n_s_get_global_debugger)) __PYX_ERR(0, 8, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_get_thread_id); + __Pyx_GIVEREF(__pyx_n_s_get_thread_id); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 7, __pyx_n_s_get_thread_id)) __PYX_ERR(0, 8, __pyx_L1_error); + + /* "_pydevd_bundle/pydevd_cython.pyx":7 + * # DO NOT edit manually! + * # DO NOT edit manually! + * from _pydevd_bundle.pydevd_constants import ( # <<<<<<<<<<<<<< + * STATE_RUN, + * PYTHON_SUSPEND, + */ + __pyx_t_3 = __Pyx_Import(__pyx_n_s_pydevd_bundle_pydevd_constants, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_STATE_RUN); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_STATE_RUN, __pyx_t_2) < 0) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PYTHON_SUSPEND); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_PYTHON_SUSPEND, __pyx_t_2) < 0) __PYX_ERR(0, 9, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_SUPPORT_GEVENT); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_SUPPORT_GEVENT, __pyx_t_2) < 0) __PYX_ERR(0, 10, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_ForkSafeLock); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_ForkSafeLock, __pyx_t_2) < 0) __PYX_ERR(0, 11, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_current_frames); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_current_frames, __pyx_t_2) < 0) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_STATE_SUSPEND); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_STATE_SUSPEND, __pyx_t_2) < 0) __PYX_ERR(0, 13, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_get_global_debugger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_global_debugger, __pyx_t_2) < 0) __PYX_ERR(0, 14, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_get_thread_id); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_thread_id, __pyx_t_2) < 0) __PYX_ERR(0, 15, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":17 + * get_thread_id, + * ) + * from _pydev_bundle import pydev_log # <<<<<<<<<<<<<< + * from _pydev_bundle._pydev_saved_modules import threading + * from _pydev_bundle.pydev_is_thread_alive import is_thread_alive + */ + __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_pydev_log); + __Pyx_GIVEREF(__pyx_n_s_pydev_log); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_pydev_log)) __PYX_ERR(0, 17, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_pydev_bundle, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_pydev_log, __pyx_t_3) < 0) __PYX_ERR(0, 17, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":18 + * ) + * from _pydev_bundle import pydev_log + * from _pydev_bundle._pydev_saved_modules import threading # <<<<<<<<<<<<<< + * from _pydev_bundle.pydev_is_thread_alive import is_thread_alive + * import weakref + */ + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 18, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_threading); + __Pyx_GIVEREF(__pyx_n_s_threading); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_threading)) __PYX_ERR(0, 18, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_pydev_bundle__pydev_saved_modul, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 18, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_threading); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 18, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_threading, __pyx_t_2) < 0) __PYX_ERR(0, 18, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":19 + * from _pydev_bundle import pydev_log + * from _pydev_bundle._pydev_saved_modules import threading + * from _pydev_bundle.pydev_is_thread_alive import is_thread_alive # <<<<<<<<<<<<<< + * import weakref + * + */ + __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 19, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_is_thread_alive); + __Pyx_GIVEREF(__pyx_n_s_is_thread_alive); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_is_thread_alive)) __PYX_ERR(0, 19, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_pydev_bundle_pydev_is_thread_al, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 19, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_is_thread_alive); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 19, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_is_thread_alive, __pyx_t_3) < 0) __PYX_ERR(0, 19, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":20 + * from _pydev_bundle._pydev_saved_modules import threading + * from _pydev_bundle.pydev_is_thread_alive import is_thread_alive + * import weakref # <<<<<<<<<<<<<< + * + * version = 11 + */ + __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_weakref, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 20, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_weakref, __pyx_t_2) < 0) __PYX_ERR(0, 20, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":22 + * import weakref + * + * version = 11 # <<<<<<<<<<<<<< + * + * + */ + if (PyDict_SetItem(__pyx_d, __pyx_n_s_version, __pyx_int_11) < 0) __PYX_ERR(0, 22, __pyx_L1_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":130 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cpdef object _get_related_thread(self): # <<<<<<<<<<<<<< + * # ELSE + * # def _get_related_thread(self): + */ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_3_get_related_thread, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PyDBAdditionalThreadInfo__get_re, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__21)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 130, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo, __pyx_n_s_get_related_thread, __pyx_t_2) < 0) __PYX_ERR(0, 130, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo); + + /* "_pydevd_bundle/pydevd_cython.pyx":159 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cpdef bint _is_stepping(self): # <<<<<<<<<<<<<< + * # ELSE + * # def _is_stepping(self): + */ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_5_is_stepping, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PyDBAdditionalThreadInfo__is_ste, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__22)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 159, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo, __pyx_n_s_is_stepping, __pyx_t_2) < 0) __PYX_ERR(0, 159, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo); + + /* "_pydevd_bundle/pydevd_cython.pyx":177 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cpdef get_topmost_frame(self, thread): # <<<<<<<<<<<<<< + * # ELSE + * # def get_topmost_frame(self, thread): + */ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_7get_topmost_frame, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PyDBAdditionalThreadInfo_get_top, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__24)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 177, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo, __pyx_n_s_get_topmost_frame, __pyx_t_2) < 0) __PYX_ERR(0, 177, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo); + + /* "_pydevd_bundle/pydevd_cython.pyx":206 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cpdef update_stepping_info(self): # <<<<<<<<<<<<<< + * # ELSE + * # def update_stepping_info(self): + */ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_9update_stepping_info, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PyDBAdditionalThreadInfo_update, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__25)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 206, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo, __pyx_n_s_update_stepping_info, __pyx_t_2) < 0) __PYX_ERR(0, 206, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo); + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_13__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PyDBAdditionalThreadInfo___reduc, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__27)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(2, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo); + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle_PyDBAdditionalThreadInfo, (type(self), 0xd33aa14, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_PyDBAdditionalThreadInfo__set_state(self, __pyx_state) + */ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_24PyDBAdditionalThreadInfo_15__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PyDBAdditionalThreadInfo___setst, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__29)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(2, 16, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo); + + /* "_pydevd_bundle/pydevd_cython.pyx":217 + * + * + * _set_additional_thread_info_lock = ForkSafeLock() # <<<<<<<<<<<<<< + * _next_additional_info = [PyDBAdditionalThreadInfo()] + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ForkSafeLock); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 217, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 217, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_additional_thread_info_lock, __pyx_t_3) < 0) __PYX_ERR(0, 217, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":218 + * + * _set_additional_thread_info_lock = ForkSafeLock() + * _next_additional_info = [PyDBAdditionalThreadInfo()] # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_3 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 218, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 218, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_3); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_t_3)) __PYX_ERR(0, 218, __pyx_L1_error); + __pyx_t_3 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_next_additional_info, __pyx_t_2) < 0) __PYX_ERR(0, 218, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":223 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cpdef set_additional_thread_info(thread): # <<<<<<<<<<<<<< + * # ELSE + * # def set_additional_thread_info(thread): + */ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_1set_additional_thread_info, 0, __pyx_n_s_set_additional_thread_info, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__31)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 223, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_additional_thread_info, __pyx_t_2) < 0) __PYX_ERR(0, 223, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":265 + * # fmt: on + * + * _all_infos = set() # <<<<<<<<<<<<<< + * _infos_stepping = set() + * _update_infos_lock = ForkSafeLock() + */ + __pyx_t_2 = PySet_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 265, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_v_14_pydevd_bundle_13pydevd_cython__all_infos); + __Pyx_DECREF_SET(__pyx_v_14_pydevd_bundle_13pydevd_cython__all_infos, ((PyObject*)__pyx_t_2)); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":266 + * + * _all_infos = set() + * _infos_stepping = set() # <<<<<<<<<<<<<< + * _update_infos_lock = ForkSafeLock() + * + */ + __pyx_t_2 = PySet_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 266, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_v_14_pydevd_bundle_13pydevd_cython__infos_stepping); + __Pyx_DECREF_SET(__pyx_v_14_pydevd_bundle_13pydevd_cython__infos_stepping, ((PyObject*)__pyx_t_2)); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":267 + * _all_infos = set() + * _infos_stepping = set() + * _update_infos_lock = ForkSafeLock() # <<<<<<<<<<<<<< + * + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ForkSafeLock); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 267, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 267, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_v_14_pydevd_bundle_13pydevd_cython__update_infos_lock); + __Pyx_DECREF_SET(__pyx_v_14_pydevd_bundle_13pydevd_cython__update_infos_lock, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":305 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cpdef add_additional_info(PyDBAdditionalThreadInfo info): # <<<<<<<<<<<<<< + * # ELSE + * # def add_additional_info(info): + */ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_3add_additional_info, 0, __pyx_n_s_add_additional_info, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 305, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_add_additional_info, __pyx_t_3) < 0) __PYX_ERR(0, 305, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":317 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cpdef remove_additional_info(PyDBAdditionalThreadInfo info): # <<<<<<<<<<<<<< + * # ELSE + * # def remove_additional_info(info): + */ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_5remove_additional_info, 0, __pyx_n_s_remove_additional_info, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__34)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 317, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_remove_additional_info, __pyx_t_3) < 0) __PYX_ERR(0, 317, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":329 + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cpdef bint any_thread_stepping(): # <<<<<<<<<<<<<< + * # ELSE + * # def any_thread_stepping(): + */ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_7any_thread_stepping, 0, __pyx_n_s_any_thread_stepping, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__35)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 329, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_any_thread_stepping, __pyx_t_3) < 0) __PYX_ERR(0, 329, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":335 + * # fmt: on + * return bool(_infos_stepping) + * import linecache # <<<<<<<<<<<<<< + * import os.path + * import re + */ + __pyx_t_3 = __Pyx_ImportDottedModule(__pyx_n_s_linecache, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 335, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_linecache, __pyx_t_3) < 0) __PYX_ERR(0, 335, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":336 + * return bool(_infos_stepping) + * import linecache + * import os.path # <<<<<<<<<<<<<< + * import re + * + */ + __pyx_t_3 = __Pyx_Import(__pyx_n_s_os_path, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 336, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_os, __pyx_t_3) < 0) __PYX_ERR(0, 336, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":337 + * import linecache + * import os.path + * import re # <<<<<<<<<<<<<< + * + * from _pydev_bundle import pydev_log + */ + __pyx_t_3 = __Pyx_ImportDottedModule(__pyx_n_s_re, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 337, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_re, __pyx_t_3) < 0) __PYX_ERR(0, 337, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":339 + * import re + * + * from _pydev_bundle import pydev_log # <<<<<<<<<<<<<< + * from _pydevd_bundle import pydevd_dont_trace + * from _pydevd_bundle.pydevd_constants import ( + */ + __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 339, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_pydev_log); + __Pyx_GIVEREF(__pyx_n_s_pydev_log); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_pydev_log)) __PYX_ERR(0, 339, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_pydev_bundle, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 339, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_pydev_log); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 339, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_pydev_log, __pyx_t_3) < 0) __PYX_ERR(0, 339, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":340 + * + * from _pydev_bundle import pydev_log + * from _pydevd_bundle import pydevd_dont_trace # <<<<<<<<<<<<<< + * from _pydevd_bundle.pydevd_constants import ( + * RETURN_VALUES_DICT, + */ + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 340, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_pydevd_dont_trace); + __Pyx_GIVEREF(__pyx_n_s_pydevd_dont_trace); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_pydevd_dont_trace)) __PYX_ERR(0, 340, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_pydevd_bundle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 340, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_pydevd_dont_trace); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 340, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_pydevd_dont_trace, __pyx_t_2) < 0) __PYX_ERR(0, 340, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":342 + * from _pydevd_bundle import pydevd_dont_trace + * from _pydevd_bundle.pydevd_constants import ( + * RETURN_VALUES_DICT, # <<<<<<<<<<<<<< + * NO_FTRACE, + * EXCEPTION_TYPE_HANDLED, + */ + __pyx_t_3 = PyList_New(6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 342, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_RETURN_VALUES_DICT); + __Pyx_GIVEREF(__pyx_n_s_RETURN_VALUES_DICT); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_RETURN_VALUES_DICT)) __PYX_ERR(0, 342, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_NO_FTRACE); + __Pyx_GIVEREF(__pyx_n_s_NO_FTRACE); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_NO_FTRACE)) __PYX_ERR(0, 342, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_EXCEPTION_TYPE_HANDLED); + __Pyx_GIVEREF(__pyx_n_s_EXCEPTION_TYPE_HANDLED); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 2, __pyx_n_s_EXCEPTION_TYPE_HANDLED)) __PYX_ERR(0, 342, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_EXCEPTION_TYPE_USER_UNHANDLED); + __Pyx_GIVEREF(__pyx_n_s_EXCEPTION_TYPE_USER_UNHANDLED); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 3, __pyx_n_s_EXCEPTION_TYPE_USER_UNHANDLED)) __PYX_ERR(0, 342, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_PYDEVD_IPYTHON_CONTEXT); + __Pyx_GIVEREF(__pyx_n_s_PYDEVD_IPYTHON_CONTEXT); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 4, __pyx_n_s_PYDEVD_IPYTHON_CONTEXT)) __PYX_ERR(0, 342, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_PYDEVD_USE_SYS_MONITORING); + __Pyx_GIVEREF(__pyx_n_s_PYDEVD_USE_SYS_MONITORING); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 5, __pyx_n_s_PYDEVD_USE_SYS_MONITORING)) __PYX_ERR(0, 342, __pyx_L1_error); + + /* "_pydevd_bundle/pydevd_cython.pyx":341 + * from _pydev_bundle import pydev_log + * from _pydevd_bundle import pydevd_dont_trace + * from _pydevd_bundle.pydevd_constants import ( # <<<<<<<<<<<<<< + * RETURN_VALUES_DICT, + * NO_FTRACE, + */ + __pyx_t_2 = __Pyx_Import(__pyx_n_s_pydevd_bundle_pydevd_constants, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 341, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_RETURN_VALUES_DICT); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 341, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_RETURN_VALUES_DICT, __pyx_t_3) < 0) __PYX_ERR(0, 342, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 341, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_NO_FTRACE, __pyx_t_3) < 0) __PYX_ERR(0, 343, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_EXCEPTION_TYPE_HANDLED); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 341, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_EXCEPTION_TYPE_HANDLED, __pyx_t_3) < 0) __PYX_ERR(0, 344, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_EXCEPTION_TYPE_USER_UNHANDLED); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 341, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_EXCEPTION_TYPE_USER_UNHANDLED, __pyx_t_3) < 0) __PYX_ERR(0, 345, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_PYDEVD_IPYTHON_CONTEXT); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 341, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_PYDEVD_IPYTHON_CONTEXT, __pyx_t_3) < 0) __PYX_ERR(0, 346, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_PYDEVD_USE_SYS_MONITORING); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 341, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_PYDEVD_USE_SYS_MONITORING, __pyx_t_3) < 0) __PYX_ERR(0, 347, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":349 + * PYDEVD_USE_SYS_MONITORING, + * ) + * from _pydevd_bundle.pydevd_frame_utils import add_exception_to_frame, just_raised, remove_exception_from_frame, ignore_exception_trace # <<<<<<<<<<<<<< + * from _pydevd_bundle.pydevd_utils import get_clsname_for_code + * from pydevd_file_utils import get_abs_path_real_path_and_base_from_frame + */ + __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 349, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_add_exception_to_frame); + __Pyx_GIVEREF(__pyx_n_s_add_exception_to_frame); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_add_exception_to_frame)) __PYX_ERR(0, 349, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_just_raised); + __Pyx_GIVEREF(__pyx_n_s_just_raised); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_just_raised)) __PYX_ERR(0, 349, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_remove_exception_from_frame); + __Pyx_GIVEREF(__pyx_n_s_remove_exception_from_frame); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_n_s_remove_exception_from_frame)) __PYX_ERR(0, 349, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_ignore_exception_trace); + __Pyx_GIVEREF(__pyx_n_s_ignore_exception_trace); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_n_s_ignore_exception_trace)) __PYX_ERR(0, 349, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_pydevd_bundle_pydevd_frame_util, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 349, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_add_exception_to_frame); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 349, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_add_exception_to_frame, __pyx_t_2) < 0) __PYX_ERR(0, 349, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_just_raised); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 349, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_just_raised, __pyx_t_2) < 0) __PYX_ERR(0, 349, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_remove_exception_from_frame); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 349, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_remove_exception_from_frame, __pyx_t_2) < 0) __PYX_ERR(0, 349, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_ignore_exception_trace); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 349, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_ignore_exception_trace, __pyx_t_2) < 0) __PYX_ERR(0, 349, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":350 + * ) + * from _pydevd_bundle.pydevd_frame_utils import add_exception_to_frame, just_raised, remove_exception_from_frame, ignore_exception_trace + * from _pydevd_bundle.pydevd_utils import get_clsname_for_code # <<<<<<<<<<<<<< + * from pydevd_file_utils import get_abs_path_real_path_and_base_from_frame + * from _pydevd_bundle.pydevd_comm_constants import constant_to_str, CMD_SET_FUNCTION_BREAK + */ + __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 350, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_get_clsname_for_code); + __Pyx_GIVEREF(__pyx_n_s_get_clsname_for_code); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_get_clsname_for_code)) __PYX_ERR(0, 350, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_pydevd_bundle_pydevd_utils, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 350, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_get_clsname_for_code); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 350, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_clsname_for_code, __pyx_t_3) < 0) __PYX_ERR(0, 350, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":351 + * from _pydevd_bundle.pydevd_frame_utils import add_exception_to_frame, just_raised, remove_exception_from_frame, ignore_exception_trace + * from _pydevd_bundle.pydevd_utils import get_clsname_for_code + * from pydevd_file_utils import get_abs_path_real_path_and_base_from_frame # <<<<<<<<<<<<<< + * from _pydevd_bundle.pydevd_comm_constants import constant_to_str, CMD_SET_FUNCTION_BREAK + * import sys + */ + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 351, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_get_abs_path_real_path_and_base); + __Pyx_GIVEREF(__pyx_n_s_get_abs_path_real_path_and_base); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_get_abs_path_real_path_and_base)) __PYX_ERR(0, 351, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_pydevd_file_utils, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 351, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_get_abs_path_real_path_and_base); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 351, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_abs_path_real_path_and_base, __pyx_t_2) < 0) __PYX_ERR(0, 351, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":352 + * from _pydevd_bundle.pydevd_utils import get_clsname_for_code + * from pydevd_file_utils import get_abs_path_real_path_and_base_from_frame + * from _pydevd_bundle.pydevd_comm_constants import constant_to_str, CMD_SET_FUNCTION_BREAK # <<<<<<<<<<<<<< + * import sys + * + */ + __pyx_t_3 = PyList_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 352, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_constant_to_str); + __Pyx_GIVEREF(__pyx_n_s_constant_to_str); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_constant_to_str)) __PYX_ERR(0, 352, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_CMD_SET_FUNCTION_BREAK); + __Pyx_GIVEREF(__pyx_n_s_CMD_SET_FUNCTION_BREAK); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_CMD_SET_FUNCTION_BREAK)) __PYX_ERR(0, 352, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_pydevd_bundle_pydevd_comm_const, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 352, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_constant_to_str); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 352, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_constant_to_str, __pyx_t_3) < 0) __PYX_ERR(0, 352, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_CMD_SET_FUNCTION_BREAK); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 352, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_CMD_SET_FUNCTION_BREAK, __pyx_t_3) < 0) __PYX_ERR(0, 352, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":353 + * from pydevd_file_utils import get_abs_path_real_path_and_base_from_frame + * from _pydevd_bundle.pydevd_comm_constants import constant_to_str, CMD_SET_FUNCTION_BREAK + * import sys # <<<<<<<<<<<<<< + * + * try: + */ + __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_sys, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 353, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_2) < 0) __PYX_ERR(0, 353, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":355 + * import sys + * + * try: # <<<<<<<<<<<<<< + * from _pydevd_bundle.pydevd_bytecode_utils import get_smart_step_into_variant_from_frame_offset + * except ImportError: + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_4, &__pyx_t_5); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_4); + __Pyx_XGOTREF(__pyx_t_5); + /*try:*/ { + + /* "_pydevd_bundle/pydevd_cython.pyx":356 + * + * try: + * from _pydevd_bundle.pydevd_bytecode_utils import get_smart_step_into_variant_from_frame_offset # <<<<<<<<<<<<<< + * except ImportError: + * + */ + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 356, __pyx_L2_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_get_smart_step_into_variant_from); + __Pyx_GIVEREF(__pyx_n_s_get_smart_step_into_variant_from); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_get_smart_step_into_variant_from)) __PYX_ERR(0, 356, __pyx_L2_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_pydevd_bundle_pydevd_bytecode_u, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 356, __pyx_L2_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_get_smart_step_into_variant_from); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 356, __pyx_L2_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_smart_step_into_variant_from, __pyx_t_2) < 0) __PYX_ERR(0, 356, __pyx_L2_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":355 + * import sys + * + * try: # <<<<<<<<<<<<<< + * from _pydevd_bundle.pydevd_bytecode_utils import get_smart_step_into_variant_from_frame_offset + * except ImportError: + */ + } + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + goto __pyx_L7_try_end; + __pyx_L2_error:; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":357 + * try: + * from _pydevd_bundle.pydevd_bytecode_utils import get_smart_step_into_variant_from_frame_offset + * except ImportError: # <<<<<<<<<<<<<< + * + * def get_smart_step_into_variant_from_frame_offset(*args, **kwargs): + */ + __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ImportError); + if (__pyx_t_6) { + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_7) < 0) __PYX_ERR(0, 357, __pyx_L4_except_error) + __Pyx_XGOTREF(__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_7); + + /* "_pydevd_bundle/pydevd_cython.pyx":359 + * except ImportError: + * + * def get_smart_step_into_variant_from_frame_offset(*args, **kwargs): # <<<<<<<<<<<<<< + * return None + * + */ + __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_9get_smart_step_into_variant_from_frame_offset, 0, __pyx_n_s_get_smart_step_into_variant_from, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__38)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 359, __pyx_L4_except_error) + __Pyx_GOTREF(__pyx_t_8); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_smart_step_into_variant_from, __pyx_t_8) < 0) __PYX_ERR(0, 359, __pyx_L4_except_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + goto __pyx_L3_exception_handled; + } + goto __pyx_L4_except_error; + + /* "_pydevd_bundle/pydevd_cython.pyx":355 + * import sys + * + * try: # <<<<<<<<<<<<<< + * from _pydevd_bundle.pydevd_bytecode_utils import get_smart_step_into_variant_from_frame_offset + * except ImportError: + */ + __pyx_L4_except_error:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_4); + __Pyx_XGIVEREF(__pyx_t_5); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_4, __pyx_t_5); + goto __pyx_L1_error; + __pyx_L3_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_4); + __Pyx_XGIVEREF(__pyx_t_5); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_4, __pyx_t_5); + __pyx_L7_try_end:; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":380 + * # ENDIF + * + * basename = os.path.basename # <<<<<<<<<<<<<< + * + * IGNORE_EXCEPTION_TAG = re.compile("[^#]*#.*@IgnoreException") + */ + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_os); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 380, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 380, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_basename); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 380, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_basename, __pyx_t_7) < 0) __PYX_ERR(0, 380, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":382 + * basename = os.path.basename + * + * IGNORE_EXCEPTION_TAG = re.compile("[^#]*#.*@IgnoreException") # <<<<<<<<<<<<<< + * DEBUG_START = ("pydevd.py", "run") + * DEBUG_START_PY3K = ("_pydev_execfile.py", "execfile") + */ + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_re); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 382, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_compile); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 382, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__39, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 382, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_IGNORE_EXCEPTION_TAG, __pyx_t_7) < 0) __PYX_ERR(0, 382, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":383 + * + * IGNORE_EXCEPTION_TAG = re.compile("[^#]*#.*@IgnoreException") + * DEBUG_START = ("pydevd.py", "run") # <<<<<<<<<<<<<< + * DEBUG_START_PY3K = ("_pydev_execfile.py", "execfile") + * TRACE_PROPERTY = "pydevd_traceproperty.py" + */ + if (PyDict_SetItem(__pyx_d, __pyx_n_s_DEBUG_START, __pyx_tuple__40) < 0) __PYX_ERR(0, 383, __pyx_L1_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":384 + * IGNORE_EXCEPTION_TAG = re.compile("[^#]*#.*@IgnoreException") + * DEBUG_START = ("pydevd.py", "run") + * DEBUG_START_PY3K = ("_pydev_execfile.py", "execfile") # <<<<<<<<<<<<<< + * TRACE_PROPERTY = "pydevd_traceproperty.py" + * + */ + if (PyDict_SetItem(__pyx_d, __pyx_n_s_DEBUG_START_PY3K, __pyx_tuple__41) < 0) __PYX_ERR(0, 384, __pyx_L1_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":385 + * DEBUG_START = ("pydevd.py", "run") + * DEBUG_START_PY3K = ("_pydev_execfile.py", "execfile") + * TRACE_PROPERTY = "pydevd_traceproperty.py" # <<<<<<<<<<<<<< + * + * import dis + */ + if (PyDict_SetItem(__pyx_d, __pyx_n_s_TRACE_PROPERTY, __pyx_kp_s_pydevd_traceproperty_py) < 0) __PYX_ERR(0, 385, __pyx_L1_error) + + /* "_pydevd_bundle/pydevd_cython.pyx":387 + * TRACE_PROPERTY = "pydevd_traceproperty.py" + * + * import dis # <<<<<<<<<<<<<< + * + * try: + */ + __pyx_t_7 = __Pyx_ImportDottedModule(__pyx_n_s_dis, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 387, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_dis, __pyx_t_7) < 0) __PYX_ERR(0, 387, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":389 + * import dis + * + * try: # <<<<<<<<<<<<<< + * StopAsyncIteration + * except NameError: + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_4, &__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_5); + __Pyx_XGOTREF(__pyx_t_4); + __Pyx_XGOTREF(__pyx_t_1); + /*try:*/ { + + /* "_pydevd_bundle/pydevd_cython.pyx":390 + * + * try: + * StopAsyncIteration # <<<<<<<<<<<<<< + * except NameError: + * StopAsyncIteration = StopIteration + */ + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_StopAsyncIteration); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 390, __pyx_L10_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":389 + * import dis + * + * try: # <<<<<<<<<<<<<< + * StopAsyncIteration + * except NameError: + */ + } + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + goto __pyx_L15_try_end; + __pyx_L10_error:; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":391 + * try: + * StopAsyncIteration + * except NameError: # <<<<<<<<<<<<<< + * StopAsyncIteration = StopIteration + * + */ + __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_NameError); + if (__pyx_t_6) { + __Pyx_AddTraceback("_pydevd_bundle.pydevd_cython", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_2, &__pyx_t_3) < 0) __PYX_ERR(0, 391, __pyx_L12_except_error) + __Pyx_XGOTREF(__pyx_t_7); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + + /* "_pydevd_bundle/pydevd_cython.pyx":392 + * StopAsyncIteration + * except NameError: + * StopAsyncIteration = StopIteration # <<<<<<<<<<<<<< + * + * + */ + if (PyDict_SetItem(__pyx_d, __pyx_n_s_StopAsyncIteration, __pyx_builtin_StopIteration) < 0) __PYX_ERR(0, 392, __pyx_L12_except_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L11_exception_handled; + } + goto __pyx_L12_except_error; + + /* "_pydevd_bundle/pydevd_cython.pyx":389 + * import dis + * + * try: # <<<<<<<<<<<<<< + * StopAsyncIteration + * except NameError: + */ + __pyx_L12_except_error:; + __Pyx_XGIVEREF(__pyx_t_5); + __Pyx_XGIVEREF(__pyx_t_4); + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_4, __pyx_t_1); + goto __pyx_L1_error; + __pyx_L11_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_5); + __Pyx_XGIVEREF(__pyx_t_4); + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_4, __pyx_t_1); + __pyx_L15_try_end:; + } + + /* "_pydevd_bundle/pydevd_cython.pyx":396 + * + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * def is_unhandled_exception(container_obj, py_db, frame, int last_raise_line, set raise_lines): # <<<<<<<<<<<<<< + * # ELSE + * # def is_unhandled_exception(container_obj, py_db, frame, last_raise_line, raise_lines): + */ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_11is_unhandled_exception, 0, __pyx_n_s_is_unhandled_exception, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__43)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 396, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_is_unhandled_exception, __pyx_t_3) < 0) __PYX_ERR(0, 396, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_TryExceptContainerObj___reduce, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__44)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj, __pyx_n_s_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(2, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + PyType_Modified(__pyx_ptype_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj); + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle__TryExceptContainerObj, (type(self), 0xdbf5e44, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle__TryExceptContainerObj__set_state(self, __pyx_state) + */ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_22_TryExceptContainerObj_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_TryExceptContainerObj___setstat, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__45)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj, __pyx_n_s_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(2, 16, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + PyType_Modified(__pyx_ptype_14_pydevd_bundle_13pydevd_cython__TryExceptContainerObj); + + /* "_pydevd_bundle/pydevd_cython.pyx":492 + * # ENDIF + * + * def set_suspend(self, *args, **kwargs): # <<<<<<<<<<<<<< + * self._args[0].set_suspend(*args, **kwargs) + * + */ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_3set_suspend, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PyDBFrame_set_suspend, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__47)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 492, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBFrame, __pyx_n_s_set_suspend, __pyx_t_3) < 0) __PYX_ERR(0, 492, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + PyType_Modified(__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBFrame); + + /* "_pydevd_bundle/pydevd_cython.pyx":495 + * self._args[0].set_suspend(*args, **kwargs) + * + * def do_wait_suspend(self, *args, **kwargs): # <<<<<<<<<<<<<< + * self._args[0].do_wait_suspend(*args, **kwargs) + * + */ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_5do_wait_suspend, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PyDBFrame_do_wait_suspend, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__48)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 495, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBFrame, __pyx_n_s_do_wait_suspend, __pyx_t_3) < 0) __PYX_ERR(0, 495, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + PyType_Modified(__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBFrame); + + /* "_pydevd_bundle/pydevd_cython.pyx":499 + * + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * def trace_exception(self, frame, str event, arg): # <<<<<<<<<<<<<< + * cdef bint should_stop; + * cdef tuple exc_info; + */ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_7trace_exception, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PyDBFrame_trace_exception, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__50)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 499, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBFrame, __pyx_n_s_trace_exception, __pyx_t_3) < 0) __PYX_ERR(0, 499, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + PyType_Modified(__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBFrame); + + /* "_pydevd_bundle/pydevd_cython.pyx":528 + * return self.trace_exception + * + * def handle_user_exception(self, frame): # <<<<<<<<<<<<<< + * exc_info = self.exc_info + * if exc_info: + */ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_9handle_user_exception, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PyDBFrame_handle_user_exception, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__52)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 528, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBFrame, __pyx_n_s_handle_user_exception, __pyx_t_3) < 0) __PYX_ERR(0, 528, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + PyType_Modified(__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBFrame); + + /* "_pydevd_bundle/pydevd_cython.pyx":636 + * + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * cpdef trace_dispatch(self, frame, str event, arg): # <<<<<<<<<<<<<< + * cdef tuple abs_path_canonical_path_and_base; + * cdef bint is_exception_event; + */ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_11trace_dispatch, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PyDBFrame_trace_dispatch, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__54)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 636, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBFrame, __pyx_n_s_trace_dispatch, __pyx_t_3) < 0) __PYX_ERR(0, 636, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + PyType_Modified(__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBFrame); + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_13__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PyDBFrame___reduce_cython, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__55)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBFrame, __pyx_n_s_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(2, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + PyType_Modified(__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBFrame); + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle_PyDBFrame, (type(self), 0x3a8c26e, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_PyDBFrame__set_state(self, __pyx_state) + */ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_9PyDBFrame_15__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PyDBFrame___setstate_cython, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__56)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBFrame, __pyx_n_s_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(2, 16, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + PyType_Modified(__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBFrame); + + /* "_pydevd_bundle/pydevd_cython.pyx":1378 + * + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * def should_stop_on_exception(py_db, PyDBAdditionalThreadInfo info, frame, thread, arg, prev_user_uncaught_exc_info, is_unwind=False): # <<<<<<<<<<<<<< + * cdef bint should_stop; + * cdef bint was_just_raised; + */ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_13should_stop_on_exception, 0, __pyx_n_s_should_stop_on_exception, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__58)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1378, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__59); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_should_stop_on_exception, __pyx_t_3) < 0) __PYX_ERR(0, 1378, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1506 + * # Same thing in the main debugger but only considering the file contents, while the one in the main debugger + * # considers the user input (so, the actual result must be a join of both). + * filename_to_lines_where_exceptions_are_ignored: dict = {} # <<<<<<<<<<<<<< + * filename_to_stat_info: dict = {} + * + */ + __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1506, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_filename_to_lines_where_exceptio, __pyx_t_3) < 0) __PYX_ERR(0, 1506, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1507 + * # considers the user input (so, the actual result must be a join of both). + * filename_to_lines_where_exceptions_are_ignored: dict = {} + * filename_to_stat_info: dict = {} # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1507, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_filename_to_stat_info, __pyx_t_3) < 0) __PYX_ERR(0, 1507, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1511 + * + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + * def handle_exception(py_db, thread, frame, arg, str exception_type): # <<<<<<<<<<<<<< + * cdef bint stopped; + * cdef tuple abs_real_path_and_base; + */ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_15handle_exception, 0, __pyx_n_s_handle_exception, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__61)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1511, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_handle_exception, __pyx_t_3) < 0) __PYX_ERR(0, 1511, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1631 + * + * return stopped + * from _pydev_bundle.pydev_is_thread_alive import is_thread_alive # <<<<<<<<<<<<<< + * from _pydev_bundle.pydev_log import exception as pydev_log_exception + * from _pydev_bundle._pydev_saved_modules import threading + */ + __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1631, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_is_thread_alive); + __Pyx_GIVEREF(__pyx_n_s_is_thread_alive); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_is_thread_alive)) __PYX_ERR(0, 1631, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_pydev_bundle_pydev_is_thread_al, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1631, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_is_thread_alive); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1631, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_is_thread_alive, __pyx_t_3) < 0) __PYX_ERR(0, 1631, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1632 + * return stopped + * from _pydev_bundle.pydev_is_thread_alive import is_thread_alive + * from _pydev_bundle.pydev_log import exception as pydev_log_exception # <<<<<<<<<<<<<< + * from _pydev_bundle._pydev_saved_modules import threading + * from _pydevd_bundle.pydevd_constants import ( + */ + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1632, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_exception); + __Pyx_GIVEREF(__pyx_n_s_exception); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_exception)) __PYX_ERR(0, 1632, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_pydev_bundle_pydev_log, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1632, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_exception); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1632, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_pydev_log_exception, __pyx_t_2) < 0) __PYX_ERR(0, 1632, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1633 + * from _pydev_bundle.pydev_is_thread_alive import is_thread_alive + * from _pydev_bundle.pydev_log import exception as pydev_log_exception + * from _pydev_bundle._pydev_saved_modules import threading # <<<<<<<<<<<<<< + * from _pydevd_bundle.pydevd_constants import ( + * get_current_thread_id, + */ + __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1633, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_threading); + __Pyx_GIVEREF(__pyx_n_s_threading); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_threading)) __PYX_ERR(0, 1633, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_pydev_bundle__pydev_saved_modul, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1633, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_threading); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1633, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_threading, __pyx_t_3) < 0) __PYX_ERR(0, 1633, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1635 + * from _pydev_bundle._pydev_saved_modules import threading + * from _pydevd_bundle.pydevd_constants import ( + * get_current_thread_id, # <<<<<<<<<<<<<< + * NO_FTRACE, + * USE_CUSTOM_SYS_CURRENT_FRAMES_MAP, + */ + __pyx_t_2 = PyList_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1635, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_get_current_thread_id); + __Pyx_GIVEREF(__pyx_n_s_get_current_thread_id); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_get_current_thread_id)) __PYX_ERR(0, 1635, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_NO_FTRACE); + __Pyx_GIVEREF(__pyx_n_s_NO_FTRACE); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_NO_FTRACE)) __PYX_ERR(0, 1635, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_USE_CUSTOM_SYS_CURRENT_FRAMES_MA); + __Pyx_GIVEREF(__pyx_n_s_USE_CUSTOM_SYS_CURRENT_FRAMES_MA); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_n_s_USE_CUSTOM_SYS_CURRENT_FRAMES_MA)) __PYX_ERR(0, 1635, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_ForkSafeLock); + __Pyx_GIVEREF(__pyx_n_s_ForkSafeLock); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_n_s_ForkSafeLock)) __PYX_ERR(0, 1635, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_PYDEVD_USE_SYS_MONITORING); + __Pyx_GIVEREF(__pyx_n_s_PYDEVD_USE_SYS_MONITORING); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 4, __pyx_n_s_PYDEVD_USE_SYS_MONITORING)) __PYX_ERR(0, 1635, __pyx_L1_error); + + /* "_pydevd_bundle/pydevd_cython.pyx":1634 + * from _pydev_bundle.pydev_log import exception as pydev_log_exception + * from _pydev_bundle._pydev_saved_modules import threading + * from _pydevd_bundle.pydevd_constants import ( # <<<<<<<<<<<<<< + * get_current_thread_id, + * NO_FTRACE, + */ + __pyx_t_3 = __Pyx_Import(__pyx_n_s_pydevd_bundle_pydevd_constants, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1634, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_get_current_thread_id); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1634, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_current_thread_id, __pyx_t_2) < 0) __PYX_ERR(0, 1635, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_NO_FTRACE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1634, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_NO_FTRACE, __pyx_t_2) < 0) __PYX_ERR(0, 1636, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_USE_CUSTOM_SYS_CURRENT_FRAMES_MA); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1634, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_USE_CUSTOM_SYS_CURRENT_FRAMES_MA, __pyx_t_2) < 0) __PYX_ERR(0, 1637, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_ForkSafeLock); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1634, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_ForkSafeLock, __pyx_t_2) < 0) __PYX_ERR(0, 1638, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PYDEVD_USE_SYS_MONITORING); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1634, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_PYDEVD_USE_SYS_MONITORING, __pyx_t_2) < 0) __PYX_ERR(0, 1639, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1641 + * PYDEVD_USE_SYS_MONITORING, + * ) + * from pydevd_file_utils import get_abs_path_real_path_and_base_from_frame, NORM_PATHS_AND_BASE_CONTAINER # <<<<<<<<<<<<<< + * + * # fmt: off + */ + __pyx_t_3 = PyList_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1641, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_get_abs_path_real_path_and_base); + __Pyx_GIVEREF(__pyx_n_s_get_abs_path_real_path_and_base); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_get_abs_path_real_path_and_base)) __PYX_ERR(0, 1641, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER); + __Pyx_GIVEREF(__pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER)) __PYX_ERR(0, 1641, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_pydevd_file_utils, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1641, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_get_abs_path_real_path_and_base); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1641, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_abs_path_real_path_and_base, __pyx_t_3) < 0) __PYX_ERR(0, 1641, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1641, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER, __pyx_t_3) < 0) __PYX_ERR(0, 1641, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1668 + * # - Breakpoints are changed + * # It can be used when running regularly (without step over/step in/step return) + * global_cache_skips = {} # <<<<<<<<<<<<<< + * global_cache_frame_skips = {} + * + */ + __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1668, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_global_cache_skips, __pyx_t_2) < 0) __PYX_ERR(0, 1668, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1669 + * # It can be used when running regularly (without step over/step in/step return) + * global_cache_skips = {} + * global_cache_frame_skips = {} # <<<<<<<<<<<<<< + * + * _global_notify_skipped_step_in = False + */ + __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1669, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_global_cache_frame_skips, __pyx_t_2) < 0) __PYX_ERR(0, 1669, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1671 + * global_cache_frame_skips = {} + * + * _global_notify_skipped_step_in = False # <<<<<<<<<<<<<< + * _global_notify_skipped_step_in_lock = ForkSafeLock() + * + */ + __Pyx_INCREF(Py_False); + __Pyx_XGOTREF(__pyx_v_14_pydevd_bundle_13pydevd_cython__global_notify_skipped_step_in); + __Pyx_DECREF_SET(__pyx_v_14_pydevd_bundle_13pydevd_cython__global_notify_skipped_step_in, ((PyObject*)Py_False)); + __Pyx_GIVEREF(Py_False); + + /* "_pydevd_bundle/pydevd_cython.pyx":1672 + * + * _global_notify_skipped_step_in = False + * _global_notify_skipped_step_in_lock = ForkSafeLock() # <<<<<<<<<<<<<< + * + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ForkSafeLock); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1672, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1672, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_global_notify_skipped_step_in_l, __pyx_t_3) < 0) __PYX_ERR(0, 1672, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1675 + * + * + * def notify_skipped_step_in_because_of_filters(py_db, frame): # <<<<<<<<<<<<<< + * global _global_notify_skipped_step_in + * + */ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_17notify_skipped_step_in_because_of_filters, 0, __pyx_n_s_notify_skipped_step_in_because_o, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__63)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1675, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_notify_skipped_step_in_because_o, __pyx_t_3) < 0) __PYX_ERR(0, 1675, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1701 + * Py_XDECREF (method_obj) + * return SafeCallWrapper(ret) if ret is not None else None + * def get_method_object(self): # <<<<<<<<<<<<<< + * return self.method_object + * # ELSE + */ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_5get_method_object, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SafeCallWrapper_get_method_objec, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__64)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1701, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper, __pyx_n_s_get_method_object, __pyx_t_3) < 0) __PYX_ERR(0, 1701, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + PyType_Modified(__pyx_ptype_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper); + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_7__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SafeCallWrapper___reduce_cython, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__65)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper, __pyx_n_s_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(2, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + PyType_Modified(__pyx_ptype_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper); + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle_SafeCallWrapper, (type(self), 0xa14289b, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_SafeCallWrapper__set_state(self, __pyx_state) + */ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_15SafeCallWrapper_9__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SafeCallWrapper___setstate_cytho, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper, __pyx_n_s_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(2, 16, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + PyType_Modified(__pyx_ptype_14_pydevd_bundle_13pydevd_cython_SafeCallWrapper); + + /* "_pydevd_bundle/pydevd_cython.pyx":1708 + * + * + * def fix_top_level_trace_and_get_trace_func(py_db, frame): # <<<<<<<<<<<<<< + * # fmt: off + * # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + */ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_19fix_top_level_trace_and_get_trace_func, 0, __pyx_n_s_fix_top_level_trace_and_get_trac, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__68)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1708, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_fix_top_level_trace_and_get_trac, __pyx_t_3) < 0) __PYX_ERR(0, 1708, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1846 + * + * + * def trace_dispatch(py_db, frame, event, arg): # <<<<<<<<<<<<<< + * thread_trace_func, apply_to_settrace = py_db.fix_top_level_trace_and_get_trace_func(py_db, frame) + * if thread_trace_func is None: + */ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_21trace_dispatch, 0, __pyx_n_s_trace_dispatch, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__70)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1846, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_trace_dispatch, __pyx_t_3) < 0) __PYX_ERR(0, 1846, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1869 + * # fmt: on + * + * def trace_unhandled_exceptions(self, frame, event, arg): # <<<<<<<<<<<<<< + * # Note that we ignore the frame as this tracing method should only be put in topmost frames already. + * # print('trace_unhandled_exceptions', event, frame.f_code.co_name, frame.f_code.co_filename, frame.f_code.co_firstlineno) + */ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_3trace_unhandled_exceptions, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_TopLevelThreadTracerOnlyUnhandle_2, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__72)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1869, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions, __pyx_n_s_trace_unhandled_exceptions, __pyx_t_3) < 0) __PYX_ERR(0, 1869, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + PyType_Modified(__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions); + + /* "_pydevd_bundle/pydevd_cython.pyx":1883 + * return self.trace_unhandled_exceptions + * + * def get_trace_dispatch_func(self): # <<<<<<<<<<<<<< + * return self.trace_unhandled_exceptions + * + */ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_5get_trace_dispatch_func, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_TopLevelThreadTracerOnlyUnhandle_3, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__73)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1883, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions, __pyx_n_s_get_trace_dispatch_func, __pyx_t_3) < 0) __PYX_ERR(0, 1883, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + PyType_Modified(__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions); + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_7__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_TopLevelThreadTracerOnlyUnhandle_4, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__74)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions, __pyx_n_s_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(2, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + PyType_Modified(__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions); + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions, (type(self), 0x121e1fb, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions__set_state(self, __pyx_state) + */ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_43TopLevelThreadTracerOnlyUnhandledExceptions_9__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_TopLevelThreadTracerOnlyUnhandle_5, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__75)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions, __pyx_n_s_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(2, 16, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + PyType_Modified(__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerOnlyUnhandledExceptions); + + /* "_pydevd_bundle/pydevd_cython.pyx":1927 + * # fmt: on + * + * def trace_dispatch_and_unhandled_exceptions(self, frame, event, arg): # <<<<<<<<<<<<<< + * # DEBUG = 'code_to_debug' in frame.f_code.co_filename + * # if DEBUG: print('trace_dispatch_and_unhandled_exceptions: %s %s %s %s %s %s' % (event, frame.f_code.co_name, frame.f_code.co_filename, frame.f_code.co_firstlineno, self._frame_trace_dispatch, frame.f_lineno)) + */ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_3trace_dispatch_and_unhandled_exceptions, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_TopLevelThreadTracerNoBackFrame_2, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__77)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1927, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame, __pyx_n_s_trace_dispatch_and_unhandled_exc, __pyx_t_3) < 0) __PYX_ERR(0, 1927, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + PyType_Modified(__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame); + + /* "_pydevd_bundle/pydevd_cython.pyx":1962 + * return ret + * + * def get_trace_dispatch_func(self): # <<<<<<<<<<<<<< + * return self.trace_dispatch_and_unhandled_exceptions + * + */ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_5get_trace_dispatch_func, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_TopLevelThreadTracerNoBackFrame_3, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__78)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1962, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame, __pyx_n_s_get_trace_dispatch_func, __pyx_t_3) < 0) __PYX_ERR(0, 1962, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + PyType_Modified(__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame); + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_7__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_TopLevelThreadTracerNoBackFrame_4, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__79)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame, __pyx_n_s_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(2, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + PyType_Modified(__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame); + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle_TopLevelThreadTracerNoBackFrame, (type(self), 0x3f5f7e9, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_TopLevelThreadTracerNoBackFrame__set_state(self, __pyx_state) + */ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_31TopLevelThreadTracerNoBackFrame_9__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_TopLevelThreadTracerNoBackFrame_5, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__80)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame, __pyx_n_s_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(2, 16, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + PyType_Modified(__pyx_ptype_14_pydevd_bundle_13pydevd_cython_TopLevelThreadTracerNoBackFrame); + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ThreadTracer___reduce_cython, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__81)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_ThreadTracer, __pyx_n_s_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(2, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + PyType_Modified(__pyx_ptype_14_pydevd_bundle_13pydevd_cython_ThreadTracer); + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle_ThreadTracer, (type(self), 0x121e1fb, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_ThreadTracer__set_state(self, __pyx_state) + */ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_12ThreadTracer_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ThreadTracer___setstate_cython, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__82)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_ThreadTracer, __pyx_n_s_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(2, 16, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + PyType_Modified(__pyx_ptype_14_pydevd_bundle_13pydevd_cython_ThreadTracer); + + /* "_pydevd_bundle/pydevd_cython.pyx":2155 + * + * + * if USE_CUSTOM_SYS_CURRENT_FRAMES_MAP: # <<<<<<<<<<<<<< + * # This is far from ideal, as we'll leak frames (we'll always have the last created frame, not really + * # the last topmost frame saved -- this should be Ok for our usage, but it may leak frames and things + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_USE_CUSTOM_SYS_CURRENT_FRAMES_MA); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2155, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 2155, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_9) { + + /* "_pydevd_bundle/pydevd_cython.pyx":2163 + * # + * # See: https://github.com/IronLanguages/main/issues/1630 + * from _pydevd_bundle.pydevd_constants import constructed_tid_to_last_frame # <<<<<<<<<<<<<< + * + * _original_call = ThreadTracer.__call__ + */ + __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2163, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_constructed_tid_to_last_frame); + __Pyx_GIVEREF(__pyx_n_s_constructed_tid_to_last_frame); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_constructed_tid_to_last_frame)) __PYX_ERR(0, 2163, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_pydevd_bundle_pydevd_constants, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2163, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_constructed_tid_to_last_frame); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2163, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_constructed_tid_to_last_frame, __pyx_t_3) < 0) __PYX_ERR(0, 2163, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":2165 + * from _pydevd_bundle.pydevd_constants import constructed_tid_to_last_frame + * + * _original_call = ThreadTracer.__call__ # <<<<<<<<<<<<<< + * + * def __call__(self, frame, event, arg): + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_ThreadTracer), __pyx_n_s_call_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2165, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_original_call, __pyx_t_2) < 0) __PYX_ERR(0, 2165, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":2167 + * _original_call = ThreadTracer.__call__ + * + * def __call__(self, frame, event, arg): # <<<<<<<<<<<<<< + * constructed_tid_to_last_frame[self._args[1].ident] = frame + * return _original_call(self, frame, event, arg) + */ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_23__call__, 0, __pyx_n_s_call_2, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__83)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2167, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_call_2, __pyx_t_2) < 0) __PYX_ERR(0, 2167, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":2171 + * return _original_call(self, frame, event, arg) + * + * ThreadTracer.__call__ = __call__ # <<<<<<<<<<<<<< + * + * if PYDEVD_USE_SYS_MONITORING: + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_call_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2171, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_ThreadTracer), __pyx_n_s_call_2, __pyx_t_2) < 0) __PYX_ERR(0, 2171, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":2155 + * + * + * if USE_CUSTOM_SYS_CURRENT_FRAMES_MAP: # <<<<<<<<<<<<<< + * # This is far from ideal, as we'll leak frames (we'll always have the last created frame, not really + * # the last topmost frame saved -- this should be Ok for our usage, but it may leak frames and things + */ + } + + /* "_pydevd_bundle/pydevd_cython.pyx":2173 + * ThreadTracer.__call__ = __call__ + * + * if PYDEVD_USE_SYS_MONITORING: # <<<<<<<<<<<<<< + * + * def fix_top_level_trace_and_get_trace_func(*args, **kwargs): + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_PYDEVD_USE_SYS_MONITORING); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2173, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 2173, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__pyx_t_9) { + + /* "_pydevd_bundle/pydevd_cython.pyx":2175 + * if PYDEVD_USE_SYS_MONITORING: + * + * def fix_top_level_trace_and_get_trace_func(*args, **kwargs): # <<<<<<<<<<<<<< + * raise RuntimeError("Not used in sys.monitoring mode.") + */ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_25fix_top_level_trace_and_get_trace_func, 0, __pyx_n_s_fix_top_level_trace_and_get_trac, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__84)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2175, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_fix_top_level_trace_and_get_trac, __pyx_t_2) < 0) __PYX_ERR(0, 2175, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":2173 + * ThreadTracer.__call__ = __call__ + * + * if PYDEVD_USE_SYS_MONITORING: # <<<<<<<<<<<<<< + * + * def fix_top_level_trace_and_get_trace_func(*args, **kwargs): + */ + } + + /* "(tree fragment)":1 + * def __pyx_unpickle_PyDBAdditionalThreadInfo(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError + * cdef object __pyx_result + */ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_27__pyx_unpickle_PyDBAdditionalThreadInfo, 0, __pyx_n_s_pyx_unpickle_PyDBAdditionalThr, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__86)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_PyDBAdditionalThr, __pyx_t_2) < 0) __PYX_ERR(2, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "(tree fragment)":11 + * __pyx_unpickle_PyDBAdditionalThreadInfo__set_state( __pyx_result, __pyx_state) + * return __pyx_result + * cdef __pyx_unpickle_PyDBAdditionalThreadInfo__set_state(PyDBAdditionalThreadInfo __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< + * __pyx_result.conditional_breakpoint_exception = __pyx_state[0]; __pyx_result.is_in_wait_loop = __pyx_state[1]; __pyx_result.is_tracing = __pyx_state[2]; __pyx_result.pydev_call_from_jinja2 = __pyx_state[3]; __pyx_result.pydev_call_inside_jinja2 = __pyx_state[4]; __pyx_result.pydev_django_resolve_frame = __pyx_state[5]; __pyx_result.pydev_func_name = __pyx_state[6]; __pyx_result.pydev_message = __pyx_state[7]; __pyx_result.pydev_next_line = __pyx_state[8]; __pyx_result.pydev_notify_kill = __pyx_state[9]; __pyx_result.pydev_original_step_cmd = __pyx_state[10]; __pyx_result.pydev_smart_child_offset = __pyx_state[11]; __pyx_result.pydev_smart_parent_offset = __pyx_state[12]; __pyx_result.pydev_smart_step_into_variants = __pyx_state[13]; __pyx_result.pydev_smart_step_stop = __pyx_state[14]; __pyx_result.pydev_state = __pyx_state[15]; __pyx_result.pydev_step_cmd = __pyx_state[16]; __pyx_result.pydev_step_stop = __pyx_state[17]; __pyx_result.pydev_use_scoped_step_frame = __pyx_state[18]; __pyx_result.step_in_initial_location = __pyx_state[19]; __pyx_result.suspend_type = __pyx_state[20]; __pyx_result.suspended_at_unhandled = __pyx_state[21]; __pyx_result.target_id_to_smart_step_into_variant = __pyx_state[22]; __pyx_result.thread_tracer = __pyx_state[23]; __pyx_result.top_level_thread_tracer_no_back_frames = __pyx_state[24]; __pyx_result.top_level_thread_tracer_unhandled = __pyx_state[25]; __pyx_result.trace_suspend_type = __pyx_state[26]; __pyx_result.weak_thread = __pyx_state[27] + * if len(__pyx_state) > 28 and hasattr(__pyx_result, '__dict__'): + */ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_29__pyx_unpickle__TryExceptContainerObj, 0, __pyx_n_s_pyx_unpickle__TryExceptContain, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__87)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle__TryExceptContain, __pyx_t_2) < 0) __PYX_ERR(2, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "(tree fragment)":1 + * def __pyx_unpickle_PyDBFrame(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError + * cdef object __pyx_result + */ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_31__pyx_unpickle_PyDBFrame, 0, __pyx_n_s_pyx_unpickle_PyDBFrame, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__88)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_PyDBFrame, __pyx_t_2) < 0) __PYX_ERR(2, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "(tree fragment)":11 + * __pyx_unpickle_PyDBFrame__set_state( __pyx_result, __pyx_state) + * return __pyx_result + * cdef __pyx_unpickle_PyDBFrame__set_state(PyDBFrame __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< + * __pyx_result._args = __pyx_state[0]; __pyx_result.exc_info = __pyx_state[1]; __pyx_result.should_skip = __pyx_state[2] + * if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'): + */ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_33__pyx_unpickle_SafeCallWrapper, 0, __pyx_n_s_pyx_unpickle_SafeCallWrapper, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__89)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_SafeCallWrapper, __pyx_t_2) < 0) __PYX_ERR(2, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "(tree fragment)":1 + * def __pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError + * cdef object __pyx_result + */ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_35__pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions, 0, __pyx_n_s_pyx_unpickle_TopLevelThreadTra, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__90)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_TopLevelThreadTra, __pyx_t_2) < 0) __PYX_ERR(2, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "(tree fragment)":11 + * __pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions__set_state( __pyx_result, __pyx_state) + * return __pyx_result + * cdef __pyx_unpickle_TopLevelThreadTracerOnlyUnhandledExceptions__set_state(TopLevelThreadTracerOnlyUnhandledExceptions __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< + * __pyx_result._args = __pyx_state[0] + * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): + */ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_37__pyx_unpickle_TopLevelThreadTracerNoBackFrame, 0, __pyx_n_s_pyx_unpickle_TopLevelThreadTra_2, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__91)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_TopLevelThreadTra_2, __pyx_t_2) < 0) __PYX_ERR(2, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "(tree fragment)":1 + * def __pyx_unpickle_ThreadTracer(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError + * cdef object __pyx_result + */ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_14_pydevd_bundle_13pydevd_cython_39__pyx_unpickle_ThreadTracer, 0, __pyx_n_s_pyx_unpickle_ThreadTracer, NULL, __pyx_n_s_pydevd_bundle_pydevd_cython, __pyx_d, ((PyObject *)__pyx_codeobj__92)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_ThreadTracer, __pyx_t_2) < 0) __PYX_ERR(2, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_bundle/pydevd_cython.pyx":1 + * from __future__ import print_function # <<<<<<<<<<<<<< + * + * # Important: Autogenerated file. + */ + __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /*--- Wrapped vars code ---*/ + + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + if (__pyx_m) { + if (__pyx_d && stringtab_initialized) { + __Pyx_AddTraceback("init _pydevd_bundle.pydevd_cython", __pyx_clineno, __pyx_lineno, __pyx_filename); + } + #if !CYTHON_USE_MODULE_STATE + Py_CLEAR(__pyx_m); + #else + Py_DECREF(__pyx_m); + if (pystate_addmodule_run) { + PyObject *tp, *value, *tb; + PyErr_Fetch(&tp, &value, &tb); + PyState_RemoveModule(&__pyx_moduledef); + PyErr_Restore(tp, value, tb); + } + #endif + } else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_ImportError, "init _pydevd_bundle.pydevd_cython"); + } + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + #if CYTHON_PEP489_MULTI_PHASE_INIT + return (__pyx_m != NULL) ? 0 : -1; + #elif PY_MAJOR_VERSION >= 3 + return __pyx_m; + #else + return; + #endif +} +/* #### Code section: cleanup_globals ### */ +/* #### Code section: cleanup_module ### */ +/* #### Code section: main_method ### */ +/* #### Code section: utility_code_pragmas ### */ +#ifdef _MSC_VER +#pragma warning( push ) +/* Warning 4127: conditional expression is constant + * Cython uses constant conditional expressions to allow in inline functions to be optimized at + * compile-time, so this warning is not useful + */ +#pragma warning( disable : 4127 ) +#endif + + + +/* #### Code section: utility_code_def ### */ + +/* --- Runtime support code --- */ +/* Refnanny */ +#if CYTHON_REFNANNY +static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { + PyObject *m = NULL, *p = NULL; + void *r = NULL; + m = PyImport_ImportModule(modname); + if (!m) goto end; + p = PyObject_GetAttrString(m, "RefNannyAPI"); + if (!p) goto end; + r = PyLong_AsVoidPtr(p); +end: + Py_XDECREF(p); + Py_XDECREF(m); + return (__Pyx_RefNannyAPIStruct *)r; +} +#endif + +/* PyErrExceptionMatches */ +#if CYTHON_FAST_THREAD_STATE +static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(tuple); +#if PY_MAJOR_VERSION >= 3 + for (i=0; i= 0x030C00A6 + PyObject *current_exception = tstate->current_exception; + if (unlikely(!current_exception)) return 0; + exc_type = (PyObject*) Py_TYPE(current_exception); + if (exc_type == err) return 1; +#else + exc_type = tstate->curexc_type; + if (exc_type == err) return 1; + if (unlikely(!exc_type)) return 0; +#endif + #if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(exc_type); + #endif + if (unlikely(PyTuple_Check(err))) { + result = __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); + } else { + result = __Pyx_PyErr_GivenExceptionMatches(exc_type, err); + } + #if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(exc_type); + #endif + return result; +} +#endif + +/* PyErrFetchRestore */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { +#if PY_VERSION_HEX >= 0x030C00A6 + PyObject *tmp_value; + assert(type == NULL || (value != NULL && type == (PyObject*) Py_TYPE(value))); + if (value) { + #if CYTHON_COMPILING_IN_CPYTHON + if (unlikely(((PyBaseExceptionObject*) value)->traceback != tb)) + #endif + PyException_SetTraceback(value, tb); + } + tmp_value = tstate->current_exception; + tstate->current_exception = value; + Py_XDECREF(tmp_value); + Py_XDECREF(type); + Py_XDECREF(tb); +#else + PyObject *tmp_type, *tmp_value, *tmp_tb; + tmp_type = tstate->curexc_type; + tmp_value = tstate->curexc_value; + tmp_tb = tstate->curexc_traceback; + tstate->curexc_type = type; + tstate->curexc_value = value; + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +#endif +} +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { +#if PY_VERSION_HEX >= 0x030C00A6 + PyObject* exc_value; + exc_value = tstate->current_exception; + tstate->current_exception = 0; + *value = exc_value; + *type = NULL; + *tb = NULL; + if (exc_value) { + *type = (PyObject*) Py_TYPE(exc_value); + Py_INCREF(*type); + #if CYTHON_COMPILING_IN_CPYTHON + *tb = ((PyBaseExceptionObject*) exc_value)->traceback; + Py_XINCREF(*tb); + #else + *tb = PyException_GetTraceback(exc_value); + #endif + } +#else + *type = tstate->curexc_type; + *value = tstate->curexc_value; + *tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; +#endif +} +#endif + +/* PyObjectGetAttrStr */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro)) + return tp->tp_getattro(obj, attr_name); +#if PY_MAJOR_VERSION < 3 + if (likely(tp->tp_getattr)) + return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); +#endif + return PyObject_GetAttr(obj, attr_name); +} +#endif + +/* PyObjectGetAttrStrNoError */ +#if __PYX_LIMITED_VERSION_HEX < 0x030d00A1 +static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) + __Pyx_PyErr_Clear(); +} +#endif +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) { + PyObject *result; +#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1 + (void) PyObject_GetOptionalAttr(obj, attr_name, &result); + return result; +#else +#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS && PY_VERSION_HEX >= 0x030700B1 + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) { + return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1); + } +#endif + result = __Pyx_PyObject_GetAttrStr(obj, attr_name); + if (unlikely(!result)) { + __Pyx_PyObject_GetAttrStr_ClearAttributeError(); + } + return result; +#endif +} + +/* GetBuiltinName */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name) { + PyObject* result = __Pyx_PyObject_GetAttrStrNoError(__pyx_b, name); + if (unlikely(!result) && !PyErr_Occurred()) { + PyErr_Format(PyExc_NameError, +#if PY_MAJOR_VERSION >= 3 + "name '%U' is not defined", name); +#else + "name '%.200s' is not defined", PyString_AS_STRING(name)); +#endif + } + return result; +} + +/* TupleAndListFromArray */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE void __Pyx_copy_object_array(PyObject *const *CYTHON_RESTRICT src, PyObject** CYTHON_RESTRICT dest, Py_ssize_t length) { + PyObject *v; + Py_ssize_t i; + for (i = 0; i < length; i++) { + v = dest[i] = src[i]; + Py_INCREF(v); + } +} +static CYTHON_INLINE PyObject * +__Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n) +{ + PyObject *res; + if (n <= 0) { + Py_INCREF(__pyx_empty_tuple); + return __pyx_empty_tuple; + } + res = PyTuple_New(n); + if (unlikely(res == NULL)) return NULL; + __Pyx_copy_object_array(src, ((PyTupleObject*)res)->ob_item, n); + return res; +} +static CYTHON_INLINE PyObject * +__Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n) +{ + PyObject *res; + if (n <= 0) { + return PyList_New(0); + } + res = PyList_New(n); + if (unlikely(res == NULL)) return NULL; + __Pyx_copy_object_array(src, ((PyListObject*)res)->ob_item, n); + return res; +} +#endif + +/* BytesEquals */ +static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) { +#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API + return PyObject_RichCompareBool(s1, s2, equals); +#else + if (s1 == s2) { + return (equals == Py_EQ); + } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) { + const char *ps1, *ps2; + Py_ssize_t length = PyBytes_GET_SIZE(s1); + if (length != PyBytes_GET_SIZE(s2)) + return (equals == Py_NE); + ps1 = PyBytes_AS_STRING(s1); + ps2 = PyBytes_AS_STRING(s2); + if (ps1[0] != ps2[0]) { + return (equals == Py_NE); + } else if (length == 1) { + return (equals == Py_EQ); + } else { + int result; +#if CYTHON_USE_UNICODE_INTERNALS && (PY_VERSION_HEX < 0x030B0000) + Py_hash_t hash1, hash2; + hash1 = ((PyBytesObject*)s1)->ob_shash; + hash2 = ((PyBytesObject*)s2)->ob_shash; + if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { + return (equals == Py_NE); + } +#endif + result = memcmp(ps1, ps2, (size_t)length); + return (equals == Py_EQ) ? (result == 0) : (result != 0); + } + } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) { + return (equals == Py_NE); + } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) { + return (equals == Py_NE); + } else { + int result; + PyObject* py_result = PyObject_RichCompare(s1, s2, equals); + if (!py_result) + return -1; + result = __Pyx_PyObject_IsTrue(py_result); + Py_DECREF(py_result); + return result; + } +#endif +} + +/* UnicodeEquals */ +static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) { +#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API + return PyObject_RichCompareBool(s1, s2, equals); +#else +#if PY_MAJOR_VERSION < 3 + PyObject* owned_ref = NULL; +#endif + int s1_is_unicode, s2_is_unicode; + if (s1 == s2) { + goto return_eq; + } + s1_is_unicode = PyUnicode_CheckExact(s1); + s2_is_unicode = PyUnicode_CheckExact(s2); +#if PY_MAJOR_VERSION < 3 + if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) { + owned_ref = PyUnicode_FromObject(s2); + if (unlikely(!owned_ref)) + return -1; + s2 = owned_ref; + s2_is_unicode = 1; + } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) { + owned_ref = PyUnicode_FromObject(s1); + if (unlikely(!owned_ref)) + return -1; + s1 = owned_ref; + s1_is_unicode = 1; + } else if (((!s2_is_unicode) & (!s1_is_unicode))) { + return __Pyx_PyBytes_Equals(s1, s2, equals); + } +#endif + if (s1_is_unicode & s2_is_unicode) { + Py_ssize_t length; + int kind; + void *data1, *data2; + if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0)) + return -1; + length = __Pyx_PyUnicode_GET_LENGTH(s1); + if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) { + goto return_ne; + } +#if CYTHON_USE_UNICODE_INTERNALS + { + Py_hash_t hash1, hash2; + #if CYTHON_PEP393_ENABLED + hash1 = ((PyASCIIObject*)s1)->hash; + hash2 = ((PyASCIIObject*)s2)->hash; + #else + hash1 = ((PyUnicodeObject*)s1)->hash; + hash2 = ((PyUnicodeObject*)s2)->hash; + #endif + if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { + goto return_ne; + } + } +#endif + kind = __Pyx_PyUnicode_KIND(s1); + if (kind != __Pyx_PyUnicode_KIND(s2)) { + goto return_ne; + } + data1 = __Pyx_PyUnicode_DATA(s1); + data2 = __Pyx_PyUnicode_DATA(s2); + if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) { + goto return_ne; + } else if (length == 1) { + goto return_eq; + } else { + int result = memcmp(data1, data2, (size_t)(length * kind)); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_EQ) ? (result == 0) : (result != 0); + } + } else if ((s1 == Py_None) & s2_is_unicode) { + goto return_ne; + } else if ((s2 == Py_None) & s1_is_unicode) { + goto return_ne; + } else { + int result; + PyObject* py_result = PyObject_RichCompare(s1, s2, equals); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + if (!py_result) + return -1; + result = __Pyx_PyObject_IsTrue(py_result); + Py_DECREF(py_result); + return result; + } +return_eq: + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_EQ); +return_ne: + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_NE); +#endif +} + +/* fastcall */ +#if CYTHON_METH_FASTCALL +static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s) +{ + Py_ssize_t i, n = PyTuple_GET_SIZE(kwnames); + for (i = 0; i < n; i++) + { + if (s == PyTuple_GET_ITEM(kwnames, i)) return kwvalues[i]; + } + for (i = 0; i < n; i++) + { + int eq = __Pyx_PyUnicode_Equals(s, PyTuple_GET_ITEM(kwnames, i), Py_EQ); + if (unlikely(eq != 0)) { + if (unlikely(eq < 0)) return NULL; + return kwvalues[i]; + } + } + return NULL; +} +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 +CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues) { + Py_ssize_t i, nkwargs = PyTuple_GET_SIZE(kwnames); + PyObject *dict; + dict = PyDict_New(); + if (unlikely(!dict)) + return NULL; + for (i=0; itp_dict; + return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0; +} +static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) { + PyObject **dictptr = NULL; + Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset; + if (offset) { +#if CYTHON_COMPILING_IN_CPYTHON + dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj); +#else + dictptr = _PyObject_GetDictPtr(obj); +#endif + } + return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0; +} +static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) { + PyObject *dict = Py_TYPE(obj)->tp_dict; + if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict))) + return 0; + return obj_dict_version == __Pyx_get_object_dict_version(obj); +} +#endif + +/* GetModuleGlobalName */ +#if CYTHON_USE_DICT_VERSIONS +static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value) +#else +static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name) +#endif +{ + PyObject *result; +#if !CYTHON_AVOID_BORROWED_REFS +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && PY_VERSION_HEX < 0x030d0000 + result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); + __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } else if (unlikely(PyErr_Occurred())) { + return NULL; + } +#elif CYTHON_COMPILING_IN_LIMITED_API + if (unlikely(!__pyx_m)) { + return NULL; + } + result = PyObject_GetAttr(__pyx_m, name); + if (likely(result)) { + return result; + } +#else + result = PyDict_GetItem(__pyx_d, name); + __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } +#endif +#else + result = PyObject_GetItem(__pyx_d, name); + __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } + PyErr_Clear(); +#endif + return __Pyx_GetBuiltinName(name); +} + +/* PyFunctionFastCall */ +#if CYTHON_FAST_PYCALL && !CYTHON_VECTORCALL +static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, + PyObject *globals) { + PyFrameObject *f; + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject **fastlocals; + Py_ssize_t i; + PyObject *result; + assert(globals != NULL); + /* XXX Perhaps we should create a specialized + PyFrame_New() that doesn't take locals, but does + take builtins without sanity checking them. + */ + assert(tstate != NULL); + f = PyFrame_New(tstate, co, globals, NULL); + if (f == NULL) { + return NULL; + } + fastlocals = __Pyx_PyFrame_GetLocalsplus(f); + for (i = 0; i < na; i++) { + Py_INCREF(*args); + fastlocals[i] = *args++; + } + result = PyEval_EvalFrameEx(f,0); + ++tstate->recursion_depth; + Py_DECREF(f); + --tstate->recursion_depth; + return result; +} +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) { + PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); + PyObject *globals = PyFunction_GET_GLOBALS(func); + PyObject *argdefs = PyFunction_GET_DEFAULTS(func); + PyObject *closure; +#if PY_MAJOR_VERSION >= 3 + PyObject *kwdefs; +#endif + PyObject *kwtuple, **k; + PyObject **d; + Py_ssize_t nd; + Py_ssize_t nk; + PyObject *result; + assert(kwargs == NULL || PyDict_Check(kwargs)); + nk = kwargs ? PyDict_Size(kwargs) : 0; + #if PY_MAJOR_VERSION < 3 + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) { + return NULL; + } + #else + if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) { + return NULL; + } + #endif + if ( +#if PY_MAJOR_VERSION >= 3 + co->co_kwonlyargcount == 0 && +#endif + likely(kwargs == NULL || nk == 0) && + co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { + if (argdefs == NULL && co->co_argcount == nargs) { + result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); + goto done; + } + else if (nargs == 0 && argdefs != NULL + && co->co_argcount == Py_SIZE(argdefs)) { + /* function called with no arguments, but all parameters have + a default value: use default values as arguments .*/ + args = &PyTuple_GET_ITEM(argdefs, 0); + result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); + goto done; + } + } + if (kwargs != NULL) { + Py_ssize_t pos, i; + kwtuple = PyTuple_New(2 * nk); + if (kwtuple == NULL) { + result = NULL; + goto done; + } + k = &PyTuple_GET_ITEM(kwtuple, 0); + pos = i = 0; + while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { + Py_INCREF(k[i]); + Py_INCREF(k[i+1]); + i += 2; + } + nk = i / 2; + } + else { + kwtuple = NULL; + k = NULL; + } + closure = PyFunction_GET_CLOSURE(func); +#if PY_MAJOR_VERSION >= 3 + kwdefs = PyFunction_GET_KW_DEFAULTS(func); +#endif + if (argdefs != NULL) { + d = &PyTuple_GET_ITEM(argdefs, 0); + nd = Py_SIZE(argdefs); + } + else { + d = NULL; + nd = 0; + } +#if PY_MAJOR_VERSION >= 3 + result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, + args, (int)nargs, + k, (int)nk, + d, (int)nd, kwdefs, closure); +#else + result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, + args, (int)nargs, + k, (int)nk, + d, (int)nd, closure); +#endif + Py_XDECREF(kwtuple); +done: + Py_LeaveRecursiveCall(); + return result; +} +#endif + +/* PyObjectCall */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { + PyObject *result; + ternaryfunc call = Py_TYPE(func)->tp_call; + if (unlikely(!call)) + return PyObject_Call(func, arg, kw); + #if PY_MAJOR_VERSION < 3 + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + #else + if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) + return NULL; + #endif + result = (*call)(func, arg, kw); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyObjectCallMethO */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { + PyObject *self, *result; + PyCFunction cfunc; + cfunc = __Pyx_CyOrPyCFunction_GET_FUNCTION(func); + self = __Pyx_CyOrPyCFunction_GET_SELF(func); + #if PY_MAJOR_VERSION < 3 + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + #else + if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) + return NULL; + #endif + result = cfunc(self, arg); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyObjectFastCall */ +#if PY_VERSION_HEX < 0x03090000 || CYTHON_COMPILING_IN_LIMITED_API +static PyObject* __Pyx_PyObject_FastCall_fallback(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs) { + PyObject *argstuple; + PyObject *result = 0; + size_t i; + argstuple = PyTuple_New((Py_ssize_t)nargs); + if (unlikely(!argstuple)) return NULL; + for (i = 0; i < nargs; i++) { + Py_INCREF(args[i]); + if (__Pyx_PyTuple_SET_ITEM(argstuple, (Py_ssize_t)i, args[i]) < 0) goto bad; + } + result = __Pyx_PyObject_Call(func, argstuple, kwargs); + bad: + Py_DECREF(argstuple); + return result; +} +#endif +static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t _nargs, PyObject *kwargs) { + Py_ssize_t nargs = __Pyx_PyVectorcall_NARGS(_nargs); +#if CYTHON_COMPILING_IN_CPYTHON + if (nargs == 0 && kwargs == NULL) { + if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_NOARGS)) + return __Pyx_PyObject_CallMethO(func, NULL); + } + else if (nargs == 1 && kwargs == NULL) { + if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_O)) + return __Pyx_PyObject_CallMethO(func, args[0]); + } +#endif + #if PY_VERSION_HEX < 0x030800B1 + #if CYTHON_FAST_PYCCALL + if (PyCFunction_Check(func)) { + if (kwargs) { + return _PyCFunction_FastCallDict(func, args, nargs, kwargs); + } else { + return _PyCFunction_FastCallKeywords(func, args, nargs, NULL); + } + } + #if PY_VERSION_HEX >= 0x030700A1 + if (!kwargs && __Pyx_IS_TYPE(func, &PyMethodDescr_Type)) { + return _PyMethodDescr_FastCallKeywords(func, args, nargs, NULL); + } + #endif + #endif + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(func)) { + return __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs); + } + #endif + #endif + if (kwargs == NULL) { + #if CYTHON_VECTORCALL + #if PY_VERSION_HEX < 0x03090000 + vectorcallfunc f = _PyVectorcall_Function(func); + #else + vectorcallfunc f = PyVectorcall_Function(func); + #endif + if (f) { + return f(func, args, (size_t)nargs, NULL); + } + #elif defined(__Pyx_CyFunction_USED) && CYTHON_BACKPORT_VECTORCALL + if (__Pyx_CyFunction_CheckExact(func)) { + __pyx_vectorcallfunc f = __Pyx_CyFunction_func_vectorcall(func); + if (f) return f(func, args, (size_t)nargs, NULL); + } + #endif + } + if (nargs == 0) { + return __Pyx_PyObject_Call(func, __pyx_empty_tuple, kwargs); + } + #if PY_VERSION_HEX >= 0x03090000 && !CYTHON_COMPILING_IN_LIMITED_API + return PyObject_VectorcallDict(func, args, (size_t)nargs, kwargs); + #else + return __Pyx_PyObject_FastCall_fallback(func, args, (size_t)nargs, kwargs); + #endif +} + +/* PyObjectCallOneArg */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { + PyObject *args[2] = {NULL, arg}; + return __Pyx_PyObject_FastCall(func, args+1, 1 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); +} + +/* RaiseDoubleKeywords */ +static void __Pyx_RaiseDoubleKeywordsError( + const char* func_name, + PyObject* kw_name) +{ + PyErr_Format(PyExc_TypeError, + #if PY_MAJOR_VERSION >= 3 + "%s() got multiple values for keyword argument '%U'", func_name, kw_name); + #else + "%s() got multiple values for keyword argument '%s'", func_name, + PyString_AsString(kw_name)); + #endif +} + +/* ParseKeywords */ +static int __Pyx_ParseOptionalKeywords( + PyObject *kwds, + PyObject *const *kwvalues, + PyObject **argnames[], + PyObject *kwds2, + PyObject *values[], + Py_ssize_t num_pos_args, + const char* function_name) +{ + PyObject *key = 0, *value = 0; + Py_ssize_t pos = 0; + PyObject*** name; + PyObject*** first_kw_arg = argnames + num_pos_args; + int kwds_is_tuple = CYTHON_METH_FASTCALL && likely(PyTuple_Check(kwds)); + while (1) { + Py_XDECREF(key); key = NULL; + Py_XDECREF(value); value = NULL; + if (kwds_is_tuple) { + Py_ssize_t size; +#if CYTHON_ASSUME_SAFE_MACROS + size = PyTuple_GET_SIZE(kwds); +#else + size = PyTuple_Size(kwds); + if (size < 0) goto bad; +#endif + if (pos >= size) break; +#if CYTHON_AVOID_BORROWED_REFS + key = __Pyx_PySequence_ITEM(kwds, pos); + if (!key) goto bad; +#elif CYTHON_ASSUME_SAFE_MACROS + key = PyTuple_GET_ITEM(kwds, pos); +#else + key = PyTuple_GetItem(kwds, pos); + if (!key) goto bad; +#endif + value = kwvalues[pos]; + pos++; + } + else + { + if (!PyDict_Next(kwds, &pos, &key, &value)) break; +#if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(key); +#endif + } + name = first_kw_arg; + while (*name && (**name != key)) name++; + if (*name) { + values[name-argnames] = value; +#if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(value); + Py_DECREF(key); +#endif + key = NULL; + value = NULL; + continue; + } +#if !CYTHON_AVOID_BORROWED_REFS + Py_INCREF(key); +#endif + Py_INCREF(value); + name = first_kw_arg; + #if PY_MAJOR_VERSION < 3 + if (likely(PyString_Check(key))) { + while (*name) { + if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) + && _PyString_Eq(**name, key)) { + values[name-argnames] = value; +#if CYTHON_AVOID_BORROWED_REFS + value = NULL; +#endif + break; + } + name++; + } + if (*name) continue; + else { + PyObject*** argname = argnames; + while (argname != first_kw_arg) { + if ((**argname == key) || ( + (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) + && _PyString_Eq(**argname, key))) { + goto arg_passed_twice; + } + argname++; + } + } + } else + #endif + if (likely(PyUnicode_Check(key))) { + while (*name) { + int cmp = ( + #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 + (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : + #endif + PyUnicode_Compare(**name, key) + ); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; + if (cmp == 0) { + values[name-argnames] = value; +#if CYTHON_AVOID_BORROWED_REFS + value = NULL; +#endif + break; + } + name++; + } + if (*name) continue; + else { + PyObject*** argname = argnames; + while (argname != first_kw_arg) { + int cmp = (**argname == key) ? 0 : + #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 + (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : + #endif + PyUnicode_Compare(**argname, key); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; + if (cmp == 0) goto arg_passed_twice; + argname++; + } + } + } else + goto invalid_keyword_type; + if (kwds2) { + if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; + } else { + goto invalid_keyword; + } + } + Py_XDECREF(key); + Py_XDECREF(value); + return 0; +arg_passed_twice: + __Pyx_RaiseDoubleKeywordsError(function_name, key); + goto bad; +invalid_keyword_type: + PyErr_Format(PyExc_TypeError, + "%.200s() keywords must be strings", function_name); + goto bad; +invalid_keyword: + #if PY_MAJOR_VERSION < 3 + PyErr_Format(PyExc_TypeError, + "%.200s() got an unexpected keyword argument '%.200s'", + function_name, PyString_AsString(key)); + #else + PyErr_Format(PyExc_TypeError, + "%s() got an unexpected keyword argument '%U'", + function_name, key); + #endif +bad: + Py_XDECREF(key); + Py_XDECREF(value); + return -1; +} + +/* RaiseUnexpectedTypeError */ +static int +__Pyx_RaiseUnexpectedTypeError(const char *expected, PyObject *obj) +{ + __Pyx_TypeName obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj)); + PyErr_Format(PyExc_TypeError, "Expected %s, got " __Pyx_FMT_TYPENAME, + expected, obj_type_name); + __Pyx_DECREF_TypeName(obj_type_name); + return 0; +} + +/* GetAttr3 */ +#if __PYX_LIMITED_VERSION_HEX < 0x030d00A1 +static PyObject *__Pyx_GetAttr3Default(PyObject *d) { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) + return NULL; + __Pyx_PyErr_Clear(); + Py_INCREF(d); + return d; +} +#endif +static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject *d) { + PyObject *r; +#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1 + int res = PyObject_GetOptionalAttr(o, n, &r); + return (res != 0) ? r : __Pyx_NewRef(d); +#else + #if CYTHON_USE_TYPE_SLOTS + if (likely(PyString_Check(n))) { + r = __Pyx_PyObject_GetAttrStrNoError(o, n); + if (unlikely(!r) && likely(!PyErr_Occurred())) { + r = __Pyx_NewRef(d); + } + return r; + } + #endif + r = PyObject_GetAttr(o, n); + return (likely(r)) ? r : __Pyx_GetAttr3Default(d); +#endif +} + +/* PyObjectCallNoArg */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { + PyObject *arg[2] = {NULL, NULL}; + return __Pyx_PyObject_FastCall(func, arg + 1, 0 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); +} + +/* RaiseException */ +#if PY_MAJOR_VERSION < 3 +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { + __Pyx_PyThreadState_declare + CYTHON_UNUSED_VAR(cause); + Py_XINCREF(type); + if (!value || value == Py_None) + value = NULL; + else + Py_INCREF(value); + if (!tb || tb == Py_None) + tb = NULL; + else { + Py_INCREF(tb); + if (!PyTraceBack_Check(tb)) { + PyErr_SetString(PyExc_TypeError, + "raise: arg 3 must be a traceback or None"); + goto raise_error; + } + } + if (PyType_Check(type)) { +#if CYTHON_COMPILING_IN_PYPY + if (!value) { + Py_INCREF(Py_None); + value = Py_None; + } +#endif + PyErr_NormalizeException(&type, &value, &tb); + } else { + if (value) { + PyErr_SetString(PyExc_TypeError, + "instance exception may not have a separate value"); + goto raise_error; + } + value = type; + type = (PyObject*) Py_TYPE(type); + Py_INCREF(type); + if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { + PyErr_SetString(PyExc_TypeError, + "raise: exception class must be a subclass of BaseException"); + goto raise_error; + } + } + __Pyx_PyThreadState_assign + __Pyx_ErrRestore(type, value, tb); + return; +raise_error: + Py_XDECREF(value); + Py_XDECREF(type); + Py_XDECREF(tb); + return; +} +#else +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { + PyObject* owned_instance = NULL; + if (tb == Py_None) { + tb = 0; + } else if (tb && !PyTraceBack_Check(tb)) { + PyErr_SetString(PyExc_TypeError, + "raise: arg 3 must be a traceback or None"); + goto bad; + } + if (value == Py_None) + value = 0; + if (PyExceptionInstance_Check(type)) { + if (value) { + PyErr_SetString(PyExc_TypeError, + "instance exception may not have a separate value"); + goto bad; + } + value = type; + type = (PyObject*) Py_TYPE(value); + } else if (PyExceptionClass_Check(type)) { + PyObject *instance_class = NULL; + if (value && PyExceptionInstance_Check(value)) { + instance_class = (PyObject*) Py_TYPE(value); + if (instance_class != type) { + int is_subclass = PyObject_IsSubclass(instance_class, type); + if (!is_subclass) { + instance_class = NULL; + } else if (unlikely(is_subclass == -1)) { + goto bad; + } else { + type = instance_class; + } + } + } + if (!instance_class) { + PyObject *args; + if (!value) + args = PyTuple_New(0); + else if (PyTuple_Check(value)) { + Py_INCREF(value); + args = value; + } else + args = PyTuple_Pack(1, value); + if (!args) + goto bad; + owned_instance = PyObject_Call(type, args, NULL); + Py_DECREF(args); + if (!owned_instance) + goto bad; + value = owned_instance; + if (!PyExceptionInstance_Check(value)) { + PyErr_Format(PyExc_TypeError, + "calling %R should have returned an instance of " + "BaseException, not %R", + type, Py_TYPE(value)); + goto bad; + } + } + } else { + PyErr_SetString(PyExc_TypeError, + "raise: exception class must be a subclass of BaseException"); + goto bad; + } + if (cause) { + PyObject *fixed_cause; + if (cause == Py_None) { + fixed_cause = NULL; + } else if (PyExceptionClass_Check(cause)) { + fixed_cause = PyObject_CallObject(cause, NULL); + if (fixed_cause == NULL) + goto bad; + } else if (PyExceptionInstance_Check(cause)) { + fixed_cause = cause; + Py_INCREF(fixed_cause); + } else { + PyErr_SetString(PyExc_TypeError, + "exception causes must derive from " + "BaseException"); + goto bad; + } + PyException_SetCause(value, fixed_cause); + } + PyErr_SetObject(type, value); + if (tb) { + #if PY_VERSION_HEX >= 0x030C00A6 + PyException_SetTraceback(value, tb); + #elif CYTHON_FAST_THREAD_STATE + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject* tmp_tb = tstate->curexc_traceback; + if (tb != tmp_tb) { + Py_INCREF(tb); + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_tb); + } +#else + PyObject *tmp_type, *tmp_value, *tmp_tb; + PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); + Py_INCREF(tb); + PyErr_Restore(tmp_type, tmp_value, tb); + Py_XDECREF(tmp_tb); +#endif + } +bad: + Py_XDECREF(owned_instance); + return; +} +#endif + +/* GetTopmostException */ +#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE +static _PyErr_StackItem * +__Pyx_PyErr_GetTopmostException(PyThreadState *tstate) +{ + _PyErr_StackItem *exc_info = tstate->exc_info; + while ((exc_info->exc_value == NULL || exc_info->exc_value == Py_None) && + exc_info->previous_item != NULL) + { + exc_info = exc_info->previous_item; + } + return exc_info; +} +#endif + +/* SaveResetException */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); + PyObject *exc_value = exc_info->exc_value; + if (exc_value == NULL || exc_value == Py_None) { + *value = NULL; + *type = NULL; + *tb = NULL; + } else { + *value = exc_value; + Py_INCREF(*value); + *type = (PyObject*) Py_TYPE(exc_value); + Py_INCREF(*type); + *tb = PyException_GetTraceback(exc_value); + } + #elif CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); + *type = exc_info->exc_type; + *value = exc_info->exc_value; + *tb = exc_info->exc_traceback; + Py_XINCREF(*type); + Py_XINCREF(*value); + Py_XINCREF(*tb); + #else + *type = tstate->exc_type; + *value = tstate->exc_value; + *tb = tstate->exc_traceback; + Py_XINCREF(*type); + Py_XINCREF(*value); + Py_XINCREF(*tb); + #endif +} +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = tstate->exc_info; + PyObject *tmp_value = exc_info->exc_value; + exc_info->exc_value = value; + Py_XDECREF(tmp_value); + Py_XDECREF(type); + Py_XDECREF(tb); + #else + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = type; + exc_info->exc_value = value; + exc_info->exc_traceback = tb; + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = type; + tstate->exc_value = value; + tstate->exc_traceback = tb; + #endif + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); + #endif +} +#endif + +/* GetException */ +#if CYTHON_FAST_THREAD_STATE +static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) +#else +static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) +#endif +{ + PyObject *local_type = NULL, *local_value, *local_tb = NULL; +#if CYTHON_FAST_THREAD_STATE + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if PY_VERSION_HEX >= 0x030C00A6 + local_value = tstate->current_exception; + tstate->current_exception = 0; + if (likely(local_value)) { + local_type = (PyObject*) Py_TYPE(local_value); + Py_INCREF(local_type); + local_tb = PyException_GetTraceback(local_value); + } + #else + local_type = tstate->curexc_type; + local_value = tstate->curexc_value; + local_tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; + #endif +#else + PyErr_Fetch(&local_type, &local_value, &local_tb); +#endif + PyErr_NormalizeException(&local_type, &local_value, &local_tb); +#if CYTHON_FAST_THREAD_STATE && PY_VERSION_HEX >= 0x030C00A6 + if (unlikely(tstate->current_exception)) +#elif CYTHON_FAST_THREAD_STATE + if (unlikely(tstate->curexc_type)) +#else + if (unlikely(PyErr_Occurred())) +#endif + goto bad; + #if PY_MAJOR_VERSION >= 3 + if (local_tb) { + if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) + goto bad; + } + #endif + Py_XINCREF(local_tb); + Py_XINCREF(local_type); + Py_XINCREF(local_value); + *type = local_type; + *value = local_value; + *tb = local_tb; +#if CYTHON_FAST_THREAD_STATE + #if CYTHON_USE_EXC_INFO_STACK + { + _PyErr_StackItem *exc_info = tstate->exc_info; + #if PY_VERSION_HEX >= 0x030B00a4 + tmp_value = exc_info->exc_value; + exc_info->exc_value = local_value; + tmp_type = NULL; + tmp_tb = NULL; + Py_XDECREF(local_type); + Py_XDECREF(local_tb); + #else + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = local_type; + exc_info->exc_value = local_value; + exc_info->exc_traceback = local_tb; + #endif + } + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = local_type; + tstate->exc_value = local_value; + tstate->exc_traceback = local_tb; + #endif + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +#else + PyErr_SetExcInfo(local_type, local_value, local_tb); +#endif + return 0; +bad: + *type = 0; + *value = 0; + *tb = 0; + Py_XDECREF(local_type); + Py_XDECREF(local_value); + Py_XDECREF(local_tb); + return -1; +} + +/* PyObjectLookupSpecial */ +#if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error) { + PyObject *res; + PyTypeObject *tp = Py_TYPE(obj); +#if PY_MAJOR_VERSION < 3 + if (unlikely(PyInstance_Check(obj))) + return with_error ? __Pyx_PyObject_GetAttrStr(obj, attr_name) : __Pyx_PyObject_GetAttrStrNoError(obj, attr_name); +#endif + res = _PyType_Lookup(tp, attr_name); + if (likely(res)) { + descrgetfunc f = Py_TYPE(res)->tp_descr_get; + if (!f) { + Py_INCREF(res); + } else { + res = f(res, obj, (PyObject *)tp); + } + } else if (with_error) { + PyErr_SetObject(PyExc_AttributeError, attr_name); + } + return res; +} +#endif + +/* GetItemInt */ +static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { + PyObject *r; + if (unlikely(!j)) return NULL; + r = PyObject_GetItem(o, j); + Py_DECREF(j); + return r; +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + Py_ssize_t wrapped_i = i; + if (wraparound & unlikely(i < 0)) { + wrapped_i += PyList_GET_SIZE(o); + } + if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) { + PyObject *r = PyList_GET_ITEM(o, wrapped_i); + Py_INCREF(r); + return r; + } + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +#else + return PySequence_GetItem(o, i); +#endif +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + Py_ssize_t wrapped_i = i; + if (wraparound & unlikely(i < 0)) { + wrapped_i += PyTuple_GET_SIZE(o); + } + if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) { + PyObject *r = PyTuple_GET_ITEM(o, wrapped_i); + Py_INCREF(r); + return r; + } + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +#else + return PySequence_GetItem(o, i); +#endif +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS + if (is_list || PyList_CheckExact(o)) { + Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); + if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) { + PyObject *r = PyList_GET_ITEM(o, n); + Py_INCREF(r); + return r; + } + } + else if (PyTuple_CheckExact(o)) { + Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); + if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) { + PyObject *r = PyTuple_GET_ITEM(o, n); + Py_INCREF(r); + return r; + } + } else { + PyMappingMethods *mm = Py_TYPE(o)->tp_as_mapping; + PySequenceMethods *sm = Py_TYPE(o)->tp_as_sequence; + if (mm && mm->mp_subscript) { + PyObject *r, *key = PyInt_FromSsize_t(i); + if (unlikely(!key)) return NULL; + r = mm->mp_subscript(o, key); + Py_DECREF(key); + return r; + } + if (likely(sm && sm->sq_item)) { + if (wraparound && unlikely(i < 0) && likely(sm->sq_length)) { + Py_ssize_t l = sm->sq_length(o); + if (likely(l >= 0)) { + i += l; + } else { + if (!PyErr_ExceptionMatches(PyExc_OverflowError)) + return NULL; + PyErr_Clear(); + } + } + return sm->sq_item(o, i); + } + } +#else + if (is_list || !PyMapping_Check(o)) { + return PySequence_GetItem(o, i); + } +#endif + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +} + +/* PyObjectSetAttrStr */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) { + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_setattro)) + return tp->tp_setattro(obj, attr_name, value); +#if PY_MAJOR_VERSION < 3 + if (likely(tp->tp_setattr)) + return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value); +#endif + return PyObject_SetAttr(obj, attr_name, value); +} +#endif + +/* ExtTypeTest */ +static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { + __Pyx_TypeName obj_type_name; + __Pyx_TypeName type_name; + if (unlikely(!type)) { + PyErr_SetString(PyExc_SystemError, "Missing type object"); + return 0; + } + if (likely(__Pyx_TypeCheck(obj, type))) + return 1; + obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj)); + type_name = __Pyx_PyType_GetName(type); + PyErr_Format(PyExc_TypeError, + "Cannot convert " __Pyx_FMT_TYPENAME " to " __Pyx_FMT_TYPENAME, + obj_type_name, type_name); + __Pyx_DECREF_TypeName(obj_type_name); + __Pyx_DECREF_TypeName(type_name); + return 0; +} + +/* SliceObject */ +static CYTHON_INLINE int __Pyx_PyObject_SetSlice(PyObject* obj, PyObject* value, + Py_ssize_t cstart, Py_ssize_t cstop, + PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice, + int has_cstart, int has_cstop, int wraparound) { + __Pyx_TypeName obj_type_name; +#if CYTHON_USE_TYPE_SLOTS + PyMappingMethods* mp; +#if PY_MAJOR_VERSION < 3 + PySequenceMethods* ms = Py_TYPE(obj)->tp_as_sequence; + if (likely(ms && ms->sq_ass_slice)) { + if (!has_cstart) { + if (_py_start && (*_py_start != Py_None)) { + cstart = __Pyx_PyIndex_AsSsize_t(*_py_start); + if ((cstart == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad; + } else + cstart = 0; + } + if (!has_cstop) { + if (_py_stop && (*_py_stop != Py_None)) { + cstop = __Pyx_PyIndex_AsSsize_t(*_py_stop); + if ((cstop == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad; + } else + cstop = PY_SSIZE_T_MAX; + } + if (wraparound && unlikely((cstart < 0) | (cstop < 0)) && likely(ms->sq_length)) { + Py_ssize_t l = ms->sq_length(obj); + if (likely(l >= 0)) { + if (cstop < 0) { + cstop += l; + if (cstop < 0) cstop = 0; + } + if (cstart < 0) { + cstart += l; + if (cstart < 0) cstart = 0; + } + } else { + if (!PyErr_ExceptionMatches(PyExc_OverflowError)) + goto bad; + PyErr_Clear(); + } + } + return ms->sq_ass_slice(obj, cstart, cstop, value); + } +#else + CYTHON_UNUSED_VAR(wraparound); +#endif + mp = Py_TYPE(obj)->tp_as_mapping; + if (likely(mp && mp->mp_ass_subscript)) +#else + CYTHON_UNUSED_VAR(wraparound); +#endif + { + int result; + PyObject *py_slice, *py_start, *py_stop; + if (_py_slice) { + py_slice = *_py_slice; + } else { + PyObject* owned_start = NULL; + PyObject* owned_stop = NULL; + if (_py_start) { + py_start = *_py_start; + } else { + if (has_cstart) { + owned_start = py_start = PyInt_FromSsize_t(cstart); + if (unlikely(!py_start)) goto bad; + } else + py_start = Py_None; + } + if (_py_stop) { + py_stop = *_py_stop; + } else { + if (has_cstop) { + owned_stop = py_stop = PyInt_FromSsize_t(cstop); + if (unlikely(!py_stop)) { + Py_XDECREF(owned_start); + goto bad; + } + } else + py_stop = Py_None; + } + py_slice = PySlice_New(py_start, py_stop, Py_None); + Py_XDECREF(owned_start); + Py_XDECREF(owned_stop); + if (unlikely(!py_slice)) goto bad; + } +#if CYTHON_USE_TYPE_SLOTS + result = mp->mp_ass_subscript(obj, py_slice, value); +#else + result = value ? PyObject_SetItem(obj, py_slice, value) : PyObject_DelItem(obj, py_slice); +#endif + if (!_py_slice) { + Py_DECREF(py_slice); + } + return result; + } + obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj)); + PyErr_Format(PyExc_TypeError, + "'" __Pyx_FMT_TYPENAME "' object does not support slice %.10s", + obj_type_name, value ? "assignment" : "deletion"); + __Pyx_DECREF_TypeName(obj_type_name); +bad: + return -1; +} + +/* PyObjectCall2Args */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) { + PyObject *args[3] = {NULL, arg1, arg2}; + return __Pyx_PyObject_FastCall(function, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); +} + +/* PyObjectGetMethod */ +static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) { + PyObject *attr; +#if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP + __Pyx_TypeName type_name; + PyTypeObject *tp = Py_TYPE(obj); + PyObject *descr; + descrgetfunc f = NULL; + PyObject **dictptr, *dict; + int meth_found = 0; + assert (*method == NULL); + if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) { + attr = __Pyx_PyObject_GetAttrStr(obj, name); + goto try_unpack; + } + if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) { + return 0; + } + descr = _PyType_Lookup(tp, name); + if (likely(descr != NULL)) { + Py_INCREF(descr); +#if defined(Py_TPFLAGS_METHOD_DESCRIPTOR) && Py_TPFLAGS_METHOD_DESCRIPTOR + if (__Pyx_PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_METHOD_DESCRIPTOR)) +#elif PY_MAJOR_VERSION >= 3 + #ifdef __Pyx_CyFunction_USED + if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr))) + #else + if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type))) + #endif +#else + #ifdef __Pyx_CyFunction_USED + if (likely(PyFunction_Check(descr) || __Pyx_CyFunction_Check(descr))) + #else + if (likely(PyFunction_Check(descr))) + #endif +#endif + { + meth_found = 1; + } else { + f = Py_TYPE(descr)->tp_descr_get; + if (f != NULL && PyDescr_IsData(descr)) { + attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); + Py_DECREF(descr); + goto try_unpack; + } + } + } + dictptr = _PyObject_GetDictPtr(obj); + if (dictptr != NULL && (dict = *dictptr) != NULL) { + Py_INCREF(dict); + attr = __Pyx_PyDict_GetItemStr(dict, name); + if (attr != NULL) { + Py_INCREF(attr); + Py_DECREF(dict); + Py_XDECREF(descr); + goto try_unpack; + } + Py_DECREF(dict); + } + if (meth_found) { + *method = descr; + return 1; + } + if (f != NULL) { + attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); + Py_DECREF(descr); + goto try_unpack; + } + if (likely(descr != NULL)) { + *method = descr; + return 0; + } + type_name = __Pyx_PyType_GetName(tp); + PyErr_Format(PyExc_AttributeError, +#if PY_MAJOR_VERSION >= 3 + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'", + type_name, name); +#else + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%.400s'", + type_name, PyString_AS_STRING(name)); +#endif + __Pyx_DECREF_TypeName(type_name); + return 0; +#else + attr = __Pyx_PyObject_GetAttrStr(obj, name); + goto try_unpack; +#endif +try_unpack: +#if CYTHON_UNPACK_METHODS + if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) { + PyObject *function = PyMethod_GET_FUNCTION(attr); + Py_INCREF(function); + Py_DECREF(attr); + *method = function; + return 1; + } +#endif + *method = attr; + return 0; +} + +/* PyObjectCallMethod1 */ +#if !(CYTHON_VECTORCALL && __PYX_LIMITED_VERSION_HEX >= 0x030C00A2) +static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) { + PyObject *result = __Pyx_PyObject_CallOneArg(method, arg); + Py_DECREF(method); + return result; +} +#endif +static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) { +#if CYTHON_VECTORCALL && __PYX_LIMITED_VERSION_HEX >= 0x030C00A2 + PyObject *args[2] = {obj, arg}; + (void) __Pyx_PyObject_GetMethod; + (void) __Pyx_PyObject_CallOneArg; + (void) __Pyx_PyObject_Call2Args; + return PyObject_VectorcallMethod(method_name, args, 2 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL); +#else + PyObject *method = NULL, *result; + int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); + if (likely(is_method)) { + result = __Pyx_PyObject_Call2Args(method, obj, arg); + Py_DECREF(method); + return result; + } + if (unlikely(!method)) return NULL; + return __Pyx__PyObject_CallMethod1(method, arg); +#endif +} + +/* append */ +static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x) { + if (likely(PyList_CheckExact(L))) { + if (unlikely(__Pyx_PyList_Append(L, x) < 0)) return -1; + } else { + PyObject* retval = __Pyx_PyObject_CallMethod1(L, __pyx_n_s_append, x); + if (unlikely(!retval)) + return -1; + Py_DECREF(retval); + } + return 0; +} + +/* RaiseUnboundLocalError */ +static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) { + PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname); +} + +/* IterFinish */ +static CYTHON_INLINE int __Pyx_IterFinish(void) { + PyObject* exc_type; + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (unlikely(exc_type)) { + if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) + return -1; + __Pyx_PyErr_Clear(); + return 0; + } + return 0; +} + +/* set_iter */ +static CYTHON_INLINE PyObject* __Pyx_set_iterator(PyObject* iterable, int is_set, + Py_ssize_t* p_orig_length, int* p_source_is_set) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030d0000 + is_set = is_set || likely(PySet_CheckExact(iterable) || PyFrozenSet_CheckExact(iterable)); + *p_source_is_set = is_set; + if (likely(is_set)) { + *p_orig_length = PySet_Size(iterable); + Py_INCREF(iterable); + return iterable; + } +#else + CYTHON_UNUSED_VAR(is_set); + *p_source_is_set = 0; +#endif + *p_orig_length = 0; + return PyObject_GetIter(iterable); +} +static CYTHON_INLINE int __Pyx_set_iter_next( + PyObject* iter_obj, Py_ssize_t orig_length, + Py_ssize_t* ppos, PyObject **value, + int source_is_set) { + if (!CYTHON_COMPILING_IN_CPYTHON || PY_VERSION_HEX >= 0x030d0000 || unlikely(!source_is_set)) { + *value = PyIter_Next(iter_obj); + if (unlikely(!*value)) { + return __Pyx_IterFinish(); + } + CYTHON_UNUSED_VAR(orig_length); + CYTHON_UNUSED_VAR(ppos); + return 1; + } +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030d0000 + if (unlikely(PySet_GET_SIZE(iter_obj) != orig_length)) { + PyErr_SetString( + PyExc_RuntimeError, + "set changed size during iteration"); + return -1; + } + { + Py_hash_t hash; + int ret = _PySet_NextEntry(iter_obj, ppos, value, &hash); + assert (ret != -1); + if (likely(ret)) { + Py_INCREF(*value); + return 1; + } + } +#endif + return 0; +} + +/* RaiseTooManyValuesToUnpack */ +static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { + PyErr_Format(PyExc_ValueError, + "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected); +} + +/* RaiseNeedMoreValuesToUnpack */ +static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { + PyErr_Format(PyExc_ValueError, + "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack", + index, (index == 1) ? "" : "s"); +} + +/* UnpackItemEndCheck */ +static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) { + if (unlikely(retval)) { + Py_DECREF(retval); + __Pyx_RaiseTooManyValuesError(expected); + return -1; + } + return __Pyx_IterFinish(); +} + +/* ArgTypeTest */ +static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact) +{ + __Pyx_TypeName type_name; + __Pyx_TypeName obj_type_name; + if (unlikely(!type)) { + PyErr_SetString(PyExc_SystemError, "Missing type object"); + return 0; + } + else if (exact) { + #if PY_MAJOR_VERSION == 2 + if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1; + #endif + } + else { + if (likely(__Pyx_TypeCheck(obj, type))) return 1; + } + type_name = __Pyx_PyType_GetName(type); + obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj)); + PyErr_Format(PyExc_TypeError, + "Argument '%.200s' has incorrect type (expected " __Pyx_FMT_TYPENAME + ", got " __Pyx_FMT_TYPENAME ")", name, type_name, obj_type_name); + __Pyx_DECREF_TypeName(type_name); + __Pyx_DECREF_TypeName(obj_type_name); + return 0; +} + +/* pyfrozenset_new */ +static CYTHON_INLINE PyObject* __Pyx_PyFrozenSet_New(PyObject* it) { + if (it) { + PyObject* result; +#if CYTHON_COMPILING_IN_PYPY + PyObject* args; + args = PyTuple_Pack(1, it); + if (unlikely(!args)) + return NULL; + result = PyObject_Call((PyObject*)&PyFrozenSet_Type, args, NULL); + Py_DECREF(args); + return result; +#else + if (PyFrozenSet_CheckExact(it)) { + Py_INCREF(it); + return it; + } + result = PyFrozenSet_New(it); + if (unlikely(!result)) + return NULL; + if ((PY_VERSION_HEX >= 0x031000A1) || likely(PySet_GET_SIZE(result))) + return result; + Py_DECREF(result); +#endif + } +#if CYTHON_USE_TYPE_SLOTS + return PyFrozenSet_Type.tp_new(&PyFrozenSet_Type, __pyx_empty_tuple, NULL); +#else + return PyObject_Call((PyObject*)&PyFrozenSet_Type, __pyx_empty_tuple, NULL); +#endif +} + +/* py_set_discard_unhashable */ +static int __Pyx_PySet_DiscardUnhashable(PyObject *set, PyObject *key) { + PyObject *tmpkey; + int rv; + if (likely(!PySet_Check(key) || !PyErr_ExceptionMatches(PyExc_TypeError))) + return -1; + PyErr_Clear(); + tmpkey = __Pyx_PyFrozenSet_New(key); + if (tmpkey == NULL) + return -1; + rv = PySet_Discard(set, tmpkey); + Py_DECREF(tmpkey); + return rv; +} + +/* py_set_discard */ +static CYTHON_INLINE int __Pyx_PySet_Discard(PyObject *set, PyObject *key) { + int found = PySet_Discard(set, key); + if (unlikely(found < 0)) { + found = __Pyx_PySet_DiscardUnhashable(set, key); + } + return found; +} + +/* PySetContains */ +static int __Pyx_PySet_ContainsUnhashable(PyObject *set, PyObject *key) { + int result = -1; + if (PySet_Check(key) && PyErr_ExceptionMatches(PyExc_TypeError)) { + PyObject *tmpkey; + PyErr_Clear(); + tmpkey = __Pyx_PyFrozenSet_New(key); + if (tmpkey != NULL) { + result = PySet_Contains(set, tmpkey); + Py_DECREF(tmpkey); + } + } + return result; +} +static CYTHON_INLINE int __Pyx_PySet_ContainsTF(PyObject* key, PyObject* set, int eq) { + int result = PySet_Contains(set, key); + if (unlikely(result < 0)) { + result = __Pyx_PySet_ContainsUnhashable(set, key); + } + return unlikely(result < 0) ? result : (result == (eq == Py_EQ)); +} + +/* SwapException */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_value = exc_info->exc_value; + exc_info->exc_value = *value; + if (tmp_value == NULL || tmp_value == Py_None) { + Py_XDECREF(tmp_value); + tmp_value = NULL; + tmp_type = NULL; + tmp_tb = NULL; + } else { + tmp_type = (PyObject*) Py_TYPE(tmp_value); + Py_INCREF(tmp_type); + #if CYTHON_COMPILING_IN_CPYTHON + tmp_tb = ((PyBaseExceptionObject*) tmp_value)->traceback; + Py_XINCREF(tmp_tb); + #else + tmp_tb = PyException_GetTraceback(tmp_value); + #endif + } + #elif CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = *type; + exc_info->exc_value = *value; + exc_info->exc_traceback = *tb; + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = *type; + tstate->exc_value = *value; + tstate->exc_traceback = *tb; + #endif + *type = tmp_type; + *value = tmp_value; + *tb = tmp_tb; +} +#else +static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb); + PyErr_SetExcInfo(*type, *value, *tb); + *type = tmp_type; + *value = tmp_value; + *tb = tmp_tb; +} +#endif + +/* RaiseNoneIterError */ +static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); +} + +/* PyIntBinop */ +#if !CYTHON_COMPILING_IN_PYPY +static PyObject* __Pyx_PyInt_AndObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) { + CYTHON_MAYBE_UNUSED_VAR(intval); + CYTHON_MAYBE_UNUSED_VAR(inplace); + CYTHON_UNUSED_VAR(zerodivision_check); + #if PY_MAJOR_VERSION < 3 + if (likely(PyInt_CheckExact(op1))) { + const long b = intval; + long a = PyInt_AS_LONG(op1); + + return PyInt_FromLong(a & b); + } + #endif + #if CYTHON_USE_PYLONG_INTERNALS + if (likely(PyLong_CheckExact(op1))) { + const long b = intval; + long a, x; +#ifdef HAVE_LONG_LONG + const PY_LONG_LONG llb = intval; + PY_LONG_LONG lla, llx; +#endif + if ((intval & PyLong_MASK) == intval) { + long last_digit = (long) __Pyx_PyLong_Digits(op1)[0]; + long result = intval & (likely(__Pyx_PyLong_IsPos(op1)) ? last_digit : (PyLong_MASK - last_digit + 1)); + return PyLong_FromLong(result); + } + if (unlikely(__Pyx_PyLong_IsZero(op1))) { + return __Pyx_NewRef(op1); + } + if (likely(__Pyx_PyLong_IsCompact(op1))) { + a = __Pyx_PyLong_CompactValue(op1); + } else { + const digit* digits = __Pyx_PyLong_Digits(op1); + const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(op1); + switch (size) { + case -2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case -3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case -4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + default: return PyLong_Type.tp_as_number->nb_and(op1, op2); + } + } + x = a & b; + return PyLong_FromLong(x); +#ifdef HAVE_LONG_LONG + long_long: + llx = lla & llb; + return PyLong_FromLongLong(llx); +#endif + + + } + #endif + return (inplace ? PyNumber_InPlaceAnd : PyNumber_And)(op1, op2); +} +#endif + +/* UnpackUnboundCMethod */ +static PyObject *__Pyx_SelflessCall(PyObject *method, PyObject *args, PyObject *kwargs) { + PyObject *result; + PyObject *selfless_args = PyTuple_GetSlice(args, 1, PyTuple_Size(args)); + if (unlikely(!selfless_args)) return NULL; + result = PyObject_Call(method, selfless_args, kwargs); + Py_DECREF(selfless_args); + return result; +} +static PyMethodDef __Pyx_UnboundCMethod_Def = { + "CythonUnboundCMethod", + __PYX_REINTERPRET_FUNCION(PyCFunction, __Pyx_SelflessCall), + METH_VARARGS | METH_KEYWORDS, + NULL +}; +static int __Pyx_TryUnpackUnboundCMethod(__Pyx_CachedCFunction* target) { + PyObject *method; + method = __Pyx_PyObject_GetAttrStr(target->type, *target->method_name); + if (unlikely(!method)) + return -1; + target->method = method; +#if CYTHON_COMPILING_IN_CPYTHON + #if PY_MAJOR_VERSION >= 3 + if (likely(__Pyx_TypeCheck(method, &PyMethodDescr_Type))) + #else + if (likely(!__Pyx_CyOrPyCFunction_Check(method))) + #endif + { + PyMethodDescrObject *descr = (PyMethodDescrObject*) method; + target->func = descr->d_method->ml_meth; + target->flag = descr->d_method->ml_flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_STACKLESS); + } else +#endif +#if CYTHON_COMPILING_IN_PYPY +#else + if (PyCFunction_Check(method)) +#endif + { + PyObject *self; + int self_found; +#if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_PYPY + self = PyObject_GetAttrString(method, "__self__"); + if (!self) { + PyErr_Clear(); + } +#else + self = PyCFunction_GET_SELF(method); +#endif + self_found = (self && self != Py_None); +#if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_PYPY + Py_XDECREF(self); +#endif + if (self_found) { + PyObject *unbound_method = PyCFunction_New(&__Pyx_UnboundCMethod_Def, method); + if (unlikely(!unbound_method)) return -1; + Py_DECREF(method); + target->method = unbound_method; + } + } + return 0; +} + +/* CallUnboundCMethod1 */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg) { + if (likely(cfunc->func)) { + int flag = cfunc->flag; + if (flag == METH_O) { + return (*(cfunc->func))(self, arg); + } else if ((PY_VERSION_HEX >= 0x030600B1) && flag == METH_FASTCALL) { + #if PY_VERSION_HEX >= 0x030700A0 + return (*(__Pyx_PyCFunctionFast)(void*)(PyCFunction)cfunc->func)(self, &arg, 1); + #else + return (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)cfunc->func)(self, &arg, 1, NULL); + #endif + } else if ((PY_VERSION_HEX >= 0x030700A0) && flag == (METH_FASTCALL | METH_KEYWORDS)) { + return (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)cfunc->func)(self, &arg, 1, NULL); + } + } + return __Pyx__CallUnboundCMethod1(cfunc, self, arg); +} +#endif +static PyObject* __Pyx__CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg){ + PyObject *args, *result = NULL; + if (unlikely(!cfunc->func && !cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL; +#if CYTHON_COMPILING_IN_CPYTHON + if (cfunc->func && (cfunc->flag & METH_VARARGS)) { + args = PyTuple_New(1); + if (unlikely(!args)) goto bad; + Py_INCREF(arg); + PyTuple_SET_ITEM(args, 0, arg); + if (cfunc->flag & METH_KEYWORDS) + result = (*(PyCFunctionWithKeywords)(void*)(PyCFunction)cfunc->func)(self, args, NULL); + else + result = (*cfunc->func)(self, args); + } else { + args = PyTuple_New(2); + if (unlikely(!args)) goto bad; + Py_INCREF(self); + PyTuple_SET_ITEM(args, 0, self); + Py_INCREF(arg); + PyTuple_SET_ITEM(args, 1, arg); + result = __Pyx_PyObject_Call(cfunc->method, args, NULL); + } +#else + args = PyTuple_Pack(2, self, arg); + if (unlikely(!args)) goto bad; + result = __Pyx_PyObject_Call(cfunc->method, args, NULL); +#endif +bad: + Py_XDECREF(args); + return result; +} + +/* CallUnboundCMethod2 */ +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030600B1 +static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2) { + if (likely(cfunc->func)) { + PyObject *args[2] = {arg1, arg2}; + if (cfunc->flag == METH_FASTCALL) { + #if PY_VERSION_HEX >= 0x030700A0 + return (*(__Pyx_PyCFunctionFast)(void*)(PyCFunction)cfunc->func)(self, args, 2); + #else + return (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)cfunc->func)(self, args, 2, NULL); + #endif + } + #if PY_VERSION_HEX >= 0x030700A0 + if (cfunc->flag == (METH_FASTCALL | METH_KEYWORDS)) + return (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)cfunc->func)(self, args, 2, NULL); + #endif + } + return __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2); +} +#endif +static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2){ + PyObject *args, *result = NULL; + if (unlikely(!cfunc->func && !cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL; +#if CYTHON_COMPILING_IN_CPYTHON + if (cfunc->func && (cfunc->flag & METH_VARARGS)) { + args = PyTuple_New(2); + if (unlikely(!args)) goto bad; + Py_INCREF(arg1); + PyTuple_SET_ITEM(args, 0, arg1); + Py_INCREF(arg2); + PyTuple_SET_ITEM(args, 1, arg2); + if (cfunc->flag & METH_KEYWORDS) + result = (*(PyCFunctionWithKeywords)(void*)(PyCFunction)cfunc->func)(self, args, NULL); + else + result = (*cfunc->func)(self, args); + } else { + args = PyTuple_New(3); + if (unlikely(!args)) goto bad; + Py_INCREF(self); + PyTuple_SET_ITEM(args, 0, self); + Py_INCREF(arg1); + PyTuple_SET_ITEM(args, 1, arg1); + Py_INCREF(arg2); + PyTuple_SET_ITEM(args, 2, arg2); + result = __Pyx_PyObject_Call(cfunc->method, args, NULL); + } +#else + args = PyTuple_Pack(3, self, arg1, arg2); + if (unlikely(!args)) goto bad; + result = __Pyx_PyObject_Call(cfunc->method, args, NULL); +#endif +bad: + Py_XDECREF(args); + return result; +} + +/* dict_getitem_default */ +static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObject* default_value) { + PyObject* value; +#if PY_MAJOR_VERSION >= 3 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07020000) + value = PyDict_GetItemWithError(d, key); + if (unlikely(!value)) { + if (unlikely(PyErr_Occurred())) + return NULL; + value = default_value; + } + Py_INCREF(value); + if ((1)); +#else + if (PyString_CheckExact(key) || PyUnicode_CheckExact(key) || PyInt_CheckExact(key)) { + value = PyDict_GetItem(d, key); + if (unlikely(!value)) { + value = default_value; + } + Py_INCREF(value); + } +#endif + else { + if (default_value == Py_None) + value = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PyDict_Type_get, d, key); + else + value = __Pyx_CallUnboundCMethod2(&__pyx_umethod_PyDict_Type_get, d, key, default_value); + } + return value; +} + +/* PyObjectCallMethod0 */ +static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) { + PyObject *method = NULL, *result = NULL; + int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); + if (likely(is_method)) { + result = __Pyx_PyObject_CallOneArg(method, obj); + Py_DECREF(method); + return result; + } + if (unlikely(!method)) goto bad; + result = __Pyx_PyObject_CallNoArg(method); + Py_DECREF(method); +bad: + return result; +} + +/* UnpackTupleError */ +static void __Pyx_UnpackTupleError(PyObject *t, Py_ssize_t index) { + if (t == Py_None) { + __Pyx_RaiseNoneNotIterableError(); + } else if (PyTuple_GET_SIZE(t) < index) { + __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(t)); + } else { + __Pyx_RaiseTooManyValuesError(index); + } +} + +/* UnpackTuple2 */ +static CYTHON_INLINE int __Pyx_unpack_tuple2_exact( + PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2, int decref_tuple) { + PyObject *value1 = NULL, *value2 = NULL; +#if CYTHON_COMPILING_IN_PYPY + value1 = PySequence_ITEM(tuple, 0); if (unlikely(!value1)) goto bad; + value2 = PySequence_ITEM(tuple, 1); if (unlikely(!value2)) goto bad; +#else + value1 = PyTuple_GET_ITEM(tuple, 0); Py_INCREF(value1); + value2 = PyTuple_GET_ITEM(tuple, 1); Py_INCREF(value2); +#endif + if (decref_tuple) { + Py_DECREF(tuple); + } + *pvalue1 = value1; + *pvalue2 = value2; + return 0; +#if CYTHON_COMPILING_IN_PYPY +bad: + Py_XDECREF(value1); + Py_XDECREF(value2); + if (decref_tuple) { Py_XDECREF(tuple); } + return -1; +#endif +} +static int __Pyx_unpack_tuple2_generic(PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2, + int has_known_size, int decref_tuple) { + Py_ssize_t index; + PyObject *value1 = NULL, *value2 = NULL, *iter = NULL; + iternextfunc iternext; + iter = PyObject_GetIter(tuple); + if (unlikely(!iter)) goto bad; + if (decref_tuple) { Py_DECREF(tuple); tuple = NULL; } + iternext = __Pyx_PyObject_GetIterNextFunc(iter); + value1 = iternext(iter); if (unlikely(!value1)) { index = 0; goto unpacking_failed; } + value2 = iternext(iter); if (unlikely(!value2)) { index = 1; goto unpacking_failed; } + if (!has_known_size && unlikely(__Pyx_IternextUnpackEndCheck(iternext(iter), 2))) goto bad; + Py_DECREF(iter); + *pvalue1 = value1; + *pvalue2 = value2; + return 0; +unpacking_failed: + if (!has_known_size && __Pyx_IterFinish() == 0) + __Pyx_RaiseNeedMoreValuesError(index); +bad: + Py_XDECREF(iter); + Py_XDECREF(value1); + Py_XDECREF(value2); + if (decref_tuple) { Py_XDECREF(tuple); } + return -1; +} + +/* dict_iter */ +#if CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 +#include +#endif +static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* iterable, int is_dict, PyObject* method_name, + Py_ssize_t* p_orig_length, int* p_source_is_dict) { + is_dict = is_dict || likely(PyDict_CheckExact(iterable)); + *p_source_is_dict = is_dict; + if (is_dict) { +#if !CYTHON_COMPILING_IN_PYPY + *p_orig_length = PyDict_Size(iterable); + Py_INCREF(iterable); + return iterable; +#elif PY_MAJOR_VERSION >= 3 + static PyObject *py_items = NULL, *py_keys = NULL, *py_values = NULL; + PyObject **pp = NULL; + if (method_name) { + const char *name = PyUnicode_AsUTF8(method_name); + if (strcmp(name, "iteritems") == 0) pp = &py_items; + else if (strcmp(name, "iterkeys") == 0) pp = &py_keys; + else if (strcmp(name, "itervalues") == 0) pp = &py_values; + if (pp) { + if (!*pp) { + *pp = PyUnicode_FromString(name + 4); + if (!*pp) + return NULL; + } + method_name = *pp; + } + } +#endif + } + *p_orig_length = 0; + if (method_name) { + PyObject* iter; + iterable = __Pyx_PyObject_CallMethod0(iterable, method_name); + if (!iterable) + return NULL; +#if !CYTHON_COMPILING_IN_PYPY + if (PyTuple_CheckExact(iterable) || PyList_CheckExact(iterable)) + return iterable; +#endif + iter = PyObject_GetIter(iterable); + Py_DECREF(iterable); + return iter; + } + return PyObject_GetIter(iterable); +} +static CYTHON_INLINE int __Pyx_dict_iter_next( + PyObject* iter_obj, CYTHON_NCP_UNUSED Py_ssize_t orig_length, CYTHON_NCP_UNUSED Py_ssize_t* ppos, + PyObject** pkey, PyObject** pvalue, PyObject** pitem, int source_is_dict) { + PyObject* next_item; +#if !CYTHON_COMPILING_IN_PYPY + if (source_is_dict) { + PyObject *key, *value; + if (unlikely(orig_length != PyDict_Size(iter_obj))) { + PyErr_SetString(PyExc_RuntimeError, "dictionary changed size during iteration"); + return -1; + } + if (unlikely(!PyDict_Next(iter_obj, ppos, &key, &value))) { + return 0; + } + if (pitem) { + PyObject* tuple = PyTuple_New(2); + if (unlikely(!tuple)) { + return -1; + } + Py_INCREF(key); + Py_INCREF(value); + PyTuple_SET_ITEM(tuple, 0, key); + PyTuple_SET_ITEM(tuple, 1, value); + *pitem = tuple; + } else { + if (pkey) { + Py_INCREF(key); + *pkey = key; + } + if (pvalue) { + Py_INCREF(value); + *pvalue = value; + } + } + return 1; + } else if (PyTuple_CheckExact(iter_obj)) { + Py_ssize_t pos = *ppos; + if (unlikely(pos >= PyTuple_GET_SIZE(iter_obj))) return 0; + *ppos = pos + 1; + next_item = PyTuple_GET_ITEM(iter_obj, pos); + Py_INCREF(next_item); + } else if (PyList_CheckExact(iter_obj)) { + Py_ssize_t pos = *ppos; + if (unlikely(pos >= PyList_GET_SIZE(iter_obj))) return 0; + *ppos = pos + 1; + next_item = PyList_GET_ITEM(iter_obj, pos); + Py_INCREF(next_item); + } else +#endif + { + next_item = PyIter_Next(iter_obj); + if (unlikely(!next_item)) { + return __Pyx_IterFinish(); + } + } + if (pitem) { + *pitem = next_item; + } else if (pkey && pvalue) { + if (__Pyx_unpack_tuple2(next_item, pkey, pvalue, source_is_dict, source_is_dict, 1)) + return -1; + } else if (pkey) { + *pkey = next_item; + } else { + *pvalue = next_item; + } + return 1; +} + +/* DictGetItem */ +#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY +static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) { + PyObject *value; + value = PyDict_GetItemWithError(d, key); + if (unlikely(!value)) { + if (!PyErr_Occurred()) { + if (unlikely(PyTuple_Check(key))) { + PyObject* args = PyTuple_Pack(1, key); + if (likely(args)) { + PyErr_SetObject(PyExc_KeyError, args); + Py_DECREF(args); + } + } else { + PyErr_SetObject(PyExc_KeyError, key); + } + } + return NULL; + } + Py_INCREF(value); + return value; +} +#endif + +/* SliceObject */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(PyObject* obj, + Py_ssize_t cstart, Py_ssize_t cstop, + PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice, + int has_cstart, int has_cstop, int wraparound) { + __Pyx_TypeName obj_type_name; +#if CYTHON_USE_TYPE_SLOTS + PyMappingMethods* mp; +#if PY_MAJOR_VERSION < 3 + PySequenceMethods* ms = Py_TYPE(obj)->tp_as_sequence; + if (likely(ms && ms->sq_slice)) { + if (!has_cstart) { + if (_py_start && (*_py_start != Py_None)) { + cstart = __Pyx_PyIndex_AsSsize_t(*_py_start); + if ((cstart == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad; + } else + cstart = 0; + } + if (!has_cstop) { + if (_py_stop && (*_py_stop != Py_None)) { + cstop = __Pyx_PyIndex_AsSsize_t(*_py_stop); + if ((cstop == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad; + } else + cstop = PY_SSIZE_T_MAX; + } + if (wraparound && unlikely((cstart < 0) | (cstop < 0)) && likely(ms->sq_length)) { + Py_ssize_t l = ms->sq_length(obj); + if (likely(l >= 0)) { + if (cstop < 0) { + cstop += l; + if (cstop < 0) cstop = 0; + } + if (cstart < 0) { + cstart += l; + if (cstart < 0) cstart = 0; + } + } else { + if (!PyErr_ExceptionMatches(PyExc_OverflowError)) + goto bad; + PyErr_Clear(); + } + } + return ms->sq_slice(obj, cstart, cstop); + } +#else + CYTHON_UNUSED_VAR(wraparound); +#endif + mp = Py_TYPE(obj)->tp_as_mapping; + if (likely(mp && mp->mp_subscript)) +#else + CYTHON_UNUSED_VAR(wraparound); +#endif + { + PyObject* result; + PyObject *py_slice, *py_start, *py_stop; + if (_py_slice) { + py_slice = *_py_slice; + } else { + PyObject* owned_start = NULL; + PyObject* owned_stop = NULL; + if (_py_start) { + py_start = *_py_start; + } else { + if (has_cstart) { + owned_start = py_start = PyInt_FromSsize_t(cstart); + if (unlikely(!py_start)) goto bad; + } else + py_start = Py_None; + } + if (_py_stop) { + py_stop = *_py_stop; + } else { + if (has_cstop) { + owned_stop = py_stop = PyInt_FromSsize_t(cstop); + if (unlikely(!py_stop)) { + Py_XDECREF(owned_start); + goto bad; + } + } else + py_stop = Py_None; + } + py_slice = PySlice_New(py_start, py_stop, Py_None); + Py_XDECREF(owned_start); + Py_XDECREF(owned_stop); + if (unlikely(!py_slice)) goto bad; + } +#if CYTHON_USE_TYPE_SLOTS + result = mp->mp_subscript(obj, py_slice); +#else + result = PyObject_GetItem(obj, py_slice); +#endif + if (!_py_slice) { + Py_DECREF(py_slice); + } + return result; + } + obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj)); + PyErr_Format(PyExc_TypeError, + "'" __Pyx_FMT_TYPENAME "' object is unsliceable", obj_type_name); + __Pyx_DECREF_TypeName(obj_type_name); +bad: + return NULL; +} + +/* GetAttr */ +static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) { +#if CYTHON_USE_TYPE_SLOTS +#if PY_MAJOR_VERSION >= 3 + if (likely(PyUnicode_Check(n))) +#else + if (likely(PyString_Check(n))) +#endif + return __Pyx_PyObject_GetAttrStr(o, n); +#endif + return PyObject_GetAttr(o, n); +} + +/* HasAttr */ +static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) { + PyObject *r; + if (unlikely(!__Pyx_PyBaseString_Check(n))) { + PyErr_SetString(PyExc_TypeError, + "hasattr(): attribute name must be string"); + return -1; + } + r = __Pyx_GetAttr(o, n); + if (!r) { + PyErr_Clear(); + return 0; + } else { + Py_DECREF(r); + return 1; + } +} + +/* PyIntBinop */ +#if !CYTHON_COMPILING_IN_PYPY +static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) { + CYTHON_MAYBE_UNUSED_VAR(intval); + CYTHON_MAYBE_UNUSED_VAR(inplace); + CYTHON_UNUSED_VAR(zerodivision_check); + #if PY_MAJOR_VERSION < 3 + if (likely(PyInt_CheckExact(op1))) { + const long b = intval; + long x; + long a = PyInt_AS_LONG(op1); + + x = (long)((unsigned long)a + (unsigned long)b); + if (likely((x^a) >= 0 || (x^b) >= 0)) + return PyInt_FromLong(x); + return PyLong_Type.tp_as_number->nb_add(op1, op2); + } + #endif + #if CYTHON_USE_PYLONG_INTERNALS + if (likely(PyLong_CheckExact(op1))) { + const long b = intval; + long a, x; +#ifdef HAVE_LONG_LONG + const PY_LONG_LONG llb = intval; + PY_LONG_LONG lla, llx; +#endif + if (unlikely(__Pyx_PyLong_IsZero(op1))) { + return __Pyx_NewRef(op2); + } + if (likely(__Pyx_PyLong_IsCompact(op1))) { + a = __Pyx_PyLong_CompactValue(op1); + } else { + const digit* digits = __Pyx_PyLong_Digits(op1); + const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(op1); + switch (size) { + case -2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case -3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case -4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + default: return PyLong_Type.tp_as_number->nb_add(op1, op2); + } + } + x = a + b; + return PyLong_FromLong(x); +#ifdef HAVE_LONG_LONG + long_long: + llx = lla + llb; + return PyLong_FromLongLong(llx); +#endif + + + } + #endif + if (PyFloat_CheckExact(op1)) { + const long b = intval; +#if CYTHON_COMPILING_IN_LIMITED_API + double a = __pyx_PyFloat_AsDouble(op1); +#else + double a = PyFloat_AS_DOUBLE(op1); +#endif + double result; + + PyFPE_START_PROTECT("add", return NULL) + result = ((double)a) + (double)b; + PyFPE_END_PROTECT(result) + return PyFloat_FromDouble(result); + } + return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2); +} +#endif + +/* SliceTupleAndList */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE void __Pyx_crop_slice(Py_ssize_t* _start, Py_ssize_t* _stop, Py_ssize_t* _length) { + Py_ssize_t start = *_start, stop = *_stop, length = *_length; + if (start < 0) { + start += length; + if (start < 0) + start = 0; + } + if (stop < 0) + stop += length; + else if (stop > length) + stop = length; + *_length = stop - start; + *_start = start; + *_stop = stop; +} +static CYTHON_INLINE PyObject* __Pyx_PyList_GetSlice( + PyObject* src, Py_ssize_t start, Py_ssize_t stop) { + Py_ssize_t length = PyList_GET_SIZE(src); + __Pyx_crop_slice(&start, &stop, &length); + if (length <= 0) { + return PyList_New(0); + } + return __Pyx_PyList_FromArray(((PyListObject*)src)->ob_item + start, length); +} +static CYTHON_INLINE PyObject* __Pyx_PyTuple_GetSlice( + PyObject* src, Py_ssize_t start, Py_ssize_t stop) { + Py_ssize_t length = PyTuple_GET_SIZE(src); + __Pyx_crop_slice(&start, &stop, &length); + return __Pyx_PyTuple_FromArray(((PyTupleObject*)src)->ob_item + start, length); +} +#endif + +/* PyIntCompare */ +static CYTHON_INLINE int __Pyx_PyInt_BoolEqObjC(PyObject *op1, PyObject *op2, long intval, long inplace) { + CYTHON_MAYBE_UNUSED_VAR(intval); + CYTHON_UNUSED_VAR(inplace); + if (op1 == op2) { + return 1; + } + #if PY_MAJOR_VERSION < 3 + if (likely(PyInt_CheckExact(op1))) { + const long b = intval; + long a = PyInt_AS_LONG(op1); + return (a == b); + } + #endif + #if CYTHON_USE_PYLONG_INTERNALS + if (likely(PyLong_CheckExact(op1))) { + int unequal; + unsigned long uintval; + Py_ssize_t size = __Pyx_PyLong_DigitCount(op1); + const digit* digits = __Pyx_PyLong_Digits(op1); + if (intval == 0) { + return (__Pyx_PyLong_IsZero(op1) == 1); + } else if (intval < 0) { + if (__Pyx_PyLong_IsNonNeg(op1)) + return 0; + intval = -intval; + } else { + if (__Pyx_PyLong_IsNeg(op1)) + return 0; + } + uintval = (unsigned long) intval; +#if PyLong_SHIFT * 4 < SIZEOF_LONG*8 + if (uintval >> (PyLong_SHIFT * 4)) { + unequal = (size != 5) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) + | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[4] != ((uintval >> (4 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); + } else +#endif +#if PyLong_SHIFT * 3 < SIZEOF_LONG*8 + if (uintval >> (PyLong_SHIFT * 3)) { + unequal = (size != 4) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) + | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); + } else +#endif +#if PyLong_SHIFT * 2 < SIZEOF_LONG*8 + if (uintval >> (PyLong_SHIFT * 2)) { + unequal = (size != 3) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) + | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); + } else +#endif +#if PyLong_SHIFT * 1 < SIZEOF_LONG*8 + if (uintval >> (PyLong_SHIFT * 1)) { + unequal = (size != 2) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) + | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); + } else +#endif + unequal = (size != 1) || (((unsigned long) digits[0]) != (uintval & (unsigned long) PyLong_MASK)); + return (unequal == 0); + } + #endif + if (PyFloat_CheckExact(op1)) { + const long b = intval; +#if CYTHON_COMPILING_IN_LIMITED_API + double a = __pyx_PyFloat_AsDouble(op1); +#else + double a = PyFloat_AS_DOUBLE(op1); +#endif + return ((double)a == (double)b); + } + return __Pyx_PyObject_IsTrueAndDecref( + PyObject_RichCompare(op1, op2, Py_EQ)); +} + +/* ObjectGetItem */ +#if CYTHON_USE_TYPE_SLOTS +static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject *index) { + PyObject *runerr = NULL; + Py_ssize_t key_value; + key_value = __Pyx_PyIndex_AsSsize_t(index); + if (likely(key_value != -1 || !(runerr = PyErr_Occurred()))) { + return __Pyx_GetItemInt_Fast(obj, key_value, 0, 1, 1); + } + if (PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError)) { + __Pyx_TypeName index_type_name = __Pyx_PyType_GetName(Py_TYPE(index)); + PyErr_Clear(); + PyErr_Format(PyExc_IndexError, + "cannot fit '" __Pyx_FMT_TYPENAME "' into an index-sized integer", index_type_name); + __Pyx_DECREF_TypeName(index_type_name); + } + return NULL; +} +static PyObject *__Pyx_PyObject_GetItem_Slow(PyObject *obj, PyObject *key) { + __Pyx_TypeName obj_type_name; + if (likely(PyType_Check(obj))) { + PyObject *meth = __Pyx_PyObject_GetAttrStrNoError(obj, __pyx_n_s_class_getitem); + if (!meth) { + PyErr_Clear(); + } else { + PyObject *result = __Pyx_PyObject_CallOneArg(meth, key); + Py_DECREF(meth); + return result; + } + } + obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj)); + PyErr_Format(PyExc_TypeError, + "'" __Pyx_FMT_TYPENAME "' object is not subscriptable", obj_type_name); + __Pyx_DECREF_TypeName(obj_type_name); + return NULL; +} +static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject *key) { + PyTypeObject *tp = Py_TYPE(obj); + PyMappingMethods *mm = tp->tp_as_mapping; + PySequenceMethods *sm = tp->tp_as_sequence; + if (likely(mm && mm->mp_subscript)) { + return mm->mp_subscript(obj, key); + } + if (likely(sm && sm->sq_item)) { + return __Pyx_PyObject_GetIndex(obj, key); + } + return __Pyx_PyObject_GetItem_Slow(obj, key); +} +#endif + +/* Import */ +static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { + PyObject *module = 0; + PyObject *empty_dict = 0; + PyObject *empty_list = 0; + #if PY_MAJOR_VERSION < 3 + PyObject *py_import; + py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); + if (unlikely(!py_import)) + goto bad; + if (!from_list) { + empty_list = PyList_New(0); + if (unlikely(!empty_list)) + goto bad; + from_list = empty_list; + } + #endif + empty_dict = PyDict_New(); + if (unlikely(!empty_dict)) + goto bad; + { + #if PY_MAJOR_VERSION >= 3 + if (level == -1) { + if (strchr(__Pyx_MODULE_NAME, '.') != NULL) { + module = PyImport_ImportModuleLevelObject( + name, __pyx_d, empty_dict, from_list, 1); + if (unlikely(!module)) { + if (unlikely(!PyErr_ExceptionMatches(PyExc_ImportError))) + goto bad; + PyErr_Clear(); + } + } + level = 0; + } + #endif + if (!module) { + #if PY_MAJOR_VERSION < 3 + PyObject *py_level = PyInt_FromLong(level); + if (unlikely(!py_level)) + goto bad; + module = PyObject_CallFunctionObjArgs(py_import, + name, __pyx_d, empty_dict, from_list, py_level, (PyObject *)NULL); + Py_DECREF(py_level); + #else + module = PyImport_ImportModuleLevelObject( + name, __pyx_d, empty_dict, from_list, level); + #endif + } + } +bad: + Py_XDECREF(empty_dict); + Py_XDECREF(empty_list); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(py_import); + #endif + return module; +} + +/* ImportFrom */ +static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { + PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); + if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { + const char* module_name_str = 0; + PyObject* module_name = 0; + PyObject* module_dot = 0; + PyObject* full_name = 0; + PyErr_Clear(); + module_name_str = PyModule_GetName(module); + if (unlikely(!module_name_str)) { goto modbad; } + module_name = PyUnicode_FromString(module_name_str); + if (unlikely(!module_name)) { goto modbad; } + module_dot = PyUnicode_Concat(module_name, __pyx_kp_u__10); + if (unlikely(!module_dot)) { goto modbad; } + full_name = PyUnicode_Concat(module_dot, name); + if (unlikely(!full_name)) { goto modbad; } + #if PY_VERSION_HEX < 0x030700A1 || (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM < 0x07030400) + { + PyObject *modules = PyImport_GetModuleDict(); + if (unlikely(!modules)) + goto modbad; + value = PyObject_GetItem(modules, full_name); + } + #else + value = PyImport_GetModule(full_name); + #endif + modbad: + Py_XDECREF(full_name); + Py_XDECREF(module_dot); + Py_XDECREF(module_name); + } + if (unlikely(!value)) { + PyErr_Format(PyExc_ImportError, + #if PY_MAJOR_VERSION < 3 + "cannot import name %.230s", PyString_AS_STRING(name)); + #else + "cannot import name %S", name); + #endif + } + return value; +} + +/* FixUpExtensionType */ +#if CYTHON_USE_TYPE_SPECS +static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type) { +#if PY_VERSION_HEX > 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + CYTHON_UNUSED_VAR(spec); + CYTHON_UNUSED_VAR(type); +#else + const PyType_Slot *slot = spec->slots; + while (slot && slot->slot && slot->slot != Py_tp_members) + slot++; + if (slot && slot->slot == Py_tp_members) { + int changed = 0; +#if !(PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON) + const +#endif + PyMemberDef *memb = (PyMemberDef*) slot->pfunc; + while (memb && memb->name) { + if (memb->name[0] == '_' && memb->name[1] == '_') { +#if PY_VERSION_HEX < 0x030900b1 + if (strcmp(memb->name, "__weaklistoffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); + type->tp_weaklistoffset = memb->offset; + changed = 1; + } + else if (strcmp(memb->name, "__dictoffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); + type->tp_dictoffset = memb->offset; + changed = 1; + } +#if CYTHON_METH_FASTCALL + else if (strcmp(memb->name, "__vectorcalloffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); +#if PY_VERSION_HEX >= 0x030800b4 + type->tp_vectorcall_offset = memb->offset; +#else + type->tp_print = (printfunc) memb->offset; +#endif + changed = 1; + } +#endif +#else + if ((0)); +#endif +#if PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON + else if (strcmp(memb->name, "__module__") == 0) { + PyObject *descr; + assert(memb->type == T_OBJECT); + assert(memb->flags == 0 || memb->flags == READONLY); + descr = PyDescr_NewMember(type, memb); + if (unlikely(!descr)) + return -1; + if (unlikely(PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr) < 0)) { + Py_DECREF(descr); + return -1; + } + Py_DECREF(descr); + changed = 1; + } +#endif + } + memb++; + } + if (changed) + PyType_Modified(type); + } +#endif + return 0; +} +#endif + +/* ValidateBasesTuple */ +#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS +static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases) { + Py_ssize_t i, n; +#if CYTHON_ASSUME_SAFE_MACROS + n = PyTuple_GET_SIZE(bases); +#else + n = PyTuple_Size(bases); + if (n < 0) return -1; +#endif + for (i = 1; i < n; i++) + { +#if CYTHON_AVOID_BORROWED_REFS + PyObject *b0 = PySequence_GetItem(bases, i); + if (!b0) return -1; +#elif CYTHON_ASSUME_SAFE_MACROS + PyObject *b0 = PyTuple_GET_ITEM(bases, i); +#else + PyObject *b0 = PyTuple_GetItem(bases, i); + if (!b0) return -1; +#endif + PyTypeObject *b; +#if PY_MAJOR_VERSION < 3 + if (PyClass_Check(b0)) + { + PyErr_Format(PyExc_TypeError, "base class '%.200s' is an old-style class", + PyString_AS_STRING(((PyClassObject*)b0)->cl_name)); +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + return -1; + } +#endif + b = (PyTypeObject*) b0; + if (!__Pyx_PyType_HasFeature(b, Py_TPFLAGS_HEAPTYPE)) + { + __Pyx_TypeName b_name = __Pyx_PyType_GetName(b); + PyErr_Format(PyExc_TypeError, + "base class '" __Pyx_FMT_TYPENAME "' is not a heap type", b_name); + __Pyx_DECREF_TypeName(b_name); +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + return -1; + } + if (dictoffset == 0) + { + Py_ssize_t b_dictoffset = 0; +#if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + b_dictoffset = b->tp_dictoffset; +#else + PyObject *py_b_dictoffset = PyObject_GetAttrString((PyObject*)b, "__dictoffset__"); + if (!py_b_dictoffset) goto dictoffset_return; + b_dictoffset = PyLong_AsSsize_t(py_b_dictoffset); + Py_DECREF(py_b_dictoffset); + if (b_dictoffset == -1 && PyErr_Occurred()) goto dictoffset_return; +#endif + if (b_dictoffset) { + { + __Pyx_TypeName b_name = __Pyx_PyType_GetName(b); + PyErr_Format(PyExc_TypeError, + "extension type '%.200s' has no __dict__ slot, " + "but base type '" __Pyx_FMT_TYPENAME "' has: " + "either add 'cdef dict __dict__' to the extension type " + "or add '__slots__ = [...]' to the base type", + type_name, b_name); + __Pyx_DECREF_TypeName(b_name); + } +#if !(CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY) + dictoffset_return: +#endif +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + return -1; + } + } +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + } + return 0; +} +#endif + +/* PyType_Ready */ +static int __Pyx_PyType_Ready(PyTypeObject *t) { +#if CYTHON_USE_TYPE_SPECS || !(CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API) || defined(PYSTON_MAJOR_VERSION) + (void)__Pyx_PyObject_CallMethod0; +#if CYTHON_USE_TYPE_SPECS + (void)__Pyx_validate_bases_tuple; +#endif + return PyType_Ready(t); +#else + int r; + PyObject *bases = __Pyx_PyType_GetSlot(t, tp_bases, PyObject*); + if (bases && unlikely(__Pyx_validate_bases_tuple(t->tp_name, t->tp_dictoffset, bases) == -1)) + return -1; +#if PY_VERSION_HEX >= 0x03050000 && !defined(PYSTON_MAJOR_VERSION) + { + int gc_was_enabled; + #if PY_VERSION_HEX >= 0x030A00b1 + gc_was_enabled = PyGC_Disable(); + (void)__Pyx_PyObject_CallMethod0; + #else + PyObject *ret, *py_status; + PyObject *gc = NULL; + #if PY_VERSION_HEX >= 0x030700a1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM+0 >= 0x07030400) + gc = PyImport_GetModule(__pyx_kp_u_gc); + #endif + if (unlikely(!gc)) gc = PyImport_Import(__pyx_kp_u_gc); + if (unlikely(!gc)) return -1; + py_status = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_isenabled); + if (unlikely(!py_status)) { + Py_DECREF(gc); + return -1; + } + gc_was_enabled = __Pyx_PyObject_IsTrue(py_status); + Py_DECREF(py_status); + if (gc_was_enabled > 0) { + ret = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_disable); + if (unlikely(!ret)) { + Py_DECREF(gc); + return -1; + } + Py_DECREF(ret); + } else if (unlikely(gc_was_enabled == -1)) { + Py_DECREF(gc); + return -1; + } + #endif + t->tp_flags |= Py_TPFLAGS_HEAPTYPE; +#if PY_VERSION_HEX >= 0x030A0000 + t->tp_flags |= Py_TPFLAGS_IMMUTABLETYPE; +#endif +#else + (void)__Pyx_PyObject_CallMethod0; +#endif + r = PyType_Ready(t); +#if PY_VERSION_HEX >= 0x03050000 && !defined(PYSTON_MAJOR_VERSION) + t->tp_flags &= ~Py_TPFLAGS_HEAPTYPE; + #if PY_VERSION_HEX >= 0x030A00b1 + if (gc_was_enabled) + PyGC_Enable(); + #else + if (gc_was_enabled) { + PyObject *tp, *v, *tb; + PyErr_Fetch(&tp, &v, &tb); + ret = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_enable); + if (likely(ret || r == -1)) { + Py_XDECREF(ret); + PyErr_Restore(tp, v, tb); + } else { + Py_XDECREF(tp); + Py_XDECREF(v); + Py_XDECREF(tb); + r = -1; + } + } + Py_DECREF(gc); + #endif + } +#endif + return r; +#endif +} + +/* PyObject_GenericGetAttrNoDict */ +#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) { + __Pyx_TypeName type_name = __Pyx_PyType_GetName(tp); + PyErr_Format(PyExc_AttributeError, +#if PY_MAJOR_VERSION >= 3 + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'", + type_name, attr_name); +#else + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%.400s'", + type_name, PyString_AS_STRING(attr_name)); +#endif + __Pyx_DECREF_TypeName(type_name); + return NULL; +} +static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) { + PyObject *descr; + PyTypeObject *tp = Py_TYPE(obj); + if (unlikely(!PyString_Check(attr_name))) { + return PyObject_GenericGetAttr(obj, attr_name); + } + assert(!tp->tp_dictoffset); + descr = _PyType_Lookup(tp, attr_name); + if (unlikely(!descr)) { + return __Pyx_RaiseGenericGetAttributeError(tp, attr_name); + } + Py_INCREF(descr); + #if PY_MAJOR_VERSION < 3 + if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS))) + #endif + { + descrgetfunc f = Py_TYPE(descr)->tp_descr_get; + if (unlikely(f)) { + PyObject *res = f(descr, obj, (PyObject *)tp); + Py_DECREF(descr); + return res; + } + } + return descr; +} +#endif + +/* PyObject_GenericGetAttr */ +#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) { + if (unlikely(Py_TYPE(obj)->tp_dictoffset)) { + return PyObject_GenericGetAttr(obj, attr_name); + } + return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name); +} +#endif + +/* SetVTable */ +static int __Pyx_SetVtable(PyTypeObject *type, void *vtable) { + PyObject *ob = PyCapsule_New(vtable, 0, 0); + if (unlikely(!ob)) + goto bad; +#if CYTHON_COMPILING_IN_LIMITED_API + if (unlikely(PyObject_SetAttr((PyObject *) type, __pyx_n_s_pyx_vtable, ob) < 0)) +#else + if (unlikely(PyDict_SetItem(type->tp_dict, __pyx_n_s_pyx_vtable, ob) < 0)) +#endif + goto bad; + Py_DECREF(ob); + return 0; +bad: + Py_XDECREF(ob); + return -1; +} + +/* GetVTable */ +static void* __Pyx_GetVtable(PyTypeObject *type) { + void* ptr; +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *ob = PyObject_GetAttr((PyObject *)type, __pyx_n_s_pyx_vtable); +#else + PyObject *ob = PyObject_GetItem(type->tp_dict, __pyx_n_s_pyx_vtable); +#endif + if (!ob) + goto bad; + ptr = PyCapsule_GetPointer(ob, 0); + if (!ptr && !PyErr_Occurred()) + PyErr_SetString(PyExc_RuntimeError, "invalid vtable found for imported type"); + Py_DECREF(ob); + return ptr; +bad: + Py_XDECREF(ob); + return NULL; +} + +/* MergeVTables */ +#if !CYTHON_COMPILING_IN_LIMITED_API +static int __Pyx_MergeVtables(PyTypeObject *type) { + int i; + void** base_vtables; + __Pyx_TypeName tp_base_name; + __Pyx_TypeName base_name; + void* unknown = (void*)-1; + PyObject* bases = type->tp_bases; + int base_depth = 0; + { + PyTypeObject* base = type->tp_base; + while (base) { + base_depth += 1; + base = base->tp_base; + } + } + base_vtables = (void**) malloc(sizeof(void*) * (size_t)(base_depth + 1)); + base_vtables[0] = unknown; + for (i = 1; i < PyTuple_GET_SIZE(bases); i++) { + void* base_vtable = __Pyx_GetVtable(((PyTypeObject*)PyTuple_GET_ITEM(bases, i))); + if (base_vtable != NULL) { + int j; + PyTypeObject* base = type->tp_base; + for (j = 0; j < base_depth; j++) { + if (base_vtables[j] == unknown) { + base_vtables[j] = __Pyx_GetVtable(base); + base_vtables[j + 1] = unknown; + } + if (base_vtables[j] == base_vtable) { + break; + } else if (base_vtables[j] == NULL) { + goto bad; + } + base = base->tp_base; + } + } + } + PyErr_Clear(); + free(base_vtables); + return 0; +bad: + tp_base_name = __Pyx_PyType_GetName(type->tp_base); + base_name = __Pyx_PyType_GetName((PyTypeObject*)PyTuple_GET_ITEM(bases, i)); + PyErr_Format(PyExc_TypeError, + "multiple bases have vtable conflict: '" __Pyx_FMT_TYPENAME "' and '" __Pyx_FMT_TYPENAME "'", tp_base_name, base_name); + __Pyx_DECREF_TypeName(tp_base_name); + __Pyx_DECREF_TypeName(base_name); + free(base_vtables); + return -1; +} +#endif + +/* SetupReduce */ +#if !CYTHON_COMPILING_IN_LIMITED_API +static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) { + int ret; + PyObject *name_attr; + name_attr = __Pyx_PyObject_GetAttrStrNoError(meth, __pyx_n_s_name); + if (likely(name_attr)) { + ret = PyObject_RichCompareBool(name_attr, name, Py_EQ); + } else { + ret = -1; + } + if (unlikely(ret < 0)) { + PyErr_Clear(); + ret = 0; + } + Py_XDECREF(name_attr); + return ret; +} +static int __Pyx_setup_reduce(PyObject* type_obj) { + int ret = 0; + PyObject *object_reduce = NULL; + PyObject *object_getstate = NULL; + PyObject *object_reduce_ex = NULL; + PyObject *reduce = NULL; + PyObject *reduce_ex = NULL; + PyObject *reduce_cython = NULL; + PyObject *setstate = NULL; + PyObject *setstate_cython = NULL; + PyObject *getstate = NULL; +#if CYTHON_USE_PYTYPE_LOOKUP + getstate = _PyType_Lookup((PyTypeObject*)type_obj, __pyx_n_s_getstate); +#else + getstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_getstate); + if (!getstate && PyErr_Occurred()) { + goto __PYX_BAD; + } +#endif + if (getstate) { +#if CYTHON_USE_PYTYPE_LOOKUP + object_getstate = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_getstate); +#else + object_getstate = __Pyx_PyObject_GetAttrStrNoError((PyObject*)&PyBaseObject_Type, __pyx_n_s_getstate); + if (!object_getstate && PyErr_Occurred()) { + goto __PYX_BAD; + } +#endif + if (object_getstate != getstate) { + goto __PYX_GOOD; + } + } +#if CYTHON_USE_PYTYPE_LOOKUP + object_reduce_ex = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; +#else + object_reduce_ex = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; +#endif + reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce_ex); if (unlikely(!reduce_ex)) goto __PYX_BAD; + if (reduce_ex == object_reduce_ex) { +#if CYTHON_USE_PYTYPE_LOOKUP + object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD; +#else + object_reduce = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD; +#endif + reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce); if (unlikely(!reduce)) goto __PYX_BAD; + if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, __pyx_n_s_reduce_cython)) { + reduce_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_reduce_cython); + if (likely(reduce_cython)) { + ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce, reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + } else if (reduce == object_reduce || PyErr_Occurred()) { + goto __PYX_BAD; + } + setstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_setstate); + if (!setstate) PyErr_Clear(); + if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_n_s_setstate_cython)) { + setstate_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_setstate_cython); + if (likely(setstate_cython)) { + ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate, setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + } else if (!setstate || PyErr_Occurred()) { + goto __PYX_BAD; + } + } + PyType_Modified((PyTypeObject*)type_obj); + } + } + goto __PYX_GOOD; +__PYX_BAD: + if (!PyErr_Occurred()) { + __Pyx_TypeName type_obj_name = + __Pyx_PyType_GetName((PyTypeObject*)type_obj); + PyErr_Format(PyExc_RuntimeError, + "Unable to initialize pickling for " __Pyx_FMT_TYPENAME, type_obj_name); + __Pyx_DECREF_TypeName(type_obj_name); + } + ret = -1; +__PYX_GOOD: +#if !CYTHON_USE_PYTYPE_LOOKUP + Py_XDECREF(object_reduce); + Py_XDECREF(object_reduce_ex); + Py_XDECREF(object_getstate); + Py_XDECREF(getstate); +#endif + Py_XDECREF(reduce); + Py_XDECREF(reduce_ex); + Py_XDECREF(reduce_cython); + Py_XDECREF(setstate); + Py_XDECREF(setstate_cython); + return ret; +} +#endif + +/* TypeImport */ +#ifndef __PYX_HAVE_RT_ImportType_3_0_11 +#define __PYX_HAVE_RT_ImportType_3_0_11 +static PyTypeObject *__Pyx_ImportType_3_0_11(PyObject *module, const char *module_name, const char *class_name, + size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_0_11 check_size) +{ + PyObject *result = 0; + char warning[200]; + Py_ssize_t basicsize; + Py_ssize_t itemsize; +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *py_basicsize; + PyObject *py_itemsize; +#endif + result = PyObject_GetAttrString(module, class_name); + if (!result) + goto bad; + if (!PyType_Check(result)) { + PyErr_Format(PyExc_TypeError, + "%.200s.%.200s is not a type object", + module_name, class_name); + goto bad; + } +#if !CYTHON_COMPILING_IN_LIMITED_API + basicsize = ((PyTypeObject *)result)->tp_basicsize; + itemsize = ((PyTypeObject *)result)->tp_itemsize; +#else + py_basicsize = PyObject_GetAttrString(result, "__basicsize__"); + if (!py_basicsize) + goto bad; + basicsize = PyLong_AsSsize_t(py_basicsize); + Py_DECREF(py_basicsize); + py_basicsize = 0; + if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred()) + goto bad; + py_itemsize = PyObject_GetAttrString(result, "__itemsize__"); + if (!py_itemsize) + goto bad; + itemsize = PyLong_AsSsize_t(py_itemsize); + Py_DECREF(py_itemsize); + py_itemsize = 0; + if (itemsize == (Py_ssize_t)-1 && PyErr_Occurred()) + goto bad; +#endif + if (itemsize) { + if (size % alignment) { + alignment = size % alignment; + } + if (itemsize < (Py_ssize_t)alignment) + itemsize = (Py_ssize_t)alignment; + } + if ((size_t)(basicsize + itemsize) < size) { + PyErr_Format(PyExc_ValueError, + "%.200s.%.200s size changed, may indicate binary incompatibility. " + "Expected %zd from C header, got %zd from PyObject", + module_name, class_name, size, basicsize+itemsize); + goto bad; + } + if (check_size == __Pyx_ImportType_CheckSize_Error_3_0_11 && + ((size_t)basicsize > size || (size_t)(basicsize + itemsize) < size)) { + PyErr_Format(PyExc_ValueError, + "%.200s.%.200s size changed, may indicate binary incompatibility. " + "Expected %zd from C header, got %zd-%zd from PyObject", + module_name, class_name, size, basicsize, basicsize+itemsize); + goto bad; + } + else if (check_size == __Pyx_ImportType_CheckSize_Warn_3_0_11 && (size_t)basicsize > size) { + PyOS_snprintf(warning, sizeof(warning), + "%s.%s size changed, may indicate binary incompatibility. " + "Expected %zd from C header, got %zd from PyObject", + module_name, class_name, size, basicsize); + if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad; + } + return (PyTypeObject *)result; +bad: + Py_XDECREF(result); + return NULL; +} +#endif + +/* ImportDottedModule */ +#if PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx__ImportDottedModule_Error(PyObject *name, PyObject *parts_tuple, Py_ssize_t count) { + PyObject *partial_name = NULL, *slice = NULL, *sep = NULL; + if (unlikely(PyErr_Occurred())) { + PyErr_Clear(); + } + if (likely(PyTuple_GET_SIZE(parts_tuple) == count)) { + partial_name = name; + } else { + slice = PySequence_GetSlice(parts_tuple, 0, count); + if (unlikely(!slice)) + goto bad; + sep = PyUnicode_FromStringAndSize(".", 1); + if (unlikely(!sep)) + goto bad; + partial_name = PyUnicode_Join(sep, slice); + } + PyErr_Format( +#if PY_MAJOR_VERSION < 3 + PyExc_ImportError, + "No module named '%s'", PyString_AS_STRING(partial_name)); +#else +#if PY_VERSION_HEX >= 0x030600B1 + PyExc_ModuleNotFoundError, +#else + PyExc_ImportError, +#endif + "No module named '%U'", partial_name); +#endif +bad: + Py_XDECREF(sep); + Py_XDECREF(slice); + Py_XDECREF(partial_name); + return NULL; +} +#endif +#if PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx__ImportDottedModule_Lookup(PyObject *name) { + PyObject *imported_module; +#if PY_VERSION_HEX < 0x030700A1 || (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM < 0x07030400) + PyObject *modules = PyImport_GetModuleDict(); + if (unlikely(!modules)) + return NULL; + imported_module = __Pyx_PyDict_GetItemStr(modules, name); + Py_XINCREF(imported_module); +#else + imported_module = PyImport_GetModule(name); +#endif + return imported_module; +} +#endif +#if PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx_ImportDottedModule_WalkParts(PyObject *module, PyObject *name, PyObject *parts_tuple) { + Py_ssize_t i, nparts; + nparts = PyTuple_GET_SIZE(parts_tuple); + for (i=1; i < nparts && module; i++) { + PyObject *part, *submodule; +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + part = PyTuple_GET_ITEM(parts_tuple, i); +#else + part = PySequence_ITEM(parts_tuple, i); +#endif + submodule = __Pyx_PyObject_GetAttrStrNoError(module, part); +#if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) + Py_DECREF(part); +#endif + Py_DECREF(module); + module = submodule; + } + if (unlikely(!module)) { + return __Pyx__ImportDottedModule_Error(name, parts_tuple, i); + } + return module; +} +#endif +static PyObject *__Pyx__ImportDottedModule(PyObject *name, PyObject *parts_tuple) { +#if PY_MAJOR_VERSION < 3 + PyObject *module, *from_list, *star = __pyx_n_s__19; + CYTHON_UNUSED_VAR(parts_tuple); + from_list = PyList_New(1); + if (unlikely(!from_list)) + return NULL; + Py_INCREF(star); + PyList_SET_ITEM(from_list, 0, star); + module = __Pyx_Import(name, from_list, 0); + Py_DECREF(from_list); + return module; +#else + PyObject *imported_module; + PyObject *module = __Pyx_Import(name, NULL, 0); + if (!parts_tuple || unlikely(!module)) + return module; + imported_module = __Pyx__ImportDottedModule_Lookup(name); + if (likely(imported_module)) { + Py_DECREF(module); + return imported_module; + } + PyErr_Clear(); + return __Pyx_ImportDottedModule_WalkParts(module, name, parts_tuple); +#endif +} +static PyObject *__Pyx_ImportDottedModule(PyObject *name, PyObject *parts_tuple) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030400B1 + PyObject *module = __Pyx__ImportDottedModule_Lookup(name); + if (likely(module)) { + PyObject *spec = __Pyx_PyObject_GetAttrStrNoError(module, __pyx_n_s_spec); + if (likely(spec)) { + PyObject *unsafe = __Pyx_PyObject_GetAttrStrNoError(spec, __pyx_n_s_initializing); + if (likely(!unsafe || !__Pyx_PyObject_IsTrue(unsafe))) { + Py_DECREF(spec); + spec = NULL; + } + Py_XDECREF(unsafe); + } + if (likely(!spec)) { + PyErr_Clear(); + return module; + } + Py_DECREF(spec); + Py_DECREF(module); + } else if (PyErr_Occurred()) { + PyErr_Clear(); + } +#endif + return __Pyx__ImportDottedModule(name, parts_tuple); +} + +/* FetchSharedCythonModule */ +static PyObject *__Pyx_FetchSharedCythonABIModule(void) { + return __Pyx_PyImport_AddModuleRef((char*) __PYX_ABI_MODULE_NAME); +} + +/* FetchCommonType */ +static int __Pyx_VerifyCachedType(PyObject *cached_type, + const char *name, + Py_ssize_t basicsize, + Py_ssize_t expected_basicsize) { + if (!PyType_Check(cached_type)) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s is not a type object", name); + return -1; + } + if (basicsize != expected_basicsize) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s has the wrong size, try recompiling", + name); + return -1; + } + return 0; +} +#if !CYTHON_USE_TYPE_SPECS +static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { + PyObject* abi_module; + const char* object_name; + PyTypeObject *cached_type = NULL; + abi_module = __Pyx_FetchSharedCythonABIModule(); + if (!abi_module) return NULL; + object_name = strrchr(type->tp_name, '.'); + object_name = object_name ? object_name+1 : type->tp_name; + cached_type = (PyTypeObject*) PyObject_GetAttrString(abi_module, object_name); + if (cached_type) { + if (__Pyx_VerifyCachedType( + (PyObject *)cached_type, + object_name, + cached_type->tp_basicsize, + type->tp_basicsize) < 0) { + goto bad; + } + goto done; + } + if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; + PyErr_Clear(); + if (PyType_Ready(type) < 0) goto bad; + if (PyObject_SetAttrString(abi_module, object_name, (PyObject *)type) < 0) + goto bad; + Py_INCREF(type); + cached_type = type; +done: + Py_DECREF(abi_module); + return cached_type; +bad: + Py_XDECREF(cached_type); + cached_type = NULL; + goto done; +} +#else +static PyTypeObject *__Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases) { + PyObject *abi_module, *cached_type = NULL; + const char* object_name = strrchr(spec->name, '.'); + object_name = object_name ? object_name+1 : spec->name; + abi_module = __Pyx_FetchSharedCythonABIModule(); + if (!abi_module) return NULL; + cached_type = PyObject_GetAttrString(abi_module, object_name); + if (cached_type) { + Py_ssize_t basicsize; +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *py_basicsize; + py_basicsize = PyObject_GetAttrString(cached_type, "__basicsize__"); + if (unlikely(!py_basicsize)) goto bad; + basicsize = PyLong_AsSsize_t(py_basicsize); + Py_DECREF(py_basicsize); + py_basicsize = 0; + if (unlikely(basicsize == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad; +#else + basicsize = likely(PyType_Check(cached_type)) ? ((PyTypeObject*) cached_type)->tp_basicsize : -1; +#endif + if (__Pyx_VerifyCachedType( + cached_type, + object_name, + basicsize, + spec->basicsize) < 0) { + goto bad; + } + goto done; + } + if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; + PyErr_Clear(); + CYTHON_UNUSED_VAR(module); + cached_type = __Pyx_PyType_FromModuleAndSpec(abi_module, spec, bases); + if (unlikely(!cached_type)) goto bad; + if (unlikely(__Pyx_fix_up_extension_type_from_spec(spec, (PyTypeObject *) cached_type) < 0)) goto bad; + if (PyObject_SetAttrString(abi_module, object_name, cached_type) < 0) goto bad; +done: + Py_DECREF(abi_module); + assert(cached_type == NULL || PyType_Check(cached_type)); + return (PyTypeObject *) cached_type; +bad: + Py_XDECREF(cached_type); + cached_type = NULL; + goto done; +} +#endif + +/* PyVectorcallFastCallDict */ +#if CYTHON_METH_FASTCALL +static PyObject *__Pyx_PyVectorcall_FastCallDict_kw(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) +{ + PyObject *res = NULL; + PyObject *kwnames; + PyObject **newargs; + PyObject **kwvalues; + Py_ssize_t i, pos; + size_t j; + PyObject *key, *value; + unsigned long keys_are_strings; + Py_ssize_t nkw = PyDict_GET_SIZE(kw); + newargs = (PyObject **)PyMem_Malloc((nargs + (size_t)nkw) * sizeof(args[0])); + if (unlikely(newargs == NULL)) { + PyErr_NoMemory(); + return NULL; + } + for (j = 0; j < nargs; j++) newargs[j] = args[j]; + kwnames = PyTuple_New(nkw); + if (unlikely(kwnames == NULL)) { + PyMem_Free(newargs); + return NULL; + } + kwvalues = newargs + nargs; + pos = i = 0; + keys_are_strings = Py_TPFLAGS_UNICODE_SUBCLASS; + while (PyDict_Next(kw, &pos, &key, &value)) { + keys_are_strings &= Py_TYPE(key)->tp_flags; + Py_INCREF(key); + Py_INCREF(value); + PyTuple_SET_ITEM(kwnames, i, key); + kwvalues[i] = value; + i++; + } + if (unlikely(!keys_are_strings)) { + PyErr_SetString(PyExc_TypeError, "keywords must be strings"); + goto cleanup; + } + res = vc(func, newargs, nargs, kwnames); +cleanup: + Py_DECREF(kwnames); + for (i = 0; i < nkw; i++) + Py_DECREF(kwvalues[i]); + PyMem_Free(newargs); + return res; +} +static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) +{ + if (likely(kw == NULL) || PyDict_GET_SIZE(kw) == 0) { + return vc(func, args, nargs, NULL); + } + return __Pyx_PyVectorcall_FastCallDict_kw(func, vc, args, nargs, kw); +} +#endif + +/* CythonFunctionShared */ +#if CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) { + if (__Pyx_CyFunction_Check(func)) { + return PyCFunction_GetFunction(((__pyx_CyFunctionObject*)func)->func) == (PyCFunction) cfunc; + } else if (PyCFunction_Check(func)) { + return PyCFunction_GetFunction(func) == (PyCFunction) cfunc; + } + return 0; +} +#else +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) { + return __Pyx_CyOrPyCFunction_Check(func) && __Pyx_CyOrPyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc; +} +#endif +static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj) { +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + __Pyx_Py_XDECREF_SET( + __Pyx_CyFunction_GetClassObj(f), + ((classobj) ? __Pyx_NewRef(classobj) : NULL)); +#else + __Pyx_Py_XDECREF_SET( + ((PyCMethodObject *) (f))->mm_class, + (PyTypeObject*)((classobj) ? __Pyx_NewRef(classobj) : NULL)); +#endif +} +static PyObject * +__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, void *closure) +{ + CYTHON_UNUSED_VAR(closure); + if (unlikely(op->func_doc == NULL)) { +#if CYTHON_COMPILING_IN_LIMITED_API + op->func_doc = PyObject_GetAttrString(op->func, "__doc__"); + if (unlikely(!op->func_doc)) return NULL; +#else + if (((PyCFunctionObject*)op)->m_ml->ml_doc) { +#if PY_MAJOR_VERSION >= 3 + op->func_doc = PyUnicode_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc); +#else + op->func_doc = PyString_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc); +#endif + if (unlikely(op->func_doc == NULL)) + return NULL; + } else { + Py_INCREF(Py_None); + return Py_None; + } +#endif + } + Py_INCREF(op->func_doc); + return op->func_doc; +} +static int +__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (value == NULL) { + value = Py_None; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_doc, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(op->func_name == NULL)) { +#if CYTHON_COMPILING_IN_LIMITED_API + op->func_name = PyObject_GetAttrString(op->func, "__name__"); +#elif PY_MAJOR_VERSION >= 3 + op->func_name = PyUnicode_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name); +#else + op->func_name = PyString_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name); +#endif + if (unlikely(op->func_name == NULL)) + return NULL; + } + Py_INCREF(op->func_name); + return op->func_name; +} +static int +__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) +#else + if (unlikely(value == NULL || !PyString_Check(value))) +#endif + { + PyErr_SetString(PyExc_TypeError, + "__name__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_name, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + Py_INCREF(op->func_qualname); + return op->func_qualname; +} +static int +__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) +#else + if (unlikely(value == NULL || !PyString_Check(value))) +#endif + { + PyErr_SetString(PyExc_TypeError, + "__qualname__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_qualname, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(op->func_dict == NULL)) { + op->func_dict = PyDict_New(); + if (unlikely(op->func_dict == NULL)) + return NULL; + } + Py_INCREF(op->func_dict); + return op->func_dict; +} +static int +__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(value == NULL)) { + PyErr_SetString(PyExc_TypeError, + "function's dictionary may not be deleted"); + return -1; + } + if (unlikely(!PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "setting function's dictionary to a non-dict"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_dict, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + Py_INCREF(op->func_globals); + return op->func_globals; +} +static PyObject * +__Pyx_CyFunction_get_closure(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(op); + CYTHON_UNUSED_VAR(context); + Py_INCREF(Py_None); + return Py_None; +} +static PyObject * +__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, void *context) +{ + PyObject* result = (op->func_code) ? op->func_code : Py_None; + CYTHON_UNUSED_VAR(context); + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { + int result = 0; + PyObject *res = op->defaults_getter((PyObject *) op); + if (unlikely(!res)) + return -1; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + op->defaults_tuple = PyTuple_GET_ITEM(res, 0); + Py_INCREF(op->defaults_tuple); + op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); + Py_INCREF(op->defaults_kwdict); + #else + op->defaults_tuple = __Pyx_PySequence_ITEM(res, 0); + if (unlikely(!op->defaults_tuple)) result = -1; + else { + op->defaults_kwdict = __Pyx_PySequence_ITEM(res, 1); + if (unlikely(!op->defaults_kwdict)) result = -1; + } + #endif + Py_DECREF(res); + return result; +} +static int +__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value) { + value = Py_None; + } else if (unlikely(value != Py_None && !PyTuple_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__defaults__ must be set to a tuple object"); + return -1; + } + PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__defaults__ will not " + "currently affect the values used in function calls", 1); + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->defaults_tuple, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, void *context) { + PyObject* result = op->defaults_tuple; + CYTHON_UNUSED_VAR(context); + if (unlikely(!result)) { + if (op->defaults_getter) { + if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; + result = op->defaults_tuple; + } else { + result = Py_None; + } + } + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value) { + value = Py_None; + } else if (unlikely(value != Py_None && !PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__kwdefaults__ must be set to a dict object"); + return -1; + } + PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__kwdefaults__ will not " + "currently affect the values used in function calls", 1); + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->defaults_kwdict, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, void *context) { + PyObject* result = op->defaults_kwdict; + CYTHON_UNUSED_VAR(context); + if (unlikely(!result)) { + if (op->defaults_getter) { + if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; + result = op->defaults_kwdict; + } else { + result = Py_None; + } + } + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value || value == Py_None) { + value = NULL; + } else if (unlikely(!PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__annotations__ must be set to a dict object"); + return -1; + } + Py_XINCREF(value); + __Pyx_Py_XDECREF_SET(op->func_annotations, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, void *context) { + PyObject* result = op->func_annotations; + CYTHON_UNUSED_VAR(context); + if (unlikely(!result)) { + result = PyDict_New(); + if (unlikely(!result)) return NULL; + op->func_annotations = result; + } + Py_INCREF(result); + return result; +} +static PyObject * +__Pyx_CyFunction_get_is_coroutine(__pyx_CyFunctionObject *op, void *context) { + int is_coroutine; + CYTHON_UNUSED_VAR(context); + if (op->func_is_coroutine) { + return __Pyx_NewRef(op->func_is_coroutine); + } + is_coroutine = op->flags & __Pyx_CYFUNCTION_COROUTINE; +#if PY_VERSION_HEX >= 0x03050000 + if (is_coroutine) { + PyObject *module, *fromlist, *marker = __pyx_n_s_is_coroutine; + fromlist = PyList_New(1); + if (unlikely(!fromlist)) return NULL; + Py_INCREF(marker); +#if CYTHON_ASSUME_SAFE_MACROS + PyList_SET_ITEM(fromlist, 0, marker); +#else + if (unlikely(PyList_SetItem(fromlist, 0, marker) < 0)) { + Py_DECREF(marker); + Py_DECREF(fromlist); + return NULL; + } +#endif + module = PyImport_ImportModuleLevelObject(__pyx_n_s_asyncio_coroutines, NULL, NULL, fromlist, 0); + Py_DECREF(fromlist); + if (unlikely(!module)) goto ignore; + op->func_is_coroutine = __Pyx_PyObject_GetAttrStr(module, marker); + Py_DECREF(module); + if (likely(op->func_is_coroutine)) { + return __Pyx_NewRef(op->func_is_coroutine); + } +ignore: + PyErr_Clear(); + } +#endif + op->func_is_coroutine = __Pyx_PyBool_FromLong(is_coroutine); + return __Pyx_NewRef(op->func_is_coroutine); +} +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject * +__Pyx_CyFunction_get_module(__pyx_CyFunctionObject *op, void *context) { + CYTHON_UNUSED_VAR(context); + return PyObject_GetAttrString(op->func, "__module__"); +} +static int +__Pyx_CyFunction_set_module(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + return PyObject_SetAttrString(op->func, "__module__", value); +} +#endif +static PyGetSetDef __pyx_CyFunction_getsets[] = { + {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, + {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, + {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, + {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, + {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, + {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, + {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, + {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, + {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, + {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, + {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, + {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, + {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, + {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, + {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, + {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, + {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, + {(char *) "_is_coroutine", (getter)__Pyx_CyFunction_get_is_coroutine, 0, 0, 0}, +#if CYTHON_COMPILING_IN_LIMITED_API + {"__module__", (getter)__Pyx_CyFunction_get_module, (setter)__Pyx_CyFunction_set_module, 0, 0}, +#endif + {0, 0, 0, 0, 0} +}; +static PyMemberDef __pyx_CyFunction_members[] = { +#if !CYTHON_COMPILING_IN_LIMITED_API + {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), 0, 0}, +#endif +#if CYTHON_USE_TYPE_SPECS + {(char *) "__dictoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_dict), READONLY, 0}, +#if CYTHON_METH_FASTCALL +#if CYTHON_BACKPORT_VECTORCALL + {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_vectorcall), READONLY, 0}, +#else +#if !CYTHON_COMPILING_IN_LIMITED_API + {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(PyCFunctionObject, vectorcall), READONLY, 0}, +#endif +#endif +#endif +#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API + {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_weakreflist), READONLY, 0}, +#else + {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(PyCFunctionObject, m_weakreflist), READONLY, 0}, +#endif +#endif + {0, 0, 0, 0, 0} +}; +static PyObject * +__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, PyObject *args) +{ + CYTHON_UNUSED_VAR(args); +#if PY_MAJOR_VERSION >= 3 + Py_INCREF(m->func_qualname); + return m->func_qualname; +#else + return PyString_FromString(((PyCFunctionObject*)m)->m_ml->ml_name); +#endif +} +static PyMethodDef __pyx_CyFunction_methods[] = { + {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, + {0, 0, 0, 0} +}; +#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API +#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) +#else +#define __Pyx_CyFunction_weakreflist(cyfunc) (((PyCFunctionObject*)cyfunc)->m_weakreflist) +#endif +static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname, + PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { +#if !CYTHON_COMPILING_IN_LIMITED_API + PyCFunctionObject *cf = (PyCFunctionObject*) op; +#endif + if (unlikely(op == NULL)) + return NULL; +#if CYTHON_COMPILING_IN_LIMITED_API + op->func = PyCFunction_NewEx(ml, (PyObject*)op, module); + if (unlikely(!op->func)) return NULL; +#endif + op->flags = flags; + __Pyx_CyFunction_weakreflist(op) = NULL; +#if !CYTHON_COMPILING_IN_LIMITED_API + cf->m_ml = ml; + cf->m_self = (PyObject *) op; +#endif + Py_XINCREF(closure); + op->func_closure = closure; +#if !CYTHON_COMPILING_IN_LIMITED_API + Py_XINCREF(module); + cf->m_module = module; +#endif + op->func_dict = NULL; + op->func_name = NULL; + Py_INCREF(qualname); + op->func_qualname = qualname; + op->func_doc = NULL; +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + op->func_classobj = NULL; +#else + ((PyCMethodObject*)op)->mm_class = NULL; +#endif + op->func_globals = globals; + Py_INCREF(op->func_globals); + Py_XINCREF(code); + op->func_code = code; + op->defaults_pyobjects = 0; + op->defaults_size = 0; + op->defaults = NULL; + op->defaults_tuple = NULL; + op->defaults_kwdict = NULL; + op->defaults_getter = NULL; + op->func_annotations = NULL; + op->func_is_coroutine = NULL; +#if CYTHON_METH_FASTCALL + switch (ml->ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O | METH_KEYWORDS | METH_METHOD)) { + case METH_NOARGS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_NOARGS; + break; + case METH_O: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_O; + break; + case METH_METHOD | METH_FASTCALL | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD; + break; + case METH_FASTCALL | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS; + break; + case METH_VARARGS | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = NULL; + break; + default: + PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); + Py_DECREF(op); + return NULL; + } +#endif + return (PyObject *) op; +} +static int +__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) +{ + Py_CLEAR(m->func_closure); +#if CYTHON_COMPILING_IN_LIMITED_API + Py_CLEAR(m->func); +#else + Py_CLEAR(((PyCFunctionObject*)m)->m_module); +#endif + Py_CLEAR(m->func_dict); + Py_CLEAR(m->func_name); + Py_CLEAR(m->func_qualname); + Py_CLEAR(m->func_doc); + Py_CLEAR(m->func_globals); + Py_CLEAR(m->func_code); +#if !CYTHON_COMPILING_IN_LIMITED_API +#if PY_VERSION_HEX < 0x030900B1 + Py_CLEAR(__Pyx_CyFunction_GetClassObj(m)); +#else + { + PyObject *cls = (PyObject*) ((PyCMethodObject *) (m))->mm_class; + ((PyCMethodObject *) (m))->mm_class = NULL; + Py_XDECREF(cls); + } +#endif +#endif + Py_CLEAR(m->defaults_tuple); + Py_CLEAR(m->defaults_kwdict); + Py_CLEAR(m->func_annotations); + Py_CLEAR(m->func_is_coroutine); + if (m->defaults) { + PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); + int i; + for (i = 0; i < m->defaults_pyobjects; i++) + Py_XDECREF(pydefaults[i]); + PyObject_Free(m->defaults); + m->defaults = NULL; + } + return 0; +} +static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) +{ + if (__Pyx_CyFunction_weakreflist(m) != NULL) + PyObject_ClearWeakRefs((PyObject *) m); + __Pyx_CyFunction_clear(m); + __Pyx_PyHeapTypeObject_GC_Del(m); +} +static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) +{ + PyObject_GC_UnTrack(m); + __Pyx__CyFunction_dealloc(m); +} +static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) +{ + Py_VISIT(m->func_closure); +#if CYTHON_COMPILING_IN_LIMITED_API + Py_VISIT(m->func); +#else + Py_VISIT(((PyCFunctionObject*)m)->m_module); +#endif + Py_VISIT(m->func_dict); + Py_VISIT(m->func_name); + Py_VISIT(m->func_qualname); + Py_VISIT(m->func_doc); + Py_VISIT(m->func_globals); + Py_VISIT(m->func_code); +#if !CYTHON_COMPILING_IN_LIMITED_API + Py_VISIT(__Pyx_CyFunction_GetClassObj(m)); +#endif + Py_VISIT(m->defaults_tuple); + Py_VISIT(m->defaults_kwdict); + Py_VISIT(m->func_is_coroutine); + if (m->defaults) { + PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); + int i; + for (i = 0; i < m->defaults_pyobjects; i++) + Py_VISIT(pydefaults[i]); + } + return 0; +} +static PyObject* +__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) +{ +#if PY_MAJOR_VERSION >= 3 + return PyUnicode_FromFormat("", + op->func_qualname, (void *)op); +#else + return PyString_FromFormat("", + PyString_AsString(op->func_qualname), (void *)op); +#endif +} +static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *f = ((__pyx_CyFunctionObject*)func)->func; + PyObject *py_name = NULL; + PyCFunction meth; + int flags; + meth = PyCFunction_GetFunction(f); + if (unlikely(!meth)) return NULL; + flags = PyCFunction_GetFlags(f); + if (unlikely(flags < 0)) return NULL; +#else + PyCFunctionObject* f = (PyCFunctionObject*)func; + PyCFunction meth = f->m_ml->ml_meth; + int flags = f->m_ml->ml_flags; +#endif + Py_ssize_t size; + switch (flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { + case METH_VARARGS: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) + return (*meth)(self, arg); + break; + case METH_VARARGS | METH_KEYWORDS: + return (*(PyCFunctionWithKeywords)(void*)meth)(self, arg, kw); + case METH_NOARGS: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) { +#if CYTHON_ASSUME_SAFE_MACROS + size = PyTuple_GET_SIZE(arg); +#else + size = PyTuple_Size(arg); + if (unlikely(size < 0)) return NULL; +#endif + if (likely(size == 0)) + return (*meth)(self, NULL); +#if CYTHON_COMPILING_IN_LIMITED_API + py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); + if (!py_name) return NULL; + PyErr_Format(PyExc_TypeError, + "%.200S() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", + py_name, size); + Py_DECREF(py_name); +#else + PyErr_Format(PyExc_TypeError, + "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", + f->m_ml->ml_name, size); +#endif + return NULL; + } + break; + case METH_O: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) { +#if CYTHON_ASSUME_SAFE_MACROS + size = PyTuple_GET_SIZE(arg); +#else + size = PyTuple_Size(arg); + if (unlikely(size < 0)) return NULL; +#endif + if (likely(size == 1)) { + PyObject *result, *arg0; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + arg0 = PyTuple_GET_ITEM(arg, 0); + #else + arg0 = __Pyx_PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; + #endif + result = (*meth)(self, arg0); + #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) + Py_DECREF(arg0); + #endif + return result; + } +#if CYTHON_COMPILING_IN_LIMITED_API + py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); + if (!py_name) return NULL; + PyErr_Format(PyExc_TypeError, + "%.200S() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", + py_name, size); + Py_DECREF(py_name); +#else + PyErr_Format(PyExc_TypeError, + "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", + f->m_ml->ml_name, size); +#endif + return NULL; + } + break; + default: + PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); + return NULL; + } +#if CYTHON_COMPILING_IN_LIMITED_API + py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); + if (!py_name) return NULL; + PyErr_Format(PyExc_TypeError, "%.200S() takes no keyword arguments", + py_name); + Py_DECREF(py_name); +#else + PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", + f->m_ml->ml_name); +#endif + return NULL; +} +static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { + PyObject *self, *result; +#if CYTHON_COMPILING_IN_LIMITED_API + self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)func)->func); + if (unlikely(!self) && PyErr_Occurred()) return NULL; +#else + self = ((PyCFunctionObject*)func)->m_self; +#endif + result = __Pyx_CyFunction_CallMethod(func, self, arg, kw); + return result; +} +static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { + PyObject *result; + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; +#if CYTHON_METH_FASTCALL + __pyx_vectorcallfunc vc = __Pyx_CyFunction_func_vectorcall(cyfunc); + if (vc) { +#if CYTHON_ASSUME_SAFE_MACROS + return __Pyx_PyVectorcall_FastCallDict(func, vc, &PyTuple_GET_ITEM(args, 0), (size_t)PyTuple_GET_SIZE(args), kw); +#else + (void) &__Pyx_PyVectorcall_FastCallDict; + return PyVectorcall_Call(func, args, kw); +#endif + } +#endif + if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { + Py_ssize_t argc; + PyObject *new_args; + PyObject *self; +#if CYTHON_ASSUME_SAFE_MACROS + argc = PyTuple_GET_SIZE(args); +#else + argc = PyTuple_Size(args); + if (unlikely(!argc) < 0) return NULL; +#endif + new_args = PyTuple_GetSlice(args, 1, argc); + if (unlikely(!new_args)) + return NULL; + self = PyTuple_GetItem(args, 0); + if (unlikely(!self)) { + Py_DECREF(new_args); +#if PY_MAJOR_VERSION > 2 + PyErr_Format(PyExc_TypeError, + "unbound method %.200S() needs an argument", + cyfunc->func_qualname); +#else + PyErr_SetString(PyExc_TypeError, + "unbound method needs an argument"); +#endif + return NULL; + } + result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); + Py_DECREF(new_args); + } else { + result = __Pyx_CyFunction_Call(func, args, kw); + } + return result; +} +#if CYTHON_METH_FASTCALL +static CYTHON_INLINE int __Pyx_CyFunction_Vectorcall_CheckArgs(__pyx_CyFunctionObject *cyfunc, Py_ssize_t nargs, PyObject *kwnames) +{ + int ret = 0; + if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { + if (unlikely(nargs < 1)) { + PyErr_Format(PyExc_TypeError, "%.200s() needs an argument", + ((PyCFunctionObject*)cyfunc)->m_ml->ml_name); + return -1; + } + ret = 1; + } + if (unlikely(kwnames) && unlikely(PyTuple_GET_SIZE(kwnames))) { + PyErr_Format(PyExc_TypeError, + "%.200s() takes no keyword arguments", ((PyCFunctionObject*)cyfunc)->m_ml->ml_name); + return -1; + } + return ret; +} +static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + if (unlikely(nargs != 0)) { + PyErr_Format(PyExc_TypeError, + "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", + def->ml_name, nargs); + return NULL; + } + return def->ml_meth(self, NULL); +} +static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + if (unlikely(nargs != 1)) { + PyErr_Format(PyExc_TypeError, + "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", + def->ml_name, nargs); + return NULL; + } + return def->ml_meth(self, args[0]); +} +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + return ((__Pyx_PyCFunctionFastWithKeywords)(void(*)(void))def->ml_meth)(self, args, nargs, kwnames); +} +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; + PyTypeObject *cls = (PyTypeObject *) __Pyx_CyFunction_GetClassObj(cyfunc); +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + return ((__Pyx_PyCMethod)(void(*)(void))def->ml_meth)(self, cls, args, (size_t)nargs, kwnames); +} +#endif +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_CyFunctionType_slots[] = { + {Py_tp_dealloc, (void *)__Pyx_CyFunction_dealloc}, + {Py_tp_repr, (void *)__Pyx_CyFunction_repr}, + {Py_tp_call, (void *)__Pyx_CyFunction_CallAsMethod}, + {Py_tp_traverse, (void *)__Pyx_CyFunction_traverse}, + {Py_tp_clear, (void *)__Pyx_CyFunction_clear}, + {Py_tp_methods, (void *)__pyx_CyFunction_methods}, + {Py_tp_members, (void *)__pyx_CyFunction_members}, + {Py_tp_getset, (void *)__pyx_CyFunction_getsets}, + {Py_tp_descr_get, (void *)__Pyx_PyMethod_New}, + {0, 0}, +}; +static PyType_Spec __pyx_CyFunctionType_spec = { + __PYX_TYPE_MODULE_PREFIX "cython_function_or_method", + sizeof(__pyx_CyFunctionObject), + 0, +#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR + Py_TPFLAGS_METHOD_DESCRIPTOR | +#endif +#if (defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL) + _Py_TPFLAGS_HAVE_VECTORCALL | +#endif + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, + __pyx_CyFunctionType_slots +}; +#else +static PyTypeObject __pyx_CyFunctionType_type = { + PyVarObject_HEAD_INIT(0, 0) + __PYX_TYPE_MODULE_PREFIX "cython_function_or_method", + sizeof(__pyx_CyFunctionObject), + 0, + (destructor) __Pyx_CyFunction_dealloc, +#if !CYTHON_METH_FASTCALL + 0, +#elif CYTHON_BACKPORT_VECTORCALL + (printfunc)offsetof(__pyx_CyFunctionObject, func_vectorcall), +#else + offsetof(PyCFunctionObject, vectorcall), +#endif + 0, + 0, +#if PY_MAJOR_VERSION < 3 + 0, +#else + 0, +#endif + (reprfunc) __Pyx_CyFunction_repr, + 0, + 0, + 0, + 0, + __Pyx_CyFunction_CallAsMethod, + 0, + 0, + 0, + 0, +#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR + Py_TPFLAGS_METHOD_DESCRIPTOR | +#endif +#if defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL + _Py_TPFLAGS_HAVE_VECTORCALL | +#endif + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, + 0, + (traverseproc) __Pyx_CyFunction_traverse, + (inquiry) __Pyx_CyFunction_clear, + 0, +#if PY_VERSION_HEX < 0x030500A0 + offsetof(__pyx_CyFunctionObject, func_weakreflist), +#else + offsetof(PyCFunctionObject, m_weakreflist), +#endif + 0, + 0, + __pyx_CyFunction_methods, + __pyx_CyFunction_members, + __pyx_CyFunction_getsets, + 0, + 0, + __Pyx_PyMethod_New, + 0, + offsetof(__pyx_CyFunctionObject, func_dict), + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, +#if PY_VERSION_HEX >= 0x030400a1 + 0, +#endif +#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, +#endif +#if __PYX_NEED_TP_PRINT_SLOT + 0, +#endif +#if PY_VERSION_HEX >= 0x030C0000 + 0, +#endif +#if PY_VERSION_HEX >= 0x030d00A4 + 0, +#endif +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, +#endif +}; +#endif +static int __pyx_CyFunction_init(PyObject *module) { +#if CYTHON_USE_TYPE_SPECS + __pyx_CyFunctionType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CyFunctionType_spec, NULL); +#else + CYTHON_UNUSED_VAR(module); + __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); +#endif + if (unlikely(__pyx_CyFunctionType == NULL)) { + return -1; + } + return 0; +} +static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults = PyObject_Malloc(size); + if (unlikely(!m->defaults)) + return PyErr_NoMemory(); + memset(m->defaults, 0, size); + m->defaults_pyobjects = pyobjects; + m->defaults_size = size; + return m->defaults; +} +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults_tuple = tuple; + Py_INCREF(tuple); +} +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults_kwdict = dict; + Py_INCREF(dict); +} +static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->func_annotations = dict; + Py_INCREF(dict); +} + +/* CythonFunction */ +static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname, + PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { + PyObject *op = __Pyx_CyFunction_Init( + PyObject_GC_New(__pyx_CyFunctionObject, __pyx_CyFunctionType), + ml, flags, qualname, closure, module, globals, code + ); + if (likely(op)) { + PyObject_GC_Track(op); + } + return op; +} + +/* CLineInTraceback */ +#ifndef CYTHON_CLINE_IN_TRACEBACK +static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) { + PyObject *use_cline; + PyObject *ptype, *pvalue, *ptraceback; +#if CYTHON_COMPILING_IN_CPYTHON + PyObject **cython_runtime_dict; +#endif + CYTHON_MAYBE_UNUSED_VAR(tstate); + if (unlikely(!__pyx_cython_runtime)) { + return c_line; + } + __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); +#if CYTHON_COMPILING_IN_CPYTHON + cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); + if (likely(cython_runtime_dict)) { + __PYX_PY_DICT_LOOKUP_IF_MODIFIED( + use_cline, *cython_runtime_dict, + __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback)) + } else +#endif + { + PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStrNoError(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); + if (use_cline_obj) { + use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; + Py_DECREF(use_cline_obj); + } else { + PyErr_Clear(); + use_cline = NULL; + } + } + if (!use_cline) { + c_line = 0; + (void) PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); + } + else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { + c_line = 0; + } + __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); + return c_line; +} +#endif + +/* CodeObjectCache */ +#if !CYTHON_COMPILING_IN_LIMITED_API +static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { + int start = 0, mid = 0, end = count - 1; + if (end >= 0 && code_line > entries[end].code_line) { + return count; + } + while (start < end) { + mid = start + (end - start) / 2; + if (code_line < entries[mid].code_line) { + end = mid; + } else if (code_line > entries[mid].code_line) { + start = mid + 1; + } else { + return mid; + } + } + if (code_line <= entries[mid].code_line) { + return mid; + } else { + return mid + 1; + } +} +static PyCodeObject *__pyx_find_code_object(int code_line) { + PyCodeObject* code_object; + int pos; + if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { + return NULL; + } + pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); + if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { + return NULL; + } + code_object = __pyx_code_cache.entries[pos].code_object; + Py_INCREF(code_object); + return code_object; +} +static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { + int pos, i; + __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; + if (unlikely(!code_line)) { + return; + } + if (unlikely(!entries)) { + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); + if (likely(entries)) { + __pyx_code_cache.entries = entries; + __pyx_code_cache.max_count = 64; + __pyx_code_cache.count = 1; + entries[0].code_line = code_line; + entries[0].code_object = code_object; + Py_INCREF(code_object); + } + return; + } + pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); + if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { + PyCodeObject* tmp = entries[pos].code_object; + entries[pos].code_object = code_object; + Py_DECREF(tmp); + return; + } + if (__pyx_code_cache.count == __pyx_code_cache.max_count) { + int new_max = __pyx_code_cache.max_count + 64; + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( + __pyx_code_cache.entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry)); + if (unlikely(!entries)) { + return; + } + __pyx_code_cache.entries = entries; + __pyx_code_cache.max_count = new_max; + } + for (i=__pyx_code_cache.count; i>pos; i--) { + entries[i] = entries[i-1]; + } + entries[pos].code_line = code_line; + entries[pos].code_object = code_object; + __pyx_code_cache.count++; + Py_INCREF(code_object); +} +#endif + +/* AddTraceback */ +#include "compile.h" +#include "frameobject.h" +#include "traceback.h" +#if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API + #ifndef Py_BUILD_CORE + #define Py_BUILD_CORE 1 + #endif + #include "internal/pycore_frame.h" +#endif +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject *__Pyx_PyCode_Replace_For_AddTraceback(PyObject *code, PyObject *scratch_dict, + PyObject *firstlineno, PyObject *name) { + PyObject *replace = NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "co_firstlineno", firstlineno))) return NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "co_name", name))) return NULL; + replace = PyObject_GetAttrString(code, "replace"); + if (likely(replace)) { + PyObject *result; + result = PyObject_Call(replace, __pyx_empty_tuple, scratch_dict); + Py_DECREF(replace); + return result; + } + PyErr_Clear(); + #if __PYX_LIMITED_VERSION_HEX < 0x030780000 + { + PyObject *compiled = NULL, *result = NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "code", code))) return NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "type", (PyObject*)(&PyType_Type)))) return NULL; + compiled = Py_CompileString( + "out = type(code)(\n" + " code.co_argcount, code.co_kwonlyargcount, code.co_nlocals, code.co_stacksize,\n" + " code.co_flags, code.co_code, code.co_consts, code.co_names,\n" + " code.co_varnames, code.co_filename, co_name, co_firstlineno,\n" + " code.co_lnotab)\n", "", Py_file_input); + if (!compiled) return NULL; + result = PyEval_EvalCode(compiled, scratch_dict, scratch_dict); + Py_DECREF(compiled); + if (!result) PyErr_Print(); + Py_DECREF(result); + result = PyDict_GetItemString(scratch_dict, "out"); + if (result) Py_INCREF(result); + return result; + } + #else + return NULL; + #endif +} +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename) { + PyObject *code_object = NULL, *py_py_line = NULL, *py_funcname = NULL, *dict = NULL; + PyObject *replace = NULL, *getframe = NULL, *frame = NULL; + PyObject *exc_type, *exc_value, *exc_traceback; + int success = 0; + if (c_line) { + (void) __pyx_cfilenm; + (void) __Pyx_CLineForTraceback(__Pyx_PyThreadState_Current, c_line); + } + PyErr_Fetch(&exc_type, &exc_value, &exc_traceback); + code_object = Py_CompileString("_getframe()", filename, Py_eval_input); + if (unlikely(!code_object)) goto bad; + py_py_line = PyLong_FromLong(py_line); + if (unlikely(!py_py_line)) goto bad; + py_funcname = PyUnicode_FromString(funcname); + if (unlikely(!py_funcname)) goto bad; + dict = PyDict_New(); + if (unlikely(!dict)) goto bad; + { + PyObject *old_code_object = code_object; + code_object = __Pyx_PyCode_Replace_For_AddTraceback(code_object, dict, py_py_line, py_funcname); + Py_DECREF(old_code_object); + } + if (unlikely(!code_object)) goto bad; + getframe = PySys_GetObject("_getframe"); + if (unlikely(!getframe)) goto bad; + if (unlikely(PyDict_SetItemString(dict, "_getframe", getframe))) goto bad; + frame = PyEval_EvalCode(code_object, dict, dict); + if (unlikely(!frame) || frame == Py_None) goto bad; + success = 1; + bad: + PyErr_Restore(exc_type, exc_value, exc_traceback); + Py_XDECREF(code_object); + Py_XDECREF(py_py_line); + Py_XDECREF(py_funcname); + Py_XDECREF(dict); + Py_XDECREF(replace); + if (success) { + PyTraceBack_Here( + (struct _frame*)frame); + } + Py_XDECREF(frame); +} +#else +static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( + const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = NULL; + PyObject *py_funcname = NULL; + #if PY_MAJOR_VERSION < 3 + PyObject *py_srcfile = NULL; + py_srcfile = PyString_FromString(filename); + if (!py_srcfile) goto bad; + #endif + if (c_line) { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + if (!py_funcname) goto bad; + #else + py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + if (!py_funcname) goto bad; + funcname = PyUnicode_AsUTF8(py_funcname); + if (!funcname) goto bad; + #endif + } + else { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromString(funcname); + if (!py_funcname) goto bad; + #endif + } + #if PY_MAJOR_VERSION < 3 + py_code = __Pyx_PyCode_New( + 0, + 0, + 0, + 0, + 0, + 0, + __pyx_empty_bytes, /*PyObject *code,*/ + __pyx_empty_tuple, /*PyObject *consts,*/ + __pyx_empty_tuple, /*PyObject *names,*/ + __pyx_empty_tuple, /*PyObject *varnames,*/ + __pyx_empty_tuple, /*PyObject *freevars,*/ + __pyx_empty_tuple, /*PyObject *cellvars,*/ + py_srcfile, /*PyObject *filename,*/ + py_funcname, /*PyObject *name,*/ + py_line, + __pyx_empty_bytes /*PyObject *lnotab*/ + ); + Py_DECREF(py_srcfile); + #else + py_code = PyCode_NewEmpty(filename, funcname, py_line); + #endif + Py_XDECREF(py_funcname); + return py_code; +bad: + Py_XDECREF(py_funcname); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(py_srcfile); + #endif + return NULL; +} +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = 0; + PyFrameObject *py_frame = 0; + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject *ptype, *pvalue, *ptraceback; + if (c_line) { + c_line = __Pyx_CLineForTraceback(tstate, c_line); + } + py_code = __pyx_find_code_object(c_line ? -c_line : py_line); + if (!py_code) { + __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); + py_code = __Pyx_CreateCodeObjectForTraceback( + funcname, c_line, py_line, filename); + if (!py_code) { + /* If the code object creation fails, then we should clear the + fetched exception references and propagate the new exception */ + Py_XDECREF(ptype); + Py_XDECREF(pvalue); + Py_XDECREF(ptraceback); + goto bad; + } + __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); + __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); + } + py_frame = PyFrame_New( + tstate, /*PyThreadState *tstate,*/ + py_code, /*PyCodeObject *code,*/ + __pyx_d, /*PyObject *globals,*/ + 0 /*PyObject *locals*/ + ); + if (!py_frame) goto bad; + __Pyx_PyFrame_SetLineNumber(py_frame, py_line); + PyTraceBack_Here(py_frame); +bad: + Py_XDECREF(py_code); + Py_XDECREF(py_frame); +} +#endif + +/* CIntFromPyVerify */ +#define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) +#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) +#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ + {\ + func_type value = func_value;\ + if (sizeof(target_type) < sizeof(func_type)) {\ + if (unlikely(value != (func_type) (target_type) value)) {\ + func_type zero = 0;\ + if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ + return (target_type) -1;\ + if (is_unsigned && unlikely(value < zero))\ + goto raise_neg_overflow;\ + else\ + goto raise_overflow;\ + }\ + }\ + return (target_type) value;\ + } + +/* CIntToPy */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const int neg_one = (int) -1, const_zero = (int) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(int) < sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(int) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(int) <= sizeof(long)) { + return PyInt_FromLong((long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); +#endif + } + } + { + unsigned char *bytes = (unsigned char *)&value; +#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 + if (is_unsigned) { + return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); + } else { + return PyLong_FromNativeBytes(bytes, sizeof(value), -1); + } +#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 + int one = 1; int little = (int)*(unsigned char *)&one; + return _PyLong_FromByteArray(bytes, sizeof(int), + little, !is_unsigned); +#else + int one = 1; int little = (int)*(unsigned char *)&one; + PyObject *from_bytes, *result = NULL; + PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; + from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); + if (!from_bytes) return NULL; + py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(int)); + if (!py_bytes) goto limited_bad; + order_str = PyUnicode_FromString(little ? "little" : "big"); + if (!order_str) goto limited_bad; + arg_tuple = PyTuple_Pack(2, py_bytes, order_str); + if (!arg_tuple) goto limited_bad; + if (!is_unsigned) { + kwds = PyDict_New(); + if (!kwds) goto limited_bad; + if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; + } + result = PyObject_Call(from_bytes, arg_tuple, kwds); + limited_bad: + Py_XDECREF(kwds); + Py_XDECREF(arg_tuple); + Py_XDECREF(order_str); + Py_XDECREF(py_bytes); + Py_XDECREF(from_bytes); + return result; +#endif + } +} + +/* CIntFromPy */ +static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const int neg_one = (int) -1, const_zero = (int) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if ((sizeof(int) < sizeof(long))) { + __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (int) val; + } + } +#endif + if (unlikely(!PyLong_Check(x))) { + int val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (int) -1; + val = __Pyx_PyInt_As_int(tmp); + Py_DECREF(tmp); + return val; + } + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + if (unlikely(__Pyx_PyLong_IsNeg(x))) { + goto raise_neg_overflow; + } else if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_DigitCount(x)) { + case 2: + if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 2 * PyLong_SHIFT)) { + return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 3 * PyLong_SHIFT)) { + return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 4 * PyLong_SHIFT)) { + return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + } + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (int) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if ((sizeof(int) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(int) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_SignedDigitCount(x)) { + case -2: + if ((8 * sizeof(int) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) { + return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + } + } +#endif + if ((sizeof(int) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(int) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { + int val; + int ret = -1; +#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API + Py_ssize_t bytes_copied = PyLong_AsNativeBytes( + x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); + if (unlikely(bytes_copied == -1)) { + } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { + goto raise_overflow; + } else { + ret = 0; + } +#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + ret = _PyLong_AsByteArray((PyLongObject *)x, + bytes, sizeof(val), + is_little, !is_unsigned); +#else + PyObject *v; + PyObject *stepval = NULL, *mask = NULL, *shift = NULL; + int bits, remaining_bits, is_negative = 0; + int chunk_size = (sizeof(long) < 8) ? 30 : 62; + if (likely(PyLong_CheckExact(x))) { + v = __Pyx_NewRef(x); + } else { + v = PyNumber_Long(x); + if (unlikely(!v)) return (int) -1; + assert(PyLong_CheckExact(v)); + } + { + int result = PyObject_RichCompareBool(v, Py_False, Py_LT); + if (unlikely(result < 0)) { + Py_DECREF(v); + return (int) -1; + } + is_negative = result == 1; + } + if (is_unsigned && unlikely(is_negative)) { + Py_DECREF(v); + goto raise_neg_overflow; + } else if (is_negative) { + stepval = PyNumber_Invert(v); + Py_DECREF(v); + if (unlikely(!stepval)) + return (int) -1; + } else { + stepval = v; + } + v = NULL; + val = (int) 0; + mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; + shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; + for (bits = 0; bits < (int) sizeof(int) * 8 - chunk_size; bits += chunk_size) { + PyObject *tmp, *digit; + long idigit; + digit = PyNumber_And(stepval, mask); + if (unlikely(!digit)) goto done; + idigit = PyLong_AsLong(digit); + Py_DECREF(digit); + if (unlikely(idigit < 0)) goto done; + val |= ((int) idigit) << bits; + tmp = PyNumber_Rshift(stepval, shift); + if (unlikely(!tmp)) goto done; + Py_DECREF(stepval); stepval = tmp; + } + Py_DECREF(shift); shift = NULL; + Py_DECREF(mask); mask = NULL; + { + long idigit = PyLong_AsLong(stepval); + if (unlikely(idigit < 0)) goto done; + remaining_bits = ((int) sizeof(int) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((int) idigit) << bits; + } + if (!is_unsigned) { + if (unlikely(val & (((int) 1) << (sizeof(int) * 8 - 1)))) + goto raise_overflow; + if (is_negative) + val = ~val; + } + ret = 0; + done: + Py_XDECREF(shift); + Py_XDECREF(mask); + Py_XDECREF(stepval); +#endif + if (unlikely(ret)) + return (int) -1; + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to int"); + return (int) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to int"); + return (int) -1; +} + +/* CIntFromPy */ +static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const long neg_one = (long) -1, const_zero = (long) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if ((sizeof(long) < sizeof(long))) { + __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (long) val; + } + } +#endif + if (unlikely(!PyLong_Check(x))) { + long val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (long) -1; + val = __Pyx_PyInt_As_long(tmp); + Py_DECREF(tmp); + return val; + } + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + if (unlikely(__Pyx_PyLong_IsNeg(x))) { + goto raise_neg_overflow; + } else if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_DigitCount(x)) { + case 2: + if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 2 * PyLong_SHIFT)) { + return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 3 * PyLong_SHIFT)) { + return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 4 * PyLong_SHIFT)) { + return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + } + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (long) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if ((sizeof(long) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(long) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_SignedDigitCount(x)) { + case -2: + if ((8 * sizeof(long) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) { + return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + } + } +#endif + if ((sizeof(long) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(long) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { + long val; + int ret = -1; +#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API + Py_ssize_t bytes_copied = PyLong_AsNativeBytes( + x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); + if (unlikely(bytes_copied == -1)) { + } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { + goto raise_overflow; + } else { + ret = 0; + } +#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + ret = _PyLong_AsByteArray((PyLongObject *)x, + bytes, sizeof(val), + is_little, !is_unsigned); +#else + PyObject *v; + PyObject *stepval = NULL, *mask = NULL, *shift = NULL; + int bits, remaining_bits, is_negative = 0; + int chunk_size = (sizeof(long) < 8) ? 30 : 62; + if (likely(PyLong_CheckExact(x))) { + v = __Pyx_NewRef(x); + } else { + v = PyNumber_Long(x); + if (unlikely(!v)) return (long) -1; + assert(PyLong_CheckExact(v)); + } + { + int result = PyObject_RichCompareBool(v, Py_False, Py_LT); + if (unlikely(result < 0)) { + Py_DECREF(v); + return (long) -1; + } + is_negative = result == 1; + } + if (is_unsigned && unlikely(is_negative)) { + Py_DECREF(v); + goto raise_neg_overflow; + } else if (is_negative) { + stepval = PyNumber_Invert(v); + Py_DECREF(v); + if (unlikely(!stepval)) + return (long) -1; + } else { + stepval = v; + } + v = NULL; + val = (long) 0; + mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; + shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; + for (bits = 0; bits < (int) sizeof(long) * 8 - chunk_size; bits += chunk_size) { + PyObject *tmp, *digit; + long idigit; + digit = PyNumber_And(stepval, mask); + if (unlikely(!digit)) goto done; + idigit = PyLong_AsLong(digit); + Py_DECREF(digit); + if (unlikely(idigit < 0)) goto done; + val |= ((long) idigit) << bits; + tmp = PyNumber_Rshift(stepval, shift); + if (unlikely(!tmp)) goto done; + Py_DECREF(stepval); stepval = tmp; + } + Py_DECREF(shift); shift = NULL; + Py_DECREF(mask); mask = NULL; + { + long idigit = PyLong_AsLong(stepval); + if (unlikely(idigit < 0)) goto done; + remaining_bits = ((int) sizeof(long) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((long) idigit) << bits; + } + if (!is_unsigned) { + if (unlikely(val & (((long) 1) << (sizeof(long) * 8 - 1)))) + goto raise_overflow; + if (is_negative) + val = ~val; + } + ret = 0; + done: + Py_XDECREF(shift); + Py_XDECREF(mask); + Py_XDECREF(stepval); +#endif + if (unlikely(ret)) + return (long) -1; + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to long"); + return (long) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to long"); + return (long) -1; +} + +/* CIntToPy */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const long neg_one = (long) -1, const_zero = (long) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(long) < sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(long) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(long) <= sizeof(long)) { + return PyInt_FromLong((long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); +#endif + } + } + { + unsigned char *bytes = (unsigned char *)&value; +#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 + if (is_unsigned) { + return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); + } else { + return PyLong_FromNativeBytes(bytes, sizeof(value), -1); + } +#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 + int one = 1; int little = (int)*(unsigned char *)&one; + return _PyLong_FromByteArray(bytes, sizeof(long), + little, !is_unsigned); +#else + int one = 1; int little = (int)*(unsigned char *)&one; + PyObject *from_bytes, *result = NULL; + PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; + from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); + if (!from_bytes) return NULL; + py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(long)); + if (!py_bytes) goto limited_bad; + order_str = PyUnicode_FromString(little ? "little" : "big"); + if (!order_str) goto limited_bad; + arg_tuple = PyTuple_Pack(2, py_bytes, order_str); + if (!arg_tuple) goto limited_bad; + if (!is_unsigned) { + kwds = PyDict_New(); + if (!kwds) goto limited_bad; + if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; + } + result = PyObject_Call(from_bytes, arg_tuple, kwds); + limited_bad: + Py_XDECREF(kwds); + Py_XDECREF(arg_tuple); + Py_XDECREF(order_str); + Py_XDECREF(py_bytes); + Py_XDECREF(from_bytes); + return result; +#endif + } +} + +/* FormatTypeName */ +#if CYTHON_COMPILING_IN_LIMITED_API +static __Pyx_TypeName +__Pyx_PyType_GetName(PyTypeObject* tp) +{ + PyObject *name = __Pyx_PyObject_GetAttrStr((PyObject *)tp, + __pyx_n_s_name); + if (unlikely(name == NULL) || unlikely(!PyUnicode_Check(name))) { + PyErr_Clear(); + Py_XDECREF(name); + name = __Pyx_NewRef(__pyx_kp_s__4); + } + return name; +} +#endif + +/* FastTypeChecks */ +#if CYTHON_COMPILING_IN_CPYTHON +static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { + while (a) { + a = __Pyx_PyType_GetSlot(a, tp_base, PyTypeObject*); + if (a == b) + return 1; + } + return b == &PyBaseObject_Type; +} +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { + PyObject *mro; + if (a == b) return 1; + mro = a->tp_mro; + if (likely(mro)) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(mro); + for (i = 0; i < n; i++) { + if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) + return 1; + } + return 0; + } + return __Pyx_InBases(a, b); +} +static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b) { + PyObject *mro; + if (cls == a || cls == b) return 1; + mro = cls->tp_mro; + if (likely(mro)) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(mro); + for (i = 0; i < n; i++) { + PyObject *base = PyTuple_GET_ITEM(mro, i); + if (base == (PyObject *)a || base == (PyObject *)b) + return 1; + } + return 0; + } + return __Pyx_InBases(cls, a) || __Pyx_InBases(cls, b); +} +#if PY_MAJOR_VERSION == 2 +static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { + PyObject *exception, *value, *tb; + int res; + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&exception, &value, &tb); + res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; + if (unlikely(res == -1)) { + PyErr_WriteUnraisable(err); + res = 0; + } + if (!res) { + res = PyObject_IsSubclass(err, exc_type2); + if (unlikely(res == -1)) { + PyErr_WriteUnraisable(err); + res = 0; + } + } + __Pyx_ErrRestore(exception, value, tb); + return res; +} +#else +static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { + if (exc_type1) { + return __Pyx_IsAnySubtype2((PyTypeObject*)err, (PyTypeObject*)exc_type1, (PyTypeObject*)exc_type2); + } else { + return __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); + } +} +#endif +static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { + Py_ssize_t i, n; + assert(PyExceptionClass_Check(exc_type)); + n = PyTuple_GET_SIZE(tuple); +#if PY_MAJOR_VERSION >= 3 + for (i=0; i= 0x030B00A4 + return Py_Version & ~0xFFUL; +#else + const char* rt_version = Py_GetVersion(); + unsigned long version = 0; + unsigned long factor = 0x01000000UL; + unsigned int digit = 0; + int i = 0; + while (factor) { + while ('0' <= rt_version[i] && rt_version[i] <= '9') { + digit = digit * 10 + (unsigned int) (rt_version[i] - '0'); + ++i; + } + version += factor * digit; + if (rt_version[i] != '.') + break; + digit = 0; + factor >>= 8; + ++i; + } + return version; +#endif +} +static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer) { + const unsigned long MAJOR_MINOR = 0xFFFF0000UL; + if ((rt_version & MAJOR_MINOR) == (ct_version & MAJOR_MINOR)) + return 0; + if (likely(allow_newer && (rt_version & MAJOR_MINOR) > (ct_version & MAJOR_MINOR))) + return 1; + { + char message[200]; + PyOS_snprintf(message, sizeof(message), + "compile time Python version %d.%d " + "of module '%.100s' " + "%s " + "runtime version %d.%d", + (int) (ct_version >> 24), (int) ((ct_version >> 16) & 0xFF), + __Pyx_MODULE_NAME, + (allow_newer) ? "was newer than" : "does not match", + (int) (rt_version >> 24), (int) ((rt_version >> 16) & 0xFF) + ); + return PyErr_WarnEx(NULL, message, 1); + } +} + +/* FunctionExport */ +static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig) { + PyObject *d = 0; + PyObject *cobj = 0; + union { + void (*fp)(void); + void *p; + } tmp; + d = PyObject_GetAttrString(__pyx_m, (char *)"__pyx_capi__"); + if (!d) { + PyErr_Clear(); + d = PyDict_New(); + if (!d) + goto bad; + Py_INCREF(d); + if (PyModule_AddObject(__pyx_m, (char *)"__pyx_capi__", d) < 0) + goto bad; + } + tmp.fp = f; + cobj = PyCapsule_New(tmp.p, sig, 0); + if (!cobj) + goto bad; + if (PyDict_SetItemString(d, name, cobj) < 0) + goto bad; + Py_DECREF(cobj); + Py_DECREF(d); + return 0; +bad: + Py_XDECREF(cobj); + Py_XDECREF(d); + return -1; +} + +/* InitStrings */ +#if PY_MAJOR_VERSION >= 3 +static int __Pyx_InitString(__Pyx_StringTabEntry t, PyObject **str) { + if (t.is_unicode | t.is_str) { + if (t.intern) { + *str = PyUnicode_InternFromString(t.s); + } else if (t.encoding) { + *str = PyUnicode_Decode(t.s, t.n - 1, t.encoding, NULL); + } else { + *str = PyUnicode_FromStringAndSize(t.s, t.n - 1); + } + } else { + *str = PyBytes_FromStringAndSize(t.s, t.n - 1); + } + if (!*str) + return -1; + if (PyObject_Hash(*str) == -1) + return -1; + return 0; +} +#endif +static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { + while (t->p) { + #if PY_MAJOR_VERSION >= 3 + __Pyx_InitString(*t, t->p); + #else + if (t->is_unicode) { + *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); + } else if (t->intern) { + *t->p = PyString_InternFromString(t->s); + } else { + *t->p = PyString_FromStringAndSize(t->s, t->n - 1); + } + if (!*t->p) + return -1; + if (PyObject_Hash(*t->p) == -1) + return -1; + #endif + ++t; + } + return 0; +} + +#include +static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s) { + size_t len = strlen(s); + if (unlikely(len > (size_t) PY_SSIZE_T_MAX)) { + PyErr_SetString(PyExc_OverflowError, "byte string is too long"); + return -1; + } + return (Py_ssize_t) len; +} +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { + Py_ssize_t len = __Pyx_ssize_strlen(c_str); + if (unlikely(len < 0)) return NULL; + return __Pyx_PyUnicode_FromStringAndSize(c_str, len); +} +static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char* c_str) { + Py_ssize_t len = __Pyx_ssize_strlen(c_str); + if (unlikely(len < 0)) return NULL; + return PyByteArray_FromStringAndSize(c_str, len); +} +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { + Py_ssize_t ignore; + return __Pyx_PyObject_AsStringAndSize(o, &ignore); +} +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT +#if !CYTHON_PEP393_ENABLED +static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { + char* defenc_c; + PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); + if (!defenc) return NULL; + defenc_c = PyBytes_AS_STRING(defenc); +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + { + char* end = defenc_c + PyBytes_GET_SIZE(defenc); + char* c; + for (c = defenc_c; c < end; c++) { + if ((unsigned char) (*c) >= 128) { + PyUnicode_AsASCIIString(o); + return NULL; + } + } + } +#endif + *length = PyBytes_GET_SIZE(defenc); + return defenc_c; +} +#else +static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { + if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + if (likely(PyUnicode_IS_ASCII(o))) { + *length = PyUnicode_GET_LENGTH(o); + return PyUnicode_AsUTF8(o); + } else { + PyUnicode_AsASCIIString(o); + return NULL; + } +#else + return PyUnicode_AsUTF8AndSize(o, length); +#endif +} +#endif +#endif +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT + if ( +#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + __Pyx_sys_getdefaultencoding_not_ascii && +#endif + PyUnicode_Check(o)) { + return __Pyx_PyUnicode_AsStringAndSize(o, length); + } else +#endif +#if (!CYTHON_COMPILING_IN_PYPY && !CYTHON_COMPILING_IN_LIMITED_API) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) + if (PyByteArray_Check(o)) { + *length = PyByteArray_GET_SIZE(o); + return PyByteArray_AS_STRING(o); + } else +#endif + { + char* result; + int r = PyBytes_AsStringAndSize(o, &result, length); + if (unlikely(r < 0)) { + return NULL; + } else { + return result; + } + } +} +static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { + int is_true = x == Py_True; + if (is_true | (x == Py_False) | (x == Py_None)) return is_true; + else return PyObject_IsTrue(x); +} +static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) { + int retval; + if (unlikely(!x)) return -1; + retval = __Pyx_PyObject_IsTrue(x); + Py_DECREF(x); + return retval; +} +static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) { + __Pyx_TypeName result_type_name = __Pyx_PyType_GetName(Py_TYPE(result)); +#if PY_MAJOR_VERSION >= 3 + if (PyLong_Check(result)) { + if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, + "__int__ returned non-int (type " __Pyx_FMT_TYPENAME "). " + "The ability to return an instance of a strict subclass of int is deprecated, " + "and may be removed in a future version of Python.", + result_type_name)) { + __Pyx_DECREF_TypeName(result_type_name); + Py_DECREF(result); + return NULL; + } + __Pyx_DECREF_TypeName(result_type_name); + return result; + } +#endif + PyErr_Format(PyExc_TypeError, + "__%.4s__ returned non-%.4s (type " __Pyx_FMT_TYPENAME ")", + type_name, type_name, result_type_name); + __Pyx_DECREF_TypeName(result_type_name); + Py_DECREF(result); + return NULL; +} +static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { +#if CYTHON_USE_TYPE_SLOTS + PyNumberMethods *m; +#endif + const char *name = NULL; + PyObject *res = NULL; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x) || PyLong_Check(x))) +#else + if (likely(PyLong_Check(x))) +#endif + return __Pyx_NewRef(x); +#if CYTHON_USE_TYPE_SLOTS + m = Py_TYPE(x)->tp_as_number; + #if PY_MAJOR_VERSION < 3 + if (m && m->nb_int) { + name = "int"; + res = m->nb_int(x); + } + else if (m && m->nb_long) { + name = "long"; + res = m->nb_long(x); + } + #else + if (likely(m && m->nb_int)) { + name = "int"; + res = m->nb_int(x); + } + #endif +#else + if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { + res = PyNumber_Int(x); + } +#endif + if (likely(res)) { +#if PY_MAJOR_VERSION < 3 + if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) { +#else + if (unlikely(!PyLong_CheckExact(res))) { +#endif + return __Pyx_PyNumber_IntOrLongWrongResultType(res, name); + } + } + else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_TypeError, + "an integer is required"); + } + return res; +} +static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { + Py_ssize_t ival; + PyObject *x; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_CheckExact(b))) { + if (sizeof(Py_ssize_t) >= sizeof(long)) + return PyInt_AS_LONG(b); + else + return PyInt_AsSsize_t(b); + } +#endif + if (likely(PyLong_CheckExact(b))) { + #if CYTHON_USE_PYLONG_INTERNALS + if (likely(__Pyx_PyLong_IsCompact(b))) { + return __Pyx_PyLong_CompactValue(b); + } else { + const digit* digits = __Pyx_PyLong_Digits(b); + const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(b); + switch (size) { + case 2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + } + } + #endif + return PyLong_AsSsize_t(b); + } + x = PyNumber_Index(b); + if (!x) return -1; + ival = PyInt_AsSsize_t(x); + Py_DECREF(x); + return ival; +} +static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) { + if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) { + return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o); +#if PY_MAJOR_VERSION < 3 + } else if (likely(PyInt_CheckExact(o))) { + return PyInt_AS_LONG(o); +#endif + } else { + Py_ssize_t ival; + PyObject *x; + x = PyNumber_Index(o); + if (!x) return -1; + ival = PyInt_AsLong(x); + Py_DECREF(x); + return ival; + } +} +static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { + return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); +} +static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { + return PyInt_FromSize_t(ival); +} + + +/* #### Code section: utility_code_pragmas_end ### */ +#ifdef _MSC_VER +#pragma warning( pop ) +#endif + + + +/* #### Code section: end ### */ +#endif /* Py_PYTHON_H */ diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.cpython-312-x86_64-linux-gnu.so b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.cpython-312-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..fd3feae16733beb726e4884c6cfde2e637a57451 GIT binary patch literal 5009336 zcmeFaeVAKiwLY8{2121URFPQxh!u1!B584StfFZtkd^|Wd^i?y(w2c~DQ%ceAuS-8 zQZUnsMi3oPJh2=#*5fgvN5^`UP(VWcAl45?@FO4|G6ghNg|Ue9yYFYMHGR5I^IpH} zdf)dyx0lSl?)%>BS5_60;!ZiPbE$#k0@$;dNh8SvpF`i0 zJoeMy?=VP(|2V=K3jclJ&*ocXzuJ4`r|mZxA@^(Qeofuae%7>g_EW10u}1#ClL-#; z^8}$o_LE+2sXz2zMm%zn)EE4zZ3)>=+wXkr$2$LSH(iF%5*@EqUowYCM*C?;3demV z{!jU=b1w?b7#e)dm5oVj-}j4MPrvl5txK-^#yjrdp47jD|8qaq7v2=gPhOCiMDEM@ z|5xz;dhvHt{`9Fo%&opZ{;KcX`sbsc{n?+627S=&Cuob+?i+F_=wSS(VLBN95v z_(xFW!T29d35BNn11dfa6FZo{4HG{Y|A`iLE^0CEDJ}B92II#LQqQ+>QXOpEJuT+@ zr563%(_-954nKJQX)Wd(X)*5cM;<&+2z@?S{l9FH=kgZwy|+a_f8L_bSuOHB-eSHV zZNZR($0aSs{e6o*tZ32CJ6qKA zP>Xf^c8fZvv^WmqEynF`(a$L@#+}h(+|RYRK3vga9WyP)J+%d&Y%y*p&eItFAKW&! z@ITgKy*}PzzN=gC54OnjP>Xf^ON;*B)1p61Frk^jNg>|YBL5>Tj_@hGq{Tz1mx9;vMu3EdMdtLvszW(m+Q1{9;EBiy;m*YpMd*OxWbYIrf z*K@_nb^Sek7oKza>a}ZnE?l;Jb&qHVSGreZmodSz)hjo`nA*^NE_S=1zi<7D{!nVe zIX(ToYcK0Qx93`F3s$b^?>?)ie_?;mRo!Q=S$pl8^BA zFWivn@x5oR?Yn9j%XEcZz!~VMbOLMnE@HY1`_|js7@oOo^*W1F8_rw4st5C1xQ;ID zeEON|*R1GYiGFLg`ODVzs7V=((2{xm{hWcD@|k^WuhL1YVaduBy{E6eDzmJQi7#5S za>d%qdL->tJy)%`D#OV#XZPZ@Yp+}{VQ*j0vdb>$U)JB#ebJf~y*(?g?70jhApv^S zJ?}DhvHOfQSnMS|XzRL_*Yuo@ZjoKwv+SClAd8OoWZZm^<-)#YD|(hMTX7}qTng5| za{2oH1Nw_`WCAc7IJ?T0Lno>QTt47fwHj5)%wz}cGbg-Y<+>Hi`Z#Gul8MMIJK85~wjUko+n}>rvVKkf%Bv>k8IF{D- zVYk(C5JGWB>A5{wTS9Mgr>|Ypzij22bz1iY{cAHUYZ;e|9L}B7SNAMqofq_6y}oD7 zik@z7A06|oo;5vvD_7Xzh^8D=c>l`&Ueu~mTlbYDYo#r51*{83~u&F9y z?z{$o*nd!gJK&%~$!Fn^Tr=S~XIVdvVoq^?Z@TRq+n;;Cs5QFrwO4wi%=0^~=e@J- zFHEbRXse6S8P?4P1Xgq5x(n7XU$J`GI@V{SxKoUW!Pz}r0(Xs)yur0V;tN)v5UF)j`IENh$2Zr2}D?AD4CwtDPvoqy;^^KzrW(E*yG#z|G&# z-?Og!V2aLJUmO?WMY=n);j*4ZUY{xxJ5aboD}2Ajz{k%Nx5xaXRl)e}dVuGN`+J>E6IU9#Wbv+T+xJ(u&k zqNcM>$9)Z7r~UCKUJNIy)GO>cxYs%dvvzku40H^x_PJ|8taUGUr!UK_Tl!A%nH?k3JGjEos?>{){&%dSBC33+9ejxyW1%dYaz1ib33aQ9rn0|Qw(v6buG zEvF04SfkjAV{R0~xm-yho**ebT$ z$ki*CXZqc3*4x&teOo+)cm>frLT4>rIREtSId7ZuwhsTjLkMrK{(s&6@ACiOxei|F z|C@aep7H;g4URV{WdD=>7`+B>{_MTx`WY+nW^QumP5Oq=K5w^oakUKIaAOCdufHNfXy5WW`R*X!>Kj0E_1Xr6k2FaD3be@#3nKdsK|#swtz0#+l0RLfq-`oiB&nIQP&_f4~o7VTu;Q*i0{SyKH?1i#_GQdY}l{!-azJ8nV z#Q?uT`&J6@x$E!%09z%%Z&rUbz{hVAf9MAX&g*=wGaTSE`il;c03Xjuo$UeM<{J<2 z1G8sYMyd{ zkLx;C1N`lprxxH7pOSG$0(?9#eC*)^*DG;|#O(pT9+CA;1o#zpz6AL6i+DhVEgj(P zcZYXQDi&^}ZT>_bxL)gIuRe~@`40{lcD z0(|BL?L&Z{=tF={jfp=O;3xVJ;6q{ULxBI#%QCNOfG=Jx`Rf7R>S+Y{+IsPa9yzc- zR!=y<=WY;xBEWxXpVX5K@Tm{TD^NPXe?$Gf0lxV`@#g~k1M1HQ_(EFz#Q^^a^_K#C z0=)I78sM8(;=wAmdVsh7Gy;5uAHZUZ?K-fZc3o-@@NqqE;{iUV$89daTb=m; zpPHwA2=G>CDZqyoioYJ<|9zp<-3ajUr{y?o2KaJA`0x)8oNrn4L;`$H^F#xD<|)Y& z5AYSu(;484nkNz9YkMS5SAZYUJm~=6)I7aG{yE8$3-Hfqo_v5${6YMM0H6Ac@TCC% zcg<4{@Hx#h9N_EPpIU&Qwn+Lu65xxPryk%#f0cU10{kq^6Z+AC>sZ%3;Q*idz2u1n z_<5SAJ-~sU(r0t0KZi8qyl_Q^K=FH$e$#CCcr1pl=)->d`9!+0(?RFp#a~b z^%Mhq;u#sY6yVd!R|0%l^Hc+TM9-sIfRF!K@;3tfI?dAz@M+C67T{}oe-ioef$Mvd z=7|RQ)E0f+4DfNi|LhF#w`-n6fX`^2WPmT+F8R{|e!J%B4e({nlL_#3ttTJgGrI1D z0AJHQLjk_HQR*oN_#w?R9N?RprxM^J*GZm{0RKImS3ST-wu-+I;B%TM#9y4nCazHE zhngoG;NzMn65yMfr#-+wt$E@BzIca>)EVHLHwm8#@c-02T>-wSdC~zsa*O222Kb8h zITzqlI(ryAgoJ6rl*3-ATaGZNqvpOie!0Dr3H z84K_=%@ca`!1YaEFL|N?{(YJ!7T}wjr#;APJ-GlsasLqDBlpVt`eJ~exPJ)nsRzVg z5Af${os9sW_;>A3fREiRe7JUCAG$P8B*0sqXn?mo@c=)l$7g4NFKa!C0H6E3)YBE< z(^^kDz+0Z)0B?D60e+?C$p`qzXJp($fDdgGz7*iE(LChe*RkXL<79#i3NDe(;47L zHBTbI=k$C`2Ke+BrOtGKAJaU&0Y0VmX99f8p0fq`@M4)~A;3qzB;(ct{HxTT_}PK| zd4uxF0AJK~918H^vt<8rfY03}aDY$geM{#r4y?0N=amZZkvpZ%kpN%3R{I>_GanW{{L2IL+jFI8fVby^ z$pBwDO8V9n;ENlyo&cZK`kMhhHzfY-V+Yog)B1A(KBo1Tg1kNl84mCjeSXvk@U6@rS)e=4y>oD^%nws^V8br0H5fS{Lx<>m?y3CiUs)E4U#7r;43<>e1Na7mHa~i zKBVfagKJkc**Z#zT<2K(b&m}qod_m8z;Q${? z%Ko(gU(n~GUB3?Gzef6&4)8U-@5%>wd;T&M;A6WaZ#BS2wEmF*pV0cdesf?wU0Q!8 zz?b!XdNsh;zb5xxV*x()gq&ZY-yWDh@>}8C1H9cAb_RHR9@HD)V^_<#*#MvVwdAh{ z_}ivQ9gP5==#l=1es^GLZ zt-m+GhbDTd*id;TAK^1%LE{ow#_pD)A${KV%M z0e<51ivZuH&l{5gzWGCWT}TIbJKlN&d}5RMa{=D^lMnFrc|kG2TYpLc-ae101o(;1 zI|BT~=N$pQY{!3qk6$A7hn_mH|DEa&2l!A!pXUeov6tk`X%FzZtoRcF-ujaa@b-B@ zI>1|hdIP+D9+3<1w!ZlQUtccu6a)Ok=OY1r;`5OJZ=b(Z1H66yQV;O<`A#Fi+vhtW z{sTp9cKxx>kHP`oK0k^Dck z0X`L#`eOlpqW=Njo(m-c{6zl)ygheH2l$t@{@wuJoTU8^@aL#MAK(*3neR}L*Y}CV zAg_5!0Y3F_lBW{j->UvKU&fB_}6>>F^@mV<3rxO z-tO^XkN1CvE#mR-^!!new|{d(Ip*;x&)@Fx7kGT!|3HMUhf{(<8;qh+zR*e9q%PG5kle$3;q_V~~P`;Y&1 z9v}Aj^&TJb_-i~q>hW2Rk9qtCk8k(*jUFHO`0G5r)8nuA_=Lyb;PFY1|FFlWJpM+H z@ACKok57C2O&;It@tZw9cGD`@UIU1s{{Yvbs%}ubK&IHwiCOL2qkZ>^tUyxJTw$a-t=Jj0U2Yw<0(kvCq9k; zPJ4X^t-E+B<6{`tT)c!aAL)-)T)c=eALWmhT|A#L zAK{M{T|AdDAKi}@Ts(&{AK8!QTs(_0AJva$Ts)I8AJLDdT|9&Fs~M+UJe@Hg$&V&n zJcThI#gE2aJel!p7{^?^??Z@R%Q)iVy^LSSIOO6zj9<^V`7-DK6yq4 zvlzdVamK|n8Fw;HyLblUcQH=6csgS~A|Fk-cnV`a8Xt|jcrxSnFpjx+-=&C8V;phu zUdHcb9CGm<#_wa?e95gp;{@Zniyvn^k8#b#yBW`CTygO(#-}qbyLcz#1&oU>-of|` z#swGO%lJ&jITvqd%tzOw85eJ3%tzLvX&2wccp>AIi*IARh;hQjTNt0sIPT(2j2APG zxp*Vva~MZl+{c)YphrV4Ud8x4#?5_h{TZhi*Im4n@%fBvE?&ZzkDf;>E?&g=0>)(* z&u7d>(4$2c&t=R<&!Ytw&tZHqLwh^95)$?c%!_ zuVkEZ@okJ(F;2L63*##p$6dUM@oL5~7jI;I72}AD`xvib9CGn0#%mcj$K3ie&M>aK zcq!wn8P{CAgmE9^ii;O9UdOoX;`xmG85dnVmoXn5j}}}!hcO=+kLFxFi}AILGcKOV zILkQg;u(xLFiyF6I%7U69!e4z0d67lXLk$iXC z6Bpx7WALH%;WK7Go%{Wy{$rAZdlnDAuz2uK4Y&W`gUPLDgl?{6=Oo9g$-y&1>)(=u z_DZb9v#-aU3iqFP(~riJTRR&!;s8b3aN}~EsmOQ9g2DQw^FBE5(s>_xVBW>7;$@U@ ze&gGalUuWq#y^oIx%Jp9P;&C7edFtoO%Ap#MSy*iG;Grjs{s{p4o$_Qj z#A*EsZCN<@12ka$;j^C~eUR$l!;K|u%HTr_w;qPcMljihgNLmTFCKic(eB#yeE)7v z{8_vR$==g84|0TI43G3voA{Se$-y6BgygNq{t-bVhu3T5x_rX&JFwDQSe~HeQn8#q zVfm47`5`TH#S%MXb_Ju{=j-34KEvr7rm(m_;OJzF>R z;v0_$U634jZVay<$-xCDgdsgPg1T@0ATWpsh&$;8jsp)<1nvYLRK5%Nv&yG|H#mOt z2|3q?wmv6qJ|QpR3RO!IzDL!vgy&Fwc)tfo%7Av1;Be)=1hA|_eO=zRp!hA%v5LI za~6o{yp4c)N&vhsWX~(W=*%yFE_1I+_~wnWA`J;ksx~D&Mpb?#687y=mA@E^@TCp1 zFTXGh;oDW^p@{Ggs`9VYApD=7$+&!x zp8{}w9s@X9ogoatjXA@_%sBDbLwu&ZPuYGXS#` zXFX@moSU2ztB?o4^eeli8wCj;$x0{75}r&pxOz*yHetW=S-TD-vHs% zGyw0Pd0u3J(YM2XBy-P6c*V7{B1H*@e<*56!t+(FO1M$gnuPCGwJG5ORmUVeQPt?7 zZroR?8k2AuRn*@LGdIpOL(G}>5m3zod_i%+a}JsFE_0RvrmJ(YlS<&OPSjw**enoMB*YtTRH)I;R7;ob8@7?m0WnIoCO{3JCzL!lYf&=cI&3TqCQ% z*Dt6$9}zVp;a}E^T99zFszVa~M%7^n&s4P{;lrxdC5)=tknroOhTGh@d#W;SM8eNd z#e7pRgK@YEm>c_$CT1U&1Gqk90p0+Td*wW5-ke(qs1^b2^`hiC%jUcnz~!t0@R4b3Sg)Ccu&E9P^y6c-A=?vv4`10PaozD-s7r&wu-{%)L{>FZD~$yCf{CnwIbr zs^%nIqH12k>r^dC_}3pu=CXu6s@5d@l&T{Vo<|ikjUnX5KDQIIetr|4t3Lr?SE{7v zOqrA4iQ=5S0CsK9c+RXjH=45ma1sXM=tG{fXwGfs90oX9ofXenHRmpK);(v#b2iPn z*Ez8YV*pr%$P*26@t+v)7!f%$WnQt5e={7R-5@IZFV1s>qtlo^#loJIq-FaMwnxNCOy+`qoaF zdsD(^u9nX5Z%IPUsv4E>r>b^JI9Jt#gx^&)E#W`zm&|;Ej8tDxH80`!RV_&PajK|) z1Z8kzpX&tm{~tq5U9Zghr;>6`-KoH2kHNak$!oN;sVk3cwQ65v(pOnJ^O zb1pS!2Efj>tmn*`bCWrT0IbfU=Pa3XyK`a{$^d9ip(4E+mT)j5t1u$ra#iaRu2Yr& z@(%mHUDdFJm#W$>;bE%AB|J;jl!PPq$+%q-&Q>)m;dWJX5*|+#{j8u2K2;~K0(0Xk z)QGtXy8&Ep8vu6S+w`1c=G;$kox;nsbpk(*X8< zu-9{D%-LtoJU|2k@jj{ujIMqdU!%jYB;lLa%8FDajHz0a@EBE_67Kw->^mmmOKW7` z=n*dSWva#`{DZ0q3E!kD|B)HWc$6yoP(Uhf?8y)@d%{0(;(AgBmt= zz`gJ0$4Z!f_`ju-IPw@ia+P$lAmOg>iaI3WH&h*#@RO=mB)nVIx`daj+K})gs)lh8 zVxZGhjYxR4s&NUYtJ*2yB~&rHEK=E#nFHp=j^&Bju`K|uV?_YFl9W7W*_`(hFlQCO z?s;mSbHtqdqZ}@06Tpu4G0*8vD~>)H)jDSsfF~gH$AG!9&URutXPGkr;Lcy12wlMF z%nRRoC_%T)44U{pB zDr!zb<;MC`#H@b_fSYMA!0SQMnem)ibMiaPoU;I6$MBHnEShthIfnsanzQ0LtLEHg z&N@I+oej^~H0NG(hB2v5bw;?{*f^soF=sRbz?~N{08BseZRu6JghyN{tH7@+g!B;2fOR>I$?Iwav?sum@DSk;Pz`Tvs4RSCbYYD2uf73tF|-&KNPBGYOJ|A3dQRfO~Y} zr|prTh>d$BfhUEq$0Cw+rafn`=gbf@cOQT|Ci0%M;5moPc^3h5md%LsQi2kHH3WNARmzBzWJ$wF z&W%l|5OZof38;<$Si9<;vtiCX=H%GG_w7 z>P&jhlsT7}lfQ}NZksUi95DO;73oRdg#$SxXIo05Ua4wX)V!)SQQxiVh^Pfs$3%^) z%2_0D9T-wI=EAnWZkKV}MJ-ar>@wJw8)up&=1eyNxSkXM?B;vOa~93H&78vkc5GKX zXVsj$%vlGpBevl=o95hW&M->FGay%I1ehD^j1sfX833-%H~`=Ib4Hz>Ghxp8&WS!J z0k8@``?7Q+<-&my_l24f^=?(OqLx)15_PSrMNx-Ut%y2L)vBl!RU4unscKWys;Uuu zqK2w|jCYPKBkIC|8dc1w3uaq|G%z>zp_iC_SOwtvkOSa-Jon0b&Vo5_GiM3F&Y-gA z95&|;bJhTOH^ZDGp0jSwr_4D9V8?*_j8N+g^YcR1IR(Jg83Q26$#w!@?qC0s%st`4 zfe}^HqOMStzq*HGyRK?p)DBe(qBc}5i^@MH%7KPOZK^sV>L~uiDb>2DV^lHIc7)v6 z=QuIzp9A3PPXh3l^yo}^&MtEf~4FEeHnx1paoco*;)91or75F;^>_*sy1GqDAVY{fesu~wHtZGWsrK)y`8c{VX z>TFeWqDECMih78uB~fFlRz>~sze`m$QQN7a^AUtLyC^U>u2+nh>opU=tyd?2eZZ6O zoJn&oGG`jVt|YylGh@y^0*;;su=AqeIfu-77l0eR48W6xdkuTeiaB?ha|FQU#1b@t zu_E8ON9I1}!hyJUCW;FJ)az7@xp1IU)r6?0shSiup(=mB75h$8H6vZoDVmhY-IA^=(jC;;bbIvtq3V z&NMM|E(dTqvjBDmT~hYFgB+syR`Ag9nd1Tl1pksA5J{ zlwq^00dr%=Mu^$5#{pc&ngG_ZG0*94Z|Izi%+47F;0rYK$AGypXFD;Sv&@+Qu(LAh zIaB6bV$NQGFm`9ojOWanbE7#603?R3&5_EY0v3? zaeO6QEybWDr!a5hN$PO+7z{_Y6PFV zVBF(Xjk<84rfR3CFML+2N{Bi_6`jc;m7N!PU~cSKfta(q4ZwA*1YpN-*>et?bB8%= z0JaJvp0jSwr_4D9V5{IhJ<`#`DAJ8S1;C9S1F%7l-RUHxaMpf&gj;YGGR~YwvRl_bE;G1Xm zJO#7W-$l$mF9mQj%>Y=Rvz{|&&Q0bV0N#uX+-=SVfSqei z&pAc|ABpTE>CP`q%GNH*x0BeoA~9mlXeNMr*xC+&Zk&qGS$MIEyKo@PZXisFdX%bN zqDEBBiu$`dW#62rQB{kg?ohQPYE0FtsJE+H6SZB{rl>utj)@wlidl3bwAm$qxp8($ zV$N<6fLpILfPDp3$tuw#8BnKKVyuNMW+IYi8ycLBJZWdO@L>^Upu+-c4c06SXh zp0i=jJ?7-a)}58;c@!8cvSLWO8gt=5r*bq4%p2_xjjK1Ybzlj#7iC+z@sw8uSXr#a`EGX-GRpDxdtHs^A4 zW&wEH&(U+9GjGl<<}3o(+Lb(K*_`*9vkG7GG_w7)+^~bQ|4S^&RzgJD>I%m zYtD`4ECBH3hBXg)&Z0TDnR6Jxtt?ig28^C>_@s1Z#DxO|?aY{{7plr%P2io9sxcR~ zovdoRs6|ziqK@A#nNy;cRLzL`Q&qE~mZ_rt3dZHeK39p^y(orl?g_BX~f8%nMbGx^SSTYNx1g zR5c;$h^lE(|Aw#IcXCc1>$~&M|ZDGiL;)+UQYW zt20K-I%fj7Iy(VQ0m&I9JZI9Ji<}ePNCBW%&wfl+q05B>5$#o0)c;a7Cu&sHqNre+{HRi&BPO6wu8fLp=>;>k=BQrzH zKJ)>&KI8%H6}I3xhs=4GIm-ZV#_r5N>^Upu+-c4c0Frdp39xbW1~Et91K>svp=`T0 zhJm@!86l=~I)HPw1Gv{9tVjYFbN}*3r87wv4kWZQ{5Q!^uT(W7YEspLs3)sBBx*|4 zVNu7oO6H2FU8>eaeMHrUsA;OGIgXGU>+d9H{c{0a{V4!@9@XVJ)8<@m&aCImdCt5! zx0tgCV6V0%&sjF-z2>X}*eiI=bB>tvadS2S?3y;_Io+Fa&S)~;mAm&BVF2{`_ASz@ zhzkdLwO4UbFH^Ns)QqZKqRv+}EoxTPoTz^vl+1ZibE=j^{f4S#QS++SM7=@P5m5_N zu`W@Bb_~aWxpBSPi8;Gj0B*e!0NBaxmGqn`8u7$CwO!Pr zs!36w|A_3H61AjiM$~VsniaLI>X4`#R4s}+OcniUux4!RbCZ}o*$d!$5{B8XR1siq zbViBkoB`mRaRA<2F=waeOqg@NIlBPt=}Ovjy1z!ioU6>41K{H<=FEG}0x_MpnX?4I z(}B*i=NvZY4(G%wQ~#F8OJyz9%s12%^Q4M9-)oBEn8&{!D%sxB?;8tM_z&aL+(I?Ju z41mrl0L~c$cpFIOZwKbaobea{opS)3GYMepm7zgLHS?^ZSJ!U3M}?oLV6 zZdK!=hE+|8dW@=FqDH8q<{}2-#`;S!0M@@9z|~&?n7BKlijB@%41mtv0M6L}u-^b_ zQpHB+SPX#9eE`lGK>@D@$W8sIXeOP5T4G2=S-S&kvY=1d0y9>Z|tPEh+hhfiIG3QQmjsP5k z-I>4cIUDBOV@`ftYuCmwFgK1KA?E1Q0o>^A0Con&J!hvm=bAGG;AVss;a^+9ihTY? z=}g9j14->nLDY?^4vCslby(C7s9F)VOVzrlZ&$S;YFgFs8{N1ORUw9JdY-CzQFE%6M18fYWl{60)fSqd% z&)GERUUP;q!8X>3R>a(7+rE6Abf#VAUgX@NCPiJRYD(0Ssu@wwP&F%RS=Av?k5jcM z>aeO6QJ>r><5oqjP(@E72)XeniW0NWGXPwl;{f)`*y%YF=A3WNE&#h$q&;V^Iair8 z2Vn07@}9F`&f5rBTM58&mObaNId=fKI%@#7$|Ih$ZqBEi6Mb#~;Jo<82I)rAg#*RP7Y?EL9Vtj;NXz_0_8Kk4W*ElB#)8pUuj+1yLKSmPP%ls>7l- zsiF^KC+weH2og80SD2XVH3h)+AqHUY-P%28+?;dFnFO$>A1Tk-WzMDM%mCP(K-P2S z%(=;&Ljd-Eu;@8U=G<=13V=J)d5HkVirjgvbf)gYfidk2|Ft316{?0^IKY$2-6@IM zp=w;zu&OChU!iK3s1a4OqK;l82p=ouc}%TwO!Sws5h!QCTd*ODBc<)^Fmc)E*$7o zH6iMWswPEEsLH>zhJ9b|m#Q+NCaIziWejw<_F)*98+%(JW*>F}xIT;k908Jh)jem! zoO=kU@{PP5!(m`<%o!nO&glRyXFGtcSKM=Unscr>QvfL0%?&XBNQa#EKMv zG4~hO$=rurIFQoL42$|hRV$))sahBH3#v9mO{*GicbRjlMqD`1t7=@-52)HHYKAKM zkV7hN>`9)OJ=p@_dQt>93?!W;&sjF-z2>X}*tNapIY-R-xH+2uVa++_IYTJSjXoK` zjUEL+nQrtLRcx%Y-JG+`nE{}FdSk;QC z_o-SHwW4Z6)In97qE@M*=1zp%Sbu_;_0I=z^>+ar0g}!%Rcv(j64SYgfNBol2*r7l z*yt<}(|H?!%UJ@z;BK$7=NvZY4s+H3!s;CHoON?PWzI1GdvECe>Wz*bo~5Ht0dUW0 zBLG;1OV&syqb?k%X|Fm(ovLa=)DczFqCR?+?8`ro$vY)g^P=9VYC+V7s%24Es5&fa zQ`HesJ5;TUIz|;ej3MNQJH+k4+}PVVF?%})!1Xo>K$6ZB0X90ji0NDk;G7u%yYtL? z&YU?nnR5uhp1u}6XUUw~%~=7kyY8yzteJDSIU4|npd{W4@gXo)WcF(5YS@JXJZasX zlBh?h8W%OJYD(0nuateeM2)DL74<$7U#Vb57H=T7IuDpUcm3hP!$Cu=SoXxCmfMNOzWCTd*O=v&>suT?eX!hudz6Qcfk zrDRTunoyO0Ll)ycplU|cq^bo`Z%}ne)D%^8djw_J^Qby7H?Bg1n5(b{z^wxReJOTw zdxe3y(HSA8b2@-?wgcFD#XV=IIp-3%^9#W41iCzD+MLS)T+XcL%z4hdIk%Xz2*5Yv zJo1Nu(V2O@(zl8W2fDN~bx{vdwIOO+)$qw~--oV{eIqU$=v6f?>PJ-V6g8u2m#F8f znie%n6&)*KAa3klnV8+X7r@Q53V=6#&RO%EBj$YEoJ|0`{)~A}_t$Eeb27$tIimpf z^fd;|jia{{(>cqW3D24IoGEiIA>b_dmx`w-&UntOIX42h*NYqgR^g<}rIUFV4&<~~ zB~f4Q5w$F8Ue%hYzf^TZ)PkyGqJCLbemcNAB~@cCY+IpfyQoD~lcKh%ni91{6|*ZK zvwbQt1k8;cD-yF~+W=f|hXJO7qiRvqVO1-l zo}+42)QYMNQUA1DGB-u7sv0@Pjr)03qb?k%QAPb}n7MJLy~Ld9DgZar96$^toq5k$ zFz0RNECJYEXxVcPn{$UbYXE#m&YUBjvu@6(2&j$$@bN6M`!x?>))~eWT%A(@T%9oh zyP~#J#YSh`oO7HLtI!F6Ram!7dX;eDz=-xLEoz6V{KMb8Q&KfA>UdiAEr{AswJho* zst$|VRCPqu+f}WLI;LtU?y9;})vyZ(c;IsGNto^aBn51<>mufQEd_9W$av1I=ggUN zlR1X~>`GGfoF#K^C*bH60K4Kopy~tyen$KLqDqanIRl&bj7H0oawK%X6m9x!jytfOl)ooafA&bBj5P06YaaddYK^ z&3Ugms{n7J6Dv{&M&CZMROa4r;XqnD6Q1ML)v88ZIMAzVT+}mE?G!bmYL}?TshSow zt7=ZvCqE$L=0(j>Mg29D!Hs<$A!eT+2XK9E0@!&m<~iNpUZHa`vN>lI02e=(GX~6! zIopZpoMp}gz!4xhdeU>I%(=vzy#RIwWjtrroEyzq0I>JnL!Pr}&TY<#RVV>q6@Jhq z-6*?oAg{fuiF&uHBcc{m9TW8mRYRvT)xeOdF&DPIOVxH!i>f9?ovvz1)RL+hQGfG( zsVXaKnJT(8jB(w&RNx9QH}Ao+6Iair82VkFH3;|(UUcEWuy&>* z>P@OvMXjjX5cPwqHbt$f8hN|RJXh7I3kPbdc8YqestHj?sA8shq~gY&6o^^>Z2+z( zB>=msls)ILId_<|2EbotX3i1MSvTiX<{SgS;Lhp(Vv&v>MqzIBDFANt7=ZP;ohmlg z88_z~b0z^SXUcPSnRBUg;=D)$U=?1vP*#CoX~H`t?NwgXU#MCTwV`TR)UT>KENWBL z5mC3QS{HRp)li2U_YhUXE*uEqp@w_vBI++MkgDRMhN)t{8Kko7Ll)TjkR#@LZ31u| z8v?NBBt_3zGUs-4RsifeR`r}UbM7{01He|H={d*DxzC&tl)VZivF0c+H?CKVn03x1 zpxO!GM#qYzfUzRKSR!-pa^XNkJChalGpgo9jjCD{^&C}8qQ+FMiaJBpnyBrnHbs5% zd>MC4)HqdCm_W#l^(Tp0{~`jaX#jg_(d#)g=IjG-E0PDWGpOJ>hs=4GIm-a?@S#9TPgsl7^w z+M{Yx)P$=1-XHAyW>qtyCRHtn`s8_%c}P@v<*AFPUs1IpDqcP0UP9CxRBecwrixj# zBeZv9abRwoT_-VTHy6OILJGjnpf1muHs^A4W&vW@o%wT~GjGl<<}3o(9dgNYmd$yu zIjaD#)SNZXIbzPo&DjKSb>h4TzY|s9_i4|SzC~O(fag!HGjUPhsA{LE8CAPP{lhu3 zZ(7u>syR_Vt!iG>oT?>J&sVi9YMv^3GUnAEg5>%<8Nl^93Sf7(F{;?OBJJj!WzGbE zy)Gv`XUd#Q%-IX@3gqGF8PAzD=SFiD0Pw`vIfp!F(VW}NISgR;W);s_HRmqp#46MP zunMOxmQIeiaG;>Q8WVM@s{CCe-YKaXb79->&X#@KMJ=kD6m?kDl&B?DGopS{)vTyx zRfj~qTGgVc!&K3wI;yhSHGsKs6`I66FZKes^$KH0?Bw=}0CS@=N=)Yr0OyPY*d14= z=S-M$zB#)9?An<2obKDdm~)jma{%@ll=qwkVmfa#X9>XN#EMjau_7N>Bwek#aG;`{ zX^47~s!dU=sz%=B_I-Jw>>G9AKuy(7Q6Ez^A?k>#X;D9~D!;spcMeq1u`&kY#_kOh zv;G|bu6s2AdleY*oON?PWzI1Gq;xq$7=jyfhKZST3V_QQ1F-ij?VdAk&N&3EEeT*b zQ=YTSoJ#>*&J4h-bg!)E%$akOb7B?p09b|VlG4e73kMq7tFowPs5&faQ`HesXR2Bk zbxhUJT$g#Ws$mxn@PKxAN}@h-mW&%0HLPk%)UT@AC2E8!`Y?ontYbxBZtQJ|n7!Q& z;QCMjI1VKDs(Q|vId_}00bsAiP0u-I&VA;LpcwmYoG36ijvgcC=raM_=$!y|{w6$U z(wvLTnFerA!>}S*V64cO&y>#OTsRQb&J;zxPSujAF;%OgUZ84C)OJ;yq8_g5n5c18 zqj;Eraldnhj2m;|Kqpnqt`}x*oN0!bGwlO#GtC3oky-GZL*~58oMix{bUBATXT_X5 z%{c;qn{MZzq!&S+oP#t5w`{cA9f8fV+=M0H7PU zFOY5|T{w`?Uhx|Zq4ubn5jCl5LDW-J9TGLA>aeJPK3y_bMD0?wF6uW_ZHSsyHT)ho z?s`=tE*!vL_;j;N!EEn*yMVc|4{2idVL55$xH=~TxH_W%QRc*X5qFbqTR30(*6G55jCQ6= z)Mw|3nie&yYEIM#Rn3ciMdUh+3eEp2QGxW1riJ+2>gRuKonT zn?cf<^qeVkE-_~>fPL1G@tj$6ZZu~Bz+P>KJZI6I+sru(VAsit=d7A@mpSVI?OJEU zb2iPn*Ez8YV*ohvPfbXlL#Htu7}8$FT-es8YP+aKRgX4{cs#+9vSk;QCC#zZ&wL%r04>|M2xL#3WuGb6zw_b4oJ1;stXTqHG&DjNT zJa%XPwCC(K=PGmN0POum-g6erd7C*)09I$&a}JwxhdFBi?ySU$G=Q-pZ+fqEwdulv zs&*#wUZ?)$G*P229H^<>!OaS8hW4G zcl_P5Z`g$cJP_TTlBhpbH7;sc)s(3BsM;lJMAfXQH>jEuHA)q;tDp?)Llu}Cds`#s zdhG^qtIz~%SX9Ppooj??r8*|2pnR6z9%h?HFM|;9^Ce69XoM`}i*YCay zSaW8~*=No?fEyj>MG+V)vSBW|iUJBW>yAUjEaol%w|pg<;VR>&O>~$pY%IS*%sqAj zxbmy2a<7_)M?73tjQtvf%rxq_A88!9MTO%U34=#LZ_L>&LUQX3_$u{re3g1S z59X!^+Mm5WIq={ZMx9-`%qM3sg_B@KRhLOs(>DK=CaO>4*H{}>07ZX z(>6Du;usul;3vL;_In#Kx(%Crxa}xp;f8{Ka}16s{>?htR(LjO_fz|(YCQ*PU!XRm z+T{mogVe5v_Pr}0AW;^C4L`a`loi5}~XQ_7Wfm$cElT^zdsJ({TG-!*rcBBtI zBJ_Q}o#2<@zMK6-OAcLpYi1I@%$8p}`;i>K6PKNucJs%u4-S- zq|pboc<`CVDl#{n)`x7N{_}vUXkVy5dh-+guUtI%=LLg%(1H#e<2a7rw&!ry4_k8U;rQ<0Q{0y>AHM$0jeBmy7cR#dKa%#Ze-(P1`VD8<;eLM!7n6DD z8@?m>rqfzBFp!s)gPr`xlML%$Mw+RfL}i6i0V5914&S0TXH zAfGY&`NpMx$M;a5ix}63N$z}V+Z*9zaW>rz`aZNd)OZG!<1DP3auXFkQE2>Fl%JTg zk_w;JHNGLrf17e1m9c_kHTKlozIHuV+))^goBS zHLeroX;Y4)a^2zAAKq9d%5GC${s)xLw7+sn<1A4sru?4D{hymVrE#(-|7pr2RPK1k zh9euV5aqL`e2vQ2*K9qi@%InA9&9n?4l1wQe(Kc5??lO(avhZgAG&X9;~`NlH)R=> zpI!gt)W%mtxzLoe+&IhTPHTKZl=-Hd3?+HfqvMUN2(wLiC55eRM?4-5-P9Rc|BA-9 zuV;nsdbat;cnAONT%13fj^O#z@m=@hv`^yF(s(`Qh?k*9zc(~-@%%0iXk43reI%}* zkMeuYZ|ykD{gU9rjT~EoOXm!n^8Yc3`~MNA|6p6{6>gRKFL?G{7-udrW2c|G-wym! zm=vucw#&pa#u?f^o$HyGE3N5riK}BJ@%0!F{Dfo1)K!3@h#cmM%&@Be{uz;9xgjX z@nioElexpqvctu;!xv?T|3qqx@bCd6T#cx4q3m$7?XX^UxLJ0%_<$X<+~JL~!=bjr z0@>m1vcs(h>~J`D*!yAE=O<`jpI;$6oGLr~dWt`X7Z5e>mmTi49iGCK4h>m~+gxkp z=fv`9v)l*E4z}+5JdK@e@z%E3%Y1E|`Ud>C=$yg(&+pv?alGRZ-jZ~D_pl>E^HTFt zsYV$z?o$&u7>>4CtvP7INB`jx*6`y3m+;?Q!UAp-#yeJN!tss}%4#g#pS5CTM%_$~ zEx8-^jzOHOcJTc82G^vYVE(R2f5fFtCd8Lh=fZ@}lkrpdF;5Ekx+`Fso6#ulresFH z9hjKWVjKIj6B+#$z5J4!(LeEH-V!&ZpSX-)MTz4bygy^c@s5+ZFdx~U_GK&d45US6 zH@hiK{TMC{vn%(xj~})ko8;a3){f7kF^%WkrMc~IybALum^x7o&9-7|q@1-Z=X{p4 zYSMTI=QZAOJd(-mLi@}3u$A$BcUe64y|7}$Q!t`+cAX5o*#`b3oGAEE46(n#I7(jH z7Y@DO?ZkmsMaDa3Bg=TlJ-V!^Mm{&u)uV0PGu^lyzvO`ID^BvsGT`wx;2UMY+mYW5 z=zJJ(3y6!|@yY>vf9Lvshnwr`aX`sjU%7wGZI*C1uZUYacH>fOV}9&9cldmbtHADl z4HiuD^%!FR8G$ih1!9S-!i_l_C69N^!}&4Z@f93HGG_6{iFv-m#{3WxO1n5qTdw>5 z?v9=cex%&NbDB$-a_7TRO*q~WMOlqS`?EHz%&?T1#r`h&>=$P9@|Hn7@BJ>}LYMG9 z9Pr~EM`*%%Dcr73lz5LN`|jV_mSazHx62)`#1A_JG8ED9 z-M}4Pn4hiO&o{W*rrL;q8*{U`2y;bk@AYP}U7XM2P;;~Rp*Vl$E^-~8<d_k?HtUX?A72<6f*1=JrOMvY6Xz{>k!x0uDW#hGgR%ceFdAiR> zbH+QqsS7yXv4lB4xj*Mp%ee$O(Xq$TG4$$eoKpK=g#QbLH9}dprXS$Nh{xL-ScE%j z_!4C&&!!h#qi(_vz4Y?E_ISrOH@DYdS)^0P>@VSWmhsUS4wf-48D}#ikIeIX|Ku`8 zajhHg*o75f#_^5{7PhhDx`}QTENvEP-;d+ueJBB!aXehbew#2stm`E>Xff-5AR6!Z z82*d7KjRXQ;=edncc9|&j^`Zp0`$h;uW`o=z9X*fVjfCt#j7v^lHKw*yBNw##nc-> zT>O0w=uWA>xVoFJ6VtWsRO9gdCI7(^KJ+)Y7&l8n7i0AOi_wmX8tYiaVB4>GLa~BR zVh2=kCb$90X^Pvn7i;4u+p*?H*cJ1+Lczp>5}l>a*g;k+O+=_ z@CUA}j(@`x8hh5eLN2jFj>LX)`naQ=|3O`=Q3k5H3P1D`c)hFS=dQblO;qyIhKWi> zE#r6odO$|>kQrx4#^agsVjdMdf$ngp`@<85#HBdw8(-R=^KQ%8Gm+Cjfqw88SLMU_ zG0&alJb@-5+jz&iiJZqU=LP$7o^LsiLC%Zr<8O8FI<(UrF%P1B;~kefTy%Jw`|rQI z|GvtVTXlG+8|JO9A76A##qBj8XY+W6@E>;m2zVULpU3$y-f=3H65V(!_C|kCc1QEE zavXQOo|m{q{aBxY2MatL2HXA{$DTW0F8hl$l?C6&N9suP&|a732lyd3V#{&)8}B&U zjhjX~IbJTxPOQ=;=!Q%93M9no@|RuvUj!aq=MIgOjoI8gK0e-Y3?_FUKQUsLK8ho0 zyyJ^*jzezNeUAC7o7}nXzg0{M{d6^a)2SCbXRpK4o##C`?#Dac=Kfp3O9%S10ZB2X zjo{FkS6~;M+J_sl^-FWjD7z#6JtMS8E>4($dksd&~^NJ5IXWCe(3e|3oc{Mt-?mlINlM# zG1XYLKW*O9wj(V%JA?%L&vaz`IEeSVQFyiE`N%$xcf3;%obiqyqy3HJ_NP3}QvRap zQl4QcU5}9RJs>W2cO@<*PRBl%@@efkuH#Jk;QEQl@8y}mE8-@k9Pc>EogY)L$0?2L z7hkPV`N!P4RpiKc#2qyBVVRzD!Ry?0pyPMW_GLHVH(Ya`cL&>j&NS%$`wgg#|H<%3 zdJtc2*>)WdFb;o+%xK-8a6#s!)jwK!%wgrdMar9nA9^C3G$6;T8}Fo(TVNhtJzEVHP>w@gNVIqxYx0%u@d7d6)7%meLNJQ$ZYfBCK>r z=M%av;~g8A^1FQ#lYh0P+<=t0FGdAeoRj24;6r^>eko3`@s3mQUo6g;Td5sLh!f%W zIH1Nmej^9cx3F(x(i(S=^IrKsF_b%yUMJOl>^U6dOsQ{?r``<0JIFuc+S+sl&%h}p z3pH(jt?POA@yPt~bGG#ULcI;?P~a)}A#cdGyM!;g8hQRoQ@e2_G`@57LfeEnJnORl3O`&{Ua&57C-^NBOaB_CynKJkU)#)2m`LegtZ$Z-w@jqO1?zs7^3;ix zKjl&Xiv1}+VJUz5tj*o8a*m`tbt2{eA?{n?WUk)-*JW9>W|d{TU}M#~l`X?=OqncZ zGn*9=5>Zkrsa=;yYG-2lv{Aa~ekDbvtLv^st|?MNsYLipOGLRO_WyoA=X_>9Gqdyk z{r<1t@BjMudS&OF=RBA5JkNQ~b1t9H2U30@;bOPeWTkT)NtWLi>Ua-}r_)f2`&Mr)<>5+-Tl z_Z>*KQJCxki|lv5i{IxeI^9Vpc1ilM(99O6-3mumG?`bKtHy+SKg^;zRcI!kL`(Sk zugde~cC(ROffC&OJNe_>hd*ZeXqk_9asbd5-9T5vnmCewgUp*jQQlklqjN+UwB57s|&5xl04c%g*Y7tN^25piS zpRvWAy2Sw1!t@B2c^uw2R!7O~sau?jA%qj~uc()jCg0=u6aCo?5m9;aN1TP@92{3) zn%s@GFn{kr{g&s1&XQenB)*!}yKyHaZ+}t(j>jJbDZ#>V`4_ru-UUI}srPOJs^Pqs z3=CIeV3-$-RG=9Ga@AnnNL@Ec>QWEyV{>PFm>XDbAe);;sKft(3hOJhFjw56D0OFD ziEH8yXdZAaCFpllk$-DNaIPYFjd-Q&2%Th-CYYoM`iOO}CivF~5=J9eaX6}TJ2X#UFss#0V^FU2G%LW zG1E6(>9K*rdX`w@wf4^p7d`&D4b20tM+tfp&8Wvc1R1IKDuSI9!FeQjr6yP|EnHq= zU7`stPy`dc6M{Je_0a^MQUqHnf>RX10VKHRRwdyWMX(03w&{KiRs?BtR1sWCET1M=R}pNwMF_q_(1)mEmk-~{F1u!tV2ShKDGakk zLl6f5^L;C@CIglMhR4E-GN7Bf%h|BW19|vk+?TneKISSS$0yhnDf?v5}1fg+F1zAWxd|jr`0!qkDS3 ze?wt%Uh%0U;2}G8csJ%%TbcLBspo4XB#gfd1jhs5UMwHFC`rCRk!`5RJ`p1OBFI+s z^0?S++)dt+!i=uC#g%-p8*rDfvcOxC_)~Wztn0}oa00Te1vVradJE!z;CR+n+z$EV z=E}-}x8O8A6<0^hmgpZY!>qz}IsRAC+=ClGxasp5DsU}kjJ|kMG?FK<(}7xXGk&RK z@zVKLbT@zg9vn-Yy$>R|U%RWavh>}U!{I9lyM(a!VqlF4s|y$=1Y8nXIEbdn&1f&a zF?%R2kbHU%CW{6#OEiE%(mVlPw#jF0b-Bq`-D4C2#pnT00bt2H?HB=13aZATTOlF= zPa3L5!*^^|>8P3=i3mqaZimomYXvsR*G5)l!?$ZAyE7l%&6@$a8JQye-ma7$cbU{Z zqhx*0DADXZm~)^r1H9yh6R$qDrwzZb zL4Fr?XgJ#m4lYoI$sa9?BLAWyUtN(eCiy2d`B&qSe@Kz1KBJ_c6-|DeBHv4q&mj5B zHTehQk#DNVuS4S~@*Sed-=N69EKOZ&eg^q1aCb(W{_)7K7%0lQPohVJa<-L5Dd#dp zzPmJajU@T8n*0^<$PZKG`^YWM2=e2i$=6lnFOjCM+9ZFjCSN}u`D%*%iwNXV%4r-; ze*ZP}KIa%|>YDcx$bW+1M& zAmWwnD%pKJK>B+gPzY~N;e@rhewiYW$;-8*(M$E$RMX8s28Z?|9_|`a)N3zQqu*;xsx6o z*1T&8X?%fTLHYUI3z~L^4Y67FJzS}*CWaTXp^vxAE`ov9nAN<@mzoZX67GA!PJBn& zII|^MElxt#WZtIfe=9Aj2q%3hqfM$2lLAwp$SS{$G=D8 znM0$bDOS>)ucTRJljeJb4)&H$K2_=bYx+h?vkl7&bD@lg)Ep(vMrc!X18K$q45f5Z z(s(FM^=N6@D`^aA>g*u%kkXAuOVci%G@YWP=}BptD``GK@1UDpn=~dY1!>;pOj_c4 z5z7j*@Rlgu{M3a#Pdp<{ozF>RR?;km&Z(Opq(v2$diRD%-7EnO^BEaEsb?S=q$z`o zS-Kgdq`6Q@a}aA1bN`SiX&zV7j8W2TkrY5l(^g9}EuJ(NMoH6#($rGYj91cR+oah9 z+dwxZbcPbw)s*I@XlXhrX?~Ta&gwGCl{B1RsGAP)q$%kWshd~m3KL}bxh|$;yVh92 zD6mfEibRsa(->Hq`rlJt2{9>49igr zzEfQ08p%sZ+UmDiJUGh5`Ur97IT8h2YiRf_unU!PV?4eq*e8o5)@1Ugq*5P_!oMa0|9pl2562$vtI80J#J|Rl4_3cW>K9i>c@Q6(ugYd-%4WN% z_*8n8&a;zJ8M5!-F}NPFdJL)VsY0rErG4rixHha&f#D(6_!w(>SY!0JVvV*)^1>GW zd!VvLC_{QsgmJzqL(J6)IOeqoa0e2;N&!btuU$yS)} zL(zO)itl5T&Ty>&j=2#5gnZrc_%6w(ep1g>{jF#5eRQ+*caq}UC4z5aG~Wcp_iOq+ zo-ZNa8#LdV@%XyQ7q*c62UvGv-ZAeP6s5^ub7)ql7eKT*^bOjaL^NQJ_6dloThw4b zfLq;YyahNgoyEdD5(+jt*Wk-3K>Kw?`zg|XS=0U^9&LlPEs|hzjM?C#fl*Swp(uY3 zAlh^y-!IEk{Z*o; zsQ&&6wpH|(`Tk=7nde7D?0>Rp(<<0)r7jKUEa^lAbIpxXSY>&Wgp!_<@>deb(&v$RDYFyUl7{Kb>J;A{Y||RTDR};z}%r7 zo@tOUgrRnLCP!9rho=E4SUX1nPdchbm4>Fk!r-N-G6ag~HMm`5bg5ihRdt^4k^p`qI?3?kkYr zits}6KgJ`!lFB!n*Flyj^4k|gN&kr=-%OgiMv?pjn*5@8Ipu1J`Kg>)nAAO2O(0?c`o|N4HkT$%ioG z8r5V!w3^-z?T&nAw73Q{tt|V}>MO^=;*N1b%lICm zta5FOaE4));39((S%=bDLc{s2vPIJ`!K4-9AZ_t{Jo0IZ{P~i3L`1I3qREd@RA8oL-L1)+|NL56wyU5OP?v0IFQ}Oa%HJfW^;EO8Jbg_zB4K{$uMTmK{)~E5v z*R%Jg%8?Uf=d77Xs01Ax9YF5@0ku_ z-&+xxLi3+x-_$E1MVxt6(%Z648!o_%I&%hKjr&jibo7jwU}%ksl;YUCY*j{8~g1k~iX!|BMQ=BvuTf zv^-0<(BsTCnl7^9dT2u;vhG?B#rt{{f36|#>oo7{H18M(%CS@SVyhsHhkEJe#a(e) zS28&x+Zzb-p>bovC~x4bC$QRl9${HIcF8r$(8{qJ@%$3^6RR?`a_k}SdDGN;6v{hH zZvR!4Funo)u;?IABit6a7QJn`gk@2o;k;a$x;$&Zq%XoARsMWD^4F5QHB1$QD3zz{ z7J7jMO_&cYRl=qd6KNS{#k+J>8mrQ!Y5=QHN@FRw3R)?>dKpeN&nxZ5Kj)P8;Ge`& z5B^Bk&6b*ot&`_U)udriK{M`Kfu0CrE`h^wC{&}iOOl6U6~6Q~{Kj@liR?Pg|yf=i~B7t8#FleS(@SGq{{}xhVC4KQ1ve11Ku~in>f0k3x$y+6lNZrfm|H^fE zoj{;mHj>^47G(Jn^_ZT2Ta7=^KAbPfJb)PC#nL{B3V#~y@(iBZrr?kygvW|IyJwZV zOWFI1O#Cbz35~i-Z)Z8J^nNMuF{_GtrG=pa-Zi7BdMP}Pi_@8HhX~69*JcK&OPBHk zUj$E-Qg+u#W($)(R=$V(LTZDpewOH^g21vTEytvR&J)OFm?6rs*15#9hhcb%`Ppmf zp81d_kRmGo6RJ=Rq6j=D1p1M(^8!+_)CMW9TLnRGM7W|czSb0CM93uti!HDgVCa~y zeH7KV`GW3zo^fPPiM?<90tQ8kAzaZ#`c`PINwT(v*qF^`S@fx%C*t*Po{&(zyBWQ) z_wMeM5M?|f7JGMRJRwF3h13%=u{(DFCnN;=nn@a0Y8q~#k@}r#`Wc%Vu3Bu-K)2|u zS{xO}cMhiG!~Zc@%)Vk@OE^kWU&X+}UgM=m$Rq?` zzfAW0rj@ZT$sQ(X7j%c%@Tbt$X0yxK59bI89tHG5UO_iEQfFdJK&&iFEX+-QfT4jNl&8dXVhI{Ih?eFFCC!`C)Va(i%>XS; zAf7ZmqNKTn(qt)Vj-q#vW z)J?~D(k$*2shb^OXTHTzWu*2~(zLWmbElG~wUXwg#c2HZwNcXSZ!4C1Qkpt@%b-w} z>a3;ND=n(9RO={duA?-mN}B!X9dz>=<~mC^Kf-09o0l2hN?eB)q46Ej(#%rQBq(Y6 z*mUzgbWYvOj3>>@9V2zK9PG?#%ALC^Y0kGvldq(yucWz#((H6c>87ia=6-4F9Lxzu zdvP-@jVqos^`oS@jMAKpqr^kw4j@(K1btT(b61hBbNG2 znmSv`qCr{eDd?QK;kPImxMH^draB{a^Ezmlqm?x0C~1;y(qt)Vj&cGkaqayKjZ3>m z>4x9`#0c-Nqer8$?<{6uFmQXhk!pqpt}VOzR+3!@0SxlKvq zq%@aDOVd+HvtF7yciN;Wf(KAHx$&gAElL_62W@X9&FdhPbsX|k!V?i}(v&DW=?Tc7 zKSj&8dDX=pbx*XWVv_gKK7r}8F@1!#uncE!k<7J)L-9xGpOWnpget7I@k*PX%v}`8 z&S-<+IbW6->w1VJr)!d5#UnXBf@C0?dkK) z%!d&U*qavd$p1{yEd?nCQJMU5-2$1Qb<&;FUiDY4srR;${{Dp#R7HQ=BL&>RT<4k3 zEpe%&uLP-zLzsNBGn{iJ_R%>ZoUk@WJZmXT=dJUEhSLz$xc=e*twg|Ke;33f{|804 zNLFdzO}d3BS=l%5a@Ak89dNhm?=HAj75zmFbZvkI%(p+Y#ASc`Yk^`yFV?2d4qz;{$v3dA}iHA;aM^>dne?cZYw|#1LpZc32LR8@| zO(?$Md{yRy2!FX!ujR14pw>Be2@U51($w_@0)@F5L4^KtZ#?p4RE6Q(j*zRo#qu5V zyQeMtYVti4`32I{bvw!5r^#OzkNi+YJ{w~-ihNNt`R0mzvNUzoBKZcI{3Y?oCn)mo zqHz@YM$zQYUP>!Fr$|%RJ0FAm#|S-CPW5=?-)JYw*%M2C5tcoSO(EU?pvW&$P$n8QKyZ=B6yYFIb zTE6Rg4&HA5s&^aII2fztj2Xf&wiPwh024}SyEnOTrsc!hN4!c6J7jipxjzCEF9II5 zTo8|ZXGPu%X`{&Zi6)<^$X_f?U3(US{2{~_l5ZQ2{4Of&KSqe9x`hhEn{+S?nf8xM z#B-ideY%HCCupWe1yqG;?}#8dF`DG}ie#1|c>zhb)Fgk1N3x-vBoc$Wr`xUT+J-sT z6G;7~s42uaSdLIg{Riqms&g8%i=;Z&z9*^9=?~bY326D7?^8MJCSvkK9K`gk;+G#_O~O0yH}%$MnRM(X>pB$PDH zCe3gqO$#MW2TJqDl~K}Mp`@81O`WrC(sa<$TpmxF7E#jlqBQlDG>s8wWdZSrtg;ff zFA&Adru&t+0`H*Zh-gvvWYA2`T`G9Y0fxB{nx;nf3#bbFymqN{J_YL&bUpxP;+aWc zfMv_AifeQ2^b)1biYua2Fh}v-Bz*MFd1ikl zPh-kc;+i)HjrVZ#-R_y^DrpR9>bywopgc2EOXG+qP2(tOdQzI|N}5mL7f@17n>6bY zIS?`eOjSx;|GbUH{i3B=(Sq)fct)B!ueOca7ZHxAo8{7?3a<#XjMU8%&@c<>u10D* zCCwBhVU}*LQqr7eZcyU#Qku1xYa(=Ww~}UzlIA{}H0Nk(?u;kR>5NEe+EAMP%7KQ$ z^3csm_^&0+0)#f`<{l-@t8byP?1I}Zb-t1&C{3LgNJ^$GH3d4SZW_gt=AI~N=75HI zlagj9tOjZBw@K4fN%ISxp~Q9MO*H0L*CTYZwz*hpu#)CC1R^WG9)Zp&&1z{;g{6LJ z5viNTlx8EH$w=+1q&bLDVd-WjViIq8 z>gJKUInAi~0bLvK5meIbMrgOBDFhh0aVlx{zmCTI;#Gt+UtKJgS|UxIzq6^{yy~H) z*(fclu#_`Onj%V*uA~XTYS7Ifn>70o1|iKmm?NQ^Y)W%KcX#c&c~D8yMoD9jH;bWj z>SlaAY2LXwQa1;{&U~7#ZMa6$hmPyTIt~R?9_0~IO=>+%x!P@>f7S*kNil>@EAn7qk z_^JtsWFJfyvldYMGGm#I9h_rjfJCZDr^TwU$DDL_*4Yu%qO$U3zNn;stay!ZXw0nO9GSXFAOB7>$9|RNr6Cl!L^m&u3=_h4sTs0)?f* z1o-g6UC`|PYS?~)pd^~T;bn-ki90!V6@DlToZXe3>vKLjA90erKZ(aX$<7;`Qq-i| z$Ktg9C9&a31aOG-C{wO}(R}Y$e78w%|vd>39Q{SAULLPBec@6Or6_kP9q$_T#ya&c+zuUqk*qoU!}*C_^t(x`3)is`JihBsoQsJR%^=WgLOEFXB}fNAM3{_Ooko=&K2}6Xbmm*I+9lc!dW4 z5(7>r_&k71e+A5qHKrzjBm0_!op?b}-W!9u4>zrXI{+@-C#ZF7s2d1du2B!fpuR`& zD?|+nYF!)ZlY~8@Q7d9l#}GW6sD}i#o(;7xVLdeJ;TY5o1Yb(jKLzz18)_P1^)%|S z7}Qg^J{vqZ8>oK^YO)RWC&IP>MgyFPK`kTrBch%X)cQ8mHwk-Iqn?gIEhcyzQO^jf z!-jeXVS_Yk5-yC%l?!)i1GItdJOp>v;N%!^D}pc5;FK6}U4qX%560&LricoCQ2qlq zYlFW6#_l!=qn@i6Zzgz^1~-oZFC_Ra4Q?3&eu`ip8DA=lNz`IoMA#^edPNxZJjJ*_ z!Fd|oDF)n$;MN*^RSY|KNn(WrNZQD0N2y$HUVsG|jy z)fVdIgf-WwK9a2Tc}G2 zTcA;&45L<4sCVFsQ?P`nGX<5^7HTiT#%k0T!>B0=wJpIn5cOq2WwnKxLRd$Q`c4>i zr$Wu3P>nVC-578p!6%;qJN(YMuJNxz z!H2`(dJ25vEr5TYrF#5l40s2@UutjyuJ4La?oxg(0lb$Gya3?R>VT8F8uiJ-FDLOqDffx%w@qw(8^Q4196R|J<6^$I~{wT1c-VQ*{HE@9L@3iWA%{Y1T5 zP+4uEjw9?&jp_-b_Eo3@2)<5(^JBo-1h>)Pf*A1m1fN63Hwa@AwHTjy1F$1csqPL5 zqxMsbeU_;rG30bF{AFeXupv5&Cv8uk7#YJbJ}c7kux;3vc2 z8x^<*!8scIR1El1f-fNBS;Ck^Eync-J3CYL_}LiLgRcYp3&5q%3+ezH>K4LQYt$EF zP(LF0ZKA#;s5jYApCxR%Mtvm)bsWKW67@Af9cV)xL|DE?eIo|7Gr^Y;^({diWJ7I6 z*tr^YP7G=S!N+C*^&LSSY(xDGCtAVnfN>mr97Y|2HW;{T2wtqg ztb<1VGmJV^F>X$9ssIq;L_8=m_#kc>j_(?QETBgvjE(s z!xZCp34U3F>&Ji}C-@-^ZV&?=P4F#bd>&wmsKvN9Vb^NZ)ELzE1h*h+;~3P2gw@ul z&BLg-Dw+R&8DR4Xpk@dvt1YfO3EKo1hr$bCRQYIUiE}Bz?`!Z&G2oX7eo}*9jR8+4 zcnlf8A&g1XVmyqnz8ZCY7g6|;e z4}!{S3-u<#dTG>L+)3A{PbkzJg4+_chul|ZwT0S*uoR7YeHax@$o0z?0RHoFpcV)! zt1Z+I3EKu31s)Ve)w$_RfG( zsQl^+P`4Aj5#Z99g34+Obs1qFXw;X&sQgR|P+ul^22o!TR90K4Qwe)Oqs|SZLNKCU zHXGo6M4cz7thP|kB`jN`ejG;C#yR#pz~>Y7Q$e*GXFFkMrmMcL2&3|gCE!{?%0B~K zx=K)4ZE@X9*eZ>>DU7;Dp)Mr&EuwxcsI0b7pCN3TM%@uc-K$WG2p&b$9|V=v7V1F4 zyc+elFe*PK0)ek0xE)dV3o5HE)TV?r(5Oeks6%TBY9&>1bedAd-!b6b1b?f+Cu6`X z3H}t|(tm_8iCT>35H?$*CYEXdqPb%H7{L=YxNZ#i4uS`1aB>XTLvUv@b^xY`T8!Hg z)=Z;b5JtUKF-|5pL4%vcfd9bd*x;{^DTOqT0dFRF6~Lt#!k9!Y#-9*2SEF7YMjfFT zKSS^|4fce=!xgxQ;87afD+b)3;5;(U7se!NF}{khb{e&J4C;jh*C%QpLA}j}T8ZPf z;8DNoZr>Qx-2{INaOsVLdb}#7ePL9el6exr_Y(CnL1neYbtqvsXw;cuRKG&)O7N9L zeOgdiZJ}lm)>xy?3!_d~sEGuhELQz_F9y6Hr(40D0GGZml!;|g-bh%fMqLy}<=2H^ zgZTu%O4KES%4!RB24RnC)YW0sISTbYf=3W_ji9pHLhVObPmTI@7*)>|)p0R3m`T(v zf@+^D_TyG*@Enc$Ll{-h73&B-^e9kw395arm`~U@fYIy+!l?ZC4*I%+Tt6miP*7QI z3H%me&uP?SVbqS;y9cU|;PFKLTToeTp^hSKutu#6qvk8rJc7FrwOSd&AFD0Yc7&yC z)N=q9fV*_CLak45HKNuRR90K4N7>hXkEp&j4x?%fzm8j@!L6a2{b}G-~@W>NF+r5DHa5)GGv))t10+!a8VFR~Qv18`N-ff>Vil zji9pHLajyEsi~^3o-nHJ>!&jS{sG|9>jc%_*V%-XY1DpURNdE!1iwbq{(@@n>kz_< zHR{kXs^)q%!M73h))=nM3G-;w(P320wFbehhdS)4Y74auVNEsa+%W2Rg?bLbl~aH^Pf%HHp&p^8_5#N4ejG-f zq)@*h_zR+bDyXcsP(LGVo8)fVc5gx#Z2zYU|}$_wo?nBeP) zx=m17ZJ}O6*cBRee;8Fe)S)K;K98uTpxWK|8^TUJr22X^2K8ftcK}@aR}AWNge}*o z|Hhz>C-@bjo{d2rOxPnDHED(JN$4x^T?igd)VhGFYOAm5g!Ry<=f($6T5ogZds}TL7a=WX7Nx1b;--)-kAK2zyqeUJ-*@Oo7J{wL=W* z9fS?is7u2~hcG=|!b5OpqQ<`Jzb#?S2#fthKnh_s0K;b;)8Gt)hq!Nc58*f7R=fM5 zgE#iUNq1iZ=h5}goaKij3a`h3Ic{PF)|gLJ<2M_=KxI+7>8KQNQ6t>+tTzzn=Os?> zLEIfOvQ6K=0O1=4cs{*>^>KqFe%xUG>9cs)fA=8p1h*UedW;#|Jof}nd+_;&hdsuM zbQX=VDROV#lk@!)+;++RChhptchT+YMfh|=0iOIxTzZo*&2U%g8+gm8h$zN6}IB=u=UxN?=xO%`=|JAmOYZ-8nx`sqhp} zhPI2Y^cYK|e}R5@k4XS8Wib~K74I7XExw~Ako!|YNw;dA*|=V@MzJ^mWlNa zo5xR3iTI*oW`u9&1^yD>UiTP$`^{T<%WVzW*ERh>gy&Z@_6GJZ#nuEM>&yaF($?h@ zej!VKzz^nDo(prhZ_Epv5f?5#h^{)9_&{|5{N8J{ETX`md=cvNrsIA~;DGrQhlFC- zDfj_o2Fwo}!1%(8`w7ljUHBDmp>Tvl(OHMOXF;yx5G_~@VgcjyG-4b!ugp`I^pe2F z;p4WfCufbruj#IlRtL-`A)XGO@)hTMn!r&{ZM^$tt)O3{&~baxa6YZ!j}9Z8m)eRl zDux0u5df;?)3a&_lox%YB@FU~Gt*tW{A_lRwPA zfhAE1+UtebbEt0;RB&S&BIJuEU7T^JJtV4V7h&a!rs&TWxF-~y^`n`GkwjfIhI0q+ z#XtDmjJfkZI>KbUmuNG7c>|T^I@Une74r8Na}oa*f03qxlNH+scaeYk)g&f;KzLZw0P_l{|s3`g#Lj zvL7(OJrn6F{oo7TpdJQY6%Y7QsF8V&d)M--UF&lLizzi&;~QNoJ?pw=q6CNT3O`9m za5U(O*D)O`tP8PV+ZuuHc&-sIQqK$AossT#G|0{9sy_VVMuR*sE678Hx{0X#k@88fBp=0zPY^c3FSY}Ihy&X>I6qKK3*_z9F?7T1OMclEKG&|U%ei`A#tu3 zi}tOgy|X$0w8H!Pj(Ar7agAr?$r_$&YdznbEo=w^`A`7~BvtMn>1dW4#-Hj6a+O$g z`Hh}p*VSkR74JjNRN^|?3$sB!5(ks1#M;D_Xjg5B#n<{9oCILF2QzU!dLqI#l8w%( z!yt8GUFIDRrX@I@Ee8&SI9^yU_#9NFV` z@k{$feNVAjjSl4S{e;7X+`x!52z6IJW)B2xuyy!ek=B#a)%?)dzZKbk@$W!t?C`w+ z95(bC?Vj}E?Q?+<>Fc`5nDYikXRhnkm39^?#fpljDk{YmmB0v(G`>?cE~u(;k8tCH zb=@RnQ9FA2;yc0ALkrTc+791-p_Mwckki_TVMcYft{%WA&-mJ_$hL2yt=Di~31fHy zeF1hY#MVWg(H~|xZf0O~S!P*}?Z7x@`H6N8nPoGARvfde6|>ZW-Q2}zVU~08E7mM? zmHY=DOoDYDxNlvzLU?PXy&DsvyD^w3fxf6uor-|7u6QcVfd6b*%ci3ojaXL@XAy)? zJKT0K+}|Yh7ptC`RUi!k5`DlEm`|`6a07ac<`U&4t%!7+3p9#1@D`g0%7+T&b(E_z z`*x~{o)&nEO>8D#HV@_Kp2!CQjnq2#)9UjVq6HAy(5`~TRUr1H5dyOaGLIbzE1)sl z4m~Qb0%fum4GJK5UGaMS%m3^`Zb3O($SZ*eu?Wg4Ust??IQWkfjxAr9=?Sbm)WWEY=2>+q#e+~Skf9lqy~9x#u(lGi3y z+%*!%=E2iTobOFilj57OxS6b)IsENurRDUt;Mb=SA*~SqpX8ZGD~ddqX?ec>L(3!X z?rXq>q>|@tLL%k))g$s;pyfH2@;s!PIsAo`r%dG8hF*o`F(##Z40xC$FamNS7FC}b zFBW0cdvx1}*cK57RRy~0c~xb_mEZz)8}orUvToA}9ngLY!0WV^;@w99SQ8wH-y!*o z?iX>HuyS`(Pn|6`(~S8CnjMdom$pZ2JEgLpAw}?)a67Z}?@*kP`ox$d+#Ul^5!aQXj3!<1O^`!qgNhp~T%vq|P?_RW<2a8#9PGX~5lnHY&&PKD`EL zTH^eGRG`5RT=LACe>VU^B6v_#+!fyss89o@Ayc)-kV5L&$iEM5m*&Iq%Dzm6Kb9m{ zqbwz^=J;dYa|3=OqzExvTnYK7d109D3G*@=-HcP9JB)OD;0AofT;)egZ)eTJta*ld zT#8&Xq3k=BePv%k01-vaWO$K|XhA0#{$VTy4r9e}PM{D=oco{$yc#zNsn0ol2|4`| zpC}#1jLFxGA;g$E738JtP$8vqi}i)svxFFldvh^K=X6gh>LmJQ{=0q%7Kni_@CjLL zS30KGgo2pq51z5mY1Z`E`9LmfW1&?qn%q;VuYodnWrH~Nu zK+C5lp0IqJ%g{N>ryd-frsV4;^7TwAa%%Z1%}kMRZ5|U4JWdu8ueQT~7zOSC+(_y6 zr~;&Wz7W#gD$>aY&XV9BNM{a(?^8McT$G@T@!ceX-hR#8eXp& z=IVy;u;EOAM$Qc7ub#je*_8AjFKXd2dL~)huMU45rUNIYQUM9oQ=rn5m>!Mp?J3At z_~|v~s0pu0GqB;jotLxA;X8`d$Tle^K6)(;hpjPehX9lhPe{x6A9wibpyW1cmAeTJAM-K3FA+G|FhE-7aR$GiqTIB3ZdY zEr)Ld(A+B)H|9iFf_C|QT(~XgRB@aMw)D6on&##F*h9LeYk6#-03w@E-WX ztYL=tRn{dzArYN@)@^l`AG8-~(_~)9X!Zv7aW5)`vU;)ZPBZVgjRLQAuQ(;bJte|H zGhA863fG63L}%wxu#nZGbE^E3)ni`H&kp~3pgBG_qx;_qc>#(m12&qV?5oNr7Bd9z!s8sXTr)tkq)Q=$(IF@U(ovrTq;#H$exu+6hd zwz2u~xfHYKaQX)VT%<#r$dO{*<7w22?S7Zeg%&+|0W6T71yI}5HlW53C1)SjPjGjm zMqXeS2j9RzjfxxH%Ngk0EAGJ1V*Jnm3VJXujnvZ&YQt z_WAG(^P(F=GqI015imb+Ai3^}@xKLtav-f${)gclKn?s)29gJnP3_|h0vCAG2p7Gn zN0P(WR6qwf&Kk_Y@TrM0HfnN5RZ1Qhb4N+A)d|Y2a1tl zVTbPlB$|O5!MnrxCL|dMNsJWuTk$G18ObIo!J*QG_E(_--#y@<#gOC3>JOz$UnQU` zzf6AWwj_*->yx}W8yvp3WqNl#B)vT4@I8Zap79Z%t-uzG!`B5ryx2W~>87;FDi7r= z*b-fv=E?cS;Tz7TIsZ6(e5it32YET=MY}Q5WTL>F;q9E@6EnNGac3eOu@ul!gY9(r8+CBLjD8hFqVB*xza3P`4+3Z&g{zaFGy4Lcx=ydJ;3vgDTuY$Md8vA!8IR_ zqrITE+dj)g#>)W09L!M%a|P!e$sph=D9B92_uR|K+JVF?Jo!k{_5v8Gt|MuC0tEzV zK{H?4#REeS2o|9_&$u^DhT~+o1Lqw}G7R_sAlVL1>6S<^j}pm)1VuKU#8s%|y^z@0+LLRCJ7nv{?P?W#Zu& z_g?}VFJ)>{wh!?aaXv6w)*Zj&4`RA`v^#DkG#6{ZKl5?GrEHV{JlM#d-qrq(>0J*F zUz~k>#ebBUAPY}EY*S(f?6)Jf>YREN^7@c@K9eNB(yWFa2Irx`d5aPM$PcLa65_z0 zcovc$I4JIV4~CE%3Jl&RV`(b-$Z@RnvrGY1@jrI_$xcnYiww!mP6oMva?w>J2u8VBZJ z41$n-?)6d&89_5%WNiMz9HfN_% z{uYowSOBORzvd^{l&}Ux@J{g3^)I0wA_Sk)`e6Lq2|d3U>bE(8<-%}z6wA-4{ZUbe*P!TL&a!(&TUOAw&2JdC18aj`blQTt3H<`9?4EVVy&_){51KmY7dPrE z_8$fNKSSb8&>Dj6K!v&YS_pO?S|L&^PZ|qJlqWTi0HUi0g{p@kwBcCeAdV2WK70ul zWVlgNbW0iI0S9BBqc9cDMD9kSlrm(sj;q|SFcR-^CUL(4`xKQUYbV?QC3VAJY-Eh$ zA0r!U%KPuAjh#nx68z_;L2|hQL}q%5C#ED6z9hR6UD!6T*-UFEAJ%vbr?tBAF~?YiDJgQ1)xJY$k+ly%YwFD8lrK|fdOl{Ex&tIqNM>@qO!<*1 z@tcUfc}5Rrah-;9W;kKxIOKW`lIY4UR+9C#WPIJ&_88joqLFRsbVO%-YU#xFFDzqR z$;r1nX3{(cc_SZD5&2LT6x>ENuknyIb5*mg5@NIZ$U!az7IQ`0S|2;$h}(r1z%Qan?;uy~pxLLidJRKDY=5zgM12*!P=LJ?ee5s(|HC*=& zmag{1T|3f{d?P8(7=R00)X7S81_YIv+S-l5N_3JS@Sccc`W)shvOdH1j{kX-m>#;n zMdW@Q1vP(Hn(bN92eA|LB1b@`Iw=Vp&VwUZo%04@ATt%cf&T{`f}TtBS?iXix4;G* z+AASJcxdza2D~ERN5~fI!tyaI|E@I4Sx!)J$%o*Z=6qC& zmj>@a%b6JPT#7u4T80q+SyTocf-@C92}j&)P9Pn>qHDhNoyuPtP^b?ud(#&F@2LHf z1zXUUg_6rmC05y^5Of(u&JX<6J!?bv ztgT2DqMiL`!u?wd8;IQ;f$1nKJ76*>Y#1G;p9dJ)$ixai@B_549Y4&cui_>O?Ej3c z$mE8VZ4c)yqzOomg5v;<9kS1&?~tpk52a-Ss2u1;NUR24b%%efWK7!`I#Oi6zI?MX zbqY7_gEs&?awhC4u(tt|>V7iu!_FA9a;3q-epIkog;=6U;0hJS?o_Zx`}phClWj3V z|MPk^c4_BBD2kIv`kaKk{4V8EZJTz;ocM zcdybp2V_%u#>aSGNd!Uf)tv8`elz$ff8x>0^(bL~L?$2efv>FobV7BgKURO?oZ^>e zFRPvSYOtRK@UH0JII-^B3X87NNn3QEV zWm!jAuB9w9^Nm4pr5_!>S!m!kYUCRaS_vzz2Fhh9wXGdFAFTofq#`46ZB~U`%um$0 z7g1~ItMfU`+F$unv&a~KM#l*83<_-{bL8~8xbNWa|`8Tev@qRLH=$dz8L|D0VJG9c-Bc?}vGhQz7c7vRgxEF0GY}L$?;OZ|h@&_=KtMn!Zi!tHbM}?^q~YaiT*$drIB2QUgJuX? zxc}Iqcv9QS!Y1l@Bc6ii229%-xY{439&3LoeHT4W55DqnbG_IfaK@=%QqqC=llgt<|dg%!@Qkae$x_4 z9KgU{8-mE2kSBWGD`tom=W&Qmgv~+gKUe@OGH~!sfgIsO$eU0?YVP*(Jb~*Y9w^XXk(;-Lk|Z}j4`q99uKZLT zD70p7?n7UQV&&(1=-$lFck+jopY!-y&y=`-);W1o3ufr`Ac3{LkfgU4FmA9hzo3Vn zDKOiPMypuQ{)gl{x2uO|Lga1No!f08O|i4Xzez#&37Zuxz)+1bHeqkvoO1X&OXtHL z@4+~B`0kP3s@2oE2-GSDa`nUuFZ7ujYhmmYp?QWrcw`N#zLU%Y8()J%whMBNVBOa_ zO(# ziP=esti%sKY;W&gaj8&x4LpOBZ2VVmkgz6Kt+?JsKNqfs+>fCj;kz3L&2#z_T- z4exG5Z4yNLhf5(YsoQvE~qQ>)N=TF1jD6f zYf8Z*7#h*N!W9x97=dw+F8HdXLdrkPHW&vIQx<6yOmdw_)V;zTLX`>6&pTl7)H1-1!-M5KSzVeo|{hkW*{ls$dKh+AyXu&5pMJy;ueXlpAbv_5~eX;rd z`UkiPwwRuUp128<2eqcb2W~36|H6cXL8$)*jU}&!Y92!8%*j{c{?^=Gidhzbs#RqD4%|2N)!F_yny2HO&WSE%kKE4X2 z1yUN94a6;O>czJTHTZ=Mtu^?SYc$R^ns(3mwkXFFI446?=i{qR@o0=Jaqwg%Zbxr1 zd#+@fkIcYhoP!NTOtWhpKJLkkoS9d=vRXd&?)-Sn0_Q-i6aPi-I`$%@usMGg)%2AY z?eOLt$B(T=o8iQgCJO_yHP2sx2m->2gTEZl^c3EK$9Hmo5B1@*0F@W=7m{Cxe=<0D zb50bFC%!ySi&agR3^Nxogan{Vk+VyNn>Ry3d+i?H&UqNf-D%byuqJ*?yf`#Q%n|6L z#Ie(eV`anPV!`%^ExlmhgkS}ujPwh-JW}yaIN*doN}dlDkm39h#99Qy z(H`vMWCk-O=piCgJa&6ksZFWD+aZy+Ols`g!(MYIE~^Ia>6`Ou61)sO^&=Z>Qc_s6#5s&tdIM&=&|}hz25Rg_1|^5 zlxY`G?2h7|uO?2KZ;__H+Bu$N<)Y7YMH3O~G)AW;_zg!}y4Co0tFa{^T;;Lz;UNCm z0_h2_fb1gJ=cqBT+1}HN?QRw2F^#6+ra2d%=?H(*=Q4ZYb2!-bZm-ujd?e?r2(iu^ z_?kzxR<Hu{|m{6#N>sFpP(t?rAIgA``$t}i1ypw8kk9g zn1Q7nFHO!xpBV+c#;8$Yf6O-?Lcab>VIAJz@ZSpyy-94c%So8VtbH{&HjqupazK6;JUr$P;~ zRr@^nU>0y-#F=j{k*BHs4?;*TA^w0zx+}lKdfr@zp(gFsbyG?9FSL@3BH1bL0HsQk zKB9u?q>91Lz@xQ0RE}_7)MOUczirPZ-x!}{zdnV%p|8P($0mGGLB$hfJeYy-{29h9 zGM?Zj8M|E*jK+#nV^3gmM!M~sCG4TW;Rq?*ahiah2cddN-$t|Wf)w!l3JWlpA}0l?eEbv;IhjNpDPC-F`$w(xiyr1K=) z-^A@tL=yM%FD|12v&{sHKHfjUrw~IPAi?<{R7~#aRYJK^CKThk3fwOM&BZBUNpe3t zwZF6@J*LD}o(H#B)*R6osYh11E%^xB3o~{dB_}1kg*~w%A+u5U^0g2izCWFrnB_7K zzmp}z_%n;3#Z1wu4>C|jBK;sp6E_Fj2q+ip*1$;ymu%#$S>?fbSYwzgiCY&9%tidw zl)v8RuPg9NXQOwcPi3=`An~xqYKhBPRk|zU|IAh)7+3O zDeUw%jB0Ai25be0F-zoRX&ztBaZ)ZZ{BLrR;U6CNCxo-BG59ftCz*3TQyY;8O%DG; zK&6^tU~M=Il*9ip#;MvQC$uiYF!xT^UW+_=(`P!e^ydo9Gpx_x?m5;Shh$mC(d11NwELtu3Hsbil2;@fQp zjURU3cy@b7H1<{q@KGMe`k07U;43tJVq9n-hrHwTJr9s1Xy z#J!R4K80g14X=M?pOM{kOh1kIq!75jatNg$ZYSW1&|h$Eap+)c#1;4Q%**Ks|E0K0 zn5z`m5CFs-kKtsAJDNi)B<>KDC~ixNTY!Rl`58))jh+VIM$9uiV}!yl<()p2DIAZ^ zg*Y8%^jHWaj(=;LS9uio!Q9ISK=xoI`fqOh1f*}~5JwhN$^!59u&|JY1?ajtm%jr1 z^)i3;=C7yut0{ibx%@2r4z2K}ggG81-i8R?3kjv>cB{r|)%3M${*^ASGp{9yh#QUV zQ6qyR_z$oUZw^cUQWxP}7(*0Q4-i$Jgt9dSn-`!N zH`PTkj_J>1-#;8j11JS2;~yT{QF`}sCpDFde!7>p<-mo{seG&TQPb_bPWT?1_Wk1U!z86K_6_ zeq#a#H3=4fkz&o8*qG=_S>6cC;_%-G-wlqzKh}Po^8fG_&ShnY(Xhl9AB@GO!J%VVwAuBbA(gsTym<;7pkOjHEcHr8lJ zI^ewlpm|0twwin1@1zAYQUJb#N0~{xwg952EbCa&_D%JO@>bB-*y4oYv zuc6wQwVqnQ-byPaTiuXs1!39lGbd?Gq?O?FJ~4}@5)-9nq6_DidelWD(VjcdXa%f` z=Xrr=J$m>K#W1=JiyBrKTVLe|#$<9#;r%OEcp7+JTlk#_-3syo1KLL+VJv>f<9;G! z17U(4VH6NNkqC}PFb5kK9CJ)T#9=v;ZPNI_$v`t_*l zEvlMN$Jtxc!O@zs*{gS}YKm&FHdQrg*{hF8wX=0c1pmM<=KYr<++e+I1=)Y_lo=YOh!V_`A1J3y5|^0+<6{}eQ9-}r4!oCvgqa9dUwMHZI2Ar__MJ~8 zHQaUpB|1dy#Sn~M^sZnXFIl$x>M96nxSnj!Kk9C7bwmeC*0qo|bV;$6q{`+E5mI*G z&@%cag%qG-S%9wsOl^EMhpja#nErYK1?iE)pS42R8yJ>p{{4QqH*S#T6tb2!PQu%e z(rk-dZ{Q(Z*ZfC%!7B<5HMe7j5k12GpvSlf=_T$GsH=&dKn;hFW<``8;s1$kf0VX9^n(46`{DU$gMEIy?Cb{Y z0RG5hy^`c~{^1^f>O`q<_Qq`|Bu+QMvhJJQ1A`}!D_C-?{r+@hh_c_`Q%(jqn+MO< zVyN=h1_0FMuDt9+=X4u}2cVdF`T7tsm{JADPyVH0wu-`cX53e?jGD%TIITs zPRm6#T(7ba`@-Cps-xmq?ZPRbcQXd_`VP1(`ZIFZD=;$6+f#U1w6d^qbV&afwCF6w zT{18b&SKOC8z5Z3sdT(RUbub^;)}l5$@f<*W_h@kC!R3pu{>Ip&6il1z$8(f3nD+B z&Z*i$e?FKZ$54<* z(N-t@r~kL)m-q4iie40%E<&bj44o(9(1}7ng8`$~S%K}rk2!5b>2Idc ziNfM0Q?$L8JyTW7S1kH=y378GBi#QevP1Bjah8A&xPfPA{F|pSE-=NZQ-}HuF&T1t z&*o;N)zxJ$W3piBe`jzYapfSRJh;V;4_IPbA|y|U&9YZD)BlZGEyQbzTouW+b!XYT z|1bD70-sPV(ZewpR34W-`J7ML zgq_&hcz~4GaT*x5>o_0dmJL=LSYMoclh<(yTB++e4&W?h1VHXmb~$pFcWYO99miVF zpwo||({cw!u3n2?z1IDi^V(YXXBr|W4c(vV6uLjt0Vgij^%==cd3^@AGn9SIFJH#g zh?nGB`9s|MG(SkHmsrf6|NpvA(*a$?oS#IpFZU#UGJ(YL2|B#Kaat=uQpx@gt9IKLK8MJ~nkNY>FQf zTQY87m}4Ww0Rpm|>xh}WtScNcI9k%yu6UPzhp&U*N?|J7mOTh4((GGX!CM=k0^XVe zH#bk$q_+n1H6HH0?3Q%cn(uMAn90M%_HzH`I7US~kl;3QwRCmP_%f;SSTWc=oEL`g z;av5i%^0#BtG|aZ@q`SvlbQUJTERauyk22FHvc5{sN8dAl!Xd=evCu zxgxkSbVYEbbw!ZRGvZ=27QXPZ>v2bLOKxCu%pJi(bt~`_*p%cD)K;cD{4;1`LxS3R zckwB#{O6(uzp!HFNg5>oo>dw{?49^ld7FgRLX2~AeK$GQl3HR{0Jf&Uu?he%-&3X2*A3s5LqOrbwO zOtGCUQGRv4gzp;YS898(`E0h9`+ys8S2+~B`6C@F!WMb#eZT{=E&bGlg?YBimvn{i z173U+*T_YC{&>Fl%5KC1I4`~km$GJ^_#-XHL+ zFU8XS_x%BHrLnv}U=Se$f52WgF#G`-Sdl+q1q(S5z)$-FeyVB#tTO@rq(7jYrwHeu zROTKQ)Z?V=IadR@>=r#3vwFo$;1C$vn}Dzxz4}<>!lRAYPsPw>{(xANS74W2OrXC4 ze?T1PaHt&tj-ZKddr8HM>&=7*D0$THKxXO6~UP1574FO#2dX3E) zF9)4j@q>94Y%QB3pbjXsuCGnm9Ry9)=*C)Vh?O$&6OMpW3LO53qJ{roWRwn#y&WZxVSbUTPwYU(vX`=cX`8`uc*k#`8?8itvLEHQ8fil>!w{WYyzH)1je>G4 zSxAM#m-y2=&}l?N+kU_|-20EE>&3Rgp3koYdV>x0Za&;cd)Y_$1MXt4n7_O~;EK>6 z@Zs=V?`}Pfq^S32J*{SH9E6=e;EK>6@Bn&>dUEkV{i(g3A;zCR%mI~U;Fs6ppEE*3 zmcS_spH)%^8J{r{6)O+q&~309aQ+0er>Zv2f6yHRdi`x%(Xo)Kn`;FBNQ z9#`9Fv9OtB^|)19>UX!1zx*Ksts<9Q-F*NWan?Ab~N`N1qxE?{V zpP9Iqge2iSxsBt{BajWAGIXW*_+{O=C#WX4XL=?^PyZFOwoVe(pr$MiUG6povmNOu ziov?1{1rlR&Q|~MX|HbnRq~s9`fw20(AVDs?g3pM`Z z56Gfv9$E76yp@!H6+b$^*T!e@r!Up`_ou7zr!Uas2z#8Y$6-7|wyN5-_%A>#nw1~@ zzI^T78<0A1C$IHhQ01gg4fGpt?m)jWz1AoGrmpASKJ?m8Q?oh$$pg3A>!)fmU&Noj zl4hOrA6IvIFT4rYidZBM)!;>*TKpRf+a${TVZvLj-%rP*Jn#6YJGFlDFy4Q^e!mMB zylDO2hrvec_szd%P-1$veyr7jBV6kHkRpF&p(*8Iim{fm~~0P|WiB+5xW;SGf$Q4UcC z%xt^osPlYn$#FNL;$Fe5~=dMR>VSjTiJCc&wU?Ahx$IYcjRptt! z(NvX~>i-hFv`O{$zF3oEi?<1RdqFZgP}dV;7vAFG#e$9eahkGcafEP1>j$d3k^$=K z)h=(rMXrV_1KF>cHNCgmIbM3%0B25`pz_jDzNC0O%Yim7HVk}iHOe3niK`|sJBr=VxW{5zCd*bKv zgC@MtutesC#*ClHyrt8M?_XkOf|TNv%cHZoVC_!-|G7x)ZFMaD`wAK>b!$JHkfwG@ z(!$0!Ym8lEFtjr#291>L5!uT0^BRqhM?EKwCQ&FFhz_0O=*5{{d5=CuU(8^##fJJ$ zBhG@4*opDuTfDBI@Qojr-V7sZ1CaiCBv{X9*K%&1Yc*!iEIe%}kJsj4hAZs=Nw{w3 zR0Dnu-Uv+|D3mak71@gzr<@{F=bt=l&(3>BFo#Yz2#E5uZSP?0VDlvn%b_auEe zZGQskWcDc+-yVwSLt5v2p`z0G_H$f(`<+!o-M{e{*8_tr6EAYlcR~47H|9XmXzZLx zGP6`;Y-8?X+c}K$HtvQ*kbL`cmi1r9DPnC+A%oD7iu7Jeg(nVX zT&VA>TbA!V&5Mzl&rl~PuctWQidFT}`Y4l2Jt=SmJS^)T zc#@cv8Y*?mJBk->7qgsK;Q@ME-sbqKfK~1!^9#HXr^L;$*t>bAUcgSUNR@GZe3ZAr zD$vfz$ne;5oY@m*!0Ut4&%rAqpzOv(*Sy_3?{v?d^fypPf#bB%n@xp(4pbK6%`&g~ ze9oIp57VD|W0bzurNu`YNc&qlJ|b~FSZQ~d6)aukRV%IYDexKj5mqU^SD2pfbyJ#E zlirKLFF%hoR$y0tzPDIu+?|y6ULhe?FwW#w3EOy;)nL%CY{m245gekfcM-x#L{Fk_ zc`PL_szf#y5&YkY72cRV0D^!1f`LPx5AEHF;Unh{h@~1;n$Q%|D=@&~qA}ymx%qC3C*3k!( ztO5`ln-gW5YH*SicvYKtWu5P2s%~v+hY@M&R_aTJT_jV7*B-r4D#aLHu4xI`9Vu5% zs1Cqv=FJAxgcIpKVBRv0rSG@Rqyj-XA(lQnCeHS?Ki+V3lE6aJX4U3P=Xo^Gxd$|{ zTNqDJ4dqzVWYwRaK|oiw*m*&*W;OQXjILG1+WS7PNka7UEUp(9_!5o-r+&%Ej5dFQ2L%pbjEl}f918; ze}OWp&CzP_yoqk5QY~P%a8AXtWnFOxrOh&WJ+#W_qSWeG>N}<@(0>YUxp@W-U8;S~ zH+KGcEcG;wh8RT8ex2#I3z+Ne$xNfVd75_zD<{>e1gt1citjUUEim2KR;_zf@00UiF$ubJe?U7vw0G+vYTwi#6+h2enW3QC@U?# zHEcanF6M8yZ01D9hR%@4ftXKu8~U?kcS^1$&QO2xe?XGpEYJ$$0-eScV~jpJ3uM#R zTrlD-&V3bciI>5TcBix?>&Bvb4&@_MiLxt^j^;5RDt=Gub<0BZcsd1U z4O3IYciMv5%!aVjhp*_#FzZ{YYpkP?oqGVQeht_%&w%M|E7cqDXPp1KadJEu7KG+# zJ0=sH7mcO=XJj>2iSNl31kozhz>AfF8Ln&?sPwn!}3Bj(+_#2#O` zCXd<$krLq?&`!&%Cz+i#XaRt9JF|AvxR`skBCggV-cdK2D<$?Zmg)=xhzSJSCFJ~1 z3M2=KNhSv_Qcy@dW0d4dX5K7MNDV z>=@uU;gJyv9v>91?^=y!eFs}FY7&LsokD+HgOA{m-D0Z+7BcIxV3_uuVm;N+sc+s>I&oCHQBJ+$*;i<*rsz}b~xdnI|2deBA)ln3<`wztKW+-j@Ze zcbvE7Qt7yoM$zbH?b(n{l(qJpT{N>|p2I7ynFl{iZ)_tutO}PcBG12PsnG!a7#kZu zM}qPiWn@3Fjn`~<@~WMZ%IdBd*3TD9L+L8n+6|?w)7uE>hLGN4T>jvo7`XJjpe{t^ zvK6n+70^Xvx46z($I!8$v03E&42?+-Xv?TWg<#Jc-(KdG(O7xo+o8)H+zkffyt_YR zj|moMaJP}LDCO=_>zS#T#gN!KfP{^;R0-O*5KR7fIF#%j7v%=z z-`;l)hgZ=)@4ovx15zc8@J06b+5`lu*IK+rGdnCuw4BZ+Ti}hPT7Ls1#aKG`b*`5!*ljwpi zwpC@N-@@F1Cr%1dQ4;>%z>FbXp^`h|Fp?r$gTMHs>WXA`#B)L{m|q zkoa#3A{vQSi5h|*XF2bEFdi^0W0W#2yr#tW8Zvf;=akq06cn_kDv{)k_pqK$($n2~ zn#@zK9-{DdOPO~Kc?Cl{lg|}P{=6W2g6S##uArAUjyw}3{`K&7XJuDQ@hQ{v|5pY|#a4vH!3gkj$347JNl+ z?gNqIJi6eI$99+-DtOi#?DAoBs=c!&1jMgR^(xNNI$$vkbqQxPvSHikyE@pBMbd+mZBda(}2#4^ll=gZs|LRN*z^3PvxNFa=(0O*+cJIc*MA%QzH_%xpzEYSRvD%q@?`^Pn|m5~HMW zu>iS~sS#kuGBIqgMLvS)V*7Q8E7p(XPpJT&$X6n!Z$A{&7J19{S6Ywvi9K0}#N%z* zc*7(r)>`va`0sLD-Mq=;oKxi6yf8lvh_CAvhhL&MF&j2{5PNdc4sa|V#%HvNIc^|< zz?>@wTE+n+Bp_B&x4$=uuwri;Sh4I94plb~nPh7}TGbMy(tCz)!Zus)D8{k^?vgvk zs8wqoe*)~!n<`oeJZvtUZTK}jZml+! zh#kO|25Cs0;-&l2pgLMjtB^-5y{Bx8*@_;n@kh+7ZJ75+FrI3E!54auxklD9Gz|8k zyvM+6E;9^ zKEVHoDJtz;E)(?$5#(R@DIiJPw*tvZeZe@-B*$MV&W$E;k`mqIkaeWw15B-hW<&KN z_vZlW##)>x@He2^+?%50tu**nL|E>Hh%jb8@EcVC}Q*y-vGYzHZeJzxRhXj1{5Sl75M~{Nz71!wBM}05_ z5f?}%VSnt20enp~8hj0p{qaKU5&5^lT3~=bQ0N6Lx8#9dQ3bs`3_{;4pHWKhJ9ZQvS6WcR%uTvDDok@EKQdE@9bn0^{cT zbaMPA@UBSzyn$-`d#wgeaWxu2rN|TVG;2s;kVp#*s_}bK&L%py(56Ch8S_)I6FtSq zT!7OffLoS30uQZXy8u+K%&zSo)=p-*dmV#oxQCm}tQSkIWjOtMI9fZZ;&(}mH-qbH9qB7`Dx8LcHDw|0=(219Vc*Fm3qG~Hp7Ho-&Q z&aL+=X*O2(%Sih*zVpw}SHmkVoFQP#>(g5bZwU>^Gg!5%D(uX~;!4|=a01*q(8OW* zYS{QwB74JPde!xcW&x9Er*Rr~P=ONViu1>^i9Rc+88q)pP2yNNuDW-_e12Ot8o~ZtpkffoGH;<&vum7N#S?74u$SIxBzZ6QS zTx~QtL*DjJeIGD`F5I{9R)8x00;;mjZ@)KhqsfCFc8Wgrhw{n=_I4;`@m-RcZY@W7 zeO}WxOY4y2&nJ$v z^?x$^Yi$YPx3tr$sj`55NU^5ug{ZV$tsfA<2_+{xLK_Wt$hEcjVqsZZbWClw?U_jr zWP|FTR8u&zSc>g9O!{R5^gc#wKei>Mj+FCBxSbbTSvF<9ki{*y^VihZ{Qmy|?Dq@C zjhW>ITmE@_KHux(weZzpg^CAI!SzZKo4s44VMB(mYJ!)J;*prZuUN783_U@FKS7^+4;>B=+5S%GJpY&kq;31)>fHcu zYYqu{S6GRbK@BQ4*p>K=-1<;@z3!9Y94>4rI00J|oU$B7FvIF8<^XYU-y(GEEEXa3tl1daxBx@5{X%9lV`T z_U-WCZTTJeUk7iS%YOSjt8-ZKK@4tWW~Rley8!#5_Y`|EhVKt!4aNQ;tLL>mx_!26 z{Yzkl+#RLCi7g~L1V8>w(ms_KhWAVKa&1=H^aeXRec4hcV8mwVVG+CxJ)+QgBXi3o zB0i-Ce<2Ne^AAOktjo#-&g9J`A@m(*S5JG7=-oW6H1Flfn2kSN$(u+nc}xoDl<14! z@nY%*+iN}KQF{>vjD%Dwk*VSi-cgGIhAA*Lh%9Ta5#O2#-lGd#vRMc-jygCG6J$+L zR|t&8oxZSXmC-+2`?rr_R0UueN)>1%A{W8t0E1_-ES(e#ZXA6@f91kJ zt`$|wnPtr8*VoZCbut9f>AWh9O2v}GCeo?^_HS?kz`IN;T;Z3$Q$wacje&__ZzmQe z8T+F95GkBv4J2w`WB@~6M#~Aiyn*ExcX_z-@>o#+JGHlIX?v$wPwW5r#?P{;3tx8A z!61QVBJgAAYu{H~_7EVo9cL~=rHhAEvpPmed@1qLszlv$u`3=^Z|WAr+8^M-g#+)A z!9|~qfXq-XX6uAR`9K3Ir2u@C3kOn0(^(OK*5(-QAVb1h0XH=N8GdX#m z201kN6KTFs9t?Ro!uNqM<#ECPfO1Yj-}X0o1wEEN9XX_R?~uUpVnX0hk{*j4U~08- zZ66%MEkcR3)TpGM?vaj$<#jioB~R@REs1!Ji>N)4~y>p_+P*FM8jg*|mv zE{vt`20Y|!rkvDGB)l;PI|(`%$CeV7{07`i!yZhzZg@VmolVW!>6jp=v!|5EtOO0= z{{<||kkh*{$ZC#A)4Rm7P{RcfQ!blTu^=->a%HT^mE{XLsJsHKpf|C{-!58@>{Hkw z{|pwBsAE?`X;Xh8k;?AP2m4F?GQ`+X`^R^X_Mf-fDo#?tK|#T%c%iNZT|ilNpPA5! zwJp;wwr$E2ulobr(w;vO6sq#Z@S&7}D*pwU^W$pZIvVhH)6-)-O&vxXOYWDEWNWno zttb4|pslwdD9)7oIc(>8-BX`z2l05{HSx5PGP$LZw)5F?UcAo>Z2^t*7crixJ4@fB z^#F#&pnD7jD;T`C8q{#5_ZQWyP(xCFu2JG;5?)46TZZb))TijOnyKno!IYE`kl%r} zh0ZtiSXvJnkVBvpusHRop$WdH{w<}Rj&I9UaW++WgT~P4iImfqy@M~u`FjF^Azf3a z@~wY1lR9-*+VT7AX}F%&(bHaf>TXkRstL-75%$yz`OIl5(oIC?uvfIUyI&9ZxHP4z zjxW?HQL4Wbz0b%oF#rArDE;;T4TC3cYY{1D=1d(;gI>Q|3MoI5G9lvlYBAA9=&ywkf-txZ*HjLL|&kiC8)yd5t*odrrw^?t15*Bcvl zPL8ZBP{O*vkSq(v!`9dnNn~R(cuWZQL=u@;EalOAj4tu1uoZ;9-zk5M5BH^EA(r>1 zp1J|!sVmimRb|Gyp>?5lKAw0|dw+MQvEXz(Acb*LSNzzQZ;1p~GK=&((`=x2LJCbr_AvxY^8EUe6*HDu#ny<_PqB)prFfbSBXAY=bUHvWub2DID* zc4Umv{|XRd|F`%97rwte&9m-Qy4#RvC{0Iw44##ZgBct!s7m?z~8~* z41W|2;F?_vq5%xm3eiyej|^;VZUsP8G=NzY?pUM>@k4kA*}DTaKin>eyi?Ymxkkjo zn?Wk{*OU)ju+l#pRMuCW$!*Ght#myZtglw>bN{Jskg?>?&c3N}#L`0zz%Ir>{yt#N z7$3q(pfJ9`Qbbe~A8_09@d34GX7K^T`+$Eo-rqBS!(RCRTD-qq!AY~o{x|Xdj=fU{ zYJWQ3U*FMrO%m#`cz;9q&czE@`By!ajTbNyvQ&>?x`@vIGTz_s7>+T%b+wiB38)*~ zQ69$o`<{Ge7qCQ~z8pziaQ5H% zSr)HzW}LrGqHg8|)jztv8PaL@eEEN6CTu^k;wiWZcIi9r=-my!?a31dbZglJ(RLH* z=qez-NkQaLBj-}17e4ouOu@c>lAopVvY+HF9FG_uUoejlkVrYXKNXTmvzPu75jfqV@_sXW!Q5Q?QN5!O6(*jh=cWZL82l7i(@P8NjetWj$JVQH0#}r z#6>eEQBbCbNW_QE<5oZ-MTWV*@U4uc_wZN$!WEmHnW^j}y^!FrlfSEoU3#2Mq3!*T zhh6S_e9t=)-4}E%&hIA?Y_!^~o&zrl*1G$!N;ZK{q#n#7)bmHmt2?s2UfFX4AOvf| zDGZCf^mRaZ$bl zDbn4rI>ZV36icnklcE?+z?%5ot=gcHOw14@sqRIE3+aFUZJ@5cS=S8VW{F#$IVsr) zy@0nt91aeXRFP^NK8O?Tf6`a-T>I3!xxt8}ZLKQxwe-%wQ-R&&ZyCxh8oV9ns?9(R z3e8Y(uc4-&xvFYJ~o$*OXB}yYH4Xlc;OraKqJ9 zs%@M0RrCUOHemnkpyfrIw8_cOf+3tEFEtMKV+YaoJ6n6Gkl6w(aGfiy|M=$K-5O%oKHE_FY%INit+B@8dw{Rc>WQ7}U+ok5&7Os!jX{be+-_Od0d3eRNn*z*zh6-cp*E#(jVeYX)V~4qt64lIs8GmSwhxTCGh5=Rs6buDT znRms28-&%B0rvh=96VcpqPkmmK5IWAGWZlre@pF&x;e4-wW&`i+?XBuZ9%A%#ALKC z+pTDR0?C%Gz5RL7`%3TOcAVP@4lKIdM3rP~ZAtvD6sK5Zs)=<9}iTz4z%)UfQMlvHDi% z^VW5}C-jEJ-~bn|^?C-=Ub{1!OtK?xKYVqUcbzK{OYaDn<2f`luIaSv_59I$z;Q2n)joCdLv!{XfM_0wRI}+Ul`k0W&UN9iG-3ge)59L#*UuH*dt_^`1 ziw7q9EGXz*3nhy0!Npy}=}Ke#Em^$>`esvRrGKO)oxZH}^#y4ntNXh!(okRFT&q74 zjWJ9o+D9n7d}C(Npr*`!)Xl1-5E@-rSPukR-X-4r%2?_kqv(neKqskfkD_q%O}tdN z`BD5$%4N`^&Cj<_6m9-OV&=?=$FA#)g3Wh^!RGIy5W(gTP^|fVsz+v?8=09?8f!k5 zPEpDQm|q2Vr9#5ZcUHr=#A{u+`Odg$3SYs|d1BV3JdDit9+_QlRNV}Y$f-A4zNao_ zU;xHK%}?FkB>uIXWW>^n;n0{JL@>yO>CSV04?cvJFz;&cK)fe?2C7J4$hhk|p-SIN zp9NLgYdhI#I=Ls7j2(E0KM78d+y5inyqsSD5J+_R(YZr*27kw6<`@13jqN9u(XYbL z6~G<$rHiP%scuedC4fz9b{p%SwL3b_MHCr3a>98#LRyBFpC&CehF9#*r*4V6p*`7g z_BxuhMRp_HH>G0?I&fO)9j<}Fo59xNXjuzc;b_21-~kc7OnwG^_e1>QSbzHO@y6jX zTGpG_V!tUkdveh%tw4$|<(vYp3FQKObEsxmmq)b!Fb7oX@EJDo67{Z$al91Rg7^TfDjJjMuLq67`L%{V;HB?VIjsP znJ>T^VBA-NQHXJ|OfP)`&W$6xn>Vm7z`05k@&M;{W=lInuG*&Apxj!Z+>^6}f_;C` z9+_Pcdg?rL-`s=AJtnswC>I~=Yey`PUt3X;@T+I4vvopY! zhq(2mJ;{8sUW8ZaUBsB7trA?~REy!#`cz_kJHVq#V^Unkn0I(HvUEZ3AJ_;y92UE>3~nRqJ4_V(6gR1 zFxvsR_Wqx4N~T#j?t%pD+FSSmhwwh1I)!P8Prr|uviN9y-(?OnZ;fPy)LwrMm3Sln zET^N7VyVZB7<&$4_N3#y4#EhQ0sKh$Qyo)s{KLE7xZ`a9k9f)t@{8m* zGF?la3g%bm;TjbL5ahKI_gM*L37=KgKhlVBlJG8w&*6$*Xhp+P2T%(9;ry%G-rCUt z8}YW5@ea1KEKdAAfn3C|dGGWw7H@4i_B-saI>HO5R>3vplO|A?k(BcrVgzM@NCHkcbNwYNpE#d*ME}k=Nz<;oyvR` zJ80wnQ?S^*&B|6>)h;;$ar?Kc|edf0-&W z4@xvu#Q3PU3?|Hk`r9-0xr2oSwd_jel6u;~?N7;ZcT7`eu`~1~+OHinNtL(vJry0y z+uu$m#4;~)>M8eIefD+0pN+|1`Ky4*Z-mC|=%*?3i7msm-WhDP{(OA;#k+LtHuW~} z%ddi`T7SKRt#6(FTt;9Pnco5C{j(>0!)@knMUy_2SN?c@tg&B&jeUb^U(`%8GZTIi zpPq`Exfcz+v3>vG)}F<>wdYHJ6IgDt9mRL@`{AWM-)c+tc~}$cV!s<_WE@k1p1$7E!X4#;8N1$N_14_F5ufYSTh?_i$5Z2Cf`PU z`k%uF9N+ZkQ_34XI8bY9z_&oHIpQ)Xy1no6sV3Q5SvQ~DBNFMqwA}tTqU|^Vaw3Ql zKRg#_eDUAzisxj?PY%CwGrpn1u@uip6eG z3u~!`BXYaZ!V!KBI7AI>1q2vAK$!Yx8~!j2eRR!YsvXLbfAEhpVhQo{Y_?;sO2$Z6*Y)+xWPB=PW)ZQVLnQcg+0( z3vW^o+}Zw#eC_S7wsonn6q$F`$H3pSPE%oiev=kMqfYCGhopMy#hf{an=b#I&-CFN zc^T$?2KB3RPJa2_Rda;Id25;99q4NP-rx-QuV{Ufog{7`L`XeDIxt0(dd%Kd?9&EH z!17ynFVO$In%j~5*u>3l5o_}~KbmK8Zz~0hJD6_y^IU?p-*r#IZjSj2NMxgJeZqeZ zs1v_roaW^MrV)k3ugRm1uDpm(|5R`LFl+JYJ-`D;Brt=idhKY;zlGNT*iz^opWD0m zbYGupsqZ}pkTKl)zXo&MH?E$b;A#~-O$Gn4BYh5hBaVMmqF|AC#2;la66q>fpL}-56iqqw^N(W;&v9mTvHBiXt||9B-SC3aUZaTFef!yD zwfumf?4?1Zdowz}f}hex;?wsGKZiN`*NC&P1Kk;CA15GYE4C&wHuSg2VtE8b11z!3+enE;@MrPJK1z5b;?wsl;sLi(6ZGug z%$)OA0!LZ#=}8HkSC~9NUIa5ViTLy;!R!GF`p5BMfS;A#LB>bJ-30bw(ezsn)WU7d)G#0nrE;3uW|Ed#1HoB=> zi)m~=$iJD)lcwOXWjCm@=brAo@W4do`$Xn7dD*8glVr^9v>A02sr=_+z!sa0j@@jS z$edDTE>@LC92MGyy@P3I$;a5gvCFjgZ)Y(FiH?CFubyOz+_v(ZYVSLq7m(-Q%#TV( zzVC+tj{WVELM=QmT#X~?32WTWtsH5mWNE_vxxIE*eGS*#b)s|NYvhG}>Yv7w><{rn zIAVRk{g}jlBj2>|=}%2#79%|Pi={vnv*3srter2AF%Br0IbkTz_#8m3_Zd7C%7HVO zeC!Pgx^rcx%EQ?>O}W$33t=W4v9Mk6vz5>;xZ;Et0}&%gB&!mVRkBmEalRqvVSwj= zIU{tnY*)627Lq+OJqQU{Q~HT#-9MOBz^t0^TDcJZf!4f@deGi~Jywo@YcIfM_OL{( zz?II|kvucI{2G2XHn+=e&K`CSr8~^AyS={k3Dg(ScQ`RMflG{F(|UCxdm3;70{$wf z$n0^8sID@9NhM}ARsd*8SI?r>{+-0SI7W>dPDt5K&G+Za=7KDggBxZG3@ zMzJgJMH3OGv6+~Dm*?rsEdH0!L%2J6j2RRTt}2+_+OL385*-1=*eCP?ilyv+4Kq_X zL&ormGtWmMN=ER&)%~aFPJMG4B z9qw(-U{qszC^a(PGx;vi>DEExiS+gCDOCmrowC>BD)R$wn5#L|!0z*v`1k4ZV}|~T z*TbOGX}x?M86O?^?q+8(8Z#V_*&ifq%;Kr#LNle-(^O{vjy{nxeiJLlC|$YV8A&8&o~aA^W_Tf6M7jg0(1by z!Nwv8*igJ$E8tKoxh7B!6j1tbAgTZ;J=sJ%(4ay+J=tA6wq`nD2XjEck3pRX0RhYU z0a#`WEH43;nF33Qeifim9{pA_5@tH!2UxqG+nn*e?T@s4ZK_A4HN3RB~@D2uzTBX=D?e+_?&(u!T3g8ICPZn9x0oODp9w(g=r5t zL(f?H&wAs6e2%-=+De^EmOf5~FMC5#=xXzeFq}_sgzg!i zw(hP{BJjD<7MtX5d*3}7(#XtrBRTBcUVjTh!FwaEFoL}pml$I!ANuF>Bff8z$5`9( zbj4K@pSB)Vy4mU0QlsZGN3vXtWz9mcJ!~3&o`N2pK&y7Fv2JGT zQZBl$`_}~rB(p8^od3YyyhY>Jv1Dx9Y+YP+A&sydp$(==0kzt`pV58EYxGHzu8p=;Mldi?Fm~l-uqs5%hppnGc(B%eVjh5}kdCEi=q0$`|C|cyb8F45j9((` zoV$-{gWqTfjJ+|lSQ~9;*hX8)83sq6j(^pwwf6pZ=qO-&?O_}#)QO2>D+<)S9(rdA zPy&=4n|q82)wbs`*(i_@6v)TDthlzS)+!_=<2N(_5N?Y{e@rjJz&h;&1Xfcxq9=b%vhIDdYiKXsr7*mint6=p=f+Rm2VK z4V$=b0#EDf9)oZ!D_x{K!gqGN@ZQWR59e&7#a0cu*h3ko*kx*0$Tasi@wHQU(md~% z9Xii{#S)WLHn)hkVC%zw1zT}U6Sj^;9DDo0C9wT81>c!Ld!k{beJ8EHMq2$~ZEheh z+xwnR6;cBZyvf97o32>L!vJj74Y-l~3Bh&Qh6R&h*Auz>eJY;+gJ`Zcq3YWE57!?f zFCVbv-qT>T9BphrI@qT9K-)B5`R~!wL_0V$`NMFV=4rC%_{RJn=)Yr$CrCUo(4S8t zcc1E#qJVy8{{9=|UG2_WB{TmCk6c-#27{}JWw4+;jFBOaaB8d-Y8LRXQA!I%(`OnP zaYIm&?S7VI`hhr~k6pPHqAtm@wx(d6z=??uCNS*bJFUa$g)MdO2AFb_DjL4i5?;qr z?MeXSEudy5xUC%?r-_zp4a)ld3;_K*hA$t!IjEScy~$u@c*gltd<-J>yH^sE5?h`X zS5b3g-7~Qi8}EF5u%t^Y#pNZ`cnT`Ai%exoDMMQ;c8T3n{a=`+>JHHHeJ{q z=sU5rM}iF+Z)88%+S?>TyQAaVX<7$)RyzIiHZ~T-x9{zey9%JvPCsn1{FLd6b zLH$jzMcX<w*T4&1Flp!9E)MEVOg5L~Q^}`~O#iR~gFWK)@;?~{&AqN* z1=qkNg|Q_Gl#xdvs;GG7R6)9B&@fYpu<0f1_Nk1eh{luOji0O4#R3#Lt-BgojN_aM zDe2_PGqH{6aHD#yyatuTWkv@qIa=biPH|iFZWD@iesJ$q@z(raVA+}*Avf9>BadD? zx__eJk+%@pZbqHufnuRsFzDIe@_HHCo&?nh|1h8htD#=8G%7S&)k<$x4E$SMstZ%<~>Z!Aoq{xBfYACh(WGyh90DqC^QcrZv_9Yy}C(i@~dyvtvFtOEVv z2_ZD+lvrf_xWDSv6k@C85a|!{S6xuXU$u3D(-@Z7^qn90s=i37*mH0-InHx%D}Z30 zgBy)PdmiF+hu#b!)E!K5Sg$IORlv#l52n;-F8Z3u$^I&^R}47KZICkuwx&$cJi9PXeE^CVS#Z)py&On9od zHq1q}U`8fc>Ie8hASg7+c-YqDm4%%dn<3o{mM6IjK`?&>Pr*Fzm+d*vc#3~F>w^4x z*Z4@wb{y40LMZNeEIpM1{!{z}e9?F6LW*u0ug`!+p{4E?y5l&#cQvCoChvUCW6*}f zLR|jS-AQRdebl;;+1DnjU42sa6UrQ5v_xgB|CQb=u_o0ip_Sg!b<7hmmcD~V{YUr-<`tQH(_)RA zpL^M9&d-l`1kh$$Wsm6cPCH*)aCRL~y5d_glDEXAMEU+9Y8HQ?H@t7x4u|j$5WtOh zhz+mGdr@$+g;mRrL41@qgP!BKKD(5sYR?3dMC&^7X^VwX8K}eQ8z>s-b*$$Vi+^Vm zGz5XGsi~vBU~2Z}^Z2xn_>wsxTx^vC%}6Y+AWk=L&!{)C)WhO8xS3_1^+r@S%57&Ozk-57k?$+r z{9 z-9$!SN5DF40WjcA?^|cwU0c_wHM_g<$w``6$yvo3K>Y7~BjSH{FVox8T1Ruaxp`eK zi+8;NX?Z^6XCFMo%QXf1?o?BXJR4bFwBcpy%)j|ss_47Ls%ZWSh@pXvEC^1^y|q}p zWy$smbXzf9kIpXn$ngO&o`p(t@s;eC;*rmh_P+xQkb~Y5&{Xt8psk939B+i(e1jwG z=H5owxmVfb0fKgmL^9K>bptBFWU;PyAr-MuTvzgR4MoPzzqI!qfoEyQ=MI#=!zmd~ z?cF^gFer+Db$P?oADK9)NByf&`d!yQ$%_F>KjqS#<3={f4ZVXpDgLRKJVJc6rN5s0 ziWj*vZ|U2RDELc%?#t&n&%cAo^LkiOGdZRAp@hFaJ-{ETqPv5_LAN+4{Fc^pFKD0Z zSE9!*?;L@}vD9thUh3f`lz~q>1{RoLd$*iop)X~I%gxpIU(kxTpEWz%Kg!8F;QE_D zn6>Vw!S7H(bMsYvI>o2tUe@ESJcjeP%s}6hVgkK?Bd-i@-2dB?dCt0Wt_p7TEHw8~ z?x*Qf{2>(e<>_!8nV*7|Y!Ofp~pzoO3soh_u# zVM-U!XAS9yKKBE)Li&s~8+~?O>oBvEa&VU19@sU?(&wTcKTn^3y&6(l?&z}%Rww%G zeQFVX-as{l^x39#0ewzXx`;jxzqx=u?>#I}pQjq_m;m@W`aCWoGwy)|k0bg#_85c0 zKLak+LF>6)06|EfZwf5M^!W*8ev&?G^}W&O{nqS{(`U9j&F!Y*jy`wSw({ za}0SAeOeXe=u`d~Sr=-tZ2XFEVS9<4?qS9bE(}_sMfnV^(-Rq-&@py3Qw{|yHE5Fl z7KHrO3VnhFrif8V5SRj!?2VWaV^_*PX@;bJ7?PYxtU*u2o5&tzCb2O(g_f`j)T62I9wvmdBR~(2Ff;bRM zwhQE?EM;js-NRW_&Zi<5e}#h#wGb^LwjBZYl3FdWfBXBRz{70)+WLc2%e6C-bsPv~ z4c8F6c1}xW3Nzyu8x-j{Xe%O0mS|EOPAe3s_=zW>#UL@AP|2Ufg@~`@M%f z7faVt#GL@WcSC7Y9IM!h-dp`_pF;A zOUvOw$k4K-t*__X>iVH>j_JP1%SgUvx0wOc2QGV0W~8Ar!DFC4zFanMTLJyZnu#Ni zZV_l6K)feRNvR}p5#0D?%$!ZpCaIzE=mT}5N9>a0fou~C=9<6^M#!Pw?mIJezO%7j zb0i@+T%e;_3Mfu6pfXv{9;irZIvjW>#YS1KRRc~gIJ39;v69$9vj$t{6PO392PP@kYq-CQuRi|wk zcIlCoN0_$K1=87;SL#q%N3Jc2J9E3$0S4K-w}FaE55`<!L} zry7!Xki^&&NT%75+kO#IfA@cWK{`vA#ox^ty$@!kzT6fvUeWpu>I? zE$Wsg7XKRBjudd)V;o@J5PK{& z15QVTw4JdKhTcRwSqW<B%B>7DdKIm!e8ZiBwN^LG$)ZDfod1pyl%lVExbtBe z#t&ld%~G}&6QO)y`z>TH1^eS4eh6+7--Ge4Nio|~l_IGer9e5^+M^Mmy7t0*aNqp2 z{bCEf8$W0OzQI~n+nwIp=rNR(=8hG%PWvAoe4aBkou z3`_{muqJI(B66)VwaZ6K5Rb$XLQv$7+_i%#TAP|>ICVKG4Ao))r6l|-&P4;Za=c+{ zUg=`N4ND`lY--=E&_T-Ld0AgyFq7;Lam=zbH27NfRzwqP`zHX!kI9h)E=5UgnMH0lJ5TNSPVjYx!d3Q+aY4V{gYSm zO?&P1O9TJQ?e*}asDllj-(OZgEW&{RBVQdiCVo4DHdLUy(i4rT)VvWzWX6s;tZ5n z%tv19KNGzunK^nu4<%R+d(n{=(dhummVCsR`E;hSYU_+n6Ew)pAQ3U@{-BeN z7Bm2C9k@C1ba88H70af(+TXWh(?na+VQ-N6E-159j4CpZ3Gq^{(Ax?V7z=Lr8j#F0 zdQ`-J+gBBv93&3c_k#l^&TYzT5Z=i;Tr4=t6Y%nP;E6iF1W;bmBj%n>;3q=1C#W}> z4||ZzY|L#ZR4r_M0)r*Ez9-Vq`1r>o^T__lChByAd^OGV|E zAbk)qYo`7>4JVeqQlia4M!}2(nXVN`xtW5^%?6uDKe7IOMnzJJ6?z`n{80yaB;%eR z5y2*{D@Hoj#h97BU@aqIkE6!e z&J_pE*0Cq#v2-!bU-~f?SLkA%6XSb2#OmEztDd+1`v;s^K0k-OMJHPeC1Qte63q2P z7xnwoA+tm37+QKh=WYC(F`MW2KX7fba3?5q#Mfb^naI3gRL5imfpz3Z70GMqlLrU^ zOC#)*k9YF4#E0!z67K|8CkwGdco%s*MG7KQa3F|xvJP+TJPhHr$;}K@Np~*1nK|s{ zZU6NTG7!bmXKV56#O$6dV3DL-%44v-cI+e_4#tn-8PcJc?LRxiOXvRv+7V~xppYnL%f%LTtAIPgXHT{lU3yVW zzvtMCGLbIY1d8^)o7imC|C6ptwYm6kjBxL;yW;##M4 z1&Z2i`+~tP^A;<;z@@d%x#!55Ltb@4k&ga!T~z`7 zm5(>{=CVTi`wAMv^?9E5PGWlk z+Pj#~U>?w3!k)y!E#8pPUHWbDk2T{BCDBqf4sC*n{uLH8S@#}`U^1dPw|GM#G#s4` zT59-1mHr;={{>6&F}4mvrzTz<6mNb8*K!Ud~wyj0}6?jYnfM8F&Ln`-|8nq&WH4(0PjmoE81J}(1Y(RBy;f1s4nhkRo4&xb|Ko8r zcO3V1(8eE$^rQcr-Nzi{tp(PZVMtPmGe+q?FfgwPlC)eQS!xBeE(MRx+D~&6U|Krm zyRY`xe-*8FjHN!#XU0-}T)=GS_fB#+nrl2M)^;FVK9JwB^hgr^Zu}HQt{C7y$e4o@ zD0U=>dGyY=nGg>bkm(c_k63C`*=V&Bh6Wu@p14z$cPcPck3)0U9DP?^sv-@CK&5J$ zJ2*T!x2bf6KcE99<*wSq4}0W`8yaJyp7(Y4Hb-3xwk6YJP^ck%)FM(;Gz4jpHPO{>+p9z-CddF%=N50qLN-dHxxY(xj^*rW?oK`J&r?9h8Q~N79DvX;YqSrN4#n&Vfl#5r(op(Xh%M0981oqU z=}yq;J3{}q_uY_VEn1J?dzzUcGP`pYH}{yDTV%0fCW#}311QqJx|>3%&R&P^XLxF} zGu@*fOq2g7W+*!rt#ub)heG--1zqs6v zlrsWQ9Xs1Qp8VgD?Hvr}fL}UC!hQ0;W$0p0qu?uLhbR%9TTes$Cu3P77R>2*I+URI z{$zPi!#`1f{ZpWo~5v;x0M_L zs>9O{`rf)+ z(9%G))JjVVz1a`xk_cLy{HdH|zVr{`Bz;mHAFFQzJvWEuFnK6vD66Eg5h?cr@R$6t_k01QgLbTR3=uLl|YFirEl>A;PdkDQ1`iK%&Ior zqd{+P^i`|b+J{)%TC9swE7~e_;y$oMq`w6W>akJ8@Q*^u5qzh3M=+Bj_0+#0q}(lH zZ{0wG2*XBz8MZrd<+bt<^inEB2QG~$2$zO$J8fIS+{ zppem3g6gZH4udM5zjH`vDgN09FsBX@@z@i6Vo&Vp??IozE$=10xJsWy);<51?js@5 zV0R3ONeP($?UXkbqT8L=faFAorgpIZrExxU8>{lpwNfB}-^~JF%<+D&c6wW4zISBw zdM?w;T>N#fA}PC+NCjdzUsKK`cy3E%c?5s|BNQu*YC}~zpDK*|yOLWKmF%Eoe(UN@ z7KChF(d`5(BkD&pd)H`Ae*MR)aGCcEF!i4|Oe7sKk_X5Z7Q;L>rZ#vto&I7^L!iBa z&W@%ts35s*LbW5pogr^WT}LnRFMvar*BDKi$o)x7MnN%ts?aSebRQZ;RCPy%Bvmb~ z`?JV5#u1I+v&BUtxKs3!t=OCqbOdXXhL(UxZ1uk{oY7x~t`|t+8t)#f0maK-%uKT~ zG%KWcRh0dKvbit3UY6)}Sw*8XvDT@EzO=2vbZ!F}ZA?je zM6fPu=;)&vyi7B=GquA=b5k@=%JwI+@B>}$9d1PQT^{?q)tsmhh6Gc4MfAxiJ~36N z)2TWqqMrrF%#Nd)0OR_AW(a z_H-hh zoU9ts=^T+SHm(NM3PIoI{G8)u^I%56)M+*w(w6}0k3?OV|KpsfOO*S9#&-~3y6Jv` z52?^!j~s~yXG`~=42b1eTK0ROeFkfV1__v9iu(mE0z9w5y2g_POtorY`{Fl)8vL`Y z26u>MGYXMe>36r9kbE7Ln%T31#wE~P&Y9%+k4m6vYM4buVBzoUOrK3u?nL$fbY{DV zzyn!DH`!AFwH=T6>)URQZRJ{BfbLf=4#)pVIDXoUKTW3)&c(LC6M)^aexoxdXsfsps<`aEH5M-@_}`?2mBX?CCg=Jgm-Rm zr)qH35(gT7K>tGB{OiJx{BPimaoNMW`J-exVpThUgb2wWN=ASkZ!t(m#t-v>(~ykc zQgiMI+AO94KTD}1@bZcOw@*TtsJXpX4xmBdbuIn{*5;%X3+!uKKOR#%1WnT3Aydz$xh1smP!>2d(l$q&Y z#9z*jW>!Xb^-W$n(e~^?RIJgphn)b&0xk)`CEUm--C$`R&`za;qOD$w4r*@aQF&W4 z)FX0PY2XD=+kxjSibq(DK2nfCeT4te34;=LXl*=M;a+v+ZZx0W;$H6gYw44$dncB@ zL<^d*LteLq2w5OU?c>IU>+0|bkeL%`Y_S8x^eQQ2yp4NHU{(Eb1+4`Gt zUrS~WLg#y3YEZSewo#=BGVo0C7(?WK)vFQMG^h`5?AgAT)rzfi2QBQ!XrONY%2;X; zI%gjUiFm?K6VDIOL)Ku2VpQ`Qq?kc35L(7(q?e9PmORm58{k z!^VAva`=X<>FTr$YF^WsEC$MgE7*!6iUqW1E52E(6 zrGJ@Ap!QaM?R_se5kzgTKLEdI@3Xyl#sOz1bHItU{Td}mi!hy2P5*)fr-_HW9oipd zy&C%(%LVCLm&26&Kk$>c*LuTwsf(c#{s^Ep#oHlDS1Rq0@k1HVQ=MeUjnRLi5WdU2 zZ(jvo`2HJwmynQ!zQMoH>U$e(S9p*UFcS;@FIak(pK9PXfEd3q6hC^wn^W-^(Y4_R32rt$iJo+lU~QX?fL97gy6_!G4#!AemSi-qy)oVnChSPk zrN+$L$;{ii4e9~;Hh|n*9(ve7ijPb0VN#^{u=Qr-mH0fB;aUoQo}V70v-~!u@mQJO zN~Wiz#5F;QKtlXH!|QM8BO^olWwFDk;|T?D|BL}PWQTQ0mC#D|VA zNW%OaU)|K2`7yrwLexw-)_R^nSpXA;pGyyn-^bb}=rO?X^zkGlM3IpQR3=T>Qt2J` zlIgJ3kU7emvcZu`zn0P*WCQ7trY210NYuiS&#F?Cn;w~}=$g=Eb|b0J4e6J4+TC4W zkdhfZ`q!ZAmg&!&1&+S4jL;eNO2qEJ&te74<^%1M(RX$| zy_+e^TWzS(ZF2lqC|0J@GhD&aL7rxnF5-hKDy{VPbH&tZrGGmwr#`CgZpBdiMS>-q zW?Rbmoc`(Zw$Kx{1hSWvX>&F4Kn#|}138#a5j=dbBW+d}%*0$iU^F|@I*b2kCd53; zl)kNe=_l2nY=UJ=#cMm}7o(SrgXIwaN7R!_U>X_}ta;fasDe<-ogCSj5BIq%Qp7(??Pv}~;?p8}gL50q`)%nnS` zJ8x!#v~r$IXvj^4Vdws%A&OV|zg2ThfW!*HApN)KYi@N^pw4=+(%X(UMb0b+rE0>p z#~6nD512K6g!5;7fsgTLOlFS=SIBwqNq5g-pwg_>a)GOZ9wEON7^+4PN8q1jl6^O@QQo3V=E**nogih2GKmdCG_1n zsKrtft$$Q33;3{7h5JUmWy}pWt`G`I29_FS@=$Hn?qZz=9C^8YKl?q3!O5q_h5tsH zLlGC5e`Eb0afBn}1^oOA?+Z{fJRkW8rJQPD9>iM04K`YZEu2-uV9f`2PmKm!o9TZ; zNXWR>7&zeuJ4lfiE+dlhp&|6PG3 zz2+k8(x8|jG;?Aac8*L|N35M&Hg>M5II>IF;+iT`3FVTRFU%rGu{9T97l3*{;?jQ& zpMwPDT>9J8m5XMH)EhI)ixytpvc2UbH%3kN$go#*7_n8w3dXve9^UuQL)%P#!aoWA zIYryk9^kY{!H|(dX#6vxa|h`TG2&Ts#1bYp3!AeQmw;RfGW#Bj8GPC{NCGy(W(J1{ zz1}1EVy2jg)&qm7%>k@M2lpMuU}|#&8Ebo%aYP!?QzW#0^!^unUjiOgv9!%L5QR9= zD~pO6C1Oy}unZDHFp+J7iN>o)RMa3YC?GCDKu|$uG~*BjMa3Pjig*PDMMVrTAe#$< zE4U!I_W^_`3Me4|`&M_KIWrl&m-~JCKmUK3=Ye$h>7}}=y1Kf$y8CPZ#U}^4I3*(I zx2SxAc{Qd(bqYhnIp4Qqs5?Wg7~=D0g$rzZ%(CoHJ zWF=+YYOXkuO-p%X%SxIJx506NwCG%3SBmSLbC**yK{-7s9NQi-ERM3cILgDsNJMv0 z&mO7QM_+>}amuqnKXOLyh|?(q_2st?IL;n)dJ}6ycYTD%op72A0u2AHgs82C`$M8N+ef&gz7DOpJ~|ESqxQ(8*GH>`8QNog1pQe{yT(|RQlmhX z3t{V(({3t-wZ@-oI6~@D zL00~>WtMOvjzD)xBC1kQG^wlUSAd^3oLWbID)GU{v~XJ}Zek4l61<18;q*d+JO6_n z(z|yj^WmwKHxX-bip&vb15kJ%dEx6Cj2vj-i}%xoT4CW!i>*&E#n%YnN#MiPJ`i=7 z0EAoADQ|GhkZ(kP1Qa5bi6yP%Kxsi(1b@=E;&P-RtQ`~A+D-963#ep>{ekpH#V+ZR zk2hkI+5W|Ni<)dQyh!T8C|+_SR{%RWgUL%U3bGx4Xbq===y@rgSCosQ*W$L+ZDox; zc1RA+5)RH{(OR)sA@>J0${HL_wilG)15GW&sYfhx4y)yYybOAfWG8^uQ)r`u8O;1n3^^c~6#k5-(%>?lN z(3@ZpEF8pK?hlQiE)wJQ+_7+qRE+}YDRc}-C~YwxC=hHQ1Usv=?luld8npcf8zifg zrI>Pyu(Haps^sL^9=LX@xaQ(rMi>+7yVs3CaSo7`+e-BzQp8nL{kF*HF%A$wPmlvT z=-y=+%|6^2Rg2KTjGSLpWt$MHT!>~w8TOa|ok45)>4k{&U5oX3co z9~iotp|2UrMM!#*U)2Ocetv+M;^v-7Y{A6NOgx&2AaRQNbfLi=xMai;E=s@7G6F|* zz;`i{z$NK@_0)l2i!Q9@4K_WPO-~UmZ;!fwkuxN+Qk}s_rbI}lQxO#*=Iq3r#I1mK z%<#NK)~R$xXs6besDmXpEl>j_O_I$F^2-9&B=#Is?6g1z^(E4rA;6hh%}`f{RxqS_ z0`I3V@&zDv8SOcwXhwTZlEF^yBz3p>mZl*lYSqoG;X5`~#!!{OrOgDI5ig7{v;{oD zDl_>NpcCI+O_og7i^@sW=a7%+Ed+X9++Kl1)x=JfG#|VQ2N-4>h-~mNadYM(XHoPt zZ75lUOmgs3doAL$r+2d}al+)OW==Du=6WSy0IL9jlw)`>XESwwH}V1i6+cRG@C(rw z2ZMn}4Z|Z5ksVnQ`TR;t=Ol_k%r(7sG#Ko^%-%BOoft6QUuYRU=z1^JLmj=?tiIUL_HZTiYB<0@no9 zlT(IF#s~0D?eHF%l05dOJeG}XQ5rHk>TBS?oUo(*oUC;Dm;_dbm`Abc#@k7-Qm5@_ z9VRo#S?`);nzsPxl8E@sM56}|qk`=NSLVr*=o0z_+K$?_(F!oTdCDU6cdnCZ zSJ2C30SMKmql$Bz0rKpTI8@mUYa7h+7^;}^PeueAt%b0fNHN@Lf{|;2fC<(ijP^L| z5bV$R;5+hASckCPE;sf<0P!kbu?}g|DaVZ2bN{T1o$X?~Hgdf5H&N7*bo&8*upOlz z85~G}`1(7ve!B1;9ofpoRgr7pN*ik1eNZ0=j(TG0NSE>h;4oK%8z- zdy)sfM5#DS;%x#6Yt%Nq9N$H74)BMo2uNg$wIn_c)4Qe3HG($kdZ@it51P{sP8h$TN0ndz?CcmkVS+T zw|ht@upQvi+;JfQajl2Nh~!86Apz{6UmNd-1PMc`L%cO7e`MJuSddn$=}^na7^}o= zNXZV{_cCzI#)IjtJamy*55*lrm_)tSS@TD_u^u+lQXN-eH=(jL@#Wo6DD%*rB%JaY zH7d*tKqygbc_x3s)u&Q?6+nn#9qSME=OhzjKQVK@!C`7~p6EyQlKE&@YHv2ZhfFrl z!XViar`%-A(+s+|^+11$*!i`@1rh|XWo zT=3fq_)WU*xiN+KCc!L%lV-bu*(}kRAM!BC3b8Y@Ris{pBl$feKlO}kW*JSHirgm) zu^L)-6nF@$SN+g{F)gL5;>OyvGzy4?5PU|)aqi*SG1JnW7@~H4@;-#27JgzTHzH#w zhEjsePsO;Pb+cM{YlCbn#DtFacHwgqVEQl8Xj95d@rRB^A#GDy#z9d+n-Zo`?U(dQ zM_0dDQWRM#w)<;QAkn5o7gIA#JU4i+6Ye(HJ6iKO4x7_Mq|pe!>ignukN-yucQRyv z?;~{y8Fws^s#>6gwO7U{DD+I4U%lYTZ%j^kE@AojqHL`NV;z9su>JuabzW>1Qg73e%qT&FGih;->{wrWze|R}GESWbpG9cr| zU(P2z-LVs1%oqx0qM-8%B4UsIUbSF+g^sJnjNAY{&)8dc&O!V_=yWE&5pkKMoKZ*= zd-xh=i6BOM?c3%%)NOFBQ;nK9?zohl&3wNi0niIKs7H~aHF7Mt_Ncp<;Rw;cwy0Yf z(Z?&ds}YR+$UH+3(p8@%8JDT^_^mr4>P&_%V5k>Ek1>?P(A5mJM~Ee{IfGfi=}r9+ z$_fSMB+O*7SK_!fR`q9VQ$p1D=0O+|QQUCT2L={oo&vE3k3d{!^F!H@i-d9h&<#k~7G@;RAG#6|W<>f$2txj)iT8bjJ6VQz0$I zyY&ae()x;M(1zJO+B-2g#4%>C_Shi+KdE8rCi#%WL{@|knxhJz6JIc4Dgx^&&UwTW zRbwOu8BVrSbdEHTsf2B}yjwb~y{V3YU5G2E`X0u&G>Dvzjj`66j!(^+t@guU5(O-|1{@f9m$dgQdk z3K3KLU0C14vbhE`yxQ3emd&mhJx0DpXKMMH?tF^XVr|vt3J_fkpKv|j+?p6j3a$86BSU~ zz#xZZKrEZ#`(ib8?~By}&a3?%hb(6ul+ z3YQq}E^Em(sxk47=pYx2?@^B)%yCe5ecUUCqmP4OcY#@P>^DU&Hw(1)Fk%zGdQEO9&>1Y$=IJHn0^ zrrybeg_^|Y#aeku4kL}yW{D3`4PikTegta$OOhesTZNw2)K3Gq@9zO%!yA2U`?=?VG6sd80SWFuqVn#;xC}l)u%;2&f zrEG#jHctjvwXmkOB6dlzB4V2ggYaSGF;>LM2*QeZ2TO5(#b|+}rdu9sY#8UZrvYGd zn#|F*J6&Rwc;wA>ltKxgJs75iPv4@b6lxiKE{8>66wG5O+>u9)u9FQVpNUu z7;|CleTQ0%VKT@^d~QcNl}4JaX_!n=7o^Hm8Xm?kwTAf;=W?WbY<@fsv)Vlm6WNM8 zZQ$2&8f+_p{PvVyF}Eo^*(mESyzTUjKQsZc!kpuF)#reR4FOquuvFuYw34jz7Mu#f z?P{~3e{ed?Y466X9A83pf%aA2klxR8Vo zSQSPYTawhjpdnyMblbR*@*iE7Mcx8rh?zWS_MvOFpg=L+UymWH5gpgx3}dPX+D<3{UJJzz_KF7*yv z6x8z=iySQBgV~`8i=nJ~-|i5*8ifw7Jj!^2G6(k;VcVALRx-b{1M|GSPZb!dgFH?h z{T*9as^%YvkCr^Zpr)f#*58sF5~HpD4lzr{fLkeUI(h{KgHc{cgA@moN6bG2`xDaH z^U+!7AV@sZe*S_8(i0B{pUZwFS8Y!eylkG&iZo{0aNiZ@Ho5{c_cp<#5G7Uo(1EK!>1yN*nPL$ev%3WaM$cOW=`3oNB zCp@-@^>$HYH^;UJARaPx#_95L>CO-&n)Sj3(#{g+7L6CK=3o+q^575QB@}(039mD_ z@JD^G?rsRfUqs)|i$!Yc3?xLbv$&!F2Rd;!42W(w1!)|k%MitiWi1x^^DkhZX9HGn z)c|aBs8eC2aGpXA(*=&+*wHKTi*VmVIU6$_?)LrIAHq%^qz#V8=d?Qst>AnP6YvyK zy@JTk1(A>ax6zlYFggr(&wJk3g!tIA3)#bX77Ow`yc}4fe$iJ?j9>FxC|4qZk0p|Y zh@FKt!S^{qZk?6lonOyJ%x3Nn_u_=iVrbDEMm>xQp z5vo7beCA-d$eIQ(2IDT9a!uDndHn&pA@A`%BNIb!NJJFIu*PI^Cf&F_8qXYn0>wqv zNnC3JM-vHMPCK78KNwXA!n9-sx&ntLRKeq-rV6;5h~~tHHZ)~*%TPrE72=Q^)3xyS zYOL5Y(pWIQ6RpRlS?(-+i|$~n>9|&;7qM_UmUzaoB~*j#xS0Wx7$29ZI!6GdusD%R z`AJxZor|w>1*#Mx;&2?qkgoQdhbcbvOJ0kmEH*22QFG-mbd!$-n0OL@h&1SlpZ_X! zEXaPx(6N4Ec@hmK4A<(C;y8X;T$1F_)E3Mbb7tj(HRvT)2&T zP2dnr!}{(9)%-!+M=}J2#Z1+)O~X1>9r78@y$c$UdaynwsX?MyVcyk8)SC$f2n7lTcHlSY~~R_y4rvNx`ErN*M@K6qO~IRLm*q4s_KL`*nUNBCY$NVW_EE7mw6Az zfxbKvTu2%AJ0L5Fj=&ACvE3%hD#@C-1moCG8eE9gZ~J4srXj> zfH{?uguK`wgZuxF`w9%+-`l#`?3Q`e(j$Um|3qF&_7uNvs)%932*Z*{ulTjD&Z+ZTKfLO!@A z5#tW7eI#7@RhPSkw@Q+3ALFpb`5irRW%6(L+732AGH)d*W6A4TStgLGKEYrT3_zMX zeSjY7L5tl|$DkBA_{E<@p=AGfm(_|4vJmW@bVnRAg9{&(|WQpc4=Tl$#RZ%zd>&Tp6RpG|VBtFTFQ(e!my2r)^ zEzX%pq!IM?DHi2?29%IaV@4WjoRaCiGzlJcwO;;S=9(EM$F)hljZzG@6k&aZkENw`m5vZJIE#s@I` zbZ8xdV8IMne|KAm%9P)sEy&d9k356Mofq+60Tx14m8b^wX+X3Ws*V5@RGVM*Ix@iD zyEUrUayIciXAoV0X22W#f{`g1S#>EQCT8&dcfQfahxkNnAgny$^`0<~57<1bJmG3j zc%COb+Y_GV2~YKeCwam=j%Mp0=LwH8VLj;=h}DHprQkPA zI`#01O8D2qIf7tz;_E5&Z>f}S>S`L{p6caWC_7I(hS~b_=_$PHoY9K0i(A0i35|@z zp7@!tL-x;uDidjm>sd5<;5nBbjLgkgkEV%6qK0TCS|Ucns2A~Go#pYTi;4-mUZkOZ z1_gSA`_xL}E_A~dsMkXt?6vbTnWr~5tW%bX#}XQ{2jRR7feGq?FR7_&Ub713g~uajj;}WX!Nc!4z9tgFQ(XS=Sy1;d z!yU_%P)|l6tj@vk)YiF307e?Xj?$t-X?+YVY_5YBSLc7q85Jlw;M)-bnOJ*>`ELpQtO@{Ss0{u{?d3CC3n`46? zn1Mgl+I(1LKDdJ?S@i{|o>z(u4n`+t5Erb9CHceUC2~xz8V7jz8dQ#N!v>CO_iZyqELYngP7)qQN%!2qy^eo|rH7+Ht;og*adq4KtYW zoeWlw1-m@gm~Ix%+z`Zxg@hRbR*#QbV3vt?!v@f4_-^J3kk>+jbog_^2gYs0SSmVo zL_0aY-QRN}sm8SNhJ@^H-de`O%hLD;g<}5&zyw#|5GNQuC9;wweK!i%M}w+YS{=|nLDSvHVq19>(O zw1Hw9D7AqS8@NUX_A(ibvR`L2fFHq_s)G`q;R#oJ!qYtANuKa}Pgr@vHJ!N?Q3nrt-l_D-X-pLt)uZazWN8`8ZdrfXN!a!Zc3uC2jm%$uKd4v`*UoN0I@P zkbs{AhQ$U3a#2zQSo)CVlER?rGckkwnG^<1A1L>GgJGP3ft;TdhT)O{8us2`xJWWg z%vdiOlDw8#BpIe;Op**q@X*b`FikQf(Oyn8FjPy1Wbb$y7-mR@BrqIcV3;ZylEAP- zo=~h5EjQ_e^}S@^E%nK`MRGj?KtR3RO8C8mFfO^tB`e zy-~gnfU9OQbPbiS@W4n4)kXN4)WKp2P6gpg7+MSBeFQK!AB>YboSW4uyjVf8$~lxj z&TV>#W5WMiM*Nh#7s$jay~SUz0KgA+u@rBGH4hq6K=+_9StsNZ2F1W>Q7vp|iPkO0-1 zZRWJQpDCfk7y(dkVoTcs^>lAGkX)^(dkVfK0ct!^7Y%%sYA`kW{o0t?IRbfde63xe zHhn?x1gHlDi|y(OP!kyeP@OzLZ5_o1yg(gH`#ld@q^O+nJgkB5W74&4gfbZ2$+Y$n zFT_3Cf`ZgDq0QV42t?75oK$qiA%%)g;4$ErcDm=^tKE~v1TY%NI1s(Xw$((FrG}Ln zwwOvp#ldS9U)XP$d9?l}`J=u7n)KpSUwXB+3pC+AE#?EUdBHY|w)IJ?kBhAr9XE}b zMx$5UN(B~YG-nzG6$;)0lwqT~;`nQQk3I&&09q&+y)ef&ZLMyUS^0yaiPZCvDij$3 zi;S;~vG5m1iK3b4qPQg;OCr2eFjFs*JQxOMK5atG;L@;c7_!tZFax>$#sR1)ysZs^ z44mngENY$kcxRLf=#$;73Vw?8FO(sZp&fImB{Xa{%UdnnkQncfnymbS2bSwd^}*Q7 zzitLEq>691@q#W&KS@BEp55Zhx6N1sBD{Q3){VnH(?;tdt6Rung+w z^vfT72`gm9r(PXbd%1DyS~gUvYl$pXFWrJMD85=dKGI*3(QyO2k2WmfsMy~*o%ywO zFcVg@H$Ed7s}YJwNQT(ulaVPW_c5k~&O=0fh+%_X1OY9{^F-6SbwEyuVl(WumjQbA zT+wIzp`#YC3EgFAo|){Ppo0PYC>D3{Z`7BI7PtZ+5|~UZnf8E9s&c zGo>=d10TWPnZrL|vaBL?OqQMF*+g;McBeFijVEvNU84+4>)fL|!@?bT1vPYnF!?H#9S_6V?JF zPYHiL2=JKkC<}f$VjHZe%&3D2tD?B>R{zZ!gkYP6wD%UH27fcNjI8K{o8RTldFEDq zccD{2i@*bDxeizNZu>pXO67JZVX3(F0``8Uwyt_Ot03aY*5(~|^Sf8{#zfhiQX(Ut zhTMxj;f@!4-eZ#~?YgNaA>AL|wH`+OJ*qBXiuP#1OoWj?$muQ<_{8M4bHxW6GEBEe zz5&B-TVt8IQbNMaskp5H-`;0Rs172k5k?QW_|3}x`JQ9_oyhWE(S?)u9b(%|BlL_yrk3B^rk0~AM%SL4&T#M#oJmk*bZ@7 zOhI)QoW=jYUK1y^p@x#0PMuu1$h-E_=xA)R*5HK=vyTq!2X8XMFLDCjJ^_2=fjtU( z#GAtTMh97kB8oqTv)u4sWqp92%cgr~KwN1UAd=-rc&2*7Gd$sHPk5RqJjoMY?+GhU zxW*G+E3mN%<2=>26f_{(U#S-fW;Vbxvvn3@Q z&U5GHFlMx~1JxtQE%Lwp`|Ydo)JX}R=8?GSxY>tu;7jmYr$2P27}vC9cTT};ATcLH zjJEeUC&*|!dU;HKTd$w`qEe*xghyZ@->S;SO<~J$h8dt_0hEI5U-25coN1m@f^K68 z;tySncww}68jhFU+`4@={V1@uSqk^X_xzzdSUCGPe`q`dkmLo~)g#t>&fpQ7%3zR( zg;JNp2hJb5TI}xHv_@+%vxrB&eH%aOuQx?Q10Fm48^v}G#CAQk($Ff4kmFKQc{K?cajKEaLPIrWITY+ zT=zhJc40iv#@DG##?P|x?WzUim*}`^%*fSvWX8(h?P|yMNE(eKsc)T9jNfkKE7cmt z@3rxDYB}Q_ZT&0NJjU~Fe7l;#_?b4oPEBRJ)W%n;a>lQ=@zrV+<6~@myBf^+L>phH zN*I4c$2ly5jJL!aI0oJ>jL*QcQ4(LNG8uo_##gHrj4#u1)tHerhT6mM_G7Rs~L=+Y~$P2RK`8@DQDcJ&q_6laYG+o-#(b} z>tp3h7!TPv=+F4QHoj7IVSKucuU46izhdK{KjX`7e4R>R{1Y2rsdik8_y!watrX)s zbzFVMh(9Lp!H>(CbU2dGfAtz8_v3vcjZgI~<9FeaKpp3P%T&pNB<7DY@~rz^jbXep z79Ya+idg&t#=nTgPiOohJeg+N%VB(0EPf*6%f52IAHn!0H;&heR0@-RLlWS@`;)YN zIM)ez^B^sK`R|JBQu`mok?Dzs;)O>Srb#FV!AZfr^EBDBrzv4N8)TY){C9oIO+sFHd<<=d6XY4xPj_SDtw_Cg0CXAs1ZvB73{$|j?Hag6 zif1F30?!l_K%yG9Sht@o{#HiU=pi6Nf^$tw6-eU!24J zUfqj3c%AO+=sM!dX7d$Iuir@?4@`iEs^;VI5O4HYC}+2zZx5#TbD~?rJJ^S(_BtDx z)XCpzE5khY07HO@{HbQb7km%K&Or|I`MHwr`u{vCo^b3Bt4w=roU!s-g52!J@>nolA7tR^wFEf7E6Qe zP+Y?Re$2dF2PHhugpr(wIsyp>yT>kK@)K8;cPRlu#ui>a{DhDg3!R z#1tOtPGu(=_!%DB+6edHTxbB$e%1qcyERkiX@t?CH5Ms24^oW+*}b5#EWMvK^pZ^z zW)K7U93)2J(Oy(*(?re|V%LQA+mlT}xf&pZGNMUPD`8D~+r;dB#F^Q&InA2au%n_{ ziCbr--su4N)Y#P3YpKA@)SIRr`0e(`Z3_sx*;`4lqkVEGu$_~7Hv5U91eZVAOifKi zs@dN5pD+1ZF(p)w5nMIU?{d4}H}*B8KXrL0xsiwz) zFM=Kbz-F>r5Ic|k|9lGq3b;m#bU(%5h^R;^X`{YrRlpfYPnE_QEfW@qu}m$$)Dq)& zc%s^kIj14spr52ZD}_GY*Ih57c8*#u^!Tp1)-J6+3GI^2?@f}X6Wl-DK{Cy@GD-*j zU-#DkbC-N=SLyjsZM_I|UX2Byu?rZx(3a2jck;<9W@&(B2kb_M55_0#QoV#Zc0UV{ z@iZR(<){Q6IUM;T-qPJsoK)vYK9f3Eyi1yllS=fvk~hug8D|>sn*OvA^06ZDBmaoK z=7CFa)d+T3vd|Wnhq3`JNY2FhJ z&vWU%7Pl{g?!P*g?vF!~C#USl<+>01!PRF$^CVc!o`bSJy4x}E_O5Miuc54u1{I3 z1Z|y`%XlSkzg3y!Cr*;Cq5mx!C)M10{_*i@=gCD{j-v&N`F;tMnzNr$`z9p+b4n$b z?@s-NBoJ6*zuowMi4sZ2NpkF)QE`22c72hv>+siIdFP?aH*xwaKfr{`LESSW&jx}v zP;3LGHc(;%*XTefV;lqcv4$=-kY)q>%}n|biN?nt((l33T>FA3uYIaL^xLn$5`*}0 z_W4WfMrKsq5*t-C-#Ld>dh|)_A2#+)JwK_p`$E6`Wx1_#M;Sr29`Cvc2TpI10R=@A`TBPaK z;i=^Gnm>92@?*l2tf zuK*(-m&fFz3_K5=NHdzz`ExZ82C{6*f4S;mgcMOSSfk`$-}d25eQEz_0AuZ&ocedH z5Bop_!~5sQc%Ms9XZMRDyjtTGITLkrJuf z6OU}C_u@5DO}a8;?g#Hf4u1EtPbRc^97o`pRj5~t7q8aECcbv!7|aXR*FHusf?bEJXh`hiBasD%k-*V{%Lsra&krR?^T>(;5N zZ_0)f$|_s-oRbK!@1;j$$7$hSgf5jZM`U69>VoWGia%7hE%TXc{owwFhU~MHtV2X;7^Lgy*V9d!Eg6!K0>zn~>`1UElS_n7Lu6ovaP$6*^b$5)>ahj!nB2)5b-J?N4lhXYT;4aydz#ES^V zY$xaq3!_g;FT99|9k|AocQy5hLG4o%hiMOWqPS23ZaBap4}|D_BU~+DPu3^!!W5}d zKF*awMUn4NSQnk;i%2}Xu^jd7c?czH&z?9_ zjKn-ZCSU*OYxhyQsz2W|WS>Mh*st7l@!y{-znlv-|K)1ONBbfE7SJais16#w+rJm| zm#(GDWAmk~rB}=pm9q5%qH$WH$T%er;>U1`Ar`}s8}ehgj!ieL!J)w<=eY&0P5%zG zXth;3ZtVBK`QOr<_CZ^6zWt}@MRzXp=tXrav|e=380tk!10ocAF6K=U+toRDXvKvh z(Rz{o_?cu`$VxB=v^QDwtgr7?2!6^e$?pKEd$Sb(?G0&x{A1;<`YuwtwdPxORjl4T z0kKpSW$U|IWcoLEIh6ez%a}OTm*I{V7ap{@x2gVI-UWjRi1os0^r-tN=wkqCr_nX{ za#j?-+%qnfe4CjP%4Y;lqv_o+DZ-jdkKb2T$0|&mdz;}JjGnj)2d~P;l$2g!9E@Ld zy`bn~ph#}OdbhkbUd|MiGjKZdfC|r=EM6+q$3Sy?oiH)Jlg)2|0U)BeeA%T!X_D6F z9w^z@!aJ6&<(e$3JZ$mIxqEMI43%j?{5Q1 z26a0HNH?=T7f7Vrb?RbqPp;H1)4w16HY4?yO zIN*h1WQ`cJ($O0C1P5+L4t;q8l%~y86^(GnYJ$zJF-*o6JF;Rm>9G_08*)I z@h7n8poEntyv7q=Zo;ZhCydexbGNR&&o?@1F#Nsc3>xq3?xN;kjiS17KoektF7m)U z)T38d=?Fx9<#(I48nr%uC{O(CQ?Em61PY+<;AP~^P{uSAlMBN{IXsY*WRhHs+RIx7 zZ%s|@Xo{OVo^ocgTp2&f07mUX+ zFB&EJqK#roDz9c;f-3bL9DMNW6~-p;hBS2NdJqlIBT}Ko3(|O0CwJVdSaM!JgF_z| znXqfZd>j>L!9SgfGCLNG*0oBsRCETQp*}o{OS2iwkbqZRNNaImmULth#7*K~_l%MjUKlDv1rWNth z6`>;&FfKtxnZMQRHk)iiy?y3jNDFS~-xk?YNMM!?f9b6#Q;?lZap?GV%&!iAqd zbSpv_AZzJD&btGr#H#k7Z|XSYnoud&L7@xpK@`<+pz{aPJbV`_;0ie0^co~!g=eml zVjjKP8?H}A6x0$-f_!_Slm;Jf^za%=p*4o=a+DR(A8b^Ul_|tOHKWYYZ;KgK;f@F)d^)+mWZ3k38K3{RHXWdQEE{ zpN@B#!ov}d3Y39! zZ^w0bfT@|VlSa9E&*Uh9Ivhh-^YHs*Qa;z(98bctoCjg3G5kgW2Ka>CVBt9vfe4@k zXvxEs&zfbwswB&r5wUih+j$ugZr8GYK*c$}aD^Rsr%Onbkrik2Tk1fjgsK^Vfo7DN z+|fQ^P`+R@6O&sgKD`y+JRsw??y|ACu5mEr-a)9c>|%XyBSF!t?nbH^s^)-Q&Mt^h zu4>~&itEfNc9{TM$EaiOxTgGf9R{5+ktevA9!2Jm3%a9$fv-axF203`F+Ac(hNKkSMexLX{#(0b15rDMl{L?dk4_MCVsgEE z?iAf4jtc(dI`&4mRRMjNuw#fnw6jH>I=S!S3k)#~QpiIAYsx-@Q}GarKYVpZD`CNYlVfJ#2@CIb||aw)Vy~C z6Z*K;FOjw5kjPVLXC{%gcxYv!Se0V41Z;r)P{Nh4Ed(aK`)X~K7y{MOuzo^?HPAfi zm9pA4X)fG1QnsSF0bgMeGp7-_>iU`JpdC^mBc-mYnhs?VoX$u*r-y1<>j5GNNf5I; z%`JZ9ltRyKf6U9Dx*YZ5{mt7Wz!rw8RF8C7mb8P?KyFD{>y1#4S73!;h7z?DN4z&nvMZ`UNXq=o?R z&1zw}j25R)_zlDD=AKOOosXO`^_D7Z5Gj$mbgX}xWgs?7i3|pU5{UZxN%i(^nQUKE z6GtzlQlG@*U5G$re4~oang&Y@fjkEMq3t+#%Jg(b8OXAMObJ8-&)|%Q=wN9#)<)hz z?Jx{-d<$+9o<(SaghawUdbM!x1561`W(3^(c3TR$#hjYE;1X0aO|l`>it{5l!s1b$ zJZ*#XnHY^ha*00_{u_(?x}y5H2NVLCNTK5GI~oCsWLCm)C=GckC5w}bsJ#iNVPz{! z3&Ad2298sGU%*u!8y++3DF4fgxDs$a+RB7HNYryOGJBC`FQXzotY)&xoOX|g+3&~L zHf{uIbpof@ME(DW5VGnA6K_3U79x4X%;EU|bJ{@5p;`zw#T>%j${#buC{yLpN z3N-R5*%WEhkmimne|QP*adW=Kf8^~^_$JNGW&l5D@OBn<=e{2%kY->rz#Axkfna0t z(R?HsUuY*N@2uw;VKpn&VC*HNl24p1(a%*ATRJ|mT#OU zs}bd2Qpjoh)1E!@VEZfEfDM4z8em2iE!=Q)e&oZ@`~L8;?M1B%B6A(*cObK8^q%Di zlkvli;He4>(il8J4V|!~lmGUg;b<3}UtiRy7F44a`6sMLn$5Oj*ez#5Rk@}AvL0;> zk6eGN8OB-UKZ?VFNFf`JNl#?CmjDPTo`(#^HD&ub+m64;kAW|(uu}GnBIliH& zN7Mmd2MGyF^&Loo>I*U@l*qmMXOYNEBVqH98PK8+Nf@(`=xY zP#`?+AVYWtbK=MJY6$f z6P{+7oa(?R3m&!I!t$q+xjbcmn&Pwv^%4toUB zZ-p5lK_+;Yk)$IRT6WgubkpHwq~ZOGo6K~R+e|_t8-C^Nkdxb%DWOe_U~XY0>bzDI z<`fYr6a#yia>iVWZ{#b(jFjxf0-`%Pt{Tg_`M#@J$zSm-wC>-AYr)|GSVRy3uKXN% zvHoR2z5bPuXon|2AOPSoQYo)Dasi%ktOfY2N}a4_nk$IJ3ek@G3;=dz8g#G}tYaY4 zZhx8+ccm<7)%kJo89ha?iSfv(UjT;&Sc0C*Ftx)`%!WS6HPPhK-W)Z|$tu(qy`D{G zJ2Vwzjumx5)SsrdkFNgHYO}k(og(H>y>^Z2MXvbTz*=Z&=B{7s5%6My;jUvlEmzM! z0#YEazz4=5YSeG{b2VlZK}sRpJ!D|l?ZopEHE!EbOy~=)Z^t)GJgaZiLf`U;o}eZp z)vQ-5pbsJ6(@Y7CV+0e_C*XaqKE$pxXCo2~H1ICLce~t|oBD?U9Z+tDPcC_GMC zhUeX)fmXA?bGHrKJI@U~9P?U^??eq1LO+fse8O{WE<_)5avKSJEg36B4426Y=quU?;Cz1ea^>l3kT{F}R?II3oshk{iSRc;9 z9?ig`7U&V>;n+F7yiMHWe}N`cCj(EF{Y896CLeq<+;g^=~z2PJ9 zBt}BRUD)vD-|X1~Q!{oh5MYMJ1JdsT-uI$6@~Y>#o04%*!;>xjUKkj27C>dLDC zw1-Kpontxde1DyKHOh8lwg>d7p70D$xY`q*<_S;ogdvCJ7pDc0C-`#;Ch<-G7XNQ?$4Y={z_~a6P%RLW8NvD`V)=!|Jc=-I@ zm{_KWhRiYY6y9%eX5i9ifPB?Iv{bouu;xt`w0Zh;Me*!P?~Z z>ow+?l|TL1%tH~bb`l<&xebZ?_Snn?C}G>0#|E&JeUuG?o`fD;8hdUA+5xu#t-+eE z41!%u^ql*#4QTIFbG;hgx))fs7{OFR`m3gsw8>Qp15LJPi4)k{eEN9+)JG;%X z5_@9jn{$xnsndBIW3GL*^UnRK7OO82YPN&*l+8G6+iT3q*DJ<%HXE@kc(5~o(ktg-WdYe_&Bb|NY)(?O1R9^;1A~oV}A9(M3%Oh&ZL?X;G3?Q_= z;YXqYcl0H2e_>-B6L`Px5x-3CiGo)Yq8^kJ3xe+W?zaQ)3Oa%5%M1Khzr_I>!z`1k3&C%hm-~k< z#6Vu?PLWUF$?o9``^I5N&G4skJ)}j>xP4wEEYThi*6!AA=oXw4?F>;6!ItS|($zpf zu*zkd7p-UhZTB8o3lv-?t}tQk5|TUoVaUVlZuPmt^2eEi<};^iG{16@9=XEI#8|yq zY`Is0BG=+xxjdEs!Xys;{VxrN@xw#SEccMLM8f(Sf2*8a)S_&1$(HB8A(| zg^>+~Jl3%chGTUrZk^}8X*w%fgTnkV%nEFnl}Z?VFbd!D5P!G7YvDW(=6n_*V)^6! z^<1z5oN6RdB_p1Q)Yy0+@K|Fke#Wh)t`dWP|A~x@6ql5HF|Y$&<-{a@L|wX@e;*9)C`ay_+{5KQ zIgybwh8n3ky7>D6AW&!7auj3MqYpqZyn4PK{WU0UmD8iILO92F`4v=^={VF@LSn?K zb0ojzp2n2W)|MEuBU4?C`Qz#MXs4P4{bU#CQ-H~a_!Czs2iG+jjhQw_V}cfq%nQ)1 zn^&ObSTw)Q5VE z)F20c&Vo1HL3a-bXg97n?DijU!BRk@Nx0`P8B9)tQP?$E*-+aK$yLrjKuEAvN6wiv zn5yypwV<{I#-WR0M@j1Rydj8AToh7Yr-8=SnQ3jE$0CL2 z-=RU#<1^GzR<5}p+yk-vojA1E9V*Y-d+C>?Dp%xDeg3_algy#(-Sh9`^jtL$G$yTA zVPuL1J^h>bf=^1ppTF{+e@`gOaVup%xQ7;{Sfhib>@jzH&%Y;>RkrMq3YPV~bg{=Q zka+&RFO*|vBJ&wHQS2GfU2o`A2E$s4DMT;Ecd;ACNkLINpnu+GE+FK7%4Jk&1R zbNDXMm}jG7=i$%Ad3Zh@y*lpvJ5~Ya{5y48HDD}PCCNR#PQk8>JC{SC5!w7DYT&O5 z?qfzhf}1SgLz2%}7*QX=mV6*232JQ|&2J#ClE1=`!#YrQy(w$Yzh4AC37<8N7F2uw zee}(Y=^ayMPj>#DpjvZIzCPTJ8RiP`>}htXh8Qy;&DRx<+Y&nXRLhmu1F0}7mCK}uZxb!RJB{|muASm017l`b}n ztrl@UZ-ak0B zj9I2q`)%6c%PsP`dIWoht-#w#sSA>$={kK#2`pqXVIgaSY(c)pQpdNV9=aIO9JSbpq&wI@8y6Q1M=ulIzN zC%noNPI3FYx8>@-D;5<{EHF=|p69A-XL-~$-U)X1P~6!zNnNmW7inxMU%Iz;?x*E@%Dy%`Oh%+oQlc3IL_OF|j9)Xsjo*BIN? zKX>gC2W}2|k)T!hM4{LM3DNAxZ}2BgpRkBN+6Oav8rrAy)1PrCN{i%KBEfX^=x$xN zh%h#L7wX1T6O>aRci==O62mP;rPRK`2^M|h(hVuZvCdgp{|)@iqb!)|ShH&M`!3l8 zAH0BhlKWyD^|CH6pa6X7F7U|u__NcdI{ZwHDrtx?Pcu$og1ZEnxAYZV($>a2y0&;j z{tS~(T1TtQpDbTzlTR8)KITuBuLbjYpm!d^I~mHq17qnHm=-YdF6ajYRRm_jG%eNz z+=Z^5$9EJW>--+iI^My@aF%WN|6>tYqfsl8c(5Ru2z3*ak38qID}dY0yC*JY3Nzh$d9ZS)N%7ZRe|JyLUk0u?A_i_+|bL78Inf%K|=*@=%GH)Px zzn31zGBmMI!J)i!GKVX-Q6K@*K@E@h8;7oB+9H{fFOkl^gzB(94h>zW^WU|uV~4YL zIH);`x{laRqv=%tQyU^5Jf|3euG0m>&^R0%h2@Q{FHzO`aUd}eQ{2Vj;I4Jz{pWnP z1f2zXL}9QsVbG@$$$#D$EoiPZS!B*OS#JDT8oje9e%D~Vhha((F38Tu=Jk!J&uh34 zDRdbU=?GTa)f;kxC#eWgZ1E36LLqJku##XN8`5i6V?V;(H8D3ZeIZ0KGPxdLVmeys zZfSo=FLrB_G3ZoBU!_;1Ry%RKlb{t{EE~r&Yw1`85f$Vcm-*|6o#b91lM-B_;31cS z{ivb9WLYW#XBR@0hA&z#Tl|H9jCi08lH2^kI_x@rl#W>pBwi|*#}*<3uv?GaVX{lF z_SG!7$`*u)BMWVu)GLNhFwh1xOnPz6zMPl~R}VzxIr(Y+if&)BnX_61qfHh?4<>b3 znN^wr9XXPP;202$J}h6=dxMG1z}+{1?Qlb-2LjdXRLymQXfpAsJ&3Wu?>8~;I<>94 z{!Ri2w`>;{wwiCuJw+h{f7(4|=1HtYyQlDr6ulpbe|ScoKv+f#@}A5Kq#E5=jL|HE zNyRjfXwwE6Ou&SR!{x3U=udC7cRN_s!Yed)Np4`ng*}10Rvp7$m=TVAE*BaX&@DU} zjqijzk@mBWLs^vJH^ECn-EB_L-z_f`MAkT)cFU@2gLCNDqVR!~K@@jpUd?$laL6c% z4RiS8!dwyt)3WWAp!m%%2(eh$;O?2@+g?C2>a~qOl*g};WpZz;YC>mfTLD>HD%iYM zcZpzu6;EM#4~DcqY42y)U+quoQnx)4_syTQ(X+9(gu2!^O4%qPg(holiZ;F>6es3B z8Dlr4?;EYzWKpkPrujg6@9AZty{WbM4ry8v8_X{> zCHkywdDnBqSaM~qJG@??oLw8#*d%iK(*~;(k;==orXt15F~+WYFizW|Y&+z_1cC?~ zVP0O0lc)M^-i7^VgfMu^yFw4+AbxEz-?W1S$?;Y6p%g1yY&v+(3ebAzwy7p2!Ldt#*r)#zFB0cXV>*i~MrP#5Q z7*oaD8Ar2!#_5sBu)0xEWRtk_j^Le-n5l@~L{#<>+#GiaI?AF}_KQv9xRyvYHjS*0 zIQ1RZfhnO@jNrPFOTTw*8u#NQjlILBwv($sfa+t~9au;_!*0Q%Z&_YC*$K1Nvw6nB zK(;7xKSSUFq(mBG)}fb_xnyeXW$x8e=fQbVuA?fJz)7GzFbhEb27@c}J}?!a(~ zd_&+G9SCKNV*tM(tm#Sa#VL$lno$a4BGiQNN6_`nS-TJLmWph+`on#ptmuVFXn}rV z<-MW8^UCQ!J_qRJTr;{vYuxk}2m#s*9w4_rjXzZr*7A-&^ei%HoFc)HY0t=-&W>^zARKe;jy@@Uit{M9a>ApM*)4sKmqFrU4>XljEacNxdr(_H!X377t|ivcu}MuR?WE| zU8-5k_Cd~O%syN9!wckyBQ&+yrhBXN$aT71p_Q35vQ0)7PLy;93rz0WG9^^a2v9M8 zy^D(bnY0&F%)&P>3S@38!`;%co5b272Dw_3ZKgOmrot-ae6UL$XAf5akmcowSd!;g z4uv@~f5ApW%-Q(HA4OyhN|CY2Q{a>zI_r^0%L#w{RE@vRrP$x15}Aek?ca2^<3UDb zuR?Zo(p_x40VNFmC+Ft;*K-b}Dp80Zc_M}6G2tCLDCu=a|gA$(M30Hf<(>&oxp7454Sb4%Vp71IYcCH;k zGXRd2u2VOCylc-qqQ+Txv9TiGiwoWCNXW0e1e+203y!AnycSQ~V1xvboo_j`Jc1bX zz1=ZklE{4(DRL?OYy_-|%1J_$0Cd#O@Xq-c#NAWp4^N(>M{7FTfR$)CD)5IcJs$vN z*TAli0Ej!fRIe*0x7JhfJb=%O%t140fu_teguI?@0T>TQysPnSo2Rpol+B(fd+q+v zZ!}It11(GgS#b@-Up=)_-e2-G02|`3ZxSQMi#*3Sr-POqwmr<$v>`?V^XQxn4}ew2 zc{|{NeiNtYXkZfZQ5l|*kdJDCET9f(!FwVWH-RSRdh_rmM4&_ztIJS1tXsv7{|S;zJTd}7_y?;aGBnW?iC}hg2E2?g znj~TP!?5U-1=?lz!S3lR7^ikq%ca~ukobq2TC6^9Q)?tj%wzpzTT+4)VIO0=9fsJ( z_l=8L?_C<)@(}l4l+(cLEs)n8=bw;j7;9reTW%n!9JYka@jGPWX98gKUF5Pqbi(_DpP8bm zeNRG34`}*zg}RahZx95H$G>!+qUrnhH0f(^oa-7vHbJ}WQ{a6CTy?MaKOkYYqO8jV zgvGUJ;C%&c&zoyh7fZZECa^@W&wVf1C9^kvk1y6l7f3<$8W2jo)0fr_qZfI48GB!$ z`x6Aij;VNaUlHKNV7R3n1s?7cCd8zG8nK)m%{1gD9Q>Y!V3pAJKJgzsj20aQXwh$`}5c%~B43W=GCz0)WADKD? z=cLcb`2Z}(x3jIZgU~_=iM!N?hw@wMYNmviF@lbB4p9xztiCVp@JDsBRG2Up<~)LL z9t7|%qfRdX!2VdVsG4^n-WFo%p}u427lf#Qq_gv)RkCQ%;tt^~H*EEmKS^InBM5|L zln(s){@*oh2tUD=4oW!1?XuU^X&+QXpp8;9yQiy}zay4FU%eB-9N>v^wC3E~9aJb? z0V*^(ldR+W=7f07eiAOELRHl48}HZb{{qdvey-d+G=4D1fi0}XZ-X|&5i#^U2{V1n zOdyl}F|T78Sy?U~hdV)|UhUr`H&F=j=R6LfK#4J$RW-fRttvaFG@Qk$%$!Uuzml`8_jN%ri<9pN-+C6uk71>QwMM}jPx^8b zb}qYD_ve|n0BY|C0Q6%BS>f#*iWIs7e*%FB=*}i|6;115lSj*ziomoBI01BNU#+&S zg#8MdY#P`bU~s?`#Rkj@4j4012&KgX!(Ne;PRL?wsu-Gj>b-S-3feryHc)Bqdfs4=QJjH$3S%-lnKr82D{;b~f1bvA;sNa94`(KVSFxz0F zP|(Q$ehl03!|*(vYavWZMQcD#_fLg{J8ln#vNosL!RmN-naHa@`;*V{D(x-mQoIE_HoxfQ?SYX@gaH+yb7dtz;hf z?IVDPqeWYPqJF>0^qF|zFL5KHcs9!h2K6_HBYtX3UiDNnK;ucU;~;x8v8^Xt}H%T;W?)QXXF3@BoGer$jU_kDyk45%y;l5|7Q{50Vrn*f zUP7iDnd!9$wQ}$_lmp!Fn2XzEgRoFt#BV1u0%E6=!28!Bf5hbbKr3)R)v7ZS)T*fO z#-lvLEwuxum?uT8G9@mK5mD6Ku5)3QoxoX)CJwA%!>dk1ig81E7wPbuJO=;Y1s6x{ zmr~Z;f9DcJjK_(-q`Mjk#?s}v_^5?f>QV}Dq>J%!&)dw8S&s=hxo;fFHF3AsAw7Du zWvg<#VHQ0=>(Lrq`_+;w7qS9fBV`E%fsqLaLFDvEx1ya5ivY*DLA2vaqt@u@1T}>3 z2i%soCpHz>>f%IGtd8d1I=;%sAQ2-MGEyGLA7Wt=A%=fMF-(Lz{CdV;j~-bQ;a79y`-q+mwOfE1gi7pY#7y~^ z{DO(dY!n1qSQ&o_ubTCO(L-C-Y4jLFGpKBa^@0P*FtLF|NkaOZ+(Zh zj96KHIVd|@stX=r@{qM-Ep#(23%W+0Hsu*p)pKfM+ha+u+f55jGa}u{GN7ewQfGd z4~^8;+-kGy3en4`f;N!n+&sjIvHk*nug-eXK=INcF8@A48c^c zA`HD3LFg8Segp4Nv;|>G$NtM#&gjWxCU?GnGrzJ?37nZOLe+md|LE}pc}mS6E?neb znwry8k4`j1BSgmLSN>?eIe{P0+hg&UI8ykgnwp4+U=&~?e`;4poy#KKidFTs`9LbL z3A^G}Z{Y)63J8hZ2c6o!00gbbJ%rw09>g(w9q_%V)ZoqW7IMPrT7*opLYy@%xQrLi{LWFcY& zaesex?``o`UU40aBWha=5j$#aD?g%#e2pV5+7QE+CSa}Q;E6?c3cDpO1SZ_@TsJNQ z&cV2sJa6sIJrRA$bE5^iks41|mPjMX(X!ZllYXJf686u-ihAR5hUDrab_62HWgTAj zJlxt5;`9m9L05`>99&;cbU~dkZ|L!C-SJ538TnE;D8J&I4BYv=Mb2$X3$fdXd91F6 zje74PKAMC#qz0p_;aPexN=7gI3EL){$s+j9eEf-*&{gPO?K^>Qluq+`=tHD(xmNUP zob*wbG>nZhtCbZlK*iV>%EkB7%y%|oDcwZAdvM~p8-G23vf`I?B@y&_*>`XuM-jID z2vOIj>6T?Zvf@7lZ-PvVc2q~5?!LLYS&4>?-94;522}(7J~Z(eD5^-*%sfm(fkl| zL<7C$Kot#@m%h47U-kSv>P2Vx7%6h(hH#QW-A*SQj07)gKVK>}4505e;9A@ub{llL zd`b@5Ed<-c3KsM2-=`j&B{ZPd_j!w0z2QOZh!+zal%vIqKbO-1mgk;wUIo2WjqIrT z)WEBjwF94e8WjYtUdUSPUVPoyW<7}a6INHXk=9iDWhMqpDQf_edl&*1JVGC&qNkR= zM2n)W8!3D8K+`D_Exp@$W9Ftkz=E!Q&+ycpzyt%5!S;3gW zNZD*K@(8K1^aR#?&_z@EEc7$Y?sM6Y;4p z+p8$9r&@4D0MRQ@q7SQ3yBgFcelB!7nShhw(+HB$yFBO>=CL~1h~JqhxntNc`6lz? zT{s#f(*}8i9p;Y-=}aJ4{He@64FuQBVQ0>byV*h@42M^hV!pd<+YdOj&2#cePuvSw ziqdu@SqbiiK~t2ZuoRWHsr&x4^JB=UHr%6bMDd_oQ`g#fJu=0d!-0(iwXiy(#&k<+1v***Cr$)B~ z+Iv0=wBLFiLR}e}h7h&?^rFbOrdX)ITa0EL8J|uC<~W>ngvWRX80aO0+dZ7)5DC(S z3(eu~!C(}(e;6B1(523Q8>JwD{s&ZhyQho()zJBzHx8#AL=G(5xeGSuJ*z06x?p1C zWWo{Y5AT?-b7B_bB`lF8>UNAVE%?fC7|fU6h{G%^nEksyJoh~a$fv;qR>CB1Yu5Py zB*m8L4)lf7VjYqgED{^_mEvX*jBHTrX3?@kJ{nAL$PNDT4?ELLG*kN}wLQV`nO3>T zo|9vIcCO_!HeiRfa~PP5mfy{5fl$Uc2JmCHE;f*61EX}{ubel% z()iz?1Hc|^fn37?e#GH&9hC4q6Gk!x*_S{NM#GJDlUvv8HI>0~0Y0;$*`{!Q0E-(|kDna#eJ=HdF6;orfs&Q3T$*|I&*PEjMF;ZLj2(~zl_`W!{# zA1;UpRh;^Km8UIHpT*qg)t{*>w^`_K<~x}#w8ov>-$ol&)CqK`x826@T!jYIh?ZRK z=!h5cxK&JNW35ew(=VR_26BA;OwTPY<)p07k5qF~b_wq8MZV*h5}Nma*!vbZD~C7! zt@d;yXHm%|mNp`3!&2624_lpOV@t@r8=@qM-%2Q*rPHxQAtbp(uD_(qTAPwmA|+Cy ztV+Fa7p+T*F8lv}pP6~jd)~8MZT|oNuRR~ydFT4fbDL*oo|)kXNO%>bTOW;HQI{uW z6(HX8?~kJm0!N7XlasQ?-3fQ?g)k9ZgC#Q=<-l;NF5nE7kcMQ|KxsZGG{nA3zrT$$ z=!u;X@!h!tjHC6rop?Af4iWw0MX2aa@6xmPCy{$D3)#z_X2g}U1=bu!5L|ujnJ{qz z#czuHFV~ky7^5`oaY%&Ve7hY@6r`Pkb?HFy=W==^NE-@w5jPqewdw48q^`>@=ekb~ zU4J)KMK3~GP;WN2M^MvbtQ-c4pNTdq?zFGJ8m)^g5U0NFdQzDjGg8N|f_U*>UH-aj z4~&ht2~8%FyaMd{0RBO5w{9bF%LKRt)eGX6NU=u_W0tgf z&6SR7LLp7vq~`q=KFo^v1SoC2&5?(z;xfKKo&L}$Na{zxae}qsSVc6-j46{tIqqI8 zJ0(_A;FYaXftU=>p;B`r3*r15Yr(CuQs4`D4^rAkdZ%D59rrSJ#TWN0vau;DtLb>5 zvW@!El?IMLL1yk8GT50`P>{H;H2P|9u$9>@KxIil)y3>sNM0=tPEIcmScJ7~0mG zWLaR<=Ew3bh)!VW!d?jdISQeL?}!S%=0vJsoJ4%jR_Yf@PsTxtv#h}1*_v{kc5fqP zwT3JBCSptJ_&tnB;ISccGbF?edCX(3{N;# zm@5O!#hK0(Yu&sRdjRr9E;z~QQ~eM;c11otmvPR~_HTbz(3=+gp`ZD_T_o*=<2CdC zvBuqi>ZdT<_On@2+N5L!$QPb`LISSyr?!=RkLrA{dh(Ggq`vuClCL-NadtM)lTXGv z)^}_><}07cUrCcXW(e?lU&h4-)+wG!oyL!VVq~S#ibryOMuUc#iMq~&7_~Ale@b#b zLoOpZ4y=<9xo?s)3xJr$3fVx69uFI96 zYh5KeQrw8n+lR%94iowFvVAH5bkGkhkj~}hn|}xMMMaFLmV6!&`&jaoKRX_QG>A^C zU&|A*-%A}4v+tLDwUEyr`hg!{p!8>qhz%J?oGMVfB6fdYfQfD_)ZjtH@>kvkQ+w)B z@JKFJ1ExPT07EH8-q+D)gzni%bQI!UflnbO41XctqX^I(W<|8!_}5*rea*cTEZ_Oa zM*^2hx}HJ=ihpp7dB>8U#}Q}TlNeBvJ0kQvL%(zo>8!ysMzTM2#VUxWn;F%?r2M~e z3=)&4K=IQ(;PQt@c@peCOHs=etmPGKZgT_+@}ue)Rw*-5nn*OKFFv z``*|@%=7WyJ0v70s_$w}HP&yxn!cV>K8(I z-beZYN2{7Y>ag;nxCuq`PL;fuZ!?pkC5I^@Q`wt~pWpx6xkd5L`!NRH^{0Y?0%Y>k zK_0UT2_7if$a&F)m=;Y!)y{QEWAUM`OX?{6g-KCjip$5SD#t>0jp)1@nbn*KcYmA- z&jC}vqcsR5eNQ-`afUMsE2EqU(Z5D!L8y%r9kVaavuB*`s4*JrK&PsOAJ6P)WD2K1 zW=iCq3e`&DpdR%syt?*ITtn@3Abbb7Ai)%PvDXZQ*eRoi!PU$oO2ea)Z$>`1kQrrV zu4-(sRn;Sdkf-d~x{Xn&nEObXYBR~D%B-=q=%R}CS}3354NCbK1tFIg`0hchzPzCS zeW)kh_b6jRx9}r8N2;_wfOttYq*vKrLbuR5{MENZ{<ezvB()W62rXm->V25wP%mQEFec>Z2UKJO07zj%ZICD7 z(ekzAI-!|T_HL!dRlb&B=vz>2^bUxt`Gx7a+~NN$i((qlS0U%lTj@IjI{=i>%3k2m=9TSE!k=Zhxx9RmntkRe?- z$Yj(+j9kQ2W-I+ONcF1;&=9pl{GnTGV9CgwAfnRE|NI#C`q2~?K<750JQxC@$r6%| zFYYF3pED*jmmiQo7O=KHuKM0KvkG-isG20E4X#U-i;2zBAC#)2m>P9kr47gZv~l&7 zSvXl|A;C?Sg(}N2^lt_iKB==%!c3O4B}@4SX_^kVB$!WCCxJRz^-_oK(87Ev%U**pxR^Am3XH^KG5+qO z^#L{>H$!|fG3^fxxq{|LoAS1eO3=w_adnPkD}DE{jjf?kaI zntJ-;@ES^r)CfIWSmRuo5k|{QlQJ)1;;oiLmushDH>gaBZg!scaHRoTg)9D_egF=ZnNIWM6#nZqhJEN$pqR7l28bWz$bYoBWWa9$H66E z5B4Qw+TK+a(-NuPIl~%3u4Y6xGk6&KUgkr(;l_C5p(}Ejl~J=AI!{(d$~P?Q>6SUh z$Q4rj2iIapg~fWm3I}_{;=a}et7CPE4EFWHh}DC=buEX{dM`32^gTbqOQcHci(wq> zQ4L9TUqC6$L@exQM=s<;9EmKF|Mu&Q=*X*}G1!k*$uigziOA~M+{T=Xxyo2EgKMy_ z*HFO*m{zSKlwymwM7@ali!q_5{J@@gQvm1;_D{TtNUh4eE5x6mfP3af$oMmZ{Qy)O z9qfDa%MA9L!IhM}OgDx(iy;2()3?ec<9PBYv=tWy?q<^AmdsCHLDT8Jv!#2Sbo{;2 z>FDvD*wJQ5($T~Dfl0@O;pn8}%6Hh8^5^xNSh1TMp?Nw>M~!M?>LAA82O%Deh6M?B zw=GUjN*XaO?HxEfb3JDE;`kwP^PR*BMo@L91FoC~27ZJ0GC;qAb-Gv{FPEai*g^b$ z)x?=edf4r%+i>f=(Rpkm?PLwc1v-lxkqMH;*Zn6>K$QTn*@+wZpsd$myJ=vG*(DH5@o^)^}snt?Kwj!$(TvqBN_x_ zW-gn>ZS6*TS#MM$<3$HcstN0l9Xr5D(X}3@J09Kg$diO5dUqvT;ZOFXHsY~oRzi$= zl~-pJ1ZI2JQrIWTn2kSc$=C6tPZM1ip>yt$zF>&jEOXQ2Vg1B4GkP0c>;}li9^QOS zQHR+J!?^7)QQTwz)WiAQA4OthI4_mQvl}mGRA?1HFr51zc82p#jEd}PIG>GFV!&XJ zJL&m9C$j^NkvUAY1|u_9LSkf=a+xQ+&dsV>z2-BBI2@6$jLeRRq>w7rq#Xi#bwE&PCe=ZTS=6t1KRjqt1LbG!aEm7|*cnKOXfA!eTxfJY64-pK422yO6T8Yo2NppfV87-D~SFNrv7@VGG5u~-RfE~*n} z>IMn40iq9!^!!`NVtE|B>OmJqcf--^A0XUsD=px{tuboXB7Ik)`T@(PH?FljRtjWE zzVRnNIK#$$D&KdE3H9LzWZ)2pD91;R-z&I=xJw~ejuJ9AbxVRj|J#N{a@s3U6lBT| z7bsqEi+nZIi!6h5mQgwj#no`$WxXWJ{Zuz#%DZ)z5?7Y@Z`(BrjzJ6YhaZ~{R_e#y z(7IczL~TB!sA75qUCd_P9PU3HLqg<3%*Ye0+a6Grx4Sx1J+6R?_;T? zbXC3M5N)O&g*{2ndMy|gdW#>hW4fa++UMsuM(x6i*@-ka5e+gd zmZA}>!|yH=)niQb6qH8K5D{hkc@4dR(uL?0nxK`JFJJPhZGB1)F(mmkJ z<_pAt8pMM4IK@W`0001F8h`D>Yv>tPrxhoLX(x-d&GX3p=K`6oe0rSBmyC$7R22%3 zTNN4wR|$sb`=OHWjjD>eN>xn!I#yL&xR$CS?ZX6R=Y0LCB9LJd&XBu^AtOBDG7Fz3NYa)4uGHO57}!(-o9mnT+;WI1Jss#1*myDRliowQb4)s*YGh)x|%g& zbSYb?8aCQTJAsxKP!D9K$by%nyO$xBs|vX3L_K7kl>A(X4hi0r$I1`3-x? zV!|SxOGnMbx>t>_mbA1J{!-{>8-_U6uutOo;Zj`}p))qR^=rR)!~4!xknr5_aWLC=>4#7kDS996}pKZFwke-?HK5VXxY^0U1lu) zR2=bXWF+{rAUpoUlh+>nak&@TT z;OH#!sytgw`;2J1%*!Y{V|olPk&~-H1fCv?I0N!ZOsfyfjYN@F58Ix@vgwVF)W~BN{?x30{ujcnH5dBxKiDAoRxu{@Ha{@y zuXmTjtPL5Zby)mH*0qGdC9bmab>BMSkV0?~HU8Y`@e=%_ysw+qY^&msaXO2e&n}WI zbH86hIylDUWrLnCbov_Lk; z5)k52sU3^heYOOycePlE*4zd_47=%-OKvfUj&k3wbm{tX`0UxAmGY9@u0D8`mj!&e z`Ozpj!;hcWPzGvw{CGl58n<<>oEyuJYOJl}N39NjO#K`NB&mdr! z6*;@$Q)-H01LHWAvAb~&>8UCb&U_}2X#znL$Tfj35{NOk?PGA+D=Q6>;`kkuM|tk z5T=q3a^PUs1*COR&hCr*8_e^A=XF<;!(?U_Pxo4#|JBQF?c?7d==cxoM%IpQ%GWn& z7q)hHbp)JJ0@E51FMnT3ygcPZ5HD*G7sX3w!Ao;yo{t1;JSw&Cx|+=_v7VO}l=q=} z5_bb|=btiD=E^TGbT0BsZ7;(i5XX!B9^s;s3yB9G`|pdMzIoA3bz^h0uKGHiHCe)w z!e&%WU^1or`!Zl(x5UBwXx!h!-I3%N6oWdv51gd9iiGXd$tf_#6mX?;2A5|yM;Sc}jF3 z-vy%gWf0PQeKGhN?0(9JJ`M;JCSh-Fi`oDEvXTnGOZnzh#Ze)ssPNJU7Q61T?Qb+C^)9lye=kU)frL&@?Q|rZ#+d6Z0KY2OgOPr#X zWMqyC$BvPo$y8|aWJDLFRmX-RhbY{ObI8@$MT+>oL4vMqx~DRS*p-tf+F=~#D|BqL zx6Y{)i~}SXA9{E>;#)s4Rxs}SR0Lx*qYKhDVgXnS#&1`MV0?%KEf^noDytL>5rzY1 zZrDH0a<47Sckc7Dr*Lu&_m9Uecioe7J08`s1|r6OmZ5$OZDVNEm1?7$%W&Mw%Ae4K zI!z5_%h-4s_)2WPQntu^=SaTt z_mf*mLupM=2lgWg53A?TI^9#B({7_~(J5y6J2rf6W_(vV)J1(O7VP!b%J1}v2hK|b zWqJ$mf-m-NYo)VvNEQ01>Sb8qd0(4srenlm2|8#T+s3jPG$;7->=f5!Z9ods_`|L` zk7nKat}mf~9R&LR7kexD-Ek2~AOimpwYJ4WxHxKEg$3v8f}EQNRSk|=n#~QlpRv{+ z!v-i+!i@L@;WHjY{hwnQz|83}0B=L<+~_CnS-(I35oA!ug|YhyAUnY2`p}u`#4!0w zdC43e1Z3b-`scDZxz;)Z zI#7I<`W&q)Rh7q{)?X|Z2O4tMYv^Iuk!Spn`cWIwZ4xtUS{eF;`@_2j&th541yH>M z?jn#?UndCjAi-is2;h#-6axudM6yX(trLX5k-!X6;&UY6d|oEr`w0dM>YV)}x?hk{ zk9R2{n_(ww)G{d-Q)utvO;n4qpES_Odo`R{=Tk!KQ|@SQw& zIC+|(bGWrYAaagdH62?oRJx;$(395RMth@3EZKNe343BdwPiivk4$CQ`Ormh^Kf~hFp z#aeX<8U{mj$!;~rpI=3$z>lgkFkq+791RGqm5vc05S~F5y#YRytb{H!fk+LlLGX4a z6hIFAiOH;1x&WG17i@u5WH*%7pcfP?3D?7`gLM|S20)Rt*^4lSl!ArGfdfVo`5i?J zCus)Iwa?dC@=j8F&r((7D4;sLIg=faiVSMXKjTSGrvaY5WhVyC=0LW6;&ydw!Tqzsj2X4c`iF@%6u|~Pz(r2)2Az5FD#&pK5nOwb9;APGrG$O3ywJxt|KKvO{pQ@ikIH^M%)45s*y zW4HdHZO>;=i-;UnuI|szmwZa=$tctc$l(ZK_tI<~6`G;vcSQ|D)?vUs%AemHA7l%w z21_7d<6VKuW#Bz*w1Cu^pxvlToh6Gmpt2bWUDPD2(?IG77=&S%dtR zF%8~*R?T9i7Yj*Qm!1hdavTH#5erejn`P~OcvG3%i#JG>DuexwROvfr9F$5yz0c?Y zRgl&j-r8yc*kXn?9m1r+y*3K&I4W912hj?D45vEbgTW1A4-_UsNE`m_W2aUwZU7$# zY?6$+DNgOhAo10Cx%@TxrzTfY;a{M_Wr_-qj4huE{z*H_tYsHM!L8~G1-Fo)rP=cC zc#W&v9snQ74)0MgitW$Oa3>Us+dyL`OhiJUc#0E2KY}rcgMZNkJgs2$W9=_7)RUoX zw1}j~?m)yGZX)P-L;y&f5d=DGGPHuBotX%I z%&YC=ckO3HX}aZf2UemF6DsEf(*C4PR@m>79qdYT64owGp(Yp}3 z7c!Jh$cc(Q0r#OA12ItCLFB6jRpT?KI?gqZVCQ3(55X%p19>ulvN-L(2^5b|j-h?B*8=u7k7SnzQ zQ80Ls&@+(6zr*p@{^}Iy#<$ba;@3yG3B5JyHux^Ga3zJ-6{xIcp(rmi1GH6Xq5}y_ zfgJvbd^0;nkXGaJ9A{t~1S;5l-lC#&ZX-Sl@hWuU4 z|M(HGS9qLg=pgPx4EeiCu)uc}H=GLU{L&aho4?ImQ0&>KIPp#U4I2^8jCVe%8u5LK zBuz=nGdfmMlFEiZB7cwL;C@kZ?dudNEOdR;&bwz~&*4dJ7ZDChvwa`MX$xhGHjqi(REpvllN%sT zwsn%7ZJm%r;5~-8W4fD05=bL z<4yE%w|aafN?>&uydXD`XLOTUg}zO}sy`9kMEwFWWP~)cy1uQ>=kmkdUvoSApj-l> zxyQ3b|0L5~NcXrT z?OR~^6X!uq=Yw*z+k+7Z^iY1Ui7rwNr7i#Ri$Lq`X8^5{@)x9P%Y?ZqC(JkFF>Ndk zc226q_MU77jqSD`Y@a=5Ck|mPvL_JN5#RO0FtaV*F7u}+!*-*3W&F2NbGn4-UNZqm~@9!yAL)5PhSWrdjy&A9toEftJ=iol%{2Zvuq_jC(&|j6o5@y^%BE3TTd!?SFt3LZCHKNv>ONAxm}oS$MX9uRNmw8qR4@IUkj`!)kt zcLgOR_W*ZY35=vSyMZyGPW*sx&+ul>Ee5lHQr#0H&0`yMVZ8u~Y5d6*EWPoT5r>`5 zjA5WJ1NK`l%283f4U;jieOTXN&=REdht5_HIZr@rxO#SYv)y4VvZedxAi|&j+B2%k zE>ctXwvyCIApT_uAzom81c-@7avJ|S7F+JO3jR_O+5><03sstAMn9N`KXog}_!0!m z7PB@noM``*E{>K^NrD$9o%@Y9$>FV27R4rs15tie#9AlAvxr>O8#3qEZ5}X(uu*_V zF!^)FhqU*4J7)Y!lRab#vCW7mGIIB*V`9P%L-5B$qS?p5YSTL2gl1@L;1+y~49p z7V$ms5cDG?c_?VYjike#hE4We3PzUV!R{sPwT_`+e@`0>6ZP>dg0VyW&8+$7ptlf{ z=+CbuPE5Yv2UGR7v_3>_F|y&~>3Jn+gJWhTkLqX9Rox}4YoQF2N8;`e0+t>_|wy`-QZNrpe z+br8@D*AOf+eId}%cXF($i|UxEP{dJ-dAw*y9G#NEx9c*dQ=O*GXsC@2+Nr;>oQ?B zX2Jx(gb5UX_HWf;r)4Jd6I%9kbi{e>(I5J;lu9Bx~REXQ1|PgT%p~S zPTvQE6Rea86yBBP*phOE*$-h^m8uO_C(a6n0`D5b2H|AFRE>PjHMWv82ZcHB#`?Zv z`hqqNrc0^J4+MDy*T=N+PuXa{gU$6!2KbnHHr~q$@OCp_DG_rP)Cc0Tb91oG@DxByQs&HQ>N?5vST zf(xc&vxUp^Z-rzawEDVMclly++P8=aW4Ycp9|1!q``(8thb*AJLZ=~`lyjm>VEQ7O z`|gO!Fqgm%8A5^bozCcjwEM?9)5nL7km=(kNYItd_EcsT(vV#4;CIjsdKED3r_OTL zyzUqb73+BRj*_D#jbJ_6ZMTDHF0>z%%4}B>vj-*T#;|7Wp&lb|%YzENb1`^ecMZ1w z9IHDN95q%c2Nt-@auG~S&y6wPW}SLe`pt_Q7S@4w(&Y_U$jWH?QOk8ff~juJ-J`o#6GTvdp`b~O#0+X+K$ZU2t#Q!p_Kqt?>4vwDx>1~ za8=GE=dvfBoB20mVW01VG0ko?9f$)MR9>1B8s<7i=qwC<^krX)tok@LE|y`%6Of-0 zhgm9(5>8QP$ltu4)}v3uCP8J+4B&r236=r_{E>HhGGKo@FjoJt$HWtV3=_TlX{>$# zuUQ1SAU~M~1&(W#S=|l+t4}Wm3C#KJogd-ug7le4Ys<7J`XF>ZL&u(s(3uSFNF&J> zSdID7@kB%)%h1aRvE74r7}|HG=Z|hgjv-O1-Ul;oel1|LDJ(lPxm8E2%Ec=rXDeu2 zIky!gM46t9SV->2PYXc9=u~RCn%n+y6Lc{!I24)eNA8Ukr-O1h-vbA0Os>QU3IwT2 z`jKmM@_;%hgt|4rxDT{|La5EqMBM*tB_PBRgL6Rp2gC%iX1BgNl6_xs%&9!5L>48x z#%Xv)?na?+kDgO{h*bFW9x`y;#n@}b_2gJutRrzj36@OThkvnd^?@wmx5Y}ZSAFLm z)tk!ldj<=1X8~upZyimzI40rA=z@Ix6|m!7Mgde?GtxE^~p!n2W!1?S@W| zB__ySDs5<3_Nm8g^=^C`N+Qxf1qNnuN)n1&4WXa8WPV{?4T`EV!Jf;jmLtA4T~VSS z?KSulX`7{`^+6)7KcIp@7)_2Kmp2cGy+bubDpV5!F-DLfl0F}_w-dTnvd-C{@t-ax@mz0o@@gnN- z=LglGeB%vR>$vFj;fRyHpHwbZV%;jEEfR1cROG&7uk&C-R06qc%#xV>p>E2Nk+NX; zB9t)xM%rG&_d;ZIM*oi=+FAC|53t6HCThVcK{9{#Z4)q{wIcA--f_H$X7`Zk2by75 zF2#zR{d9X}{~9R+iy)Z-z5TJtA+1emmPNb{44!l`Aa~=4tySxq@uY}56 z%Rh98AAQ4RPVyKApF_*vNLS790!+IIpLJ{5wlYke7`7K7>7#Y*J1>y52mBZP%|^OC z2K}{KBjgO=%MkOCYmoId0gX-n*W9uilHJF#9SnN0RetQ=$ojSb3)(@#9eYJf){tP!lD-~vLU=v^*5 z7#8sTaV-Eg_TThD&JFEbqjh&AWs5Iy=)Mt2im;@+cxsM`rq;a4A#?{89D*ck=MDgM zCdkK^zldb&bTcFj<=k@=UKxMlY@aKkF#QoKgt8ueg&;aOm_Gy`)M|L3yW@J=z50gBV;a( zk8%dvSO#Ac`qp|+UWGCiagzu<#A+zwbJAPUxIa4Z>8fFqAI21`lpJek8d&} zE!qO+ssd+aYc50E9~Oe7T;X+Q*?f(QCPh!~4>bhs%3Y;zhBPy+led|h zfNzpWaSe{M{9~dUdaH)FoG%S$#Wmdh05|*q8V0%R0lz%5a_yf$_O^VWy#qs!A=+w( zka?}uE>whg{&Fvd?mNJME>0(eYpoA91Flhk0=vB{?Ye&n-VTier(+B_6(Oau1ZxX$ zpdm)UEQKfB<#dFI1^FWeGe*g(*Zv_aD9a>WSxyAJ&k1SThI1Dns2E8WPqEee1 z%?Y(H!e}bA=LgVMkZt{kid&nKC|kJ>s}QaZ?>V}g)Zp3$e+0ChT`-uJe31 zPRXOgT)&$fvUK)gnEM<9qPcLPlw%dw!=A(_ksY}|DU!rXnJF#mvVA$t$qX_8qq)^eIDQ z5TZT&0YAP(2KBsSbv0t0g^73kRO!1-l-fG=kr=LGe~vF}0E;so&l04&6_Zygx&9QUAXdpepSigW;2jLQfOJ_nU zgr)2wehkl5K?xV?us!?+#exPyZnbc|M=eakAWTL+eIul)3O`(^br-zWQ}90IrFr}N z1{7S;isI?}&&9MM%o17UjatNIR9N_GzfFpSq4B=X)*aODKZOaM5nw1IG0X zYjumE!;ts{~m^h=~VXQ-(SGLkPI4TuweQR05gBp26sI~UezavTjqqf^AeJ)xyrU4vvoizJ+ zB#=&KW0K(ssER*3bPhG6a&QXhC0ozKEcWLsossUwn2~N=t1bUi4CIfa~-1{y7&D$G*Cc>i= zlD#Pa%dsFW6PLIIisuSc@|I_7U`TL+8XdS9NHvWrFnghzsQlIt*T&PZ;$`1JH_H{l!wPlgja>eW_^!!>`qd?c!UL}Z$G)S%O*RyXB@Ky{X_EHHMF60s zJ*G){KvqE|_NSeNT^6?He0V*8Fz}!!f#MqhkLKlM)1<=bTl+(~20HI90$20GwEg9u5|E*t94~3$^g--Xa7%q3Y@UTL0RX^tO>H_M8>jj zfwFH*4w`2r5KDh(4*o?JPufCBTZls5G`u%APNLapugmFbg%B2M8tIiM+}LH|#x5*6 zg(d<7=R(?57+j!<7N+wuI{)>eVRPUXF$%R&ERyjTPcmw0-w#a`EB19$us($L6Rc0K z(m>i*mYMDHcv$BkD>0d5J>5~|Pl92Z&*6LzcO@IMkwqQ#$DdG%{eVh{9|E<5e*wSIL2E(%_0(#B{mJJK-; z7mQc+=i^2+oVUCXmkeW(6h~CRX5@BqJvrMx>k0ub3&1(`$@taqQl$rHeh)nu*a0mG zHvx6Ed{-%h5z)}oJzNEfk72h^zp!(}XSc*KXL`xNUUyLX!xGXvI|ttVxZ#eYm%XMF zz-9*@Ka;)TrRumnz+9?c6&C}5EuWoBHs$pMiYZ$Yl7h5RePo3J$7wLqDh|CJx}DNn zE{8TjF$Xsl(UBp^MC}smmSsR~Dti*~eR8gFNBR6nKpp=0#{!aw=Fwscv{*#7pioqh zmU}zxR<=cYim%iaKkf!ENvNPg@zU!AXO?+G%oSO@IF%!Z8F3jltA*r`Wb|Txc?`vO zZ=|#|l_!}%o(e?g(1eHFZsNzg!ZTdqv99oNSGdF#wp`&-C#+>)Z-!4hGg~b5JJSqD z#iJ-td}LR!R7IO~vE$C@hEN*S;JeDvqxBhNI&?#H#lcKUm*oT{S(EC^sJOi$ueOdp z%yKp_Z zqek899@Ndv620?Rs@KjL5M$>|-{)EE9#yp12g>?6wFmJn%+?8?pRlWpk zOdGFLn?LkRZ75Pbmm`X4-STJ8`a=rNyb%R&(gkS(8;{?YSum1z9*@jmoB!n#vdIqLGYbLikCRYTgau)|vw0 zs4fb^1Pviq^GzrGTqc3*vDo&W8-u@7#ovS5vb>b;hSGXJIljG138+3WM_-uEx@(r{ zTB|@!f9P{m+hT@1OHq(p6=Tou{s)wQbMVxUSu7XXxw6GqE&TNrW`YH0&-I@QXIaEq z|G5lp8-Hn#jwrNdW~)%L;%#BIT!qJ}>-jAhe( z51y_lVYWqZ)i+{WAr=>7*Iek&pAM&O#9YRh&_sTKK?X0{W*ol5j6zQdxc4cH7m?;B zvp9SYrS6NQjlnSy_2$gkC&Y7GE;E@oXSy#`J4kL~ABPO;&6&+Q)y*yIX)J?!4FDA0 zoY5y;#3iN*$-;Q^>!0R0DU~w)uSI)1Q%XVyxr|y4JKlPB6=RC&(&$BLgwMm z%SLDFdL(>LJ7w;(tJ;ScAt8rA8c#?83VXQjuyNn_;F* z`F1@n^Qb&7fIVc`AI1ahy+Nw_0%Ow!lfZiJ*%XRdVt2Dl8OAa4{vCn zzp;N0hlhlu;`Icn?SG>i?P|9)ueMrYOHApX;zqPR?IpdHc4>D^b6P+-+K1s%B5qv$ zHV7)6}LNEOOaySZP!03Io7f`79bPs12uXp>EFe{mVS#)mZbTw>yKun{*Q2aE8Fwc>0>wX@>QNR3ihUc(NHwcWf_;^V z`pJpPV$Dri%S@cXk^J8|iKm$SOPr{>CTg)0RRvMdL&wXIfcqKWIVPSluT-3TjBqmE z90HZBe4URZGYotz^6hc7$Y(C&`6h%XBUeY{Zav>LA0Mtg-|of|?gA_IGtx<&=N6V$ zEJ;4bKvdo+ zj^*j-NOTBVisfs{t)yp%G3bmz*&)ShBFB72jrG3>D>zdd>x;GII36$78iyFUSZg!_ z)EUh0hRu|>^Y9D}Y>q^DC|Z}D@1=hKb4+13aO)=vvlWnyu=bN+7u6w4&#}hL0W)Gz zP%-0+Ovjp8g8dxQrAVGr{ z`eK;VUIr+o@eWSo5211ER7WS6M(ov2I`)re8B zC=={vth6pGy?ryWaU@fkA_YZ>jXFq|i`qKk7@SmhxXEGvdI+(x#9BNX#oL;6zmxtI z(swn|rfU{9tOdqAzL7AdTBL(7t3ULI$Uue<2|PfX#UY2Begr)&yC}n~x<9m1viVk= zq#3)5IeGg9V#+^x`>-nV7BbAah)OD<#h-Z5MIE{IZMd4OeNhuW`BIjP3LZaXJ@#6adzl z9QN5rBk>xr_yZ>0a?v}n;Os>ksQmW*iv+TzYLwwUhgej;u1pQzrTfaXI9nDOXvw!aIja6R(FoZ?QP zTbo9A1r38>>(C#%Pip6eAfq`JN%Yk*(PG*#cL>m-UdhcjUGBcky7F8ue&(GOKNozC zbwpkj)6l33XMb?pPh^3qMDkuBB&{a4_kjEaYi)XB!urPp#Xtai$)=;M-OHMb*PsDb zZ@r1P9P

#G6jS6x8YUUlJ>Az!mtT_DlRHklFQCz{NoE-hlI34RYfqYuLx&|A<4$ zKrx$9yvImcXp#D&r0s>G`V4OdB!ioHY52?QLWRfjpM)iq9m$l26B zKu;n-DU!s#wgeL80}%EhW*B+LVAO%ifg}pVn(7Mvc{5NHK7MXbBeL-ByD%Q5p+goo zj5@Ubg`HtwQ44@@c;6 zorIbsYM~Rg!>6MbJ5lQpWqmar9sk)>5oRK}aCbPH$a2r3oHKMkhSRCQLp|UDeTU(a z3BU$l?5tVmf?;zo>F9!JN@5Uy`Qw#(_)ImQ;FM&EH!R~2ih)d%6f}Wc6X;?B|Icpj zEF^^ZvA;E){_f&TF}QlD+dV6frOhB<9~MI@j>HpNl}OwxB<}Pe@vYN=y6_Ud8<1)B`H-vd z^rf<4uF&MT4l(uySeYOVRmIye`@h_oapS#`b2S&wb#bvH_L)tI(>RB2yZU5|O_=!# z3D$q0N#IphaK_fV48dnC);o5o8i2xcF~ z>Bmz@vmaq7BDvHOlU=)^YZ#Sb=tQXHqVA}kLMgVufl}-u@pe)fC07q70zspH8G^@n zJ@(y&z)w28@gqT4F}`W_Xb9K)PX{r*(%RvV7zoR!fjTa2&G2qC*1YJ&n#B+m`|7u7 z!zd0=_kX$S(h_z8hDro^Tx}N1G?p@JtwmF#wuVsHPCv%ExaAxB41BbY+=?54aG!fs z+`=A!p_v`&U~U9zoL-MRR#9=--5+BCyRjo{c_j@dbPXCuFv;ns% zQx`3qLJYXpm+WHzn?T8{Yw8fth_7m0nZsO;J7faIrvX%DDO(+ZKjCa}nbRKz{sk^S z4Lxw$6fQscU&i71ZQ%09CxgrH{|cdegpA>8zmAw#=q~)1p{ot(xCZ>oBmnpTz{!F} z%d~#Pr(C*cm%(=!v>kJVh-HUMMJ!9XX((dZwrJO4sl}>BRIKC%y)R#fC~6%UDBdCm zKDd8l4;#x#-exBPUx27)kLu6+h~x>4J;Frt6ihc&IZg`=)(ZiVpDSWL``7M6h{ z8HM*yWVWZs##f0E?CzmvYjGWD!|)ua`*0Ro*B}l?k==I1gCmYf(w8TsZiS0-y1oSU z5>=c$qA3=eP83|T`(mqhQLNGKi!I+pu??@#VEQ{oklz^%MdL{Qb|=jqi3F^5`>U`_ znG;Xpzc;2#BgX)C3P_Y)SzPesz4}Z5CizJhL$GKlL341X6L56 z5m_>H$|3MEe6DmiNia;dl;B@o}Fe!qD zKkelWf!>Jku-dX4;D}S8xc|TC>UREb0z|l$7l;b66}+30)iVNHQvG~crJEaK&l85+K1O@ zdfwhnl#V9pkr*^$R8Hk0 zrKO5xS7-1^GL`44z=8MRFJF`IVv%=Gc-72%E11{Kxe?#HKA5A1I(W?Kf}_<;w)%Jo zKw2sVAnnaFd0JzOHFIk<$-5L(HCtxg{Gckg%zzdva1#6;!q=rF=Y;K?utj1qFMrwL zjluAI?7n57L4U|PjK$JAqh@+e_H@-O8)exl-NGg|(}OzQLT!@%W*yZmtM~d*trL(k zLd{Ut1%dSnu90U~r3|;-(&2yEV$ny0kd0j4SfwvCjl8OTH_L0}0ZE&r9mtf2njDFV zX)^hBSoiKGTf;w6Ox|+fo}`3iCBQpb;0Z+9Ie zONMG=1D#z#mK>e#kfm`9%&{)DWl}a{D4ZAEpj)qFP8LIm#_+KO?O`!WBUib61f>@b zS9c>Owvk2xz$CqisGJDnX`eFAL;E+m6}F4rZkOmDCjny4rU`=9Io5xVQx22DFD{+ZK5WY}EZyjK#gnFt;YD02 z7j-bhLTn2utEL=oVN;$l_2>vn>M9Q%K3<&Lg+28sv8To5as z&-*&8yJ&qG++x67qj!3nd7wg@v9KS7=VisVwdRb4@MEW=rJVrB1FI09b^<&C5Y;3n z(j%oaR}Tg8K!o)ybGtDUz{NV^tpGX-J*gMhpeA~i11z0+|Ene!%9KZ=#&WtmgXn7yx4bRSqCuZ;Jz@*MR|~9sr5ML#O!WZ#^*0 zKMgNV|CFV6cX~SB{Q~fDJ3?^)eeyTGkswn-6=;$`aaIgK`4u&4_yCZ#VKe|42+zzo zK+cN?r1gOTWFW5Iw7L_JJUDE|0rK8oaTp047(jl9znQh{c>r=D0g3p|LDL2vkOI=< zCJojLJH`O=a7B^kHUN?nUS;1{9*4ZNHBMrB#DHN`%s&?0RV6akq)LOzy76KmP}~k} z7a69kP_5Pj&0Ci|2Xburqa40?c1s){Zay%0_@16+GoJ+@UzZ0+5&&`Y1w{7z7(fhm z{xLy10uaNGjw*lR&$#B#J21_Et(@6{XwU_PC@N(p)rB>E8dK$f8T^>nl7Zc}K$;wX z_buP-9h@6!kOfCYL$o9{;V4PdIMW1zCXj0aT}+^}3AoIqWPmJ6bZA$wX#-9lP+PLe z8A}oSx8)%8ch7*(&o>qYkfz|=#d6+JfVt?Q{RcI65Wky^U&qD|EtSR#|L`K|*_Z{* z1ABmY%?~2{X90*n@k6>{L7W^ICK_Y0x6fqitEdo48N>j7tieUQ9twi@ekTNj{%=6A z@_WI-34j2*oPAFxAP*1_JR;ohX&S}8Ba!xh;{4jc6gCJDUl1ko2=uX0{67_ ziT~1A#PL$W)%Mc}1&WV%w!R<_cHO~XwoN0E{fh@V)~I_s>=*sQc^CX9oCmfyDUQ?x zieCo;ie~(yq0W)icovA2iLT2C+!Ct|AT@5`%I^QT8qBCO*nxiNo|VGTaE6YNtZLE0 zELR1m;~$9+PYtIeOO=`A>UQ^Y<5Xl%e5wBb@Qnjk}%uPUxqB% zLw4}av_3fLofBRcC|*X6E2y*meqqEzQt(F|w-~!ocv868Vez;3~FUEJ&EsEBY!n$|R+jqGx|t29fQlT6_+VH1jU`b_FVMqv`;I zeJsF+v(3Ouv@JZa2T&HoSYcN|3dfP3A0@PE&{X5=Wyq}Ui-q=u_&@~{?@_s@BDXyX zAJ#hzHT@4luP~I25P3_s6{B7^L&d+R26UJ`n(tFXO$4Z}+yFvAD*$%2N5%a;< zV=aawD5RmR9XmXK{Jo>hnjQv^KNSJDPiE+QhTcMmoW2yG*mWL_<8Jriu7iQg7rMw$ zQRKP*Vuw6DF9!`g`{!8lT=5rnhG6G6916N@7$#c!UgUuhPhn3cP=VsrF)yRRAO^GS zuXa&vMQhbA#$DvWNG{JYY+fzK%ovOZ&}_Oz84r#ukm=%TWGG_G0$FrF(t(nJRD!#o zpvBtHCkkl3K4{f5pK;m=6n_V_6g{~A*obZNUEGT+kk+X&LQVyeDc~33)#@sV>F_TC3FxSmM$gr@uS7F zPz5Et$D!8PGGI5Q7s$D;3g)`Pg*t5S{FPo$zOofuemNapJyf8#LV=S1nTvmA?#3_PoTvn?$jqNvZ?sdfZU|k}VY%=pfG0a9M{N=@84+E{ zj)J$nGR*gj9q-t*L*MY>gHE<_svqmxoQE5Vdl%lmCO3dGBsYK7{NKm}{(QMkPTk?Z z;!w`TS3)KA>m_<|le75vO^eNhJ>e6aTJC>V;e6taAopkZq(^ zxQf1Wi)AHA$nXCyNtUkP0Xd|I*>}lBe5>tV_{+o4Vg}@I!Y;5}E5`R~&25X(>uN-= zLm^O!+kNiEr25JMpznOT3!yVctsaz1Mf*6)?`d?`imSdyaYcOnzlG8>N*U`NiR&O{ z3-Uk)8+XD%?Ol!xpn$HR(ir>q#q3TC##qGn&^K5?z$yrLq+i1>jbk#u2c?MgH<4aR zC64y^{rgn<9FDEok=q&saf9o{5nc(=QD(W-@cdDvs(R15YIdZmQG~EYhH`gJ-3U?D zA9@-e#`Kg0czaeqS$&^|Kb87$-)22~sSm%8&MkBF`tMh<`tXm{Twq*c72m}rEH#EH z>YRM1vr)3hJ{lj^+4Rs4J>E&+_PA*9ccRkKOZ%z8RzTL|ICTGmkxI z)edt8e@B+MT|39DzoQ?3n+6D{(v}hJ;axo0&qY}P+gDW>N*Tleeypmc2_%_7o(lY% zyHRcvV_y~re)>tqqpDxZtm$%W@2R24>U^gRL?}S!8k9`5scP-L@;V1 zzZQ&c(ZL|*Cdh+WKq{1GF+!2LJWePocW0GwY*lh1f|B3}${t1o&BHgu@-U_#r_7BN zh^gO;KrDqRmqH`<{ zLm=wUjunX4mR2JE03iP6IK;p3Ni5=pUDi0KolmiiGVISPOa>aHmofW5yLIO1;Gw^3+=!D@qff*zr1qr4( zmS6_{7#`{h4|0X`bl83d&bc|^UwE&?hWD|N^>sUa1Nq9X*qJ|$yPKFCCae0q?m%|? zH&}X!)uKDPzw}c%`Mc4cuvOvVSjJAp2h`4gW^kl+dq5o-bIR(Wf8+z8wvolRrf58{ z`%*WTch7S3#UI@0uctBJb1T6spdYm8E-d_i%y}7TWJ#2=*-4*Cg#w~8v%M6W2 z2!2J$e+o2PKJxZ{$AN+7JU~NkI-W2*O=#*ebQr+^Lmt#SD0^qb-kRgM81jiXJMk;- zf7}QpUJehYN+j;yX#_l$3FX$sgT(0zFxo;$9=QQ{YzFtBN<8ir9@|Ipm`7&(&zD?$ zo+I~_r(eIVOm2)H2FWuMb%5*WsPMx9b;%bcZd9V$7+8?KCd=xSrp%$yD+Ukqs?~$% za?DcBMDU~h?$h$Dvud|58aX`2c=?^M5R;=nnz_CFsF}T9ek&LU(2Ul$*3MI2ehZMG zANkt4x|;U#d-Nh%g?!$|Tu^!WrM@pDSLgP6VHf}#^gx{Efx4AE08IS5Jdi)zaVe_~ zH$SUQC&+9Aqz+mC-=)slPj=vpvGVe>-s}j{+;v)|uO7&-Ps(vGN4TmU z^%L>UeK&S(tut<)i#l6Ai!)6wXUm16FyoyqOAv2YIlR)m-Agju9yK&%fne2)N*ir2 zQP<0Zy7AL1QMZ?eUH@qLysuOldxWmv z6Vmqd@zS=_aG-eFb?lyQzG&k9H0)ZgKLpLFtD$b6DGgp4*WmODZSc9_(#(?A#q@6S zQ#EYAe25mb!`LanJ5W9s$rS7Bt|l8&`Hz zXgA+~T)J8MnshTz!fsBEb~E#0>E=&JJ}})pOSL};4a9cyy$bE-7mrCdkB)2R+X`*w zCNyK^1f%}8_II4LpNAOxeuQ|oycs{9l#e-9vgCyo2Ggbx|0mdwVGTe++2MuuV6`AH z0Dr8_?NBaB&G_ka_N8?001)A3C+dwO4XPxs{Z?Ib;tdaB`WaSbOP;D$%zo)Byb_AF8>QTMh1?_G)yU}5pghWB!CFlv-WTQc#7%Ogm6 ztV2XK|Gp7CRtMJSZ6!Oh&~_C_0NTFVX`9tbn+&9?#*=}RqKcq?EEL0WHwSL2-e~6m z0ahP^Q}O{qJrHspNUW`pQ}~jXMUFebl=>~K_EEpR2ykrxT)Z3UGk!EbLT}L@(hYdQ zd+kYfQZ^9V);;x?zy z0rg~==eA2K%S|@N$jvhbGm-&Iy6@Q+af*H9jGXjlH%dsJ6L}tKh`F0Fp~v`vQRQ_= zXdpbBM{~BHfU@um;dI%%?zkG+annhUlqR&mnS;N;kkwV%(95MgP|zl{+8@e7V91A) zkXGi;&*Cz2IDwrJqibFd|Pn$>#aMi{ac;AK^LJ5Ug zQYA_|GkYt(>d?L(Uv&sZ`ls~#fW3y46y#QwryW=zcnw2+0x#dV%G(=2VpA;#V90C~wiRaXQk0c(KdRq|)5Hml2@*u=j z<~<));wkv9dRXTzq6Ot>H1KC#JSiSKPvQZe?C#sG6#-aqfRK97JdyMAdD-lE! zjq8ost#VR;tQ+NVANBmNV2ecPnG=3nIxn~ynNkxt0t)$%hM)&;788B&>ENpv)|Gh9 z5sb;E38(ei2MRfYF;Bm)2CPH~GrAGiK5Pk2njA`8l>ey5gGe*TY#*M*;s&4DaM*%F z7T!X!s$}CVn?KZp6(NUV{Okxb;KdzgK>F1>-C(wTtDo=gNQDw4o*BrM0Peqho;1ix z*^MILD1scx=v0C|X9A=jU!s|!x68c3Y9qckP+QFHGIgFoOt=b?9%Dm5B0E*F*UBi+ zBfdo4mA=w7U}q2m_^DUoYS*LQ%6R${$m&n;#mj0VGK&V#&6W10a?NBGbX~e{?sL=t z{jOnEY2U+ln(w##UJ%c=Q)>|+(2}@svm6~s!Wb^DCRxkpiVa9JN+BoR*8$DDIRnr1 z%tmx=Ld9o#EPp=VWkS>m0_cnU0E8Vf9j#i2QCiJ-*=94+++7!4ns)>SRO-?@5Qq$+ zE~UPthA!er6N$JLDm(~tM4`4+3bjgXeNd>I7ZrBIhjV#X7|tabi` zc(k@bI<>*V45bYy00ximOIhEzQPiWa>U)dI)1z6`4P#(OP?16*h-&a^QJ3~)BSDv1 zC{K|#{}8}Jw2dMaT`^#?(iKtx7?O$ndG#UQ1r(VudV~4-GkT-0;JJJbv1_xwwCP}L zP@1=5=DIn=jehIm2!I3}MlDbKzJ#RjJkq zwn1NZE1_U(WYZ5EaXbuyf>7EqL!qP7)sV=cP-x+P?&$6h%Awqh_xFx+_Y0^|jqgy7 zR>(QKQTLY$3NywN5$Kvx^;Wxg;_*?yyxj+;BwOE|7e5FdCLoxr9byK-i^1o|2@sw! zFu1p4;1U@FI~F=)AOW>rp1A8V@MVn=W^@y+eRzY6f%P>~gbtqZ^J86>{K;1xl39U4 zY5XX7x@VNjjwGf;$H~MLe`tliSID3@C%tz{vOkoF>n+wF%V8`?F=IfDhu(p$|1B7~ zz8UEm)Y4`mCR`m!A0S}HjQt(d?3TQ2Ba*SB7%~%lOOc-#FnTRa5X%{u))xQ*KOl%* zL^!vL>QO4YR0n$)!l#{7oAG&l7m=2T$Phj&dXJaDSWz$l#b;AKba|_#)CqH6YLtO zhID<>+m8k@{isOP)kV*UlUStNBh}kg7so+zQVb+z6-dNk1Jpdb&)GmTo@F8?<~<>p z*u{eT2RDL`aF_Kih#K1^c5)A7W|p3yLxQ~%7tY9v#9e%=B;vbJ!NCm4%n&G^g0}go zn7M+0FzqY5@Lm8x8|nJ9fRLShjtO!-+{+r14m=>GdEovfX99}a3W~GhpeT)5XTa@C z6-5*KE;fD*8aK9~eaG+W4$(I5$VVh{j+IIiRO=cDe-*_4wh9Q4(`Ae+H~c=yhU_D zOlgd%zm}QB>~HKh@d3!5ddv&iS22)PBy|?^!tdf#;QR&Ec!RjcXU8nT@w* z<3aT}&hrJ{o=0M&12?Q!7+-#WHyWSW9F0G@3C>7`2ss?;!%JbL*DFk}r|wEBd(;ct zja}R-#JAsrQwKl-vX4;>>_S&|Kx0LT``yOI{(PuzhW#Gjx{CPD^mHb6v9Ar=!lSsm z!1W%quss-U#SgJ>q2;|BVvjJ=%jY3+{^bm>&~#IsxIN;fNY@IY$aLKCV!hT3#J?9! zS)&;muNvJt%-d)vrqSyAjkb%`#WK&tHSkacHDL3uA-sPV*T6k74eUQ74@Cpk9j60X zoq(+NxG+id_Y!DxrN7m!NnZ8sx;81VouYl!{wc8+@{B+oR$WwWbh+IOP4L8ASyM*3 zFYmbpc}2VO6{TzNfldd)Ua~zK)9L*u+X&na#P#L>2pq~9w5Ow0^E#?yWR6+4cdw&H zSKF>Rl7p9;R;%&iI@BT09HCE7;n`VQu?rJm@w{;e?ZD9gvd>5<`pKVT=ApZpu)Dv> zb&h#0!9u*<@Ok=xV8sM^6|P)((PbJ(%gkb#MDEzSvN4=Wn;t*MYIN*H2AY_pOcRK= zSG$;`-Kb1d)zV~3GJ!l5sJI)0;&8_f7P1xmG)@YmI9W`bEPj?Qh;3qLN`JP+S{-Ie z?aP@cwE;VNCrVsYz8SSC_ANqbb&K>*T+iVx(i0g_uUa*kiaBaQo$2-X@JebBI! z9{FJOg0yK^2@6caTkBZiX^A(jo`PB?CE}1}r=Eaj(tXE0%r&JtXn3S*?-jG)|&rb?emlv{I8c1a+A;c`3(hi|_7X z9X~pHWwESfc-AVOVFe(Gv$S9yqG*^w5!e02Go?U~Mh9|FKx_QjXCIH}o`9nSYx3A? z3G1JVUZxvutQNIwFkGYmf7}gOq2~$N-M4D@`e(84giCaF8wGVvsVihS2Nx9vim!>1 zXZ8@p3q`6C#RfuF?LalA;ZAd%=$*V#J^SQsW$Pbu@~ZmE>CMe3N3Z1b)r(9oqbc_Z zZBu`sIGgaG#qoj#2QyHQGY~_94#!{nS2)K;-D>Z|EZOB&E1EhIb*mLJqa;ac-wY1Izepo>erTE)T#njyW0F1kh2hc_q zL^RVn6%A!!nI_XF?A9@C_f$B1SxE?)A<@2;E?}x6*KL%2j1K`$UxMhH}=A3=LvvF+*bzf>^eAQ0&27Otvn? zl(%SJ#Z5Me)1JhsebX)4MQq@YVwb-0fY&a~iJ5L!5D=z)wJ=q3Gq5oy8Q3^NLD47< ziq~SGsK`lwcQlS|r384t<%G9bNq5GtOW(!C^+;L)ymh$?y0LHk&PA4N$>G^gXc6zG z*XtC{kvV zAP}j-rKf5E?m4GD38z!o6e|Dne$;@-pFblIp5-6f42s&HFRL_>w5@MTPOH$9sWrGO zJ5nXOxn2ctVIq#MA^8iSZ~@??fwW&{@&k4i0Srd&%A-xeuyqrvgmxd=6dC-X&q~Np zX)}m4>$b( z1T}6LQ4u5{2uPG}O;6K^4k+^Kh>9cbBB)3pgdJ1_ae)zqxZf)vxIqMz|L=FI>h|qU zfcf6h|Mxx5`}U*c-dazcI_K0mr_QaCQJ$;1JdE@Y{@&9)LiPG0BJ9X;WL}A7kzh1N^PpFkJC;*w3f8J`|ynP}>;u{4!V1Hc%ID3W@v8Lm%@{XdXtWhfr22AMjJF$CE`=p((ktTqsWl!MgJB))T0r zK^{7ApAyOi2*j%~a4XDPRvjq6Eb_!19LP!kzYgSIP~_3|8R$B3qqAuO{cZmp8GopB z>F2F-kB?!uyZo`1174-so6}-0t%G#-Eq1}{6uZ&X`%rEXVerD}3MW2f%iR2Dle+#Y z!Nmyzl=pC{CVv<%u0WTzF9XDUsq(NtHadACUP;hGw)~D0@#&RnZ*Ey@^#90Cp}~_> z|A&zZXHqBpodR%S;^cDXiaB%6Wq?I4*L(E|OahWK&4ecMt+N!%1)~>=)KazRR45v5 zdEerzp&j!zsn!oeT;neWBLKt0N=UPgb^upJud&u1>8AHg^N`peyT~_LHN{7f$vT1@ zK?}L2Sh{%_s~+M`1Hv|wiTLq(u6mT`O3(9b&+|0TbCu`W_B`)#pO0cXvD1aRu(Rgg zU$KL-$vN*HP!6=qJ;0Q2@df?pYB&j$={!^i^gOa9=qU;d1f0A6cA@9P(9>swK~E5j zGG*E9<-dv8L}IFsOYUUn`^JX_2)_ctLnhnNu}dbu3j~d~qB=sINe{s0Iih{J|iM0|+34)wmSTE4zJ*H~qmKr>Kq# zYINKtp<@L2{Kv$XIQ91x0_nq#1=0tqj~?H;?MN&z3g9e4Q00FNMIsB-0TkTp{ImK% zu!n-d!vWJ1&@k(F03Z2mj!X8>)``)#$h^q2ot>_YqGWz!B%1hA$2L z(F?Qe3$9Uyr`Kfsks_{B>NmI2pj(co7v)JzyLXX?FE&;%CA5q$*iri#+zW#mispI7 zkDhEoW2rqoT)Mg0ko)AOLzWV+2>n4{*NKR(*Alu@2>2)mA51l z!nlO__&r!4kph3~2S)s=85nV!3dHg$5Dv2z^&=i;{0>x+$cSSBg{(z?!B=|r0D|*2 zK3Jof8{kVj_3_@*Hz%X#vIO+}9)KmHXM0~EjzT^+?c-Q5a zfe(%W(of+<+F+TrU>%Sr%{Key=E}oUMHbZ?9@sc2>CA00f3#GkcaxBAxX#Rm)Sczn zYHA7}{vsTBD}2a;{5dlgBddwYa_+?|mcsIzlE;1CA3W}#FO!ZhuF-MFKe*!ws^d3{ zArWIaji0PX#T$m5ZDA6CiY>^%EN~aZ-_v!?A4fc50?L3xPSXE0)qJB+j~aU#P{SYb zP^}*2ImJykY9|V8@f29=d3M$JwDJFA&nNj^k*aC7TN2IU{_mm6$s?qT%LX4Fhf__i zO{2`80NGQ>r>U~P6enw0j{axt*ZmQbaCwbMxaa!BNjP@w|580D_CFRSn(F)1KzQ@( z5)uBy7$7{Fy8K!Z`^O>FLyP^41|s%9LxygwcT!{jEA~aa|HpI1^}-eV%}4()1N@E* z&?|{%qp9gdi3~7%lzUaC6{?404gRg`GRNvWA?or@2yZOsvNEh4C)UNUVXcGN+Ik*HvQh9~2#bDmPCEaY6Btc7k&PzHYwr(B}Faa&J-GJrsR z0`DQ@!>d;b2!}Dp76Y6`zlV{YXpT7uzO!Cmj>Jso$-4p3$`nA_#p2Y`ua@&iB`hi4P6R)B(E&$JQHyfLsZO>*aZqw@q_a1P5X{IP#J zwEvKET&X$-YnO8`(lCx5S8{9V5e<7LmBU5G=hL2V9AUP3$Ttsu^U%jU6q$!Y^Dx3Z z6w3qA?M&`2y>1+mOk@uwV9!AC`*qwH9n)>{-EY9ciFf^WXsFdDM7UCX1O2hoLx>h0 zYVEG{4H)XThOhPY4@7?T^$SEk=lPgS zAYcD__7(&OER-*|zcfd^V65Xuh~&g|x3H^ItovVMiwN-yU5`wLcv|6Ee2O**B7Brh zW(Ff~2cw;@XCQNUt2Om@Y-n_-+|j~nQ;NE%Q(4EKx5Wx|LVLkZ6INx6-igiq)vTH= zfo;7|AsC&Q9+>PPEaRk62>2`rAF`&tfglGobR1C7O|=uutF}T>cHe1;x1ILV&NP%~ z8#~Un+T;_~dRF*5LJ;kdZh&o%mo(LNw1Gfh5MF29|2X1DRI~_AEy?y{-?ROWvrNBi z=bzF}@AMz7+gb&q&HT{;Xa%LLv-%;#q*KdxufXV|7pIlr+>@N+2jeAgj}@MYk@-Zb z1tafrTHm+{D;b0NUgECL32Q$!l>o(BcKK4aCEHBFwq(Cxtm)tIjkgaG zjHnxHx{hC0%QhwDabd;up(!a>Abk)@FPgv*lUV1Rhw7!+l?eVNv>hsI!t0N9&F+p* zw%bX^l0b(id7@(%3&4!wf%&LfC2>oQZ!1WOj>e=@!{sY1hrK z++BBaRl~{OG|bPf9zDXhcSWWZKA(7wj?eY&U5>XF@-`+H6*u}w%c1KyLqhID@zgEa zx?A+*?s@Nz?jWQd8VKm%g=UCQn%{bPV=z)b%f9E={gAWu@o@uEIhh?$YFYqvUI6+G zAE2`i(n!RT-5-pMNwdPIgZ#mhoST~pIX6vvMPzO!V-|+h#oT;{cQZFF!=IbE83oxn z=&FiROpZjYx^&WV5ZVa>*!rQ$(WSw>k4C2fv*A(nS4Or=qNSgcd(No)gy!L;B5{_O+##?w)z%Xj^2Foi*|M0zl9vlV)iZ)glH;uCv+1U}+c z7#=Ht!I%WMu|L{6yora6e2d`Z)>dc&h>iVyLJ}?e0{<$$x&$)7xd;&uhHk-_hD*VL z4GJO~gwh=c!39SkG)lUL>|a-aadIJV4TXiueOSAIR&OL}^_$rFFvJKy;v{ zv{iV6EXW8%CxKem2%&-C5-Dvq3c>ez^^qve3g3xRirU%%8Z@Y>?FYR1qh4w|6Sz>+ z_Gdh~)CMvoG(wPmJPE}SokDTo{`3RH@-d(|qym}KD^bJ>*FjmlMOv`7S^w-WP*^BV zU0yB}x352zPtEo@$CiQM>VV)T-bVs#y8K=tHAsu}s(O&Pb{$OW)fHnvaK1ukr=UL{ zWYE$t^tpc4lck@E5fXEzSJoN z4tW}jM*=*wcmE+53i7>E#Mq?RRoVW@s{zU9`2nl@kIq)q_s1YMsNFDf!iAYpX|&=E8VO&@bbpV&foE3clYp5%szlG3`!;@R%6RECi zY>3MX-$360Uw>b}{?v4Ed)+4M{`bIC{>TA8R`hUFireePXWA?Gkp@?Z%*#e14s1eD z$dMZ*rt2xvjEc6+Z zNGd(j_Le@6M$@ej4yHjuSIlqeG^9YjK6W{F!@~E2Y~>u84x1pF?W&*H`)cWZC98&-0p6G5{}g)>AUC0!T%CN;1_Th%s}PQ(GxR-mS!m0QuNb9j9)xkbNTuY% zFK%IKWM?pX&Xe-#N9Vzarwc^;vt4_G2WdP^H<}_nHT*+hdb!m+Kf?zqW$*an zuzprS0r8hV@xT;uoQYk{wV@ZORZfoOwxFm3}YB%k3-UWqYPCulC+FgKCyg8xP6 z^w37k1{$!!`1ld=A3p%4(XmBDYc%!T%Q(sH?I=QGv7OS|ADvj_U(>w^QPfP|B0B=&QhSe_vtMElm5kvjMU%QGYOv&@ue)ZUQ26hx6? z`=l+UCNRFpos&;7Co4E7dJ3SB@kp`yStY(;v}2YtQHB*FW}qnSwzGjq=WY?Yc>f0E zX18S0eMn;5cp6`ZNF`vbV;1E!ZO1*|BfYIk*E&u}NtKdB2u`L%VC4SYOFLkyVH6 znF9pZp^hk=z(%(XJ9x-hn*hK4ryqr%Mz$4Cr?g1axqM=GzF&mJuFu;WoZ?cJFUNF}xW zHRL-#l1GrLk}8q3;~@}QMO#*Gz_AR$RN1T4QsQ(`NV$0;kiw=b*a)Zt(C>%7Xa8DA z0}?!1fkhWWB^@i~U41)L7SJNcnRS3)S?bG2@5IHVd2iiyULabsUTN8VkP8)$7BAF( zP|=2dzzfKVmU0?pUOTD3tj>;Az}nZ)M+8IxRsk`ZK#TDoH7_UfdRRQ#9o}H0jZk{L%A*Q6F3s zC0W@8fbo9N22gPNX_u%)JDB%%NmH!Q&-daAy^NV4w9`X%(Vmihr-&Sd&{t zV&;j$Sq9Q6tY`;E6wUC*k-jKh%5)wB)zi)!Na>c;n=7w4=)YmmGGOO8!^gqsxOARm z*Yv6J;#ZkuIV~XNr*XEi=9HZ8?-YbDWltd55k48<%8zw0#BWFnVm%Kz%Q3McC+xvH zA(ZQ&Sv|g(4|e}LPD#49``5#g`X0xgatflU$8qF&z9egG7sf-o|0|9wdYQJymdaZX zs14%|Z;j1DA*h9ej%1CE9;+;|ju;{u)0S9sc}uXwkfJRyJh_(G=sbS}P8PAmj>9m- z5(A0j>s1}ig(?BpP}u*=VE_MOh4~SPGmmLXzD7@<=ck?i znb_%DKz3p?!Mfd`Z6@I=n0bSCKysjAWg>(tL5C$bgF?rlzOt7tk|#0EUqBDRylhVLR(8ZWjJd8WtNsxY^OU!r}2BJQ373WIiAUII-qHP zRHE`5^(4>bl(D&3%klgp>~$7auZn>jOb~@@7(LqnsXqpqF-A|igNrCUmWaFa$y7 zpQVIWJkP3Xid1dcs|4&7`I?mTOfD%XBzwg|zrMf1%9*?ye&v?s2%^@-N_8=!Rf_$5 z5*sdnGj(^JU=)-C0>bJtwfb0bK|{b{QK27utrdD3L>}w}C#U$aSF$@9A1F5T0m^&Y znTx1ZX=gK*WVo^u+IgPG0VlR2IAc5WQQouzmv}WsDD7MiB__F@uEdq=4;Of39@tJk z%5zLq8}I*EPS;du4&u{3jy{O*melOLpk@!^ypV?-b6R+2At{G49->6gDPAB_BqirY zY!dkMMx@C?`c_viq$@K}0o1jYlZ78lAii!?Z<4je^IYY5wmr{#JkQno*_cw$pyd&2 zvH&u9YzFo#whGP!IK;bkN`3!gg43Vi09t_DCmjS0U;aJEGpP?oG$IqRaiCl{IMvbz zQzlv$0~AA5JOM+pvZM9lDfK9yqjlm5JiPcl^yD4#VaJPV?frRj^du%94g?FI>W~>+ z2SVRAOs5yMCm>c%1Wx3FcC=Fckrmux35}IO)q`TvoEDfrQg1Z$vhDW5FS&q}WVMer zh(p-Ge&P!x$MCfS@aT`>kTw2AQ!#uQE06tfo{q`AFsIRKQVATLenOX!K(1EsZT45u!e`6%!?bR5^73y(gb-+>2m% z$uyceKA*G=Z*n;OFNCqDh%(Z#h>Q!67=<^lr|}W_l(z`(4eSB64ni!D1$a8jb7!Lt z{oyz@I3N7vTTK03yyFhCD9|hE^4N=mI}c(@Lgv`Ak1zY+RTsPQdnGYr6Z#_p>ai={>IJU$&+Nk^N!)s|_g zUtUy`=*`>)@*swAB(^$$`t%5jLVv*l)T5iIX%D~NT0HB!+wgb7Y5MFOTN=l>om=5zjvINPyDRZ% z7k;&$-yPHM9~y){h(BpLX~-imO99BS=%do1myC^Z5TJ3;i4zS>5-R=z@G+suDm;P$ zYtDlYSdgfA7C=1~QgF@Lod{=Ste#KQaup68}B5xc#TLZ=0SS%-Kn zDrEYZ$x?mHL#8}LJ3m*9BWPFA^3${}d@vA*RIa?n6f?*o1_O~wwf?q8V~|McB9YQ4 zw(Ih2To?_a*##o`88x!9{V-IKlbMtQe><>A^b;*d*|BWVbqM<-a0m~OT<)XS(%m3thPSd7*H$^g4Qs0vDnbV2VM(i+ z%i5LF;1C?EUR%Y1Iv2;N*V61|((Eoan|y^sZ^^2~qg@~^PQa(9wF#7-l3T)f4%AH^ z{5WY8vW})7 z0c9PgU-1~wUMzJO{`joND*aZ$TI`xuVrQ;__TJu+2P%!V>>~wp9=I6=`@;=#a2T15 z$AC=*brn`*+yu|ZqHD4Gpw;(L3by28)UhvulNMgvyH}R6|Hwvtr(Wx zwXhmpe{wK7ygkoJ7X=wM4~UUG_>7&v6e5!8>pX{W?7m&#|^!WKE5Djw0XQWtmp^ zofd46@f?+Sdsg1WuT$xpTn&k_=`{Lvsv%M@$f94TVYg_r?s>~bp8}#q_L+c=yUO(C zlw*^V*b_ew@I84o{5M});U;t>Ks?ci;?I7NoPd(y7%V?c(EmJ-1l@G_DAH(7WifWt zQ$bN}@!(r1+Fh*WwagUier4N!hH(5qB033<1KH<@rapp3f_W=U{Ko3q;x|A(w(nmQ zy~-y^8ia8(6jhZ==xlism(VO=v*Aqqyb zvaB*5=ddG9!IzbV4fLO!=f4+v?65Tu>md|E@`#pvDzu#*$b+}=fJ}PoDF7uPAwJ$n zpTzi!0ovpDqEuo0#a)M|401apN$(?3h84aRr4)6HKZSDbE=?VUc+>G0nmU#tMN!8; zn|Y|i3b#QMibBZFhC&_z-hmz+ZE*m!KqMh0(u}2ad>crG%*&sBMp)5i3|3KXGz#2(ytlNs4BNtxU)zmgr19lA@V9=v=LZ zSm7}^`rYCA@6-N|+p7-&fJs145Rd8sLsAc!eAqFa<2o8$yW_$6vw*86eKW3zlJ8vn z4MYunKaDp^z9Z6iDGD8(zOO(jMc=<+0gu!7dty3!rQhWkm!j{wrzX&MYeFLukW$Ui z_nRMi>6@SS8v1U)@*r%whWN9mlB_5L9|N^$8Te!eh_6`F^RE*bxEOzi)iZ?Nv>#mu zv6fef2Z1a63t%SSpo(pz>?@qsI4#8Z$5S6bLr0_Q&L70-TFby|QBBcxwmc=#^<-R* z#E~Y^b$ht_IFRPabbSoD#ii?}Ub@cU*&>Wb>jw_&`#vCn9h&CMzzO57KH!h+Q~Bq* z`F~H$*Y%Hc^QR@|Z5e+kx~fqi5LqV5<$mG7oF@j;23un{Iu+ZSIx8=eRToQf>@sfjw z5OTn6poAWLS- zVdjg7<Tf^9xVyDKSvVBrn_D(*Uv?#4X|K*Rj^g9vQ>nc1O}=hZTOa8UlVY^dL0X& zG94bvaoHSwi`mAlXwU4eXof%;tlD4rIk_4oAWauy8541SGsgm2kijLnK+X`{5k4pw zMP9DM+^A`}v#mQVFNrJOOv`M(!I!ZNoKefPY>{s10E{MjPxf>7#v=qcEw86B?Z4;i za>hd8z}9xG<(46w%Qg1)GesbTPy2?^L(V9u#8ATT=0HMlyZ{^2vmL-~d@maW5BZ3L zMQ9gv_vp+jAocP^#{OAlRl?X<{FG-yu7aFT)M2s}1&CKJ&J6IRDWT~{Q_gW1JJut6#k>1)pfR0? zT9L~K5Q6Jm^WZlReau59ADm3wT;u9f+>5#YJ5VX9y)28~O=u|aBYchc9f*(Us4mDvQFBugFw4 z#?D~b(|nAL1QdE1iTqUpCq87laxOKG$H6y896a`WU8YgKo5Vo*FHjQ>LIyFWo0@?L zf=V0fn$o2=Ll387~d%Zt`a; zUOL_R5gLZQd>sN)UIQHVLO!KBczTIX?=o!;p7>Q9S;c7x8nz$YKsH_J^!y4hue}4n zz#ZWcTb(0|A=w_K9MoF;)CLpl)=tLyNsR$ zy?&Q7UwEbzT|*V!;yfdIPU;}EzX&rxnx04rBke>5)yiqCXxcebMI1Clv~)A4FNBV- z{2?yhK_sY&W11C{=4JRgN@!=H=`Ru47@8IG3n^6JwusLx~J> zkYZ!kkFB=^AlD0-o5@i*Un2TJPG8rmkt}w7AwQ$(1<{-0dt?1m7%qiC)BaE{5~(y3 zm@kMpX60Ih)hoqGM-whP`^r;Ckb4xXE!;x-dKev7>;cl9w|C&_Yd$UG(^qQw@nsMNY0k%};n81Nu88FdiA^~FP%tPa zLB6V1#A?_pRbUdS?P+Fb@T-P2=W9ghL4F>#kpruxZ`DY0< zmxAtUX}gq^gxE78Smg4f^t{uMecd)SV+cpmi9CeL*A3TmZvd>2U zMqzfI_za1$-ufepDt=_~z0(6Usy?!C<=N>>0?DMukCw%*BSc~Zfd{fW=RAtf=|mx> zM^J0Rb{lqvVP`Uhl1|vLoST5y(?`uBf8J_q`U-!ioP(!`)tt7)3NM8djG0i1S6iWZ zd_z!n*R@9bl7`qSmEr-i{aA}q{PJ|V6~!+J z(7tg%Uz4yJ1L!k+1E90ObxKW40Cb}0l(nddmv970fUZP<3@p5t5vyo_dp@LN4J7Ur zMb7N2uU5l&d4*>fYYo1ylHiTn_2NSr>`2g8Loe1db8V(OGj%v~?#%p%TirR}XF;fH zz|y6enezq0T4rXXU_yiL)#Q_O_U-iPByK~WnZR_CP}))q#dL%Wl`xyrj3c1zfq zr_BzB>>f)!gt?I;A~N<1RI)bZWChWirxFdWKGHGPclIh6W37o&E9cw*DxgqXZ=o%w z=}`nt`vqt&sHtYu%%#W)MsHKshjqdWuMhL%155@1KoRI3{}u%f5);gUj?3mEtVlac z5I4jZ-GPu7r7^pg@2R+(zsi5sGTOE2Y=ay6xaygpc*#gEDt`7ND0FmFDHF&3CC}r= zNTQM9BJQ*;7HpHa|dXp68^v|(2!ZglVia;O5TvH z%xFD-SU(I-OI@&W-s2CsCt~EZW|h zzO2L6?j5!^S{sObTo%fD9;4>jC!wqt@FWp=(F?awcBmOwd;x_Cv6G1Z%zy|Fe~5k= zq!-|(aCoz9825y3d+JW z)fa%hjRz2IkfH78Iw}qk?)Hp_5mD>}z6&e#ICwib__8hmW5}M`&AFmA*IwDt{(-Bl z3fTJwkM=W5WXGzkU4kG<^oCqX_0Tg{T*{sm{_329&nN79?TGqHSr}XAqHHwBkH}@M zP7_c&zcIaL2I@*fDe&!Ep{3{79Kb)2hGxD;GYFrt>!7;n;Zv10oFT$WVV54ZHA?6~ zTHaSn%d1uOhgHkG973u;F4ffw27=D4(1~g+C#s%U^c9SSuuGL&JU#L-CCTIhW41Jw zTcI~OjKi3g0FjOf%Y1K!>Hg&^W;~fl_~)6F3FxQ+bu%l1Vpw{ z&RS+*BF%GGCDsQktkNQc=5L01;DVxQo`&B14vOpvSF+rwufZ`a!7}^_D_q}^(nAS~ zWR}QcMGp@pH{2I>y+rN`XzbGa^R7;}rUpO`1(6>LB0C)HxE-?Jc@ql-d7<7`I7xmf zhE@IG$4C#o?(vUheL#~`?;uE&vUAn@+Mphcg3vh9oQltDF=ij$R>L_r21)kmi>Z*V zaJs#RmhpL6rhOdRA!3#8ffV9^2y%YhR7=Ar!*oVq5PV>-H*-3C;(56k?OU&Jb%xR# zudPhMlT}uiUP-mxW`%#I)9{4j=@)zupu*#( zylzW@EqmHRg}ZRG#z4Dr63#gmq#Dav)eTe;Yx-CG8CJ)25)QZ&@-f!3h=0Vn_Y#gz zxU%9cVBI&wIpJUQZGGum(l`!5b3j1Z@$&+}xez$Fckt<6K7EGD5FSoD;t$lsI!?Y6V{vK%k8np*Q^5&gKy)t$W?Ig2@|jJlV7 zwDS5up5`+@3`5fHM(pV)vW2lYF2+(hEe*NRizQBf3qX=8Hy|+zck-R-_&^WA$7xYZ zJy`x|W1~6Hqu&sFp?)4gW$1q)yyt+Ru@xGLEET1XZL|ZhQYo`2%MKYcRm59{3CQOX zYIi!9ldnY)#zA_w?>&b~f+l_sf5Y)_g`O7p6?rBz`~+@UdR8?N7*?5|3@hQA&~-ZD zg%WArtH5$Qytq`n?^BS`EGAzGg7QNniQ&Zn;@piyRvgO`(@Apw0J~s&U~15fXCr{^ zK7#0|ECyW+#FMZ5Njjq^kby>mPM~w$mX4)6gasDs;5YWa$mx3IT>RL?K5@8UUo1Me z3JCEX`j92u**YMOBjvKtd22Zfta?>)p0pUwMY28h47Fn);3Rrwfr;Wp#OkT+8YtvM z@Mk8+S-*iu#D@m==U^<@=^5KjZ$%BxCm%Qc;UD;;wxS+uCTzbK{H{3r0}*FNrgRpL zzLO}qNVsLIGXgG3yEh2m^e2OPgna@~j?TB_x_GrTRP&Y3aWUJPqRcS8a+13KNcwu^ zPy`9(M}l{oO>W4D6;?c9dObZ$?ifxXO^=9vfgDs*}!(X zGD$L*|Me*Izp(~QoaVUcHM?BR8nk2Owvk=8T z)1^j_jyC5uMcqhqgbh&{=Jc4IGx=br8-xNwV6>2sZ5(GVnlZqg?gF9uPJ$G9RyKj9H>a3q*B|Gh6L(+AG zSj|qO228+WW!F4vC;UyFhEeyKgZhJrHa~!oPu{(+~iJm+(m>l33I7SvWC5 zzV=Nb;9Szk#}pDzC(!JPW(3Zi+^hnlWZ|m#8hH0|y|26hDzS+0{^7X(9s@7-+Xdba zL1uR0DGJ_OK`MavR)j@4HZlx#`(z1p>R?O59`b@`!ML3pnc%ygNOa~>LPb+2H!>R& zv7Bc>e7+@dVW>pqv-6Y?6f(|)@>#K|7&vGmE59MP#u$z>2Kz#2pR6PMY-#qV&ubY% z=4nr{A!~+~pw3mieGE$s*iuvyo_&_$G{CY~BNhAG-$9MEqi8Wv{McN?FshNraV`bs zxh7uEmj#%P3Lpurzs5fGbQ%JPhuo}^!TuP#U<8;oYV4O*L8q)iD4IbJ$1tZEa%06L0zU@JkO9ND zq!6s&tB_@_cndRB%SPr6COvN@J%0$4m|S0Zmg&HGjwE!v9suWGJoV1E&?HqOSXF%G zJ<*QQXH|Ri*dCzEM-^A@)Le~BB~f(q*=t$ta^M<)uWO=;cry$Hs)&7E6|u2W5pk^} zd|Spf?T6gxzC~$Ry5{5v63dG;b^Ij%+I!Mb0J=LC67k_H?`Pnw*{xGe zw#hn4WJc&6vglzNH_aVERdCKfg!=Fl*PjbqoktUG|1)?hgD_!8=o!!uG?2B#^myjm z1N$Vx{-Af_osj_fa8MqOEk?1K`@PMug+9cs^E1pr=&Q5wZ1)1ZU`IYXQ7Cy5o~drW zGeypf7a@FXA z)}!IY;HtV1>V|NGKoU3uF5800r@r#DZXtt${}#>yeq7FVwn3Ova-J{ntM~_}EySsP zx@Sac)Hh**%^WtyAH}Yi)9s&rLC3;7sg(PiE*dfkif!+0ErW!E91?l(T*pjsVgCfK)-jZC?hF=2UzSyGzstE_)l1o@|1@ zbPCBYZa><`XBg%BSF%{Uzmmni1$Ql12a3wRx#F&&DTce|K;Fd{)}lBjEZ9bv-W{dz zg4}`7V4gaNQ@K&MN8QPI zsE6pfR4e!+?#u8uke3gi%24D67@G$uSVGLE%a9mN4@CX0*;GgGNkS*4*~In@fD&hV z25Kl)VQ3ObiH-65N%~5N4^|0cBd3t>Xo6~7&20#5Re4;pTcE$Pt^lUdWS@3o;x+^` z`4gXOcfet^EpefEVqyCsPqrb5NrJ| zav2vZ&a$cBD?%aIW@59ONTI=qQl@9|W?h8%FhxFXEJZf59V|b76fs$|B+L5&gZ>^G zo|K*(kDfC_E*zhWYB@H8pEuXAxGzK^buEMeXm?!v)Kv)r;0O%q_<5+pM~&j0xg=B+ zC!vs#P~3YzMM&rfq(dqrb%|GhMw?nlsOos-rJD^{yyHrym}@m?qR?`8>)W)$lh-fE zI}CXhAFOA{>%Z8fBClz9v|oEt&HPi|u97}!x{Y~>nY}FU3yy?Ou!dj@!+C~0+fQ(%LOVj#ucFM24Sq@TI0pG z?>mvEZG7jDgiX_PL#sGLBs0Nd8op{7e!~Rbovnok+wtOBWbr}J%i(14NLB%m_-=kFtT_a>m)Kur~(>Q!l6<)U%}qm^5CJ;#S(Oo z0vdgR0EEWDzYGB!uA=;i=Cl^FI%Hcr=ezP>Y?Ro2e%@&L~Q%u{*$d*FVgH$kFj+ackko z>J^+p_i#MITgwwYNY7^S_?JJVXEI$T+$;4X7iZTzt)m4y@=PNAH@P_2#oH-%iTfca zM1o=(DZ;N?g8dl*x?5JUbCS4HH`|+usd#b&Nxp^fx`u-oE57n2w?g5VN7Y*UDx3@6 zrKVYH;qrK4ZM)>5aEDEz9`and$6I5S(CCB65hchcjZeT?8$_=C!f|8~Mr}oNiV?c% z9Wz;Ir$bq1qPi6JFxlqJ@SJx}6FOl?cdorOsW4G5g^TG~G#U@)pp5e&vgR{@gFqL^ z8nn3{FFvSZaamI%*p9P@qGfk;7)I9oQ^uqusg^a$God%jgBY#aDVI(2nmgqTipSUN z9oO0yLOG_>-z7WRxAz?z*UgBG{A3+FMMk0N)WfByECah#=M(y5K_s_(c6uQZGx41#SDUwO;n;E~sWQRifFG0J?z8Hv2&D?bi}q>7X@jW|2sLa+1-B(R?1 z9`WV%Ax}NW#&@A8C;tS%W;A5y2Yd$PF6t>dhiDP9GfIJzF2&Z^+h)KheE=`8gb(7w z;hJ45I`x%b;PxA+6+}}m*DZI-5zC$DmiuL$a!pMH7+QSUJpdQja5eyU#v%RiaP>3o z06Wf0Xo?#{0BH}5-dS~ZMEW|p|w(^hs59*kM#|;HsGV=pmcfy5MbNc_ol-aKs%H$- zhiS{mVR4};d_<$iLsC$Mc!8B%r6e&L^BP2Fc-JgyCp>=~aNLRSU6eJsv8pB{`)F3g zA?Y56BsC7neiR}k_k)oL$-@b@NFpR12&HHBBqV>ULrA!xn71HnCh%Z|?vSL;qfbPr z=$3k3wXagtzPi#yPJaO&A8oYIu#;efa7Qv=LQr zsKFQv9De&oakVO0qq|;FIsgMesiRZMPBHbqWE8b+Cq?zcnS!nb1KPlR**jAGw{=z2X6mf1Gh^ENVv{{#r zK*>b#G2wWbArXh6%?@lZ362}3e9ks(;VatgSPLX4uuvS5XTNpPaZMbO0UDAY!Fq(` zPwee5kaT2&iI9XpmF3S%o8eX;36gv+a1Vc46HTKMfjcG++&<)JH0|Ug&@?~;$D_jz z2V5`aB>^|(LwL)z$t>UUh(t_2H*qRz+NVV+l7l!_7)IV$+^YkXaY0rohzW6__Ka3w zv1rZ!J@2bOi4RD)=|h%d7z{-ZkC|>+?f~22d;wU(WY}P$A&k!nP)S>;Fb(lFb6jiY zF!xCBU5o9#sfu%KCZG^A__IIN8C7^;1`F_KuVe-is^pdZcy|l5_1duHc$V4dmVx3B zL?rI(&tbhe76{owG^#6IhC+`Li4R41C5^9FsqmaMF$RdoR`i66d>0ByRxbxHMd}mA*S==RT&g zZfPNoI2t@@b{phVgGj?1iHY<93MKo+R7LM*!jn>}7`Jup!jaZ^0R|ry;Zx`P}j`5R4X|oB4Thk$kQ2f(quYX_tyg`fMYLbA12B zAsnnndmT^w61hl>OF7aq{$);pC$nY<$cR@o^q1P{8`57l0V9F_+_}G#wjAs{rGo_{ z`Nj5B^u`1;jYK|w_Gq19Cf=R7A(Ej^%&9_2@8olpCqa^tNU`?PW3hvEJ0f?e5vJL% zlu>KIlXE+E*}>;XEm9w0&yXy9kB;mjXZ~+m8FHS*lNg0_K$Z*N7uh4H3!vVPcz;ub z?&TwR(>b+4@5k`x0v6FtEWndKVSJ=1EVt#*u@m-$Qa-F;l%8 z6!^+F)8Jl3Kwd0oxdh?Qj{-h9-<&y!76Nh;~kMY$1 z#}PsOm%$oGU4kY!x>t|bWoy$VtN3)46WI&4njZ{f{%?>jQ@4FiV(pc&JS->*777lB&_N+EBG>PA91Gib^f z-`#c?9Y^uqQAohgeyjG|m2@_uMGPB{bx@m->X11@I9G~qsj@VUQ8hmr~XjZ>*q|tnPi!SQ?1Le@;c7y^` zE8BAqkhUH#H8J5Ks?Xf&QFde8N%K*e^e`Jl;(W9HD2*&*Baag^J0{82eRK>$i9DFjp$?z6qh;YVT_FJ{}t`ff+wW*!Mi<{?&G!g zV5s0UqWBq&;_J|ZX=5SUFhJgicn2af{!^Q^HPHSCjF z{09_w#oTDT{Ci?LtCW^Up*&OC|`6NZ~LR)JjQPb31okMx4y+K-_?SmW36=>hm z9T!bq{t0fdg1QGq1VL|zpMw&zO_Uif1Up4IDilgoob%NdR&)L35E-8EB=yZz)y}n0mE1RI%+JOF1)c05FsGU?cdZ# z-%RrpCMS!{z>kWhdqP&GiXV$NYd}{9maE`mYtB%c6P%0bz348OG~YskO{qNUm|m)N zOa$3^_*K?6O^Xn(G*Ba24%D>pA1rqp%XLbvg9)=j%Q0m^e0=^2hU11wUIlq$!Xr(% zq}VF>f;T9tyNX3iwjBRU)O{b0?Rzw9p)|OGZK}47Cvk2Sa=iLDzEm>I$WB=rotX_o z_RqGg(39vHN@wlGO)*?WtE`;bOPXTRfru0ZXCeZu@GA6Z-+_Q0LMBC$qDG-Wj1iN~ zDm#aiDBq3LvBH^n5zRQUMSJjsnkaRC#C#+26v3fJtblLG3FM3T)OF$1F=W(P@Cr5P zJ*ZF+`AE;TkxQsz;!1txJt#ZwMQIhI_aY40>$ax~HQ9oh45>P9hKKB7SbE3ei(o)04Q2*8=7fLC9Fz-R_|o#ji|8E2gtN@w$xr=SxhxwN2CjhHpth$Lqi z+KFFxJ5BBn-GH+ahg!QUeFONp=2~LTdFZ|0e z8J1Y#zk5dtKI1@G%`)_@Ilz;mH`#=$lUE~LXdZIJ^hNO*1%cWG16v+06FSq?yF~@J>b9 z#Cz;y{A{Nj*{uP<6MX2`|wuqq@~1m1gC80ZItJbc-Qy+7j$5w+W9WN2fPRd z@RH6P8Aqf(PR!7Afs8`FNP~DO;-N0llQw=pR`;dhAfFOcY?*;mK>c|et#Hq?*#*2U zB#teLfP_%0JkPd%j@D%<`g8c>bG3Su=M>`%*ptFDA<_3GKd4~tVgxa zQ)spaE}5C*p<7(Nf|8(F3KvbUTF5wEAra#ORL{_@sWoQknB3Y1S`VqoGt{eH;tU1z zaHo6tN;u7AiY5@`obeJ0-xH6e(@4+c%i^5cy0{vt2#vn;y?Wet!c)FH$;mM5aU4v5 z1h5hh43VC42hXHkiPp-}&O;Jhqhz>b5OY9S-r0~FaH~%@$0_v~16u-!$~MccfHyLa z;Z*9@Nxj>FBEd*;hEA*p=QZ7V*%ZjbGtq$N9z?eBn%nph>vFHvzrY;+nBwCO@G;7U zLMfo-k3G-iUlbtI^IZ^y_iCMArt`;2ez&Yl79PPDERXrfl!s#TfT>a`?af0U^Wawx zp{%)lz>mmTs2=6H(mVr|!>Sa}ctehXuR?J)T3gk#BaRZ7Gua{ks&eI4MMqhGnaJP>4So zgjM{DinHafd)FIpG-F(>tqyLmZdqkkZu<#F!lNczVa+Z0Ywz4axECwGdO{c6Tat?` z5sp4O)$Tizs+Nw-L_q?~pUACZ^y&hYv@7){$dbTUNpX^951v!i7NfJm2W6;>vnr8k z7ZDbeBw+jrq2~|9T8Aql_t_61P?J;Gl{ZYrffvOAKl3||>$n`FoFt)w53%U{LL z+cB-p8jznLB&PA4BQsk`)Nq|ZIw7kMeTZ{Wmk?I55&Y~Ebr+Hm%{d+4*CgT{wsW_v zK6XFYm)!fo1%8z--GgXCGi7u+UqX=4%XD^9xhiyGg@&Mz9K>f}uM6P^{!2*STF4LaNc6cSh{9zftl_mJBq)0{q#>=?p53 ztYH*Mdp}O3W`e6tMmyiJ4;1scj%cYuZ6T++g6N#($RyXEx+G343!oEt)=6Bf+wXtHW=pdAEUG7U7Q3`&=FXmdGqnaasRko!IFwGQOV&aXNG#Q4 zc@pKNykRPDOTCv8?xJh+$ljP{#=%m@Q0*T%D^M+*k;gIUj#vse=FK*e7^K8(P32vgB z$1A615>3FyLj1K~qkRzVJb;81*%l`pBdVSwnxZ+aenkE{cwbquN*Yk2>L&DiI8n9r zGS*e1s>b=loM8TxsCsRHUJpnhlvj$R)S1KX+E9kD`x>(9eVo0{MB=?-)hM*+p$?v7 z#Sg#sXtJtek4YFkwzsOoJpPhd`jI}Yvsn1hJHhrK-Lqk7!>D$?&ZtIftl_fsnan@} zGx!5$9|dMPacTCjH$CVj^^|g|qdDKQ1gN8z&gVc475}N1f~`s#ON_EPmSO>&F^@l@ zb~gU14@diB)L0E+f9MHik3$O7hofWN4@X<8^LAPX@KGRku-G>o1Z6L=Z636smlyHN z2O?N>DD`D!Ph8g5f1{?Z3JtJJPQRV;xsnKcNq`hWxxMg6PtJ{=+~j$?P{bauTE!p< z7=QN4&)6n~M5oSGD}gy=8d_7)akG%B&#!zj7tQBww?cF9U^~MU`yCfl9}#Ub`auoz zy4b!_x`A%M1*90W^a(hKdh(n%IE&OG^eANdu5mjD4(a>@%Hne@P5v{d(h7VI)9JpXY3#XQM-KWreP4Eyuw4N zk?ey%pB&+$gvZ7!T;Tz{E6D-mm)2n~$`~;sgp*RH(Ucf?c8?RH-gZ5kp&p5wNY zl(ZeN^2Liez-Mj93-F@!^v|!SLd^B{wO`d&A9lgb$GTQqUF~=QL1Zp z_S-MtsMvYwUxtJ)X$w*^I(Mc-HkiXA_^^^D3OVY&U6<8ry-I2tMCnm{=~$ zw|7Ri1eVNwP2xO`wj2$H(@x_H=Br7{C%u!s&w%ku@2c~-Lyyn*PNQ$><_gI``2H%= zz3&}7`8Z{=%IW=`>lgF8_Yvc;$i(}Ie^vJpUm<*!`aC|(s(BxA0Wx_jC;fvw*~i~$ zK)MxPBX4ku9qB$|?$QC8Bi=`Bg(sktZ||~9D_n-N?c;Y6-ym<^TRG3nLP;J!9U2Hf zlY1wz70x3xax3TkKoKG$??YLlKHNo) z%-;#8T56LD;3JlEHaEOtO&@`|JFLEMVJeDao9ZK4W3iSE50b38t=$p}!BrLKjZ8_o z+8NX=VZP=5--AxM%{c)Osm>D2J?<+`17gDy(4e`4b`-*@^v*fllJ)~dREL%RMo%Zy z;MY-At&S7qNz~wV%{eyIko$_u@uu!8UdB;@b}^d75dO6|Q=g;V0gqx}@*3RN{0&~< z#&o_$iuRYn1C~wXsQn~4=v47G6BGPnxhAE(dFW#vGR;G=dB`viSm0DUW6i?|KA_v8 zT|guL7N)>_HU2${v6-w9JF+{ETYF?ocME&RmBfNxGBD}Y>;*p(0L3wX0R)vm`<{(Q zsG-a;5|?|UY>sKh&Ch4A`#)Q^!kgj~RlAGQRn0AEfj@n_SRHu6@}(L@A?i=_oC?_ogW6QmDEe1i7mjlx|H?1z ziC-$JWoQatmhww}qPB(~2b4hc+s(1MfsD)E!@1|dXw&C*QkHk#`Wa3Qk6woRoZh7% z&bE7jjVQCxVSPmy-9__Ez~Y?l|HNxQfdR*%b5zPXf#{38Y^0i|e~Tl6y1GzbtScywqy zYTeJM_051R5bX&GXjMcTWb=)g$~(PI0NJoh)yahh}>9IYxk=_WSl85Id+Qwz|=Z1OWjP!$S_wZ z*Cvm?B262Gv9lfJrX|r517TDAsf?zFg-$$MCh-EmqV8 z0{8OH#|Ck6-2nHtOS}9IM_o_p3Uk?#`VALu?1D8-HZ+6Ysb&G4Q`!sWFpVV2%It(e?uY1g_wa2?97aqG>*Pl_6i>Q-Y;kiM# zoLg(l19i*!wYD6P-04}RGIO|gGnp-OQQ$DVb&k}9E~Jk3I+k%U;CS9^0}Qv(xnOjx z9AhOHvQFnVmt2M^FcU`?gIY~qD)a7MIhXtxsUCc#Z;0)=P{{W)RX#rx^7DOZynZg`>$W;$4w*Iaj4 z=Paz|{o#`*WM!mKlGC@rD^RV-$I?^?=p=CpawL5h(w%w=4pPW*N~~Lv)1^YGlt+7+ zkQyOzky3(3(-F{p=nxw|iw$(eKk@x;&dP#)(kog5s|2=mx4d*=3*|+5JBo!;hC)ZTP_9KOWuY{q;Es;Z_3f>My|RPCGU~NZeratil%~+IJr+tE zLL(Lm6&GWn+>L34{-Q0E1HiVjP^?HZmTIH$4+&d{SN`lv2WmTIc2hPecFJ}0U`@oD zR)1a>ra4x;lwtK?wv4919c$VSsW4Drstkbv13Tr`LD=3etT-DQwr`O0a=ahdC6}=! z*d_Htm7_-(o8-nso8;HNahv2CWs{tWYRV?Daj~y>>_#_p?UC@-CThes89Lkbv%wFdFKru1M!9!hMV82= z&GtqXJrStHdxx!oSWm--(B3{(Y#7MfXN3+3nHc$zdN*JX@UWZ&J|zE<56{J47zf%@ z@HE~Sh6iN@-UeJyGo#YatJ7vw`a+c@2<<`V;ZhXBJ-?S`f*E^cc8jd-7FmPyQ}Zi# z*PUF|aPl_|^K+}MF#QyY58uTn)o4)jVG!znA|E~qhl}zQlp;{g!-uU2jqqVMo(v!U zg6WC#;g4V;!-ox69t_wAfBCcDCHa$V&!QHfrtJzmTA)h2(ty^!x8 z#NX%g{qy+yOum0->hH75_--q{vd8mfj>~`c&3wN+{yv!R*Tvs2;d^uU9aH55#eJvv z&2Ec)b`8%rH#v5prD>abP-aPa% z51Hnn*gW{n!&vh$LLOj!m*K(w@e%^5FHNm=YZVSI`^wGG^=)A)=u5b^NIVzwn*(xM z%hAr)^UFr@2B6VW3WE_^7;tEG6>#M87gq!$X)Zgz_Z@!ttz37rq_GyTd~jdaH})kE zx?sGr=I}xU;+A}XXLQ=INa4P3|0((eAEe;ZZv)a*z0Dq0$)LN^Ul93LgEMEWV{9=VJKnsDqPp!}tdT%1T9KQ%68FwzG z&M8rJWw+%EiA?z=DIYSJl&A8E(low52a=a{ZMR+B3-7O~cY6n4ZjbW=_fn&&=gbwM z-3mgR8Yn(pg_I63woVq@9vHoI%um#(L5|tLs`i7bZ+`Ms0&dF2XF(ofN7?@)8qQ!l z?BOuPjGUr!tQ7cLSdA6M`3|0bg9rMyx_}dnZ_5g|hxeNN>4!2vQncB+qQdZrI9Z*| z4FS85Ew}*2-5LwTipQE-Y?r@JB&cuh?UPrk4K49UV5HRq7(Y8zXQZ(iWEkgwy>rC@ z_EXrG)PxKc;E&Ho^AtFa$edDB-t-0+Op&*(z?z;#QU+rb$Uvx}{W!c`IT`6oWL5VH zntTaE6;N4nBTC9`l~!mK9wX^a1^yWOq#W{8>=T@*O?tv$JoBIA2WLDk3ginkc*r#m z|BeL9FolmW`|s)5Kfu}FgDnJe5^xnN3)?<|W{!CG4ygdnFF2g(B5RG)dce~9?j6c9 z(Jq{9K|#Lw-$#r^XPdDfAnU_!du~r~LsOiOr}=9p-!C%naIo0}z=5*W;IshKP@m@) z;v-n@YVfJrkLchQx(#b5^cwq87H9&kH4uX~H~F)CeEKsXE8RJ5uTnJr!u%8DL!O?{ zNA*@A=kTTv)m;25CM@{!FpIoJ#2X3WoQh_+cR3fOgWTLxyB(ZU znH>hGRw9qn4y$x5%Pzz_@{4-i&IS>thnK=sngFHW;4`a^m@zpbs^ZUl3IZP$nS8n! zPeZ5C9w_XAVO1#lg37oI+I~UAR@;F*Wh9?W6`L+Ajr}%6G)5eGi4F18DtA8- z0HoOs(ID-5=M0>%?~i;(q4<6`bg~7r${xS&j+bZO1F^IC7Q9LE@joCt);rrjc{R{q zl^?LWfA9Q_=ikvd}! zUYNlG{Mm)b;Bgs6-RSRwR=)HDYUQ1$(fUF`R^YE&K^wRX=Y?8X0x+e=8I1lpYWa`@&btGc^>M7=z2kZO{26Fj*XfL zfA)`XXu2JO3<_;u1+j`Jt{_D$?6yx9>m~{cUF;${?R1HYIGr|>0Bs};~vDxAL!xsroH9wL_M3p zz@=xxe*)k~v923bv2=T$w^$W>VzCxtKANxxjaNAe_DpIf=Gf^Js9iW_G#Eb$wvOkR z9n2s%9N9PNVg^w{*CA$4L~K3wMh));bBn5wp)lFjS$fhihEhzLeerVc zDIuGqBHFmL#}>yqA(?D=Oq2Ol%EK!?X z-0n-->?%v_0bi#jZ!nC4Fw;vRX=Ro;d{etU20J3!xikK#@6d3nR73CF%l1xuqp0RS zkMkN9C93V$T!cla72OMvh5h()v%KuKd-CO9a5XUJ0>1DZB`&hp-oeFp9hcYwp*@eF zFy}zjDkOedt9E2(W87HOT{X_xx?Qh=o4V*#@MoCYShWfwyFnatQJz1uTA8)XwdH**C)=LIP z^Ut{jTL?84`loP#66c}`I&#Oy8DWoN0_nk%EJ}$5{Qfw#*m2-lg$Z}(ETPO%_#>2Q zg|B4@OA-Eo9}(9Mvm1x+QrJMvC(eVYmz}kbrjb+>9d<&>wDQd`!J^I`m5Ss@o?&CX(p_k*%UM zDCtVFS&>tzu#1$lB6)arE|E-Vmb&mgOq_{-?BSg-*kW*t+wM*X0~b}qo81d#xNKDc z(PE2GOOb^{ub$2n5HtYO@PMVS4c7fRde*< z4t*TL_Us{2TYdKCX2t1Yq``I27kSm=Dwd{)Do`5QpxZLu52! z?XGwtlMaW#ByaZS2-c%Xml0jo^|GmE-&`~%EZg2Z^f3>a=Aqa;fMZl)zj+vI9!Bti zV6@UgsXoET66xxl8lVI zbp|ovUDxemWMCTDI`l@i4hDW33j%chN2&Uw6;|TUZu=BD8mlR_eRfLAt4jVZkQud~ zyOk$Q8GbGvjSceHZcpSL>(0f_2!8T)Y)eUsy7NJex1zQ(BGmz5DVg<9kMTyQcAQHdC71h0g6jnZiDy9-gTTjCLrHckHmlLP^ zqQ}xl1dRrf0IjLOlPa*WT~;4ENc5KkV{=4-_mxAvLLcy+tidL)XsT4>_lXMsF%@{k zr+;m9c)7;B5T{zm_j{tvmoT^mfP<{7Su?H z`;f)L7^*860#EiapQxs-{%SLAv+k`qZO5_$Pp_16vjLrK`-Pil;z{2DEnG?LUQX`7 zWoDCV`6dN-Kr3L0+pk)oZ7*)+gRlT``xvrxJbCIU&{Z(9iC86e4Qe^hg3!}wasUSe zfCwG+@&OS2^B{UJ;J)$zs9umZT-&KcOfr_QCrlXc;gHsw`O%z*851lf=M7<+^2)(K z3Fuf#`mirOAMB_(KuE4Hvbap7N4rG!0|&35lyXZV_zTHA6v7`Fkr6#V@&g26JiE0& z+VlbG4W~vl_eaKNy57tZT7>@W+FL}{i1v2tTm^?rj)pQ_K^=G646E_>SqCB77-85B9lZI1khgM8Ld9?|8`&n~ch zWqZsC20;U+GWzr09_yeD$iV;}0!ikMYCaX8TAHO|qX|**5quOCXKylZ<05*rq33ce ztNw7;maWb@|rvXvMco4FrbZh!ZVJN4G5@b z36*&dJg&nLPG02pfsrw4KAC1WHPIa|MEwdPueZJR(@f(qbIZfyUbL$LEfA2@5&G}F z&Ow5yA`+BAf8M&sD8UCM=#R&T`BAce98)Wq1F2jsbD*Xr8E$Z)uTpk4R+X$zWQy3h z8(nA@I&`Ztn}v?ts`O^D@V(O(WZIa zfUi&unF3O>Q7iIy_?=^0hAIZU0Q=2(AWN`@fe%f_-0Dz*a2TQ4!V~*ACcW7bTld`j z*h!#fcesm0_1B!wE>-J{PS_Fu9YvYrLs&pK(fW|t5PEsCC4%l+h}kjW&qA*&=sz<< zv&?lG4=Ham;hD1gT^N#3K>IH*awwnEvc@B*QRwXEhC)m#`Z0I>ule8i!;n z|5#I5i<+h^pqEdBd-YQI@=s}{m;S!N%=j&OB@)u2m*1T=1zA|9SvbUIHb^%kbK;V< zAoE1V)-5y^A-N~gtXmvaqHfxq=-JhpH-m=1&TaTH7D^0jigS^gyNf6wh=eitVaKE4 z&@+ABGlLjyD7)rGt$==^FpZf$-YB{p4nV{i!-fX<$zA>!(t*Aj`ZdAm2Gp#7utX7` z`pV_c`tv@KQ9?#R&+0pFJ7rhb5{RE+y5@X{cY;(Ea%o5c@9wbF%znX?v0oVAuztd} z6rfRCU!T@4cX{O7YjVU!pxRHi>{%^EVsOH0UZWqF6`m3nP;~Pjc-cfjgk*PXVjWYzW=as(+1H1vjzX~xQQD~15eDN~sx6z$ayy_D{Rt)&2%rBqL`_kNL6!F3 zVg1e9b&njO`{Q&8*BnV12+xogVQDdEF2@c#IakbyefWc!D`@cXKk zg1Cq(CHOk3wri=)yT+;t6gxw#KKRRl*83YNkvPrJNX~+50B$$cd38|dW~y`V0K(lV z>>oMJz?H7>w&4S7SKa(xO`EJ~WNuBL<7>%pv04?W#hY{Uy+FPe2kzH2I_rcx7J}<` zv(`zGY&pjwS{3u#*!lWb+4WMDUYNh!{4~|%!(fU}FbulPVY0J&eIPJ+$4Xd&K~-(p zoDr^>spOG&9Xre=MiL2(1-us(Z8TrV;R3H0la#QAFcQH6E1zS+7Q~WI+BeR(hBZAu zy;)6PC0o|?2Qx|XYno~`f!16&1pGPv7z=6JrB;Wm3}EZT6Tu`y;wS|1VA(T$3tvgL z)4oQoPa1DecGht+^DGPbF^LC}?niKiW--%CBpw3igM60ZswFFw2dY946N+hxy&Yd< zD3HHwpQ7V7C@950(o%S|H*3jl#*}GGQqqJW)3R{08TVo~dsFtCvFcgHZc{XG4J=Vx zk(5mF-o8WY5rcG)m^6mc4QVjGvE&=UjC%=)(4S<@ME#ZzV0Bj$eno>lsJl%ptbXNK zq8z$Ol8QCQ9zj!LWJfd66ho3?va;$%$!{KXLfFdEzOdqzP1JNF0uN*HDQlA!8YB!gYVHATXkle?nVmQn4IiH{;_K|aQHwE zGwIM;w2RjD%)wpY&W$J*r51Q~O01-L3(NxZXReE=L6bRAg3UwJf4%6><|HD(UjAg{ ze7Fy3zwSBW@*~7$Q`bun4eObpgdzk}2}3)wza&P^&lMxzL*rGM0Zg<4O2Pe-{Ni~; z+2%;NK$LBsDGFqo#SU@uCbU3JlpQSXnVuOZu8FA7zmFP15NJPFb`Q>N{t~emCJL_e zUb1|;d8h6sJ;ReE0Mf=$nF!Ww>B9?lount&7tf+ z>PvGG@;4C395E$W^mFPj+ooFd*DP)aLfBukxR20=#q_*58#=7N!>B>qneN>c9kjXa zs9|+SmfSeL1eRQ&@h}Qy88JUKN2h--OBb39ocnVg&O#YuLcqozENc9&3=p`D)IhH} ztrk+gtH_sAZiw4|Mc7Q$-6^|=jv&^p2izORL_R6p0G9l57g(Kr(8*Z@P_H>Yr7O67`rFw2ISGr z`}dt$D_zVHPE@?Rf&`OjBrIV}^yiHY5==IcpbYx+&LhET#Nx%1IVsUisA;IUUz;My zr~LZ!_RTms*vN})c59&_>-!f7-V;|i-~TNVTA7Lt9DVRMV;fH(y`2NF+7in?dz8fL zOI)HvJlj1G4bmA9e7;23fm1O76Sxq3glc9hPx{A1`6%Rl2RmuhWx<2(g1g7*(D3T? zrzY!l<_-#%tZx`Vq}f2W<3Ak3C&_q4Q4<-Oh2yQgN2*6kIgs|!oBi$(!W}vklsiWy zA>XIbqvmq`5d%5D8|!m-G36rn%iA|Gp05Q7EynX%OK{uka<>A7<0^G0YgiUlk^Qn9 zvehFTdpQM)%8^H#HQDo5y`Yp)``5R-0PT6Rk+iP3G6{=$Ipn zWAEJ@6tbRB$Ypk`fBpf8qKJ9S!R_zHC+}nm`8O*O59)sn-Zs?FP?)^VsT1vvDK$6&&r%N?Cf@>3uzN+B2hjZmMnvn(Sj&Ec9UcZ54w+OdBd@o1|9xs`Vf&2OSb7OW|d(Q1eL&~p8&MYWzK@FMa_l#YFlB>=y7|9T-?m}ZM4T&bHdUt zG^p+wnzspFmXMq`l0W~$DxfB8+ z58Dm~t{}9@hs-{~_LRXEdZ_s_WKW=SlX@9g5qLWQUbcr}%~qM}xwn-*Muk=F?h<~B zrwY!TK4R6a0Cn-H*P8S0a5CZ9fJh#uTOv{aSe%RTsS_+&OKSekxFB<+ZeYJWjSZk? zwjfK?u75V|<>xj1DS)5KDc~O*=BrB2&KbO@qMT71Hh`Y0C6neIR50^^fr~FXj)NT# zk6YTxSGrok_xRKcHr3U$-%|2#=RlO0qD0gN?4G?r&mx_&W7u-;SY4jb z-ntJbN~1VOvG>=Tobc+Vl8}1|zxwlb4-!g)1ZA*Hd)iKd9*}} zLsX;xwAoejP;7m?2fLWNt&jg4_J)Z0Rz3)g66pS=l8^!WVc5jYsDROWEun|!Sx)C7 zlMlmDp_^U#?I%GJY4p2ysAc2H??-Lk{=E7h{MY2^noH$Uf&AHk_Z&hM+1mdhsS3yN zZa>~FNasL4ECNr$+bu>pnpX|!nunsr{}#ON*j!b5trPPH$q;Mykv{Cs=lIlONX);D zt%c63pF`_goGI^bc(}mtkCmuCN^3Vw1^|Btw$%w^f7?bFbMuSdGeh0sX4U>t57XyL za+rW7+##|DWuri%)ILen{DV+fTh8I_C_LPM^f5 zzM9Q-sui1`{cw~O+vrWDnBPMqH(5_N=;m$h+{^ zl&NdY%no=&9^GGAh+Dz{=D7v_UWANDFAm%Si~Rp;$QsnZx|JH?1>P85Li+Zv21k(3 zSDz|vqj!cfzO9$YJc-6ud@8)16XGq0zav>LD&9$5+>S1ap0-wv{l5uo+!V9tiwlj& zIRSgr(wu7DS+%|x7&+5AQENH1#;1O7v>_?i%oaH8H6?$vspLPA{Og0cX_!U_Fzq6k zdYM=`teZuH{0?IeQ?)vCN=az0#+_de%hkMdIFz(kwSIp)n{V-;%)E}Jo~Ep35txN{ z+11b3moph(H$Q&4L>44!33JZAqUz?8>R&~%dF?jxmv#Qd(i?GjI4uY+i>lN35wEuz z^p@GCyT7&6oIBd#+>GZ0$@rQ{ev|UfO&Locr@GEI56TJ+jmzIBFaN=ojGc&y6)+U| z6TNI4;Reu_ou4pi&7n|fh;H70W9pP%p|@^+h7n~8t;z=(-pbD~!7}6k@obRpfL8La zkLjkB%HMJs^rXqcrd?M2$OT!ke#*lp)_1tuR->InpJf8m*`SdDFzi(9E9tQjny@!A zOd{b{7NdWZq1Cz?v|%??wysczU6Bj%qf``%k0rEcv&s&S{f79Eph0|aEe_F_(=qNd z$`Kv&A4PN=yOpGcn=ETe=_Xo%UVMlg%q0GPzRe^Svsc6vU??&)lUPLg{0`bo;&EWl zBaz28R~ za*;ITNUW`(m8)q5`{%!RxSAWvzURp`a9e%@LeEjbEToW%vzusM&SRXYL46(W&wjiG zJ*cMtYJw41Ap&(fff}%0=%^V zfBXP~p?q^kFRIfC29=37Dv$qya%>yqkdVpEp#=;7q=^B595t;;e~^op%>wPJG4v1I zAn?sM-E5Q6&FqiMKT_UCDz|N#IP#jk1zSQ~oV2aP+QeVfVpxaT-llQ=W2r$%YN@l9 zjmXhiYb9E9n7@Ztv6&Mp#+N-@WrbGRr=rqIZwE36ic0@v)T~#`tN*9(+~%@Bi+fGv zr)O&T|4cWXgmMHGOczl86G4<}$@-=sNI5!8a*AB#{98jVT~Qebrh9MJoI~Qm{N=RJ zjSR*N6D?=hU(_>*2mSsk+N-K^$6Jd8-14Netjv@6C%-5Laxm zZsU-q@2@Nsp=pYjx&w zZps^k-#oMTEjP(3sJP$;e&|UL>j@9N!iPTgkU0){vD}*r!G@u1PGcWxbf=+CL7ySh zV8;)}5&kN30SoKtPjp;#YjJuIo90H_ILn<-nK5$Fn512#{rqVxR<4o#YU9E%>*k%s z^sdTSvnpo*g%$xc0bFKh^HpWNtCB%@iYkNp-gFcfWPWsO+H!YNJ$72Vf>!S_@RRNtU0aYXFG!vLXjh!E!;YFloM z^yjsVA^R_eFFyU?tAq!CBQ4w_pgOR^_H#10dLxw6~81i%6804_g z^(M9z`fMA-kaGh1sLt%BP@KipeRuCDG`IE?@wf7yDySEEwthLEa@ubS&IjWZFqA^KK&G>O-~y zyk+-RkL^&zOJqRkRVWdj`gLN*SyYFGg)Q#;B zu>=$zy}f@BOclj%NziC@`S-EpP>HkXzFoIaX=K+`JjflwH4TSB%{%thzHMFp`)BMy zF755?;z6k%yGOX4G>)sMCZiR_+U^OvQ?ZErRhVi1u^7Zr``(@H4EgCB*W+Jl8VnW1 zXN;3_FnK`ee#+uXZl<65WoBkA8N!R{$B8>t2AgqK>0Kfg|$Y$*OC zM=krM*Y!&iS1V-7hKdBUDR1n#(q`Hd-B3*>4KSM+tcSPxV7CA~Mr4c$f=x#nw^;~1 zHt+NfER^ z>d=yFaHFLHYoACTnxBs<=bIIoMs+pi%WXqr*^Hrxxm#^R4amcXc7-aCP z-)sO`ZYDq1V^4_izGaox0~$EA_*^yTX<5RFFaxVZ3_YQ%WT^( zvs3@_x9WN)(ui8ivKtVhBxP6>*@Y+jZV*ET0|W&p+mK^?6&Ea2mA?^7{jBL8OqBpk z;Y!3kibp?F=|Y|8!E9(5jD{fqBri*9IBc4?Rp+LXH?5l=X!=@X1f ze-e)T$R5~xGwP`>UuJPk$5fXu=c1EEvD9Unh6neX=rBZ4HR9BJ;%DFpIP(Xl}D$l`Mu1=SVOPG?OBxC8N2u-7BMLFjN1I} zZ)uf$FFUsZnZHPZ9G@Sc{U|TCjDo0J6HLGD&wx8k7E9kl6`Ryk-uCO@pL19m3ixRY zy&n+0Yh_@~+K}(sMBkzKr;i7f=}+R*_mruC6Rd!uIXv8abM3CVT7Yme`BuZB(leVB zDrG@x>(c&Dr1ncMhuF#>wy74lsG;IC<|W=;r$b;U>E1K*baa8Y8=W!}*MEtntVn;I z6u5l{!On?=VR^TZe5Ts#!S+0GO`GPpH~ z@FRmPiLlHDJCq3jwzohcSX|>-QC#C$p+p!@CdhQ4B*IZhgoXXm3tC8oi{h(hBLjAj z(P**7XYr<(L)Dq1`oyMuKXwCmd7Mn@*bRt-F+5}r?4RirFJD==pCmzT!lb|(k_`O` zPZ@h^q4y^ZEQFbw8IRpMmzxCuB5xA^q95;mKKk!O z@9@)U^w0RIXTVRBmE{#vOeAo;+q=kW!jf@@6P~gX7rt+w@cu6ENELdPLIFSb)%&dM z`<{AV5WNe&ZdR+{`+>D(p%d4MM3`{;sxiMlIbC3g^%o%losX_vER|q0vNkj?{E4dj z>czZw9b>7kym-m9r-wXC7s?d^N+C@HeA=RdJ`P_?Ol9m6Pr-gYm3%-`XLwe?cANvBJB6?2_=Q zK@^EkUn**w1km0<(I+BmxTvsc4By>M&L0bnX-u7h+>7$2|D+QAowbTyC8kTwtRsX# zVev80AaUbUz>Y+3vfL)fZ;9YY3yv>-1ng_z9y_XwymTHmR;bSffc%gCU_MnhoD#%^ zT&lQ`Kl-O=2rb^@=V6@A3VovT>s9%iz!snWgz-XPg#>1ztiv-#VjVt77Rf1ZFa;zi z{GA|dq~o^y+sWTfbkQ(4X!f(pn)I91v3_s(t317wk^c^#2&_Z7=Xdg#LJ`<{ z{<&bz`*|g>41{{TAM~`V(GmUE%W^Wrr%%-wNRY&*Kdr|a9%EAuBm#XW|3T^vt$y!& z5Ul`Bovhdt<=sVjpC|A0o%|~W7P6>^WRXuO7xWYJ8<9&dZxGa3on9WFK3fQp8+UDW zdZkx<2m=+C(L=tw%%26J7%bS!E@Ev^=;|~n?cOMWJw;c|My0dv2ooc;N``0hJ0;1O}aBzJA2A)P&N10 zw^rx*+`jT+k5Jdo5&t?{wBacAx69?DL03cBq%nbib28!dgYh;nhpgV|3a&-AG+#v zFywE}s~ZQVCWs&=vxB;qNCY($-!KX&VWto2O#Y;&KnhI>Rno&MaqteLxzW37;8HKw z{jEB4C{b*p{kzranM3Ee`U5=nuW5(#Z6?((rut*S+V*Ouq06Oq`hj_L*%6?Tn?VLb zbmSazVpxf5FERGYl7iX^NVAUderUK5n;4TfTH7HE7b8Chc+xi#O?g3So zb7B#q`Qg&K z_BEM0ol^Y~`t$z&t%kI&9A6)XfP8&(y=Pz$1&mK^lngw>2^3RuJ&vILhO+lXxhT2! z)eYvUoP?kH0Bqj0943+J+fZ>g(+Tf{<54wJsl@ES?WsttD?~q~5osu%sgn1pjZtj zj|RPyafbPCn~&1*Z~S<-FlDP!-NcLI9?{&)1V}9PG0(Qt=G_991(tF0R0&URd(E^J z9koq!$f)eHI&OW@1`XtX(W)_zfl7|nzOK45hvIN|ZuY)~KPF(d)DtAzQC0QxQ||zw zCm00BhZUcbue$sf$1e_q5(B}-M_%7PPheD~&&9^YY0e5E_QU1hXfmjo_e>OJEUEcY z^J^1lM|>2kf5ccZv{~=uO+&MgTKpS%adxAT$OI->!D14mIEb(+Kjo9HAyyd4{sYWVd7waxd+o1B5cO4amN2K3H+-1eS`8v&=@&>daL(%ZU z#BVDbo`FTtKyq0l1K8#AYuKg}4lYpfxm1v`7~QcZJ+eo(#%pqGIVCVfQ@=eaaXxJqGz?cSZ%Z>QT*!e;D?3~uhNYFYZ%zRDg9fZyBk zO?9R$KEjZ*@5AEXBEgF}DElHHI#CYDAkCphh1;l$EL%vNgkM_6-}q;da^NY`;|>R1YTlfH83 z%@ke;992+!b;hlqv273H9$i#ZzM+<34<$qUSn6L&Nw3o0SFgs}N+PVRa8<}IGfw+? zqrZd}vg7TY4^u+Eb=!zTN1Y(Y*-Yc3u1K}`v<@RRQDQYnODO#q$cEx33?^GN_zEeg zIAGrK@Fp}!zhJ<0ouukWlZlmlhHGQ>c$tD~;?s(#(v40*Z4dd<9}6sr``uTja<@xT z-wPI&jSKyp_}Rwm!y68cnzSFE)|r}+@eV#GkJtbxvD2ouEA~R|z1IAdH!Zs@dGRghaYjqjlQj6i4el^M&M5LcYvmlTfEaEmRNk+0!qYZ zsK~OhRN~~nx4onn`0OM~+h+(BNhl2!+cgxArQ)faH7#h`Ur1=E_yiHyMpU~xXU#DJ>ZxOGtD2*-k^2Z5Z%yQ%Rz zkEV0yFG))^iPd#&>P9Cr2e^e3*2*Bk z*f=(9z_Poa9+wn7j7!76s%7cDa9L$L^!6+zLhBFS+J^evirFqEFSXcZ=L>E6_LI6m z->cJ0w4dqHI0!+ECvu#&0e?FAHJ#d#Si4@TaVcBO&p_nZXA5(tbJywQv`y#cBmagp zJ;i`(yUM40pISnDP{;wA4_t{jvF$3kt%dY1muMaHxdY^Y>*04cE`i>vGgp>qIk5Qi zOW0WEam#+pi3UY znDTJt?h&7PpVCi>%j5yDY12KDYv=Q%dBu^L{onB4vX?Q`P|)-~sZeY0i=kHH&4^m- zvDm#=j}W!`H9?W@oJu|X z{z$t>|Agq;d`Zq=_`Rt**fCsHA)YInuj(4Qyr3UruXDd#yRqp#b*7rkE&P0+0BNED zni(7U`KI#;z@3-wBYO#4Zwq*7dO&r_P(UBqez*ykX1V*}uKm`zkb+1B!LB&B4U^8{ z5p&!4>^a!Qr*AX$fj{kcNQ&-55oar)v$P6t#H$_dCic$KgOfN%9%K?{8go66a3;OC z9dZjf`W>!j7RPvTI5`ed8PZfU%88tN$URkCMi|8Vsle+{rCq`=a|5tCQk|aPikxGg zT#_B`Yz)~-zM%mUuCboM{TF;7CK8(ztvi|GFZ%)=?<4e{X`{}L(IbC)u6K|2tW_la z>HBT&5j-&Z)M?wzY+vq49A9ad{bC1VpnIGR0*32!@nrnFyL#jX0aXb%2P@>I`r1g{ zKveD83Y80mSv9lBre#Cen3b^IRoOjNdvy(b7uC4WhTDa2z1b{h-jqyP(^>Me;6un3 zc*_dNyrjSgRXv=Gt7FN|d~eR18-uM00oHKPaQ%6asjKyWk-Bo zSH;f!=(53EXG)Z7qe|Tt)qNqkSn4i}0m-oDv+e%|n@x%;bLNDBk(hG{eX&4J z|Ab%RbYz8DfigSp{;(Nb7j^@OtwXZ!CLm#7M;6g0*|(7<7Ujf}fB%D{O$?wL`lzqP z%P!!jd`T=d8;}6BkFJ95u?I4!%O0@ozQ&THdM28$q2 zT8Du^MBPX24o}H#z(-B_X<+QkT~#kzSFFA}d85AgG+-*I>iJ@vK)BVhr&(05kQVfd2!?? z2q)B~KybhLIBdbFehfGHq4?xvXjI_yht@`})2c-PvD@vVd|8F@lI9FKOg{j-2#&wx+=%19j>yrwpGpIf&%xHV{kxQX-HGPuU;0M>#|qOMMAxR%N78jh_|vUi@qVqDlgS@qwY& zRE-6H$+hH`jziJqo1K?yVAAWfLv2L_nYX+J5&*6xBcD&P}R00YB`xoG1L9%A(~_NG}^RV?)kFW#Y4r#_jk zXNXc&L-T(G|xq(^g^ms zeMeAqL@f0OAsanKW^V%%CfBXcdgyC}m+Z{=NR3!1WJPN7$WXp-)Q_Ic`%zktO9LA=K}w6;812PMBCoire=>A`{$xWGh!R z90v-gbstl}7E`vcAEH`yUnmA-=?e&d436WVrw#g!@R9ulTZ}_+CDI@0i>ya)+(6mW zLbynb`=%9L<0Obb1kkpAZ)V+fjWr*c_jXss+9jN05qlF&@g zcr&Vgb{|z!cDVL2dVLik;nJ@AVl~ocH;f-by)jZ*O)=>23QqI3zJuhhZPg5BJ;$ z+Gr@=@>EEJcp}4s-L8{)59fznMn`kzvUk^Nw`*S}i2jG{j*0MFohkeSHPw{QGrz|0 z>hhP&uW>etGw^GmE4;Z2rQMuA?KJc>?u>8tZWp*SCfk#&?5(tEi}j#+u~a(@NcA|A zPhnef2t_^7;;QVB#Mn9buRh04P^}>iqzduAgjm6q%kDtblK&zbYy!HAO?l4_y(QA` zn*P>x-TvDUUW{amo!lRi zMfCj^zgo+5^!+b;lZWj{=zCUW>>u+2`mRjQtL=~&yLMyUHIVh8rLifaAnlpywNUm< zzwOv19mjswvCsUvQydlFYlhRIeJWSYgQiEDop?F>HRq3A3q}8k_8q$xf_@Bwj%SK8 ze=T27XAZU6a&xB5GfEx}RWO*2l9NvZ8~(F-_|MoWsRdToYwgeM!ss5EX}`gL&Tz-L zXNvFLQ~iF`=x%xvcR59z3+*6#G8ft`S*qB8Y=2k~ zOFpYN&PNq_*RrEa5)v<8J`Fwq7Xfy106_7ZK3${-zfA;W{dto_?aDEn^XpB$#WWA` zWb~RTdvmCy@(S3jH_J3Z`)TRT>K&T(wnBO)(n0x_ z(a{Y*-(HSM=N*R&M8{hVK9=Klvc8wp=$G^Yj3pFO`XZo`4Js^pjf-?;t%6$ z8-TFuSR?sRCnc0>>zs^w?J2VON?S`gN&RCB3hsqxzmc+PgNUeqSdTUnz>{#NUeXI} zEx_yja^TqZlY9>CrSzvRwR4!d>_(%X@cYm6gHp@J>$~k3LAH6Hhu{5g(T$P*4#E!< zd2^!lZ*tRJV-H1%%Sg;?FB2vCB#lR~xgwWE-#5>%FGwF4rAt@mz!UU-zbL(3tLdGi z^ftNaxcSunfPSz;wSpHEdHy_ykpcZME~*v0pveE$X7Bwp2hGnst(DALp%3*n{)3#V zZzOk4tqU#V7^sSRKUKaW@BAQ3k^d^G2HyvR$Yj_3?zCEhBC-L#MY zEt4P{&rI3NM~5nDG21_z&+m4SvoljRNE?Y!q0d>C9LL8LOLr>0`7HEqjBLu@R?||2 zuHQD$_vz{Esdio0h{YQ##|WdJ&_xFy$N~R``Up9>NYTfv=JJPX*)3D{Z8b*4gs_qN zGY!hng%PX&Kmmb5zsc*o_;cL2V^#WtbTXoE;U8GAk0oEFr0tkn;SHH%erkUpcr`zj z_Yf2ly8e&A8JXw*Vy6@Kaba5~&#MZz;D1fbPE~ELy3U7c?&t${8{EQ97olevCmL)8LQh%Z$ zSUGEOt2N%7gtHb`nL8%OB^!oTa#NfM)ZYd1C!1I0%2jLmL|XRVpG9}aXoMP$3eH+A(Giay{Bt=* zRn@>mee7rMphY)7!6zB(52#SR#@GoMu%Rm>O&^TAYr#C27n7%wSlHqF`GW){pfb5{}iD;7(LVmGTu z4W*r+Z)HaeaPZ^? z3RKMi?*gkce`0xy>xi$8plYguW`~E)+g_I5x~dr>fHGzO2ph1C-ISW*AX&JTUv^fhi|Gh^0eoI`JjBAYy7j{T+5O7!oFY~a z*X-dLa)$aaxp}E@NxklbQ07*HCAcx^ap$z|IZNyR>Ij{9L)WiG@oq@8TTg0-_p+5^5@^154( z2=#m5QR`7W{gSZx3d>|Ir>5&=4TYff*S5HcCZo&7uo+l@4e$nU=>UsJ{@=1&ay%cB zxdF+hNOJ2Ej&O{+AEo=hwlu+@YF)zDI-cDf?QUIg^z7Cq9za-d#Lgmi1S=FdB3&_EX=AH zeKteTpQ|&bnd0$CFzqKuO(KRcdUCi)w2IUCF=4Oc2VZOs)xu@?3uY26KbCaTbOg@2 zE+yS0BMPfjtbB28St2veonB(*{h*QPB{&jR#ctG%&a5{h2NgVqa}m{h5mE;z{mMQ#>SAWf?vUQw2lhrV2R&;4ZI8o>I zP--j?_B&L_ASK?|YqTt?*F<5AQZN5d)Rv0$Q4zey4sn%w<7>5keFC)MC3eQl*so=} z{NP`LsS_W&q%zTPWFJ0o$h;~&->=~-7~Q8Uy@%0)d5s*n0>9Xk(O&8uk)IMBbqq8w^BgU+8au-+xp z1B*~L<3E}Act^hga3DXm8)`|TKcZ^hi<+GIuYD{9xWN04GUy;O)mj9zUf!Nl`6B5- zEk@3<`tf8Ag=T6jFWyVfqpYvg=U-9$7cx;W#h)6;Q~%6qJ81Jt)vPaes@m*D{|HLQ zV^fM^Q~v75m}nsMjTRt-Q23iuur${~GR`vtJv;3FEJhq_u#8Ot#bi-toFj^VERg%)0(LJLJUW1$5r z8*l7AMr8Q0tfStdz~3D3y8HouQ}h(J<0$z`xcj&3+2LAOuv8t1&-kHbJ-w;N+XkRb zc=-dNqfJ(8ZVDOYSNtY;GsQ5m=Zj*`|J6SV8ix|SyCFDd#nkRA)8-QfgFs47^2O@A z!T4^@$0m!^=DbO(T={SC`O7B&c@NZW^xDY=iPiF|dGm~3zau#-D&mb-0bYEDkmk>} z8ONsWPen{}WT=(({*X3wh+qZYs##w{i}U<(YJBChG|nvYHt?8W7CBzOitLGDQ_nLC zS>7oJODUA?tevu^VH*nh5RnmvqDah>)b9(&iBwMf#}(kSAYrqp8$Je)68>63fps&aBN zCsVx55KnyRV-%<_rWzF-DY@P)+HCh%I#9-xsp6&AWTnO2|IGGf0kA3NQo*^@0FOi$@O6M4soKA=WAanz_ z+6W_mv1o{WtJrV=rbWXvYd&E!KUx|S4X0gt@tjKy2VKnw9{qX$?Cl1_@acxP4)dvb z1heTj4uhCqWXkr_{_LnS059>DVAFut`m-&Yq6#zeC9&iRlOAQq9O6daZ{r%X^2hCeUUI_78O=kuW%@usX_79Y`j`1u~4e5^?(!B$EH3RMot3@bkHjh~9 zaJ73}w&E)=ifjoExd)8tU9*|98<~!<7$a=oqq(mHC{V3ppPLNm91_R^BmpJ*^d4@G zsz0*bbOwuP1zycFku-8xTq!O$X#t|nsY=J4>?zU&RbnXwOnJ_U=z)Bt{_}VeOn;%t zPDxp7g7hb%dpG5myuN$5+BT)?Oe?loFPzqIVxA>M= z{i(k%pVhd{&zk$RBK3KHzWRKprB=Qc`)!l;7-Omz5B_F717%(!-}a*)5kCC4aP2l# z%7=RLf_%;SuxU;K|>+C#6ZxtBl5V)JK>rr~3haj9Tgj}y~`p6wp<=h31!3>a)bnE!_lcs(W;q-&T? z$bh}(DOngV`rj_%G)}&WS+)8j{~bR6HkK=ZtbbQ`D5M$kwsQzFt+hu z8{3GUr{&Y(;+A9kv_Y30+b6ShR{FbUKv(4t!sjiUILG)npY?1G_?ER50)+(08O~-T zxEo-49Uo(KlEOS=(Ssp+L2fQiT@6_Ld&s5fH<8iwyO{f$-|X?_Ru4+ryv%HFP;ab% ztjJ;b$7gH^&{RqXvh3zp{4N02=L4|3CCYyaCsHPn;*B3uB0ggo8T}(*3G{NizRpM* z;9a{;XF#Fw(CB>4bW7nQ9i+MQjf}vz6URnt;oI4ZkMix{mE@>s+jNQZh+`&c9${7z zCQ{Bm@wOEBKbuEeumL*cMnONqJ7Kp?`gsDs-5u7kd@X;2Hm}GNEXk1Tx69uPq4=vB z#1R@V|0o>(zb&2~&L5_)TMpAv#Fh_E@r^A6+YMbR;&N5|gwtZp0qS5M&iPN20M$O3 zU@&LcBA2$u_#;C?i#NU((Um_IDNEQ+k1YB~-OXWLf5KY;he0X}(>eM4 zQgG|-2(V6i*6}*_8uT2||7?|^;+VaJslZHa)q<%`2lmug!8Z3EMj>V$FJ-pkY?w3) zJNizd9k+1vgIjGjBO^O~81XK0Vi#$^ag|lP%$7RVMnht#PM=ds4c^rCun}V2Hbv(& z==QYb6Wv@RI!pu z;3iC~mR77{UB4EA=-()xNsH0;55S8hnj8F}l&2FRh8zD7Ip%Z%Hql#8LmM(&+tarK6-UNke%I64w_5TV1-~T28wg9>;HqFPjtrgNrrhl^Y)r4~s z&ViyWo5aniw?~PsEJPRgwd$rF*74=@_y`&=&V%?l74)%f&7uM?FOGD$Ju zy-#+~%v{_;9+Q*atM(~a3=B(p|JGOHpEI|&P$oKX+Ov{IbM&k?Myo7%w4h9WSpn0T zPU4A;@H(t*V>9Oy3)OPjww#Srvje>8E8F1c3fx$Ma6wlS_By2#n>Cs9-HO}Cyhy0k z5UNj8GfwE~$ex8OQcxh<02!-qqn@$;V%oVX%|+QCfO=bDQ{bDqtfy&7u;;8;SB0o( zck@hKz zO^4&N`C643bxtA^xc_pnm|$6OybzdiZb0vqJv6rLS@bW`a{ct4Hiqpq(bN@5nv_hM z2pt`P9t3#Jn@hca@WmE6{aKn_{aqQBkiomg60|q0qv(#9E9WU~7hXcHiZ`wf$k#+b ze8wiYstQX!mq${JdwhoJZd|6|Q{!(v9E4yK%9 z&$Lo(rYviEGVvaIG7KaM4GoT!6nFFQ>glgnJEfIs&!t+gT6Mm-Hm8D|?!+5UvRVI* z8jMn#s8Vk>IyH|a@&S}uisN_)|S)4ayl3f$RmO&drT z?J2=NS^Hpqy~7Cuyqf^OmPrWGwFJZoiznVqk2ly(nrI>rZ=7TKdno@g(DuUH=>QHMn^n}6kaY^>-@4mHFZZ!lnX6EH8n%OFkq z7a(tDCgN)E4!s~)XoI-9g;*KV3@zl(I!!{CpQh&LfZa15eg1YtH|c zh67`wg?78dwA<=Hjg%rDvRtD9=;cpi4jykj&&ap~h@sDtF#SlZ)?#ibX#(kDJ8vTq zbGFP)MA&fKd>br98SmQWSs^mNO}~cbGVOF~j2(BFL^AV-h?Je*jPMTHqta|&_ML4- z+(1ixIsTvjn69T1|9C^IneEQ@Qb+x`5K1xXa|D?;Ej{r!QFHIx!Qe86tNf?UD$1$N zEQxsIVR`jf=UevM;d%fS8bCRsK+dy6e}5G};w8)LQvgN$_gC?XrXcB0g>>(sJ8TnG zsox1n<;bZcPv|-?Ly|wpURHaf^wJhf&a2f^Z(%m%k`TMW@Y{gL8$UFPDi*7qU=3=V zzC@=a(rcnvn+s#f3uUwt#%o!kZPx0Q~SUjtb)V^5|1NogT|bBHA(EM^MU zL`=CqeLW|4*jD~%e4owzDxS5l%6Q}AEI_yARuhW8brj6DI>XvaQ^Sw3Q6`%!UMqEK zOZE^;(RM_O$1yULdPD}&jS^X+IE~8D66wfwHVVb+>ouV=zajzDuht8yBz7Cvyhtx0 z5^}l~Z|rD5m#FW*EZkJ4PT5TFZ8FnAmT6nn^sF+`_AL`=`;|4VSDQse;~%Z)HYz$o zMH%B#?_J11iu4(+UAF>zPWc@8`UK_WJ&Q`k8}GIj{-_qZl0)(mtT|E&hS$VRym6G} zELF~Lt!Q*cKC?@nE$W+>G`#ckpLO`fFw`Jv{|@uiJc4KkS4{M z|Ko7r0T=sWXs8-{=>b<5pAa^M-RYCqk77^bo}eL%KvBX>s4Bfcp~_>arFNnTA>UNk+BDbP-*j3J%9cQy^*=o^71ZvsZ#i2wo z6Gx77o9a>+uOp~Oo3vudXUJcjsk3?%<714FQk8xK7~9nyLL88pJE&&%Wjzn@dGN88 znE`Rl>+NIp-b`+T4g8Kfse~7lIT*SCHb@f-Ru+Mf1@?qbp77xG=dJ8hZNO$emJ^<7 ze zz-+qh_UxhB;xpP=rxi?KmJ%}UyPuU%Bw7BO!xj!jlof~rbel`1*Kq6FjZ#hPER^Wi z*595mra)v>yOqOfuTrZ;MY;;uIr`i^>s#hdq2zkeg(#_S;o23b(bS&SBSJwcl2}S{ zqiQl|b*ssYD$P3-kvA7cB8S^qS#B;#jI%Tjs=ezhUwhun`Q#5sZGb!5GS5M!|@aC)&^!?m=w{8;mD7Nnf3*VFnLl zP2`2Wh9WT8h}v(S6M=~~a1b~rd%{AZ^d`UN?6dUWN2ZT(CxHGraw%X)usrO>;6KC- zlp)ZKb%5q4Brm3x7Zi$R`pA^<&c4a3459f)Fn7Ye=;%Qp=v<}Rxnj$BsximsEdqZ^kmXuh}Qv-f%b)i1lgnzvL!|l`H<

e0Z3l*0{37zZlae=e!5&c@Vv{NuFZ@MaIF&Bo9_pwA$se$2 zk^T}Z?U;SA(k@_;#^0Jfb>aC)1Y@Sk&`|1o?2C-P^D)!qmmRghPfQD(FoarcS`s>u zC7=$JH#nofi%!`2^Rwll4R7K&G|~cmB9hM>$|r`L`V+>zs%}-Vh6(2)Sz z#4O%UfYySj6Z7MCM*jyWQ9j5P>iS^5L?O*;%EOm^av8WT{ATq^Z09AHgf5CVe zvkG|`oY_z9PF}Vio*RvyDAaVHci&B9CTHp<N2nXh7IO0Yymp*? z>dS+>-y3DPh;YVkeP`w^7IflHECpXN%ygdU$V|Uq3jB>|baxJqb(hvkmCc)N%k`*^al)Rs) zC5kWcguVR+B`bc)Z&R|1pCU@$Sp*c_4c6V>EPhHr$(QoQQSu*9MLCqbv!Ka~pAu4X zp=cnFl7EC&7_f8)%80*1W6t|PSv8bz3B@kB=5jAPE@hiBF6Xs{jBB^k=oSCx4>nE= zXGg*?vrf5&Avm?^CWb3M#6Qx>59szYDiPhbPtL3xA)3|wViz+@43tqwujx#dUe9#& z`XoiO^g5h3qgTaG31~Id8A&bP%?faf(DMKoQfE3*k@!jXBNDva#ZQSYiM04Bu-Z=r z{z2@#5#2~BI_t$h+`_2P9sabMReuBYw6A?M`Wm74=^?#wpO4--ajAN+N&V-4(qmYj z`0q-e>dNaJ=Va(MOxL8jhthkvblgr2hxK4)_^~6`s&dX_++kxjM(`kcKl@rLl%>DC zh{L(`YN4+!;;@s$iuW^W(~`H8>WTM5u;ESLV;4)Uqje{FPcR#6R3Leu5!twSKLNdd z%@;?n|K%x%UY}P7j9%ySlq-3U6Ak3iYla-6*Sl2)V(r0ifwwoTZN%CO7y@FAe+8X2 z6u-NzsIzP+*4KG$BB8RSeeH7caHCm>^+?D)enQjrqSh1rf7vn4eiDMky{V_h$aH2M zF?!yp+b_AO_RpbywKzOK6Y@k9>f-RMilr`u+L=y#Ow1={awdOPHzV&y>$Bv&pCj)D zU*?kcO}w=r?|Tu&t&sPNdgo(4 zfI3t_odQs1gdPlF;RNKp_B5!&@Zb5{Mey=LES+%obNBwxztq8PwseCCzV~+_M9Z$t z?%zULzWD{?kvs?$A)}}-lo`6`PdCEPpB?OJ-{Nc|!GhNLy3FJy^p-1y&8CJ}+3prg z?n^dO^FFhOdQ^+gvD7&GMs41w7=Km^Ltg(r-K=skH7=qrau(TH?9+JBBG%FrQbf1V z*?cv>|9&k_Bp25}@gp!2o+EcP4Cjvw(ly^qdzBmNEjYk$RG41Q z&@kY~64cGRa0OI&K8}n~UIqlUz#JW4${+I-21m~LF$|bNm@oHQ396*&c9_#|f*+d3>FGH=rS$Zu zcqHe1{A%xEqGI`12IJeHd`2_+p&rH+~O$0GLHd>cKQ;KdHx`!ob@mB~qj`+*Mf9U+I;(ho32y+fNQ6E{ zl@Y%7q@@U7hcI&D<*ouKNj3>JI{=j5*dp-S0;pH{hz5rSrgZhU1{`m}^-?`^{eLlH zZWezoRPNtQPg|6(z||X3(A$WMsH&T&*Lw~+mEukA3FkG9)aakaQ*5mJaoU#1N?t!~5~YVYmqruSsv1zOzcR)pg_aZT0jvsu_9L`$Gx8dxXc8aCX-rd9 z{>NZ5=Qa_^GrRBc;v)RJzyH2R=jnC#J+_BhG6D8cAo^6^Gj1 zB_9i${fiV6s>_`p@xs=!)UM9ae?rhi{U5>Y+|#*D%xe`uJ@M8bK$V{$h{cxDRr7vYB4s zKFDDsr7_BO>1d8RX$Rd0`3;2H;y%bFkg_*XDdLF(sif&g5v}Yp)3e?{Fz9#WHIRQg zT$DM28}iDo?QDH*I#b;#9Q$F|tEUl<2DabNY8eC8*qqe-9?3)OEcOcTX3jWC9G?Ox zO>5Nn_dFRroXS$(|6h9Oe@!d&P+*`3^pN?0e*Ax&E-vl8w*V(#ko`1=1w4+E|?dg!Dby4m|dKN!6!dKj;i zh#nRJP7XaB3Iey^z=Mpoe`orvOUqI-D92JuFt^Mi0kh znXRA)+71^VEY&$bxWSWq4Y|bg^+ZFx2?Sg9(T$!Xq&Z8Kb5`W7kK6@%7$U+nb!$3Y z7h2lIM0Qulk@8iJ`!_l4#*WvJoHpf4wUu)zLo{5s#8X<6Ucj2jAV9O#maA}buqLui zG~Wu=TU1}PF4EpM?7C%}V=3T*tosVGetNs0qAQRDRMa_?FF`#6nG-du$1U3oAb-_Z zzs<6}Ob(1)#|_$p1vNh15LmZ3h0bPX?iQvbs>dB{PDc(LA~oi;*DQ?v94yw?RS>>& z>0+e%A2p4$d(5of4WP=ojZZ;_jw+&DM&+~*#QBd|=_h(g;V%@nz!`aS{HMUGd{UEy z-7uza60;12rn^4S6>Paztru<~KXBg4&vkgmvnxMm@D_N$qbS_rAcM6hn8jMEUF7<^Wk>d@OMbAF=x9z^q$8*HPt%^cMKQUm4-5)m0H`H}m_V zX(_tHH0!GPbP)i=f=R<)zw|eVkWocu`J=J_2RqyQdMO(F4W#Q?Jxj2JdnC8FzZ8K1(2cfd(Qmnn)`#{I_~1NpYK9vYz;z7`+T zfkcyU6HrV;nw|{w-DhN)S|gM;B*JKz5cMm#g9`^Hj$lze_5NFqU z>SBsJH_uP z@v>(6R(rAOhIY2VD0-=i9ks!mE}98K-LEIV-KJ?olpfG6x&f1NZEE*WT4|;&rhl-@ zsx9B!j@nw^d)W6LZub?}p&qC8LIlB2^q*m5?p9Y?ojJ2d&N5-n>RYo#uI5W|?;&~= zN6FmtSi|sV7ugs&%d+mB(I|rU_Q0PENWYzD!UaE!9eM92=xNWZ6Z32Pge$c<3gV5Q-;vP zB~QvMJJglE=%>i?*+K)ciM|oI+#k7!$}Hf|SUyx|j&_Tem-E8nWg>HNw0N0kGDafE zE}uJq+|knIr+WH=PDV?Y!EG|EW}v4kmHZNEFG`3GbCbTW{~NGldX9Na!o^%B3VRxy z{psq5vE-jYU;e7;lSc2_-CzF<#!U;6!g_N}|X#jJi#v|+0Xb4ppHvbSsm>tA>`*44s_Sa+v5uKM1NZI1^k z*jC%cinK6hGVYl==P}Y2u_6&lZ*mdOdN%&`b;L85V2>6RQkOeZDD@<48~AB&UnpT$ zd=+*IGVfU?!?voh6Az)x>+&FzCMWamM{E<3{f@t5$aFL>?HD>vVsTpa1nUZ8B3*Ks z+RurNU1HE1VrHrkQpO@?bN&NX;U0HQ zT%B*}FuEr^U?AvIE9+yo(r+Qju6?clT)M;T0D^qK>yI{Hf6$-3cUj#wm_Wsn*U?j4 zApTX>W8@>`z{Tm=T`{tnptVweGpj>9?0J_!l-DpfbpB`WJ-r_jzHjvA>%E72XDeW^ z9tN3;Xl*?V3pBePcI^V;w>ib;t}kRMcDm88*27whw;oXJZAMO;rr22Oa&kDTWvwrV zY7Y_hu(l8?oPY3cRQm}JA=SoG2MP*XS4db>%_w)xrTLT_+$^B@#|%+gORu8b9-=Sr zRS^rHQ?k_p%Kh~9EQyw_+t`K$2K-`Y@&G+QN=8T)ZSFBaWre|qQBG|d58<*LR&8jn zBuDX^)FQeqg7M{vouw?iG>{)0NQbbGwLg>+lDmE4_1v#F6(-^%jA zzrn8hR!D7*9z*_3u7gA);g$LcMQo({KR9_L*Qm_zCZ)|U8%MM9FR-%CxENSrD8I8M zHfNYFU^Sm%{9(qhZlA&`Mo6XY{zj?KSbYt?#jHUmf4{$nJ`wIoA)sJ`SpRFd^FZs( ziH4&IbU81KYq{31fjOG?zMc`7KG0O6t8?ePIy>nty&}DTckiK#aKi21-QR$#tLZk0 zoLfn3x=~Lz@RaqJqAqq2SWSbi_Q9%M`)yKlD7tL&_?++lWYsp>@|{3Ff1(^|ebFFt z0$y&2g@E$>t-2rbUd?M!>QDb@t2yaAaOE}KBTzO{L1;&23aeg~?T6iuj|eY8*-h=C z(&@(tBI0Y_LYJCWsZ>u&MfNQ$pCcKcywIGFh%tyrbmb>Z@G#!vP7wX)xc4vDImd?L z;-Nt2-208M@Yqn+Ndn#M)D;Y4Qvn^0rXvm>|7uyLpqh)2`>M(I-Tm_!qA;dc++9Wa zgMSLd(_)1C@-ZLm)fY4e`%h3ogo~y%bUSEyFVNhgnJ3gqbCmAn7h03qK&kZY2Y-8w z+@3aaq90!;P`zsdB9%w=1c<`9+jsKkh{c22E~I9!Uc3MeCu20;^mmPc_F}p`9sKtM zQl{{#moej=sb6-tM2VsBamngN&=uCsQ75A78YqJVib7$!v=07_stHQ@`g{uY2cf3! z-sjE6vQY%CMKI?pmwlv_5y`qrQO=f`SYjC`_@TU7a=jZ=Te=nRD_IKkN*WW|=rN8$u z`E&if6a>)Ut0A^c^!GC5rN7-~wBFyz6pi|8`&wE5qSmJK8nXQzs{VfU)~5O!Ki*vg zdz?H+tm!O@jeA7aQ~GCJ1d#feXIe+Ec7|saqD~`xY6o&)^+ppkW*9%N)Z)k>g{cW| znJ?I~dsVAuNKdP63#Vnt4j>ym5c(#`Krr*;f`nC z9SGwgy$lF<$Xi}(-CSr-Fzl7o95m6RIL6H+K^VL zLc(#&fgr#x8vs=Pjl77CId7(}PbkdU@|hY0^>{sLjKF2X)PYRlvbh>y;zcjepw(`h z$c!A8nAd+8)f9LaEnOGrZErU^qZ(8DQzQMojB>&3bPEo2M)Q-*`Rru?4Z8s@J1ncy zzi=tz@>Oc2V%)dj9MMnLzw+7|c4iusI9m!b1;IYk0-JJIOL!l3p76qcN8x2|EV-2p z&%mN+AldlI0Ct(O7L&GZFq;M{KHHpIM@?(eBYR|PTz_s(jVy?7Lyel!&D4Ld%l{bb zRLOb#Xi2apeMJwqguJ!GI6HK=rEi=3PW#VfN6E+i6Rf<@iANI6DGxtEhXIY`lU zna3DbsHZ)?4bsaTRx>nlT z<7`J>&Km^}F0dP3o54AYTVV=}Sev<~6Cqr6bbF{72*tfuU${@3Em|X9wYrjHNmAjO zP+SgP_C4EnsiB~ty(UQ;3y0fCLjU!yq5zENQ{6Bj;?p{(F&$vSkO+B-^yT z3ibaWMwa*9B8p`?&@P&o9z#L@YW~wWQls$BNr=+eY(JOV2xbqe3 zA8@IIO2*u&Ftc5uLes>+zN=-iv0Mp@TtBkAGCpl*Ah9Cs@N@bo*rnB`uG?U=#h*ZQG#*24GVE5?&!ur-l>tH zH$Lqjl!)t0#*(J-d3(~k8{rW>JB!mEe+NM7_ERKw*|K&3o*JV>?qCriTXhaqc$0ze zSl0!to7POquOUw9*Q~z+QjGp{ zD);a-csrsfn0awlI9!s80t#-yn|Jh?!vq`M~-^U$Ylc`(Oy@tTq zFU&7&f1c@^Q)H@1}49D3kl{Is0!OM!X5jEFr zR6n#Qi4~dfU?8n2nPPvFw{M<6HY4ZhSlbOsAoR`mV0yqvM+m`X7JUY}dOH>E9I@r6oxBg?x@#!F!P^70QlKMg~ z{m1r+r8E|jTw%%Y*-P)Y))%GZJeAblFs?cLBnj- zq@UW9cxNF88Xk6Zc-f$&1<#lIlF72S98x%R21Z#^w->H~Kwxo6%1j?rQg=1`27>9Q4~Vue*te>8+IfFX5wbUvSDd1<7p+TSCe?sbXcy?X@j zGZ?~izM#u|Xu2=x@hUK}l$VR00jQ*fq>96L>&U>2!Vbe5U7XrJdlm<6N@VzWQNBWaY7IV!puGW7Gj>r z`@rSuuoLn60UUdd-G`;ptm%ao=D{34S*CY9?qjY=WPV+niL)V%vr{lZV-s&cT`|R6 z`MmTeix>S@)s?a0GK%+DYL-62Sc85cHQ@ByuBItrP`6BHOMu@{v0~S2)62Et^isvG zGmT3`=WtG5+=i7Z)t2pgKaoD@p%bCZvFNEY4x^o6_*h$gGap+5RvDU`ib1Dvp<$#? zEmuRcRhQxY@V-M@%zqTEEwrbt(Kpa&Yp~xXl-t_O73CDll%4e%7Dj60H8G#q!xHqL z#h=t2kQh+Q-s5#Onf-}j(J5_=`$>AMWN`NIjs9#p*4pFkFcjt62CzjeyVn5jtOqZondcUt+@gi z+J~n*e_VjT?C|#IyU4`a;z?RyWJ^eT$-wk`#kW6?sgHj!F?&(dwh!;{lQdbel{Ia~ zi^pyyf_^4=abMl|S*$mH7fXEw#e9W*Iy%8|mpm(v&&RgkXbEg*`;AyFd)-1zYMot8 z$n|z7%Ffa@NY#*<2_M#tfK(~I;d@=hO%2|-ZA@nH^SL~LTGjAB}l3EbKlm~iU?jtKOQL`Sgme{fKaPFwER8&@`vi)=dJk9h7rH9CDy>kC%{ zLMH7oAK0kSc#pCXXVKFigsRNXKdqIJ>xSbao#FQdbZ~OzD^E-2DiZ>i?K(g|CSE>d z$*ojlYRO!iJw3RDY=tf%`^x_aOcPmnX8g)9$bC9VAigdCcJ`Or%innU+s^*$yyTt` zEIA6WTP(iufaS<_KHjxoZRT9t5L=$;{eoCJV*h+4bUAYUKXP5NhE^8t^%6auH%UCS+=2e%Ai0M&1`)>5Q{uWLT9B9`n zIWv}+y5`vxM@aTQeP_-;v>%+qNI5s8QQp21Mutu-tyo*3&@>*tfN}&qrQeI~3CrGb zjFYR02LZA+vlpU%Hop2NGjXeZ9lh!(&1UT^#_*C zVu3%h?^*~@2DPsyJ7{Cm?+f;;cM2^v7UGKcw85|Ix&6U6Q`+kZ{pc9klhAiBh@SrSNK+u+ zFz1~g!<-kuoViC}SM4kA-)#IxTZV;Z@viU0kE=<))-2YQ;Mbpy zOJVAqO$sYUI#OL{_ zwUFeX&3VvJm>R36Oozb?6{f64>yVjD)p4MzSfrb>Sf@qtuZjLkV#y-`i2rD=om=AK zU+azg&Y{3yrUK;(UL^qb%q3=c#BMsBs8k>oom;XWA$m0fPA$Mm_GmCHVdQ?4un^eZ z*eeQqTeO*wJ*+&yHpq%KCskS>#K4ZW7}&84M&VJfI=OdrEjZOHU#F(t=LYb`1@Ms4 zooh3D*DCZ?Il?=gViM?d5dS-TGQlbVojoLd2bh}+vHP0Qh zWtSAzq+uPM*nv}54x!{jh-GLH+nsu!(0wcgwNUTVNUu$E=uD zaCnhr*ad4_mLUPc)OKQE8E$KD`Or}dJad*|B=U?EI_(oaydw7eI1Iy?>F=6Hp2bqc zQL#sOCbr-JqxsSOTvX3^W0FD~&r04cj;D_MN#dE!G6!+|K&Gbsc|5vvde%jb^7sh2c8vCEtCzjmXNNf?(MS37vdy5KI}0NY3FKNC>8B1dwO0cai=y&Zj}nKxaqcT1q(Gz0oIZ*sAG z${Zs-$3Sk)+`}zsb#}gq4rAb)_1@OC-)&5v*3X4?OB`T&VPqAJabs5$`=@Dc;V_vS zt?^Z*Z%X?<>n=%}il)+EgLIknm;Mr*nXTAQ@99^i+1*jH?@~Hw(kRvf6X}0AQssk0 zo2;_*Y#mX^wz@x~KwwvE0JngRL9my3#~g_dL=LVsCT183EoEybQw(N@w{r3Q!F+8s zNWGhV;KqALxIl(j30x!1fX9b}S&E}@?VO@(=PsbFwP`Ohk#zow{>yCQ&^ginqgd*q zQiKFuaW21f>(MA_`B9eL>n!FOG#7c*$Nr~rbSqboRB#R86Laqm8bp7@WDJC*ii5sf3ckar_ataKy=7ysq7Z$Hq=j%2Zx#?Oq?{ zvVT#FWMr1@Ra?ee?SQh4f3}$uPcPe(&7Ahtpwj>SSaMGuY#9o*=WR*zO#vcsjX6WP zGeJi5pw8y$%=ubW&$ra?qzp1utKVUX<#NIdZK9@0aPlXe=6}}J{k(D*O!AMDWv1Pc zc!{0!U*$d2w&Vp#i@61Lep~-5blwnOrJUzzoc}bD8Pi8^Yf$8K6Ipl5mlQd6x04RH zmo$+M&Z5ok-;u1`zR6vCOe$-+X7ovuAKUkRsypTHK2p39EZpcM(4HFOh_)g=VfOd5 z8rar!;mq1?+k%2e`_DlQ7)|f6Mzje(CUm3fwvNts&@g7G(D^ibGCEHT={zAy=Lexp zp3XA>X0g!i^`DGvL4s-7uOtOe?L+ZE4Dx`Yd#!T^S^Pv=?&&&6V z=qsZ^l=n*JyAib_p!0j)QL{v6afC>0?h4>_SbgRa1`ryOGf$KJ~$jZ7ms?eiz3z=I~A|JY#Xc zi^=Y#pTuAIF%WHiD6`YU4`>`;8cY3}h%Wz^iZ0s)jbg3px+4nRmc0p7LAt%Aw~Gd* zKxc{!qhrZ|SeiAkpBaY!WFoROZo0{AS70+)|FumOD)(WU8$TYa{;s!Wjbj7wvF!b~ zz|E}jU0|Z2xdGs=$?W;$o_ama0r8yxKuf%Z?8o;1Y`BN(2d{fW2QfwYnu!7RY9veO z{U5F!dGfe%&EJdgJGFZ%;%+*2EScS+U0njF%!Bs_EMGa&o?v;MvWAZS6RuBA1He>3 ze7QzJ_12t8cyE_F?=6!j$;zRiStD6#=8x;mM_FCF@msLE{vv`i z;j7796Zqp=IT!0XGGTR{D1Y2hm|brSOuyd3A2-~2;KtBQfCVSB{8oL{>|_?5!|qOI z*&6*gFcX}KHD*_vqa^nMJLqY4*Btsm`e6s9iGSvBg=|wSwS{Kgk@=B#*I_o{i=|G} zc<9*d@%zMPWfR{Nmsc)W%%o2T2<^v1$Yx!i&O3}=NZ6!r4|T?^Hbt$5r_25XkiqO5 zYtQ*X4f!*#en^!~0QPF?)YhB)tiVN(0P z-t+X{A$;HHEz$djVgA>>1$x&35ac&DrWJ|whc(&5VQoS^;c8=J<8zxq5YZdPzhp`; z`D1GweQ3bZ1DbL4W4!%aj&3B=zvF1u#L4Bjn!Vu>uI?%}YsS^1NO4@P=(;>tbFh}M zF-LSCo;lldv03NxDZP~nq9*G3SmM1P1|vC@0+E2jU%OXJ3r=HJenzaG zZ3*}-5AgjRO!d&9DB6YiSa89-i!cq#?F56fCEzJHcm(<~Q}!aDLOvfIo|AQ6a~?mZ zy1?USIUc`(Vvfg$*poD)osVVwojNvXaS>170?KO2W&pAACXnl783}o1X6Iuyql&Ti zH5^)y_Yd0uMDzfzA@AISWo-oeVY>T^IJqM9GikmS&Oj{OnHACK{6ly4Xj-9r=c1?fGSm3WJz@roWd*Y3=MzVkvTZFhJahDlBL@X2Is}c9OlRuH1_xv&Kq9g zcSQx(u%lsc_GprqSJ%b{z2ZL$339thLtY9hxgGR0Lb&4JA3ZqjIh!E72Nzv?EIu{w zqB+h>cgh!(*-K^iw}wihpRU1aHAFVo&H`-jm*=qL5B zuMqd3|4>fdy^d8jmUs6ra-ySt2nX@N%n~B;sqYJUZQY3Uzo-un^)wy|dOkk&N8vG& zoVDq%;!{7MoB%~^18W+M_TQyDyxU;#^lZPZwUblsg``DYsLfd3F+t7ksJR&3n+@Gh zh3=;qXx7SI4-8s)D*WvoN{!~{TaM5flApDLq~Hk2z98A+NEbqc3J0`wHD+mkhx&!E zg$A6zu*Jgf#CViHx8*Z>&YKDQ8wxWN^4~?se!~-Xh&y9O`yeR}^5x#yfI!rd6u_tx zZ=@5sFMKoI7rqPih-~qx+tF8f z0y@e3rhg!rN*^i))5CB*=sFypN9dXL!pxx~YBOArs#iC`x)RN36VsF)GBustOu1a0 zAWsD|<-wV_7PITNh!>)uC23qPeH^hDPCwLYZ^h7Bid9Pm_0!aanIW5rwZL1UDXoG{N=wDm#u`^Jy8P_)qbvAo`cab^JA%t!Yw;ogv|JPk zYWoOz*C7PMbz}?et_43{b)2&*sbGzFz^I-qp4x~yc6d$tl;MPt)NNC|7UMZ$$-$DJ ziP{uL3(K2uu=x5Eb_cVZutV~_;eQWr=#8nT*mfoh+ZILaF1q+MP{L!DqJTv`j9uKN z-ey5xcXuW70MxPy{~Re`GWStt>=}$1^+tDZaX$?R`XG{v&=n#`cmG97a1r`ux(GeR z#U)mY8$|v<8D)1qT3=Qk46Y32-gUvZa{ot?Sp#v&qw>iz6Jrwz7J@+d#LhEg!A?d~ z3?F8};@vcNW3USLPu1UMjQ^$_Z#Lh00zIeZVVgUnq&yIaslT*AOJWhhcHOUoAQF{~BqgE5H&5kpKM} zeLbx3^$Z9QjK{dNG$khL@E1F^Mg`^GYowZ9DyQy*VmX%;Sj!bmS2{+ii1hq2 z)to7P_xHgbE!STUfL73Wdsjt^$YXzcm`DN`E!#G*6?rF-la6`mbqZ$ee^TgbnXM zajj20(2kK`sk7m&P`5`in+R&e|)TS;Vpw11{CcD>bir)b=WkrtnNVwk1I4uf{&#AuA3E#&H_~C(A?QKJGas@(!=T&lSKwv;zmLCK zIqQEGe|7i1aNK_pe|4-{{{LD0)%^XO+Ga`Xzlgv3@+OA2{~-SA&c0F?E#t3Vq`aHZ zUSm(@w0Tq`;U?m*W+HC+(FI)p>-ei>w9^b+i@!P!hTL@g)lGbbi~BMw4dbsGaA$e1 z-u2(cU;RW3kU}WleC|JrzuLS{q%)%NS2bBP9~KB)w(Cp!F)QMHbY?EA#{4hEU!5da zVf>ZiEB;6nvWu?>0xGnkvcTON6F;8FtRS+YlZKGY>9z(wla6c_VDSbC`qPAeoqlmD zZm<+wH7vm_SDF^=wLgWk$~fqeWfHm5V-s_7-f2MF2`8|f0GT>PPhs#(vd2tHdlP%h zQejtR<(d~{dU5g&2l{P?gsaj8RssIK7q_DV!hguO)87jDz7(I5Ply_qB)YqNI)QlN z@4Bi!S5YE!kISXGfD#QfFa0z!*HfOXtldZ4rkRd870l0GnW)OK1uzu@wpi+rLM%>j|5kew1GTifrO(9_Dqa{CALLG(ee$ zt&XM24WFR8Ok8)jOuqrlG3z?jaom@WyJ}Z8z!5C2X-$E!5u(bKN#JsUt_oe=UUqn< z@&U!k;^pn{gQCz7*X`qBG64U7=gct5kLq(K2)qlTs#Y&FkuJ zAJz2MzHT0Tt!VYD_CYJAf_UUsARiTcWdhmC*XrP_)?c|OK{6@KVvRlZXs7J5=Vk}J zu$%FaUJR_-Fl_7X2rb?=R*NZf7HZ-Jy`4y(vZr^$05%(M42VfM#i{6+lh2Iq7K zr#taQtfps(ICYXJPzBNK7u)kzQw;t&f?;^X>DQsMP`vwruVO7j?DHs=P@dye1UwuXaL_*@+HH=?pLy-=83c(EA>9OdTR65XOgelf*{k ztN`2&A^cCJ22$T>v`S=dbs;Jl7f{7ExDj6GXYeqNzku#hRiTOt;z9B&H8r}n$0ps} zHQWi@6({Il%YTl~i1%#VgPzS)eoRz1V}K0^Cv>-X&#hQ~RNH2%ZE}mhiKXu?fK$cr zTjYk`!d{R=ouAx-f!|3%ux!`e=W5KYT>Cd?=bplExEN4&7eT~sAYM+_49ztFL(8YX z!VsQ1jp2*s({4=p`+nd}yoIdS&b47Oy(AKn65;Pm)t*F9dUf}-?1jV*&3nN=gvnvx zcgIP$&i|UZU-0hDfd~qNt@p2C#+c`C#vvT<8gKH$#)<4%lhzkQyTrC$s;48=eWdxj z8`va|)NkTy(!0RDG8GFXwtROdu@9QhImnMD=m#qPLxw9HHQ(#0_h;O@Sh~C3do#td z^{)9|C%r!b*1>w$2H^THgzubxrT01E`&w^_-WR!d!C#>F4+`%u=-n^8Ptp7O;5}1y z34G$Uzq>$hw;YXz+g|N0OOF>1Jln&gy%ti%WCaFo;8lM${f{EpWFdKF?#yHbz@1L+ zEE?}f&ZbOcruAqbtJKYC@6P)aw1C(~p_n50#44QTM6W1XdI%zlYDfy1h$Lb_lX?)T zwt+!w;5RRJZprqfV|fYw1P{E zNYT9+nM(a@MUv3&vapqPRGQGqm_pS?t8YokaPHCJ;oju9bA;d$A$Vll+CbrHG&@D$ zHJZ`q%jvZ^dx%Mq-Z@sE$f{&^>~oQH7z(RYF^G4{gX-@fBzCm-=pVjE7X{s)N3y6v z$6%1Q&Jj&UgVs6X4oXE?p}4ar=zFH}E}~{l=jS`#>v*|S{#_tSEM@z_GgVJNO#l9L zN1^`%<)3PYq~tZc^EK&p6V?%5s=eQrl<=EaCF6aU2FPL%3ZWZjwmKh77Hd8u~5j{$5 z%!1*@SVx!u)px4VWs%p>(i#~InT9DmKFmLMW;S4WVrzH$_PR$%Xow}xBb@Qu>-AF2 z{c5}@Bk4!;7g|=I zrLg43ev`qCB15F>{QKSFWjH>S?m7l-sql zX7AhnVx6g+XKgf?o_ktTc&G>;`nZSUO-GL1n&bKhb)mb}vP)sQ&?S}}V;@?LTm7qb z`=(g^D*GC+dTShR=VwDh*~iX%y2z3>fC0b`>^|^vtbS@F6!V3sPe+14{ZQb&*okzDlKXEFiX`qyhnXV0P@feMQ$y<#+JCfc5h(hMz>*tpF2Co{my&CVp(T`On=Ie#YX> z#J`QZR5V<-%~Ze<<@T zfjozT{?jT0Re-7GU7gOL*Pk&AMg@k!$EaW5M{kq8`dwxt{3cF>JJjnxKTB-FzVcRW z7a*igyHC~gr)N!U^rwM|SFyPM^gP8q+Vhi<=NE!!ugz`WZ*(mftt9WuTV=YTh`rD3 zXU8of^WjW+Ho|wNFzwwLy!WjOn6) zJZVF;VAfB` z>gW4?d}m(U@qFb7hJU5$uUU8emwn+sZc|9c1%)8p*kdN}Y(Mj7YT|Ol}j|FTub;(VLn}p<{bgIXtMtagBLvRkHIgH0b%F+8E&019(9iw!kKXy zRoB9d+nkLa&CIx3`Ymt99n8zal*5eMpT~k3w>xi9Gwz5sdJoLFEvXhWu3LV7p10@z zDM@Q#&%N^(D4ngE$2`=FU+1W9_T1>GJy-9&e38>6r4;Na1~y-mlERYhh=ol4?l8U(rlqH~F8L)gZWMNo9!(FVR@TQfK%nR5HhcJ<48<#Z7cDJS`w#T532dOU%jp2qY~90$p5a4<9{in)RQ#V|#fRq3gp%=- z{9_1o@NV0NE?kN6C}N#lguPMc-;Qtob_y262pQ@f4m8EK4E1-nwE148;1A%%>!qio z^|Y&=?%^r+{1X3p8(8Og(?}GTbmHCrLScp9bHcViSEO5~r=@yYrKk0JTDmpVKtoDX zO9eR1T~FXzu#G7_$4j6i5wBg@so?F{$aAOxs3^IuX^7?v3cL%?InbEvb}MR48L!ms(-(^92H8-mW#80U2j zz#6&8phW$7Ki=r-GkWqt8T99^)CUsuL4T;TY64}QI(z;cr_Rz^VoGg5=%CaYlcCh3 z6GU&P&i=v3B>s9NP-o|MLb6=UtVu~vgG-JIJ$P+8yRH>(#a(OYLC$h-l$pR)tM8z) zgRL^eE!6F+Y_7yq1#Cy&LyoJ@jC6l608ElX%2ckni|?le-y5hiG~frB`=WKjc?Pnf zZZUJakwW@&L+23OJ*?)Y#Y>srvWCLTRlHc_^8Ag90bk2rI~6ijWJY?E)z!QcD-A-y z`Wme|ihH_)AY+jjIJ&7pnfTMr#+v?L*pWm_E<~rKehivpBqV2uwbv%&x<2FyWze7J z-QYf0M?`tzb$uWqB_BR!Y=+={7AW!s|RbEAUaz z7U|c4lQ!X1hx01$4->&U9M{2qw6{8~wik7<8m1+}Sh9a$2si|q_uGeZpM}a_FgTN? z&@pEDe&gIt2cT0ltvwj;15g_up~cL9%o|jBWkAu{!}1i3kn<~glm6u>7asa@JnVWe zEkBndz3W}W^xB}?9j2wvj-pDCtA_>W{oLd03-kL}QIS@ZfokDV65uvmzE>rL_0fU+HoK!yG?+pz4Nk$Kzj zHi;!`^~oDeJ~^1e+XaoK{;S+c4QHc*CL++!{%am>SSzIyG6!W+pPQN7buTs_sl}b- z23Z@xo7_Y2D&M%xee35PHrz4F@ZH2H?P*doyGs*gV8iYzcdC0Etv7$nN||ZZR(J57 zc}spTKzC(o)$<3u>a7FAK<1Ob1$KiHH%@lO>B*f)Jdoi$U-iGA4<`eFp9tXlo&$Jp zkZ6&Dn}7wbthLxSAm?0J+Y*RalNmz) zFOJ>x7NKPFLCNB4!p> zhE7gxcuDqTCQy@JBvWKL-^}sjzxPQq3KjgVB3nk3~ zduMYDq6t`w-m7~02wc5cdU|LT)ma#@*Y^~Bo13eHGL@;{hphC&X^xfNfE!}TBjg3|k z(yz|dz|v%wUa+IMa!Xd?_dFMBx@kXNly^+@QO` z3QAlVaQRSi`3VH*<{7Gn7Z@sX|6-y){L~3bhWsSMSNBc~?fXGZ`rTS~)D9n8qe4z=N+3E$fDKj5&k}(i9YMX{XzNp0*9o(@ByFPe4#1{d1A>w zlj4^$vnb5>K;Gp1-wWfEfU7>0FxEnKR;qL?w|`wh>v~J=W$f_8{6mL33Pvo58SbMw zex``L5m(9!ynA~S0N~HoTq;w!_*Q2re2!@mECe`0h@^Ie}WxtqwMPy z;VApdR37cfC_9H`qP#;kQ+m|dh#5UluiD%wJHc{9N7*`3{<~4OCQ?f<%4&eMp*D~% ziPX?=h-DFfM`6;+2)qHrT8_Z&650J1d6Q&L7e?QY8wz|-XjIYY`+^w}t&YBdxxI`W z67B|SE}p}jsL}(f{&<$i=CY7WOZ%jrL@K<{iId797zIPd9<|0D*q*sPV|vY(5JP}wxudTSYk&N)BO=axvF0%M9|_dph!b)x*m(l z%^nlk;Fq(%RiQ|?Ty*2ldo>y1(*{yZyp9iSmKKCMMjt{#2}>NN7NK~`nQcpg;KZCQ z>zFTIdvSD4BA=X+fQticqk*~j0LTgO3tx6PV!3h(YcA(Rb zp5X=vN~PQRyZytB4_gFt+EX+>{2EI}1p~$V@5cBxw>o3xb1B}1=GiJebvS5dD_@>0 z5$xwZ*Ul~C#)7O(Wc?3o@ULBlYj`9Ek$*18MoQUp_mJE@!-onzfPM8}qXWVKpeV5{ z+R(uaPD<vB#u=wi%A5zcx7j1vGH;j@}PskX!`Y|(e=6eZCb`BH&eE9i4v3+#lTe0oa z4mr}^+S@==NO_Z;pqLT%CWf^4;l>Rc{q3nDH(U&!dXKbMl(r6T^JeI27Ec1Q#%2;j zMwlb!CsBX=mEGyhf9f$)dgN(3_2Dq)!I#K#gSj{=I2OCUBX8rEw=;?+_M8{jv>^7x zy2SW@!HSdNEK|v{lWr!Y6gKmB7o%&J9u80q!`;0Dz(YnY(dSAFEZa~a`Xg+c;Cipz zvbkZ;m^AOu2{_lk%b2S2k5YdyW`+0I(N4>;T!t-ktOe}Ydi&=rxr>8r!1KD9TZ^~Q zr`6VSR_3sJ>K-GH}U+xz3 z>%})HKLVM5Wz4B{kKhnE2>peot`R@qx|1-JQjb|j25!qdjdlcN$au{f-_Aa$-y?>X zw}z9S0s|yi9S!>+YTHi{!4<-M6c(fZE!u)y)eq2l7zaEiHW$TdLwUH!Y7~g)C`Wqe zwRh{S2BRJNhOxNBoB}tv8vsL$M5K`mI zXuSU;nkiuFu|iZa#rb9_ccZUci9aV`FFA8J6E@2v<@>irVY(#~ZV>b*v)weOFCdusQ95;_XXe??<# zCea;z|HBDrt!&pitp{Z*f5%TecOA$$hf-Hl#YlsHHH#VYs{Ssl&NOp48v47UtVHmN zp!;;rRK8#R4)3b)XWsMpZc)&wU34@CC(zh|UhR1)9`R0t8&z8=wfQ$V6J^(o)30Wt zEd6PNxftD4w{p5-e^FWey!~pO?j3~zUw34ydRKUv()BNX9g_ZOgGMFmVI)0M*CQ@#!R8o zisQsQeZ0ha z&^DGjfv0%pvK`G*nzd@@#AfsSCCHuHH7(MvJk|Z>i;d|W!aw{VL60E2Khp_)!j@8l zdKuSV71~l*IhyLn8b?XA?O1`1vDE2$kq5-V{M$Fq{=%;Y2)~-IF3PwemQ)xJM$9x= zJRF(5j;D*&U3iE^UI)59I{kK*wrI3mtizwf?-bekNMv^@QiobsxqL&^I>~I^9fbUU z;fl`_p=Bp3r9yB;xZ49R`Bq%=SEgbu+|#oeU^1OJFSVQ-Bk(tL%53f)Hm}KSCC^VI zpi-~MZ16dcX)9JHF%WP^_I<^Usq(J{fU24w^wCb@y+LpO=Qv&$#c@jt3fhH1;@3j_ z2%8{$=KbYlrw+ILT7(JI;g@)?i`C&826sWZE5K>{DBt^2-f&+h1z)#o_VtF~>l|1a z7>O;^p3C9;~lZF2BBh~*g#Ucq3$FGYpe6H(yX16+xx2KwM2 z)z}U+ykCDse?Ju1B-O#^YJL8Q(Tr(mWh$cMH#m80ROD0;AbSF~WQ)+%xHCjw#1O?j zHgZVdDy`~cPi{N8R+Z!^dw>V;ns43UQO}EpBSoH|-iONuXeZ+r32Ux2>r@^dZxkc) zhbQsMqp8k?H?))CBPUU{j5y`d>1Lkg3ygEtMb_~ibuljIU5k9k;!ymI3%s6}N@M~{ z6%g0 zLXA+S!hdc)?DW|>*l9sv;EV{^>2R^rL>2(Vf*lKEMG5Hwl84qE`m^zWVQZ4DvZVn} ztDt|7))>OlQLlt@eiI1yMhW*e*Z7DXKcg{I|aWLIZ4>s|k2 zN(pF9AkDHJ@-_R@UehRGPNjqnAF1|Mtaau~LNPPdHZUQe7#cF0$WiXiBnRKh{k9D9 zG8vz+BC_i4z!)LxTpSGEouvAY>1m>#4hrm)g;70NMfF0iOM$L!qxcC?N7pVv&K1$( z8{W@j-`(5OupqxF6NmE(BbgbdXV$_m*{&Zj5yT|=hkh*l?Ygg>Q8eFBm`R0Br9DU( zlu-L7sBq^fUVidb+VwXAsr=2cl9lhsJDfh$;)y@ZA?Dpi4x66%b7YIV73-onjLv+~ zIz>%>0klms*EXWw0B0p^>(W*ZhCAn{Zjh}~_-|rM3x!_`XDM4(>f zipxR#o2r6XgqB8`WvV<`V)KrD#|L1=Uo}nAdIZuQRw{I@moBY=d!h>4LOV_~09tek zoRG5L6H-86^q)s}>=fXkcIDTdfY3akgE8W9VUb^LQUnOhv4K+2aX{ljc1XLzI8Y(G zz1cW$(YYE2%=Hr;gPJcOaPW_HRz2`2FBgW~#QTuEsS#p?iVUbaARtzQO7dqbja6SJ zG?3cxxl#k9hR=WS;8i2IGBt@)4eBY{zx9bez#PHAB2N;V+$%)vNw$hz`6(RYZQu-9 zGsUF>;lgS{rUQ^Yy|L%0$u^|Qkyn7$wKH>@1mOh4l=Sr8HYLK75PA#T;jAYWPD}gy zdAo}N0m9e%-_;HHnPEo23Y9b$iJDpB>Z&_Ot6o*QOm?xr8urd7Qpe43fhunh4f$*O zqh*(rtO=x~vYDi>ohM-qYPNAndH)&7>%SIe(U+CMm;IVSd01KaoCok$kZoUyWXk4Y zfjln=zVsD<=8ZfHDDoKfQSfvq|8vQo2c4IHmG*lBR}j22ee*O__?uIbv1A>J#v4qc z|Gu6M)zdlXTn#+G=EbSk3G!8h)jYoGYF>LelJC(?=X)@k@2{KAcNO`(Cp>U^9rYUc zK-LeUXR}?O(r&A4<;CoZbwkazj0U3nd4al=X^|&~-&df{7N}*+Wt8uvVCd=EEZ=5A zE$kmXbQg0dfA_$`&=BgcnCpN%5>#fh==n?um2*S@xtnsnK+cu`mC`eWd`JLU6J)=U z{PK&|V(@#v{9Ij7T5C*F@5P;p7~PkYz;2~9wPp$ ztzx?`*yeFpwm$~hG&%FP;cMiEs@Cq`epsVO`Uh>}O?}8SCrqJSSHe)?1>D0dEV9|n z+Ld!IW_<>;4&U8j!KJVG6c^fv6ulYyP}+j?8;~~Ea0xFv9wvMWWrOS3R`7}4miv*f zw*ODuNy)oIVYs2-t}4+vF%h*{lRlrLpBLfFt4(j&!<+YsI)E!3brHurqE*OUd~)b) zn&mEli8Ve<9r6I!&F`tZg#li{3b68T;syV;HZ*CR(23spTWwOu;rsBuTPe1vAFc*u zN?$reO1_WR#r%DB#K2xXJTZUJaKMy!2Mzl^+{f{imt71%-H` zQRPO4UxF^TsdLglS4%!`BT3b;^PxEwG)-USEe0UQs$t0;IVFXYV(rT8+I0IK-p=Hy z&9rxPc{!HU@i(nq3OxZECx2iPSmiH;2D8EGt9uq8zP2g?5!cl=K-4nIO#Qcz&5^To zIdtTDm%-`FIWSf?7H#b)&Mi6HYIJS=mYgm1Y5ZJTxS`eaNOW9qJssfpMO5gg+Dzr0 zY_?!nJOm>GcMB!I^_~YyowK4I+#C!YZS43ccb|BvWpJ!j(~>C1z|~zZ!8V8xrG1a^ zHXOU+YjFAucUQJC;B&A}o&h0C=YT9Pi!5(Kmf0dp$bO|-kBsKFzFoWPvX!rsfIeLU7jPf;LqM36 z7=J~13DFV^iFP0M>&gjD>ke=(ppA@1gr@oRR$aB^!0Ut@2GW|+F>K!Y<&M0W(&^w) z1IO29`k0Y7#f-dbI&qV^?hpz!1BVWxAbO+MFJW~h+1qP{YeI2}oyujHIV-YKc$6y`N`k8oy^R`?!psqAdJ zQ?rUMp+eKdaKATJ#d0Mqa{V|s?Z>Ab2P8J~JHSpKZRTLKsq3b5CH`d9UvYEO?Q)WA620=Dq^JHk`&2k&-tz|8oxaw83c zKuOd1eEgv|O4zp*BN5^7;yDKtNa92j&dx?t-8x9pK=|QH`UO% zk@QyX8&chAuxotDj5peiBK{ey02=I#{&bLW4N$G1M>_5LLA#=}RVNDIT?P;~F97tX z08Xx2ViCr5v)i)gv3dV&YIXY`XOCIU9mxIvKJI9OLl?RGRu17S+$_79{q)?We#Rgw z$!tT|D=8vsg_YNB+2|sFJXJd8a{S;Q!)GHCqbp=m^ZY8(BE$8$?!4BCY{>Y3eO~J` z1EfU@_hk>@y>MRZZcFKrzytrkab9bgYRh)LR5Q$MN6*3qFl$7&zSgy*%+YoJ44Ib2$<=yvWKGxc=AYweCYZr7qol*~_KZHhEw6_FQWXw_bZb+{zNL)KB+u zaO)0e31+AN#eLa>0U%7)aMVRP$t@E*4rN49s?%T&7iw%PVikV8H_i}m5cuXXEZxE4q9OBM#)s&`! zB%7D@3?KT05B=~<38aC_5fn>S*3)n@n7ZMf}Y*FUa_OSbEH2%ktVJmReO_b1xC zv2nTVDBDh=6H*mf2An>o{4#^=rDt%(Y=yg)`v3*`=z{KvOlLV0h6}nIsK;*aPAwz} zYq1>x-L=}-u~u`!PTrh7RVPznW0-apO-Fhy=djku3!B;LeIj@jKzY+d{O{~o=m}%)CZjUvfaBo@MVLAjRo_aPj+s5G%&gYszHq(oSp|d?ZzAe;3dSWDmdw; z6QM4Ebx)MWvD*IYVo6(!DT3S2;O?tQ6R2UB#3rt`=w2fWw;X8y0|(>RK`u3pqg`)2 zL&HVYLbmB7GRNb{{KAVPr{RpT6pH1IZss2uO$jTHRuHXDYG{}wqNy=kk}*HOO8!eL z5xQY?K+d@dE3IF>-25i+k&SiPEI4aW~Wm#`^*+eucMresa+M2!F$=WfHsXFD9 z$Q*Ey+8fMsZpo9pot=_fdIls)^dHnImYmNgIk~t9N%7jcb9}WOL7(8_3c}M7Me&d} z!VD4BhAKdGxL3g{XAK5TJlFnSER^Y2h(PKz@g@^o#{}^Z2`(u;n!o`h4!`* zGhHua7fMv>2Jh~quEOx#1tykXrjyv(KatXtI46yWQ`+!@*Whxa+tvI%vw7P z)&CqUOdh#^4>MBrch~z7nYy32EAK1LNt4N(DSc~SQTfnL+7qF0)mvxk;?}`@Oad5X zPo_iJz<3x((Jr$$oe(<~81Kbnw{hRz_Zwrk&5kGE$q0=9iWGM{*|$7J zZYMiN*y!Y^| z{DZy_C0iELa!|H1aTW(jw8Or8hWGdjh_saQnVQ7d0MrjIKI!z_?HYm(q#Dur$jrc> zSPsKxc6JqaTy+L$ZU0xtbb_!cRyuiE#0#58uD70BX6tu$Q-)K)PrfDTaO=~xnsN^) zeWwpF)G%i_+|FyTwD3C(98wW>JKs5aqt9VHy#C(10X<+jEdmrRGbAJq;Pjzp5##5# z8O$+ZskdMt|6Ni7yKwx~5hH_zs%3=oYyt1mO!I} zm=Zz2j-uOf5b#oVafbvfdkTBN5pX?SFf{il^pk-cC->CL#Ru7{Plf2_MolR6j4*!8EV)Og=dhy+H_?L8Bgu{0cHqra{3LJhm zyivsAU&2LnW4gUc!QN(Tcmv)J*n7HknCqRR_r{(H__%T;-C(y%zB5dnRkpo;?DD+^ zW-3fyPJ(%cRxP0$aI70jlKgWS0es0hGlJ()edlxf47W1+9MuCsda(rB-vIRa~ z)H~o~cLSgCaOx5|k(HEUZv7)HC~obnIm@IP4s^mABA&MT>m%Al7yVHOXmCK2Ex6||MSA@z`>^^I9lp? z)YQ8B9?vZmp{Ccvzrg@`r1UQeTw~;z-TJQ4I64LpoA4mUK#B2OXLjb-C2Mf7CZ7VG zf$7hQIH#9(w9cw}nNSz6vHzy!LzQ(BzPhC^pu>hmypMG6e76D2TS=mgu|9DD5_;Dj z?}s;yf5vPh3T{P+P+%gZJViTMJL9>3Nc9b;2PS!Ui{Ee;tmZTIiC&GW?-0K79?yM5 z-oTNV#;%3e8l{;_WQX!VmSZGn3Ska&J#H zcac?J9oE$NAlc)&kMn)wk2FTcKVwSvW&ei|-@MZN6D=2yI;H8?!5ZEgS79vmFw7Z9 zQ=4A!a<=UDQzbr?JDjGwEJNukdkxPNim)<2TiJs8;wR;<6DBA7W$4WO&2BoQCZwn^ z^}nae+^u^06cH#-;-SV2PXR`5{;mW^JKFf$D%Y?*^ z+jvzz>G|eqgL~z&mswbCHlIweYJGp%Zo}5=5U+c!>_AQu<^C@16}Af`w~eKi^I{$_ z5cF2Q8uI@uBWCM3QpcAI@4v$#xdtWw ziDbuKbhCe%Mr{*c|1Ug-@*Z42@{K0B*p?V4TF;8CT(O!{!Q81f)B6?ea8l-2X>)cgy2 z=`(K~_%+?@>;$h1C>b56fKu*Qs%^Sn`Z9A!Cno(h=}!~cQ)%k_qGM`Z+%Hpv_nkgr zoi)v5=_A2^1CZ*O9G?;y%_6JAmBumeVR|pv-HfFEij>S&UU#}$B!8hNRoB<)OW=rf zUwGq53{|iC)E`O)fb=pTl}jNIrM;!J$*;1q4K$=Aexh?+nAf5wlk1G~bN_d8g=Wa( z$Cabdf2>Kf6=+W;l8MYk-6Ne1g*zqse`u%ue7+lFbgDh!%{3U2!;6C;@79bEa13*t zH4vN73urZ&iz*_};F(VWk{Hl?E0Dl~t?j?Ytk*GpRmooB*}c#j@$~%h8#a!q@UD?e zqTaj3r!V{i9DFf#1bPec*bwx8L`CERB-#$*5T7M9KQ`e9nh72~BY3Eu2M@v$wR&R7 zYHN70y16cZ)ou_b^w8LZ-?#?#i2xEI62*kj`O_jqdl4cLn=sOq>sM56NO8G+gL0)R zHzYRUE?2HPQVzxZdSM4xL3ZTBpcr*&$%lL9M8cP56;*#*jm#Q?Q+zYMaC2 z??BduY`~q^MVS;PRWL#9I3C3U3K|Qn7xbu)P1uTsE1(T2h8D2QK(He3Umwy&P zTZdyn&=4?g+l)=9aL|TEq0v>}Vg83*bq-ltcKhD~K%1$Nb+HM<9H8M*Km&T;`O9Xc zi=~EBOzlmcs0V6#0^td3%CuUO{6a!`bJf&``H-t=M6@OV9Tq|P@2vtF7y#NrfO^Iz z%yoc97XkW-X-bIEm#qRiD*&{mSpHdKdC$SBFM{<{1XfqurBKZBuS-^FU727#X|T35 zd4IftmngW1URb=VI=MgFyK0EFdx4C_{k$XqyHyR*+{zG}Q0BlkHU}%7>sMU*`=E48 zT+$CYbVcQXi(&-T-}p_NlJsm;M=W`DtL=-46KP+0JWUWnY{E4T)Z~_+QUy@6TLpDo z0IIVBwwgYuvb5LqfMR9{34vKEA235o+eCdi#X=-AUIxH#n{2MK$ zK-*B`1W7IcP!0)Zj9c%$R?WB&c-Tr{pRm4~ z*5f|D6&Fqih4n4ho&Qw0Hd1&}P*|*6TsRpN*07(*Z6)xat#7&Q zgTjj$;liH(ZGjRicg|B{RlpC8t$_SzfRDcEd=6{OH4%_k;It4kz0peHH&mE)3E^bl ztrs^)e~sU;BYu4uiJbR%1a_q6r#;$mf;&<>1vF(a5zC?P6~XuJoz)WO2fN)`Qn}_B z?1(gR20xa|?m18qLTYS=dGahAEcm5uKeLTmOQ<-vW6*||h=dNk{EY^zbiJ#yx4VatW{{NwD6lqWRPS1Sff<8`P-R=l$-BE#%L`066uURp#S$Q-4}b(_Yq7Xp}XCRPftHgAJKg@l0yYTM}Id}H;Kz> z(@QvA&$({XU3|Js@nBxN85oAAFzE{XVu;wx+4}jnxB?su2cu_rf>tzY$T|Kf&{AZbY1a_M@R^L02P{3n^k`A;y zK<4~ky;r*VxZV?bzr?+J1N3rFz8zjKz0b|RD}Q$-bp!>o-%HQff$q&#KFxOf`1I+t zDQE-M^5f(T@L&SZ++|>T#Xz0=U3Dv-N^hT@!ODEkh~v@a@5_EyDC&Z=>U!gUkhBXP zof-s@1S=!rh1=vVpg&W8Wf~cuJ|mAs(*y@^2HnK|gO(sq*%Zi;A;^aey(QDc1|a*EL4LacIpPn7&QFrh z|03v@w?N%^=V>eSE`|IV=0s>PJn-j~co((AW9;;RWG(R+65?^If&8$5$5Bjx3jEVk zcs$|om;s-bcpX~S(`D23crOL*J=^N>3iYg_0fl;IlFy$M)Ps^K@%{kNfUdm)x;`SL z#RAQpcV}x@6HWVB9bXmdxK4Ex){CHPPe|#8*i<*9LTYXd4ayLjBkkChwD|PP{|JFk z$7AI1L(V*ZiOEm{m`RQl(^Ce@l=D9^X&4B~KTM?&Ta(e1Qy`e9q|>dh!gBABq;mTi zM9L}OOyx@l`P{De((aP2uH$OZ!r98J`H4@TMcdp&c9)qHn2L8Hh!1~nTg!bjQE=ow z+H!ABJ6!HBX|{i(`68;N+bq-!1zy)HKK(m##iyYQ-NJl)`r9PPpX6lOuQC^`+P4Ep zS`b@OWH5cwNqG0btAjppXLPNCEJgkH6`5M;w-4p5SHHc>wy5~@9}E5VcQ8G7lK04q z0M~Kej-E5<=Mry1OZdNU9sUy`e4R)gpWeyZDHZFFbnuT9{2yVO0DdRI-@PUL{aS}F zH<{u8w87t|0Dp6XAMnYi_>9!wA5oDzx4oSSAMBR3g549p-VQzV=Dux7xTOGn(W^l(8 z;8uljWxsS+6DAr5lz3a{Wf`*L`XxSnT%lA)N~yqS&yc4ZddT}wPwi=ae0sW&ZyD;{ zo2^f~^GPM1)5}0gsGpb6im;zo8)g~G`m<0P@#(h|z)S{AFcK~-w~_FAOio6^L5FDE z{8xV5{EUwBucNrCIzm-3Ng!U>Q7e{QXO-NlN=~&(?k-faAC;(B7Zu|?bx`o-sH^+)^qbm8mzpvw33^<2gW?B&AO_k*u5>gx;kbwT0lOZN43?{0mKF&t~<ePd}7m&OBI*j2J@;aHWcVM^Uer zo_3~xHIv*~FB(aer?XxZEH536n}R<$EU9;v?ymBv)&TSNO_Eepj9ijvQ`~*x3%hId?E4a_vTymBYo=M zVem@sQ&R^8b`C>K<9UJ-PViDE@#f!1*4p$p@#$U3-SkF{CMz5SH&xRI0_Xh{Pe=w?EVUM5919T92dr@i_dGa!!|bUB|8*c zxsQ9E6qEuo17!OsC{wG_th{v4Z-o}gCQigyQ6vtj1SdA_u6e4JpAeJ}Ld+7GaaOvI zg_k9W;&aPQ45{)LkpSsARB*z#M$K8q1+AT?bCV)a#&eoZQWsKs2OtdiKnS?R>7x4! zksXCd_VIpt5xZhf+uFfZhj!blrh=DfxiX`J2lXzJt0(VYFX(<35odah|J3jA)wJ6g*Qq z0|bdDoH4Q(qbw1!ZZFGu{M-?>>E#hGM7UndQIhd#Kq;x&b1oP3*2bP#?)R{z$fN`g z%6Hw44q)dJyQIXH-se9FJ!3_z*w?^HF};cLO>ImUhwXNeLc7r-=6CN7F^zGsmNgW| z^;az=xQj5dWj?-gr=s_PuZHH{V(nCMT!)d#ab&h?Ism-o-E_qIC;r|M|AaK~h(}R8 zPa4wVL~p3x4|MO|k$PE@pYOAcg>Wwpzg!pz_acNbTo+_Tw2g3X5$~n`O44AE0^2a& z>qC3{H}PINnt=IrKBBSpc&}T?_KR+t$&f!Qrag8(RPk%4#j%s+NtOg+YI7R{s3UQ1R z#cyS{wk&7q~KJoTI2s0BHG2^;usfo)JlgPk#H8uqY%e?O?2nW|-k^#~ z3Iy9;E#$d)J#G|5i}lVCq)AAQeMCBZo=rvfvWlxp6zGVi?)ijM@0kv!Uc2)()H*e3 zwyz2!cHqh^D%&d`brE2=bFvt`oFgs`#^DhG`(j1QvV{G@2dPzm4DiD zQj_-EUtvSP2GPOkpG)BhVhX3g}&$E6x)aQ8Qh zc$Qv}eo#DUP3HKbcu@9;5?T5)@t}iZ&mSK~Jh!eNh-wY=!?~aXz#!szo!K{0{V)Wk zclzOao+A2T7eF}u(1)jH`r){Ton&;PTLS%191q%4E$$*(!IJmvyLBT^> z;pAT{fDI-8a;3CH+2;DOc+fYn8wpRTK_d^#J%?5x9(0>Pe$Wejfik%N!lHOk9EXK? zP^S-;{8>`w^g$30`cu1R`XI-viwxN+uM1MF0$H1jqL;6PnrcsHG|Rb@5+?88xp+{M zcX5ElgPOd5%>+pDuDH!<%wfD8L^$@764GCKfUw9`_O{p}&esA@?+2*_!T$|?Q8S;@ z7_h=$b5mycSjL4r#t)&?W=-^OwFqrn6TEwOGimpq3+LtWX&vN3oDQ%+is}pTOTU2J z8|5q-4@CZnko2xRrSeXVj(|ZJd!jSWI zf*taXVS%io*u7gGWLB&1F)3$X?3>WdY4ra+m{H^3AKCPQE4Qjc>pJziC2NJ{@S0b{x?L6@g0vSoMl4HSKDPiuMAX0+DZi{Z*I zBWE6=O94>uj}p^1+^Ty<%0JW4AWEtF2Y3&57V&nQeXT~7@3wD=%!lP;>da4-pU`YA zb)@ZUOlU5<>gSFIy<1f3()f~1nFibHCr7pshjQ_m^o)h2LE6j3u}|Bp)meE&s)=^<~cR8DKI*>NIkI% z&qpv9fAwGD^~xha1p~WEKNkGgME~V3Q2$&*N9W1g&&X3CFDsK0PEDemxw0(@wf%>8 z8Z%atkvv(~K`au2c_Lsbwdr}{BLQjg`tzhUpDmFnO%((3-X<%`BvuQ+*Yl=Kf4L9x zUa3#n%GDS|D0lA}jQs$&)JO;rlI#(9sX(%O^#+7<1Yr^{QR1`s?j|(jC_jh}P(o-) z2xd{5XnicnLaC14m0CKKckck?PW_y^oHz9R(TshdI!LIp3Oq%XpQ=w>f=rs}CDTyI ze7k}0%I=#Z1#$6Dw(R13j%p_-A2YS^+AGH{F2`WykVNJ>yBsr=W5s6V_(=?tE$gKm zsKJt4dza&0<(R1)ACSW&(2OqsLlG!j_I>XVq{JPxE>MAqD)3hd6y&i*yyx9N(n!U7 zZY?n<_zAN7m`Gz4?MVWg*f{LO#R6J zT6MoLJS^O}vIAg?06bs-;5dujxZ0{At}#+_?!R4c%@Y<*!q_$kgfU*r>Hl(1JBeH#&5?@j}MzOiB1W^!HMtQ zH}{+h%fs3<%h^9(FYq-lZ}7f@-rq)bx_33H6G=^T3-255CQBXiF27r*H2$3-e+vV> zw835E&SgU+{S#b1;ys>%8{CYmPK*6gTRHN=a>X6Ov1vy7)Z>gRxrupL+M^WsS913& z)!gANg?d1SED)A`lw?`8sQbpdz|D;wk)`PmE&Sn6pnh8MhvUyqWI1yckGQr^6kOu)Dw|X=jW_KQ zUlU8B%-Kg2`ond+bi^Niob-?R!>=<les zf|xalGLFG`tfF|Jc%XReDvHE_$l(cip?HAjGeiVMIaK8T{dGUjGtbN<0hC?e_xup3)g&K6yZ8-3ly+zcD(5&hH=ZZpO5<wA>?d8?fnz1e|%4XUSxo@0uBO!Q@36*ye}Ja_Cw%$r|@6&ZhxzP8}x%CnE^le z+8<~)%?}>*b0z%X??DH1lY!RF{zm*+y*6YJ*+ zF@pkrE;gQ4*;NkUSCXIWTuGfg3QRoL&$T@;l%lvYGiv;pqjS`4R;sJ+Gn3u=zrWWw zwg1a*X1Fe7V66X}vNv2EA7QIyw_-z>{P@3X7_WG#VS6F6(7psDo96$%8A?+8-y%fa zaQ)vam>3)5|5l%T7f~fX|<-1}3x9kDt>|61}*?EY0d1| zcl$>D-<;uh-eBKpPdbr--b6Z5o!BRd{rJB*DJUVHyo#dR#2!>=%Ktrxs;MgNaGptN zop_6Mwsj)zWE$>~rNfBwf1}ULp0%~H?X!97X%%yk`V51@`oB9uewyw&7=YUK3_G$? zp35wytXcXzu2E-)U)3M$|2__dkkCSfDq%H@gNyNljjm|G&wZ=>-2QpbWIuSk!t;*{ zPha7AA?ODuPKRbn@`IOH|6PNAZvtTfeGvbSzHX%7Tl)j)gC_mnH2`hc?|lwXRv)x7 z8xha%?U;2j==bi*p4s(#^DCea_7XKFF2>wU)(5BEWM@P`AFO4tqz~Gu7Upml${EhV znuMAiO62Hj?_SFi^FIGfyz9pA{U%Xa27W93F@EoHhZw*2@u=Uywbx95$N~PmK_3)= zMSgFS*JBiIdASfS!GuipeSgfkBu^I%#sp_oY)1WnE|~GHs|$j;5FT^;o#OjGAC9U| z?ZIUCH@^S7xsWSNYW&~py!qY|UtrMx9a!$2A>t*bc^e~Am0}x&wf}Hy&0Ov>CVblk zb3&Dmh`q5MQz193gim*v@{`ioVSQQdFN|R+XCX+(Godj_PAk66`}Eyn(qnG!CV#?y?vMe%`{2<|?ma4hp-5@qLX=_#D{+p~SUx?aPT zKVl~{T+SkZv>!Rzf`qD+mfrK*cc%B2Pem_%FoA(=+z&qne7+yPmc5~~>l)U9(+qD4 z(KDQXuTJ>korx6UeId>rheXiw6j9I@icxHg*1=O>Fi+@Qiu z4H4Hm=Kupgo3RA08% zYVQ%ELL*Y1esKN&!?gGX{QmXhBBoQ3)w&bsYoI$rjKR;T(FnRfeXKwRPTNICMLIQ~m$%>TI3g+AKZD7G3E*NNbC=}e5oZwRi&eM@2Zo&w6m%4={xs4vQy z15=lQsAueK^NBexzM#N#$}`0ml!r^SZ3Dw0KYqBOA@hMRHK6$?F_+{+JW1^?7D?zo zC{O4{=GR60A${)>osWkY2?u@Hq0-5EAQlLMd7V-Fo`q;Bh`$TsJ`3@rAh3uDPTXs7e2x#+=_!bE3o+JjMOubd z>IAX7AWjD&p)2AY>0!c@HU34LB9r*SiD6Rm$F9o7pHKRT==7JQU2@t|+T^p>H@4-*fDR7}t09AM(Xu!`v%5_&oDU_`}q z!abV87HRnyepXD!ln~q9XJUQD^fr9MI`K?DE2eM3A=<>V3FcYbQ03^vGx5A)db>!O zi%aaTnBG2eu3N4%4uV!)?ACCrX9@J;Xq>C20(L2N(A=F*F># zOMgtA_ZqLGc%J$?P28uB{+K$l@*CmL0lTStFPod+7P^SD<><4QY5u*9qC#_KHL zm7z^SKpp)t?OfJ)os+zF>TDhTF?9wvUgrw09f=q1=nr)Wuo?N-CN;czD)5qS#ltvL z@2+1{SP57z$g}yV3IE^r$$N=Pd~O#jWi^l{%D^L(Wob$w$p+e3yyB$olX`f zk7DAT4(#%7g6*CDB;NJ2?*gNuDbdzUiBR++`!>M;M9r)1yE=>2{0Y>&$G#14)H_G) zY+a6d-oiZ#UC8}+TOLIX?SGw>SF!B+?DhRI&LW=2&%$i7`w!=Jm9I{er>Z<5QJ$=F zZK6D0<&P8Pn9BO1w2N<~%AFJC;VOp{<$)?s@XHDPQnf15TbBq{dO}0mLMt==McJ(w z$y~ovW<7S=f-mW@r6U~c^v{o3M_Pcb?CJWaJ^5;~JvTQ?QhVJ}+8fVFE80su_S@^Q z$?b(3=wCRcy?t$aiN}6>_b%Gh{`GC3y}l{!O}*0eFY(xKFR!8YSQ>J|L$AtlCTbjr zXA&ZrnUk2$#y^DN)|t(G?T0%_Gw6szb&rYoq@BmHjBMg#Rg&D6#(I&g(kPA=MNutN zL2E+iA5D8*oP!%_PsSnbJ==lyZtRq3uR`q|k=CAzZ$IY?@wox|GcCTegzw7$zL@ZR zhvAV-f2>zmkjQVd#YZw@NL7Ib%%*SFKIg^s54{)hXms=({~7*^hVh4+!cY5sn|kl^Yk>2Ng(6Q_WozSiBqZX@*79jggev){R1f6NB<5Y(%8s$&2LR%@?R->Q3bR=2+S z(p?Pd@1Q@!HmN_0K1lA*?rHrQ)DPuDMp7a*;+R>&#f$md@?A zr)4`xzcK$m#E@hxwz6a4Y;ifKu*-m%W=$XVM3>m@@QQY9WwFGF)ktwx_h>DiUh%mr zZ1Lj(iygBQ-_#0EU(9#o=Y>}<^jhcm8*l4tlHa?eaXpcj@e9?A=O>w{E(H8rH`^|m zTWs3CS6*!ZGEanhb0n-R-{@<6g5AEu$mNibLgb+_I;Cq}9XgaUk&^s|XI;j!FNYol zI{#oMJ-Kk1b|o{xUN$AZ))+40Ptm)EKVJ|&mV;m^HI2O#KLZfwSma#vRL!9T^iT_Z z3J3-LlG=I9;3|h;!quBoKHS4wzgs@;W~{vt^5x@lJ%k6Ie7x|E>HiOIkCtAFeDnt< zO+Myr;WFhE zEWjG^*Qgngk9|iZ%g50cx&VZNzEkb|$K+!_d${j+%g1P>H%&fH(Zhgz+&}K?&EA<-C zAI;_&{!Bz!YQ!I*WiG{ z|I==d9=RC#=m<=jeAI9v^+nlhwFl)I`M75XxVpo~f2w?}d@D^p7Gkw;XnkpUQIdQd z!%-u?58I%8EP2!Lr^3d+o$II>kdJxT);pJIQ! z^G2F{Okr2CA^G_7{3Q9j*$lKEANfAO32& zc{tF?@?pKFcsH(O_wtjVqrVh|Zkb8xc}g6RD$ZI=?$hr1^C*_>%!!jPi=#uk+LLlw z#axTWrS9(^u`(S|z1Ecxn<_wt5^3)Ep3jh4=7_gFs9QS<|Q^|SF zbnLnvITi8}wjbtGHzx*T>ThL}Z}+D~{gUYInM7~vWO{Rh^cFTwZ?_=5F~kl28G1va zH%s((+{FmkmZJA|&ORD?yIFcaLMtWcU36X&z5UH$Q!dR`Oc^8NK2&uM{#(Vy&Xm~8 zhlD?EC$><0^fwm(|EQF?bTJ6?+Bg{#K;6=S!WPJcZ(K~_G$4{e2$PBCxIlf=fXGcM zAQRkifrg|3wXr~a2FWLUSQ^leW@~fhhyc)tG@#E6(6lkU5Zo@|*;V?je|ArqIEgyb zg4XDj3##AxmkRo@1s$hXE~tL%Un=NW3pzosTu}Yizf{mmEa)V?azXW5|58B*SkNhY z<$~(B{-uKUu%LB%<$~(B{-uIqPV#J;@wEcFBh1oo{j;FHLt#gP@%SH>4`RPmNG-x& z3IFQIbCAzZ{rTh!ryRe1o$ntVsPf~9^06wvk|=jqd10cwugc33i5oLonGfmx4F-CW=j}v?{lpyiT=oa zEIr^pSJD+F2Ex6~wGS0TRokHc%%Q%N%UqRcg^~(xD{&e3JW^vR3DlD~_&$e45WoZDa|m6lh*!|>KzfDH6Ej$%$uxuGAymcJO*s?z z8+XD+m}#GSy0ld7>ljYYXc?|=T|&FaFlJ4Q(AejV$mTEnUMrP%c7aQ1Z{xJoMK{jp z1+RrEQ9|Ml+F=0M-kMYGsKc^MXBw&ZRFin%)nH9Qa1T|?jZAaz>Rz`MV2@av20Pxs zasWlwq|7<`r=XT|swsESj#Y~qm=>XH^zH9Hv9mgNO*-_?%5^B}DQq$rKTGHNxT3v< z_7DYbq3Qg(f(AH@gO|`41-0k)PWQ9^4!o`ln2g0-aN_IjOe6ma8mZ3S{2I=QW_=Ld zXh-gDhbqsfV)`*!N95{;z}x1vf1S@9!mT$0XDHa(xEH;1FK0&?yv<0n_u(w%=atBBtwu*tuyUk+Wa!cLhBoM0?W{PH^4qrTy7%+z zG}av-=dce`;4%IbO*_uCs1MWpRkOgfEdk(bieutCm~KgqzHuf9Ut23TP7AsiKa_&k z{(7fe@AZ)@$rU7CsIpD?OKT)@u2srY;^PqG^=|QrozAA46L?KQo+n zfI}YQgDjl$iYd>IFXl8E^-81bil*I1)%XRH0pGsy{lz9rLBLUZBi4rth^(M?4kU14?mON=B*MEu*Z#w$Muo6m?1Eeks2y^jz3+G^Kvu(7_gIE& z)tNWT+;>dN2RMLB7T!4?tt(-by?lV(RoJ9_fZx9Wv1#`pkH%2=Uz`u{EJV^=8e(Q{ zTt2{qPInc4ARpi{Q#6k4_aacha1LSM%zen$DSN}&vBJh-8P2{a1MWkXGM>SFfCV7g zr2CKyPnA+h$_KcPtyja6Z6wiyGRld$Z*?_aguO zl@WlSztnhlV-@%Z@ekBO0UCL5?NNwFaz4Oa!Lm{L0Oy>P&4V29{+IFr zwiV-W2q+)mUZSEpzmx5;Qx2U@y;Oqu^}F%`R=)@H*i{7b0p2XeHGU5eV6{YRMYbTE)k`Pdx!E#rrbL;`2c%MoufzB*B0v6i3TytOdVq%IpdKhludd*z^nTO@5`m;16%?gb1lVgb!R+^8tPc3;cY5Z>V7M0sahy(tn>rC`OV9 z+Y7>!53n_~rR4*>iJFP~fnGkqQNrit1H3?m-<1z=BE-0t1yl0@J}6G&T+E1@e1P3G zxsX?z53n0A8^{OvtRAQ21H5*LtLST=<1M`{U}Np<#B#NH^8xPmq|ArSmJe_slL7hj zR-}gW0j@e8#wYRtc3Vu(n$Mw^?pEi&kPmR6SRTj+IQ4O(YYu}HRO|lwV-8j>V*F~? z3iy9SKEPiQSz}As1;62ZfVcI9y>33hk3SV#XFC%y_VK$I)w$t(fc=GGbLIm)i_w)@ zGWh`aq7#M?UHn7OANiQ!eZEM=_c2b5pQcyU?f=O$dtFW%idk^*&&bNQFESo(KES~~ z#G4kPgCKr<0SGrAU=KlPM%LbKA(pQNVu2vse1JO&0?#r>vMt1$f_PF8CLf??pfS3< ze1Jn(O*1A!Gsl?NNg^#BcTDULxrwZQyHMJs ztbYekL8+OV%=&lAn`Y*u#$1%_$7;D?2xk<;8$Nu&YwOE!!!%ssyTCBg#9X%XVlHLe zm0a$8RVoihF*l*Mw%?CzEbkwzO5|QU!Jd98dH_nQ+n>bV0ZHu5&0y!J=lGqP%un`; zGm@6fhXJi0*BP$z&hnv}_C?G99@XEUD2D}d4j|Ugdm{mMtg_EPSN}Qx%3E{tymklZ zi0f=HaKs^+9Vb<#OU!=0zAgLcQCj%wHfElfR<$LbQHyIQ;o8gKD(9_D)mM9fo_64= z@2_=sq?PzApMDugC)eHzP|HbH)CyXJ-hr^?Sxfd`pEd5IZv$e ztH$vT2QvRT$?)SK>~!(tBi@>m>$Ul!cBn@O{(se*YwI~HQF7?z_%+7I?M!-zqTU!(Ha$eUxRUuvo|La|5O{39zMTPSAYb2ll*a$C ze0}Fa(q_rmr~4hoU;Y14zP`(lEg2!kU!9b%uLlC)8F6mDzN5I7B`?TPC7YD5udPl2 z#_~t$GD3>Cy3u@nPuwqm?|(dB-?*?fUn(~#UtjZHszo%u$$Wk1(gi8AN5OjErTAZ%ukR&BIK@xBJw1{iYCrx4^7Y+hU%S8z zSKT|Ve|lejc*E6kHyg2JxSnK&zfEuQ}Xo2}{e0_snwI)NtV%PU-OuoMB8Fpl49)}Wr|1=kzg1vn=fBq!95%Am&S!nC;u1Z>wEO5G=0F%)#!tE>Vu!Jui|I` zn=tzX?aMNt$McgrD|xs% z#`E?4)1jv{zw0Yj&P~3)-Bc%-uWu;wz6tsI-ay)&!G|}PuWyWGR@+&VukSEZ!U5c1 zzP_iSBROB+4QxT##@7?)a}Icj-@?>jzP=}EzVUp0H|cF!zP?dB-Q;|Iy;RA|*LRo- zCSTv{(9XpF^fffT>ygigYI)?#ShZ5}^)*kT$II9EZFjJF`T9OnVPo_4MQDAa^YvY( z;ZD!jcQ+C#C0A+k^|cX@$=6q<>_7kE%map&X zaZ(tYEnnYM<{gW@w<0&3ukWP87>Go^zHt~W&Y4)-o+0vI%h$KZZAMw$4*@JJx9N}B z8T3SJ)xIX?Ze+f`LxkvmbH2V7Odn&UHJ-0;LN`WjclJA|_pfGYv}QYxawOV453v#X z`c4;y|46>RvydLh_wx1qbc-3+2boLqnLVg>-F$sFK)Ln!OE)sVmf&b~I^V}wn|yss zkxgTm^>5ZB!9go8lLP_+|AEQryDnPrKOZ!S1@MDsH zemt$Dd@m?R^va8G;su;1S9#;U7qpBlkMj0^V%+P+y1&5vhl8kpS|a{1Mdifzf|}JB z1^6^!D)Hk~TC4rur#A4tpmNpoz87=}dXfdg|6Y*%3}&R_+a&exSl~pF_r0L*rkwJ< zplvN*QOkb(VRy*DTyTXdArm(KV7?dB66-c8{?PRIf~MzT(AwiA$=?gw9y~Vwa5o?g z#2>CgtNjm)KYWWu+$`~jXAC0F%m05Ae^`wm%N9zHKTJaaJR{YOKfI>vQ+T;%bls%* z!_AzYBmVH~OZt<1TE5Zv!-3ap0sfE2A9Co4*|ls^{Nd^YRBJ==hi_wn_`_uslHw1W z`+Gs(?T<#<)cC_(h9nSwxMMVW&p$uEf%wCF*GX4)JoH2AROc_JX%l}qRX@D=!|hXz zBE^IC8FDtD_FJ}gr?U91;<*=p$OnN_!@6O!3JfbH3j&#iiw3!u2_bO3ldaxueEeaq zX#2kwe>hxHC&xXz?54jLwAF!Ds)O-|Jvj>k=Ua2!hv6z@0L=OL$&|g}>Uhov-f(qg z@)Lhp$an?g58H!elj09k_Jxw<_`@e8ZwUAt@20ph@rO^{-Zy+c{*Qkz=!m^VsSOUe z@rPeH&e!ny_B1tP>F$HLyt5P#TxKk01Su=~BB6;HraH1irp z-fV3*9Dn$PV1i7B2I3FBFkq0CzNA|4;tw|vUv!p|DbDkDG#q~z1{XI+{2^C(HedYV zg=_u~#vk_ECruwT9Dit`NthCU*sdxNe>muQH~w&!&N@}M|D4Sh_AlCf0O3ir_pYel z!L@Ip4U*#zZNRe8@rOtEO6USN{xH8XNf+Ei@z04rbQLet;|~u{*34}z{ty%O|DE_l z_MXfK6Mr~VddiJIoKOJ)d;{cJGhEJOfY>KFTU(IE;}5$qznh3Z3;>@Wf4G%z7dYSF zz&dbRApTIkM`ne&(ACsS z(Bs7)&J{K<{xDdDjg3DXXyh>y-$r~myLJCNJq>;@=pcX_h(GL%@SCwQ@rRj`2@`)P z6nG=?hYOx^7r5G^O#gd4{1zkCQXNkJUeGr}`N!f9&C8`QHe39mJM)gk-dm9yjz7G= zD+7^;Kjh#%c0R}2_6(8#TKwUG(MDNyh5#0p?exd^%U)&RYO6F#8ySCiR*3#L#~&(~ z8^%a$JpPcI%c!~Whrd0p(VFe-N9y5?k3W3MO{V`${NYQa2lBo6LmB6^S%mgvF3D%M zrzm&h4+ZtoOa3t1YS#k6BcU)CD*GFq3CCGO&+D z^&37*=M;P z8pv)w#je5DM^)6LCEqYYTwb{9bx6-h#X%!m# z6fqP$T!%f#fCoc9w;SYX*}1l2WE1y9&J~)JvFgS%{Jl!f_0& zB+c9{uBr#zPt5fxg-uD!bvN)$C+0e2Jk+FzdU`Oo)Ay^pfX-YJIlyqimw1zyYd2oH zUUNUZ6{`G_k<@wnlsL~O<>exJuA%1xRVZa+l0M!EU6x2=Qe~;jSDSAl( zwW4V^scCrmpn!)%at-%p=EAW++={rV^FHs*Y)H=ErTb3CJdcnh$-{XIIODsR?!#}Q z19a=sbd(hhqx@J(K^Ff70hAMj@(qQB-27d8Ch&RryTlKl#N_;4Svis=aGn^zIaxSI z*ie(`M85eR14!Jidw3VAvNy4k@jkhoi}&CF-sgljH-VQ4NdMFERy2-xfQNTr0PoAf zJI9Y(zRWDmaCT1M-4{=mhHBp+-b9AJe%?^^58!-VI3vR8=dY3+E!-Aq(03$F{E+yc z%Fp?EwmL+N9L>OXDSD|rWE4&N5=4@t)1f@RyCt%cH#UAaM)eh9b@7c*St&UwyK&)Z zmk4LaLmvQ7b-pex6-~R9Msz2umep-wl2%wkvdlu8i3ix4YmO`<;@ zg`cRa%E9T*U-ffEN5Bi7(MDr`!Buo~HOtbk8@uFBd47TP{dcL%2$P2Smg5u>%TW~*9LGj7|5C zw-3p_WUeJIlFd0=s;rQ6AY_7l#e8ljw0CjmLT5$|t!iPE`Iww9?Y3mX^#w1zc(^p+E?cqJ$NYbUDVEcjx3pY z?>YM6#d{yVOT(x8X3LSQ0kxAjPNH~kD}cOs?;apsF4+ zUcR)pDr{1|wCSQbEe?D%GV#ASU)mvvWJ(-(S9-)ejUFOt_ww)R0!mkwQ1XFva20+a zU)r|AHJt5Nv)N)eyE1Sl9z6ce#Bg@(tzfYk&RmoM@!(q+&tSf^HXzxgc<`k5QYv;9 zoQ7e|p8d^pq!b8i6VwiO?=hC*#>9i)a=FlOJou02OFN)#LjAe<(&{<#*l;}fqC1EO zUw@+(Vf&@=CiA6D1dk4*4Zjffx*GP6S#eh>Y{|oNd~r>4)zbH0g(ys^#BHs}~@TgZa|dpB;z`?{K>t7p@vd zz3TR_DQ;lm!d;1(q2=44kq6gahgL|=m-anaHY#7*xHbuW;O0x4M%{ou7)>!PCfvd8 zv-u7+((HbR`U<$I{+P5Dd_Q!0v(kdKp-P=S4aXvH=9Cot6sl52YvlZ`_>Vtnds8Up z#b07i;4IRVck`vK{+rZe{xaMQ|DE~L28{s~yPZJ3v_)cE0rwS%t+EK3l zgC;LJIvBzf9sK|uo|Z4|Oi|;e~?`C#*zWN6SXA^zJo{tQB2`>Pp6x-9)5=Q#8Hn`PwBTag;h zmo}>h{O;%!Ui4p_m23aW^|(pUZf- z`O*&bAv#)!5<$!qgqts|y&yDKYrnQLX)i(CCkQuRT73-=tnJ(mu@ISpC>Mmum!=tL zj4m%<+KZ}SP-?nE*1JSmoxiHW2J)p1986z--+iblr)xX=hwejl;skV3aBTD3hnmGv zUv`SYG;EFDhq~Gr-btafjlBsNBq{)J$rd^*+@2^{cgx zr^Ly+B%RL2es}$(ub!rv)bR+m5g1NA^v7tiuTZ#d5H8@VHTR*$Jc1~%}gKiPmu9} zHaHaq)K+>#2JS;$gfs-=O0pJ41KU8<5{ucyC#%eTsB3&&!TV6R>#3p-@#OnZF2%il6d<-~oc?@u+_@jjXV@S``a*G}-M z4cv#iQ1!g~P(x9o=zae_)FY~)kxID_)g3s+3B3DI`E}Km0KSz%vrv?}xlt&Gf*_^7JpO`AX+3$=P3UXQv-wDZ*>g zQ=hJXl9fIj>v7{%S_|`+UaLPF;Sb;SWPfq_Z}`KX#$YoOEZrY|?OLq~~A;r}@L@G5`U8_#Gwc_eT1|-|H{k*fIPdb-4d@EnE41q!vF_ zKRkcO{E#mTn5Pa!(&y6;p}+Y{oZh9qYUte zU(0v~{o!j*)Q0x;vMj<2Rd~`VyhUL_sOknynCNFF=u~PQHS&y%TP3BEP&HYh5nxN@D%aLdI|oB zKfDF=!fV*|htInLrlP4A{%qBIY{TCVnRb~qAreRBl%LJ`!&fov$V%4=W^pSGY;})s z?qwFgb~?YC^oNJx;veycXQ}=s_`?^j1b*ZF;Wr-tf6yP^@~1TY@I8Yje^;_Ue31a9 z7S_p4Zu7J)|7*Y>zQxt9KfLUpMgU$c*Ldrm)KL?RKYT5cH@Nmn#3R`sz62~A<@oS zjBDHCiCvBHnOReA=RUY7WPkYWs^s~@uUEnN!}Fm~`VX2sfA}}7cJhbMMu(^Q!%q-3 zY5wrTeTvw49;m|a@`rzFghmdrG=KOKUIqN&zkF}!xAli#qTx#Shc7pynCuVl#n#y< z`r7Y#%P_1ZYVLeI00f)WAO88VG9NbE_d|B1zsR4rA~oy}e{LC!Px!;v;4F1!45gR< zJ%9MEVtK$HKC-vbH9tcNs&$$E7#n&#N~iV^Wbc25Kl~*`R$E1P!Ee|fe)6}l*Y$_r zX~GP%ouL@}8}ASAC=8p^AKv*aHShYvzxmG23C|zCK5TgZlXigU`2lL&^@kThzV(Mo zLoo|h;udn=@6UL+{_tIVh%5^+Ul7jPE&;=RUz3Q9*$i_JaR=i`hK`-eWcC$#qK^fukICd z{YTuz4z!@ccO({>C^KL^c)|KU1=$VnDu&cBu{b;jQ3=Jo^(livLjEr+FoRvPAnAF zVnt!bCex3FwCY+0IwQMm-@H}pZ_`Nx`RTSHbL;YB*c)^RN5k0_Gn(-Q4vw48%(8su zeBbxH#s6^-$NcgZtgq=t#rjueae4TT4&vJveD|0d9c$z`iT2GlsB;*}Xt+zotY(p{ ziW$vA#qYb#*mKRa6SeKU#$i0aoyYw1QGxc-=s&PY`tvN_i-UNR=ugAVE)#{i{qxL?5K#s#TE_Vy(i_mG)beEyA&B1i`2w|5O_rLTnw`E*!nfJf>TDbpr<> zZRJ4m{p+vMacS?U-l;@XwE%0`BlV9o*&aHjq4vz<)b@tj_EO%dy$?BhxN+@GXt+J| zIJLc%T%D(XDeu(YKQ_8O;+GBe&pb|Tufn#M@=oooJ!)h7H?QIL%;VJdwzlo1yi~l@gwQ_RH1lQHit~ z)ZS;;kVlerK=K#cKNrMW5?JfQ(cw9g!@gWjly2SH=E861o^o`4yB?A!}`rUH*)Rp#Igw{B+tvsK_*x&gT2?U$EJ^F>&6L{ulk8{)48W{=?6` ze-FO18o?Lj=e$D0&uq(2jTHCt5DAx8+gYAw`zO2lvO-wCqM{7{LzS;J0k5UV!lTZH z=NkN+VQCb0{#x-Qr*Q)Z#NFS5SoEME9!;q{AU6vobk9|xI zr$%RRb(IZY!Mw765XFsL5gi_pmXSg0-=_;lr`wptbf-ndk{02;Uo#ae*8CQ#EH^Tq zxDUJ9x%+dN?;?#%HdkS{bS~FJOw}D^Z(>)xa5!q9I{%0BMKIq#`wXvAe_*B|bjB4| zsc)d+YM6HkR)2^_YG2wF*y+pIs%g>A2k;sA32hb{r52P@dPY$cIf%1%E!vTq{+v^z8jX0mLDa_$1%g`NjCKw zkdGyY8vaxelh%k|N6mnI)FS{v`Dg(>aC7b7E%a$>=RYMM!?`5(ht`)PM0~3L*xvTY zUtdnK{l5tonf`x>eEfuvq{+uPAYMEhr+e+kL~79=-@r2G=c7FN_*2%Gck+U3vl2RFo@i~Oez^JiYu_!lPd zpX_659!>DSga5Qa{JpYMnU}B*&#sXn`v>3WY@mMb2Htns!27Nnc;6)bN&Ar#!rk-R z9>nZ1cJ@k=4t38wk#gBl#=nEd6ED@3BT{w^+pudGVQu$-f9l|O*~foX!#?PRyk;5o zweEr12nFIF2b?E`l>aS31Li1~u5Lk#y_n5VVi!+AZ`HQmO}~3w&v68&*AcGDs=p(N z-ZPwnn}K-HZJ)^si;#UH`aC|FaaJ z|9ly5)%pAR^uLSVcyTKbK>r%nn%Xxk{X2>NYkPR~*QC)uUI+v9?@l?He$BrI=-1;0 z=%2bEmHvVt{XZUP=s)iaL;tz@WB9*~=-=Mb-%a$7uqMT`S402o!yBi6kq`#x|AKNd z{dEn~ug4A0|I7ST`Y#8g&;LWzTy@8qsfPYXhj{e&V|{pW2enk)egum{?NUpBKhfX1 z5&9+XJEqY8jOb62_f#){Al;X)YT_sac$AH6rv^XT0^NbkF#gWf(Ov^u}k zr}xMAp!XVn4UZJR>x&1v*@ZGc{dpYRI> z^`B4g3;PA=jZlEU!pvuJv{+1ad#J>ODX^{f;56N zoP9;_R|$G|RQcINxx1l1R8?l?qv^u{w-2GJA^HV<55BH`a8Q-Qk9VkQ2V_Y+Z62U$ zr(_vSgn1rgkUhb0fjq%T0FARi=9q>HlfT4 zY-FK<^`Dxv(6N!>mSsd9n`RPLYln;>6nvY?IeM%4|`1Dcxl&%M#lG;L)bxVF) zZk|pxvjp%qF6y%3;n>s(dKY|n5)Y@OJ}fGY4Ie>5*vO%=o6C7wwP5sqJ@Zy+{VN$d zt0Xq+Rf8ntVeVkTia0}4RPg?&Mb;~+j}N_~V<-FC++xk6tr(2~;pk-p8ahqTk<$dq z|Chg(L`?N>c<~VTd_ljNjm7JXy;mB0XaaC#B`rIbMkflpo*rov`EFOWV8nPguwFLSdG3|f z>q}z>NbvRLzJ4G&uNEgYJuRn`Oi=kfusFsA_bS!@3CNsS1Z){Nc!o z#hDdrT1GmBtLBys(D{yV)q=9UN@9gsd8@QZks*P+EQkyh#OQGB2r;hyLu+5hGUpRk z4M*pf#IiA#`(dfs9n}vgO1sO!m>~9ld3HwRUaac-0JpFiKI|-D>le83(0}>>dq3eJ zdq4nBd3ZvVN?f2IId~iE&mN+7nCTBGg31n6hr+Q#ZIAr%Q@@4-8LGM(=DB?fSIo+) zpX>GS`<(;*)Ax>S|F&wNe>c*<8GzgV<@&H+ODTK(yVnOOdE7(xssIB0(}H9A*YH@i zQMZcL56P+#{T#kALn5;E(6w{vZDzjT)+a2@mhe+(%N>}rYb<^v2PM((OQLhavCB9h zI^PwF+|t;|Ii<0|-Lz#ajlNbI{h&1ZDF;41`_Q!Chm(jE@n$6z)3fRq@QQWR9vRB~ zcPDrk+ZMqXwq;T5#(nWhZ!?faMn7Gt! zKbBdbwyX1ZuuOJts&oDNk^tYn-EjMTX}|AAwSQr9`!DQd+Mi)N?rgQO?dL|$3HHB` z_6s+v{S~#z{kQF3?6!Xs)EVuS-2Yf+2Mc$F3wMqOSAVZNzu0Q;0ZimrEe6LV1}Zml ze1Onvna${d=k=!{a#2@Mg2>n z@99wRuk7q`j{fAFgYK@?RtZBZ9G&4@F&*29wV@9u3reF)x$wp*erFq?6dUAx6X%l5 zb@?#otRk#|i#g#@gjHtc7He(NG_lC)-i}@7BZ+$wIb5mcGjNB^5O^xSUEIh zaBLYhtE1H9)MVk_#ra6|MUOVM+W1z`K(BqygJ5yn=SzwId>zo<8jn~njFXLNubVT$ zwq)RwT1uwBuqk}Z4^Cz&oz~OHZu80?8@ot^@9qJF|39?PuR9ziLX6@em-g|8|b8jik#&YR2Q7mYxW zc^ZWxug$AdxqPEDt~MqyO)Dinee;J=Np;z_v9gML&KXb5`V|O=-47?Ezh&9YH1=+e z5!SmNvF+^tk|(S$TX_o7yI8R4^ll%Zx1&pM#}s-eSbEK$rs=JJu@QQ64ZWQ$y;r*Q zUP(K4a=G;S-wr1=)k9NgRVK}DGEBrgYmvAnnVmMCoyRdN6M4)kI~?2N&Fy3}ZPPhA zk7}XH#USEvx@<3OF`;GIdcG*SO=qbD*>~<7ta(`jR~p;@4Gxz(PfW3s7U{UIh?(n> zpf7Y3ch2dVS63QclD8mlRcW*f`2=(h*7=yZ%Y3(okGxMux9l9bjJslyB5emtNz$ME zC5dvHwC9>=!=o>#Bzh}vWYuamZ_ckUjQ({>>R(kZ%e7lExkEK5A!on~Y#B!ZqWOz{ z2~)<}6dURvaQWvPjM_y(#YX@akau%l$=t*+yBfP)KKeqcN{=PB%O)SZyUB5Za?^m0 zY%VFadmb04Fb!xQ3uLxHE>JiPsG|ikJ0cgTZyHdB1wzxUkGMbs(tzsi?rcZ^Xh<5+ z`xeM-pIl7C(txI0pl;#WM|aapVN5%R`ltc&H&?raXIG39F#oJoonYyW7IcDMfl8qI zt$(SYms(J>0=l63t$(SY11+cqUs!hptA6XB1@)a5kuc5z=u2K&3Xo_Wja+nIH$ z;?-sa?_HS}9*U?R&Vju3k!7~}*WRw+6KC;rC_S?QG|;0kK$%)YM@S~`XKKNy5o&i} zUY!m(8obVAD%Dr{`py|oIey=|g#Sb3=M&|TD!-8^4_A3fqC8OLRf+PkDz{}SS^emA zS2^*01!rHC^AqoPRJnJe+*akkCCb12n{s)gT(9zYzbyUh^g=6>x2j8qmWt)hlxL+Q z$nXEF@y-m2ucnTt$6}XZ@coSbukP{ceO#Yv3vggQ%H+Va;GT-dwb?7Xl#NBKFuP)L zNZY8BuIgN|29-Av##XFp!G4JqObRFZ8cNQ;Z&k4-i}gzT4m2?%e;g|vxlXILG2(G4 z`L|6iw@M+h0_fW=DEqRixsi{9W+*^@;l z7oAiRU8QBrI)%*bnPF^pyJD2ud=z%iFX2TYvrTMxIx|zWRsUaf%&LTDS_oM|I8(M?ckjm{HofZz%>|b#dnb z;p$PH!}=C!SH?KZ-)<$*H<{u3>;oBn%{rxay43gd=W}uAzW9c+!n@xg$B}Pv>n8kw zSO@Q7o@~$F(c;z2Xd3MuZMUKXZ&+z`tr^Piq%!A2I-dQ4U2J|B5|R3{N^HC4;n}Usui3}}514y< zu=C4`aV_r%D{9>8DeMxCHq*Pr4vNX|?Jt6vup&6$EFJN!%^GF&n{T7znfZIRY}2v5 zC3l(!%!+sN>gqfA_{^xy#Cj<>?bV#J6)c%jl)PBJh=Z8#^&O-2J5NP!)bJO5CZ?wVs06MWKJO_2&~3|Eeph ztYfe%5W=eK03rkLvAO*37_x-VDUQxg%@STV%;p5&&CoEC4B>UTp(;+?fZk*XuPZW( zEoaWi5U!gSoE9ZRc5Y4_OEPBwr{Hh1@&buE9=VUloou)j|F8fGjmK{Bj>fpWL+qm zQRI2f!>!!HoB<%I{|n~VjI0@DnWY8G%X-jnCq=-I?@2}rv)<~*80BOFO%lLd#c%H)ZTgDZ$N~|y8g4LnQ3t%eOCgci;WnN4-!UetfQo)RH!7==q zPHLyhH{fIC+)(9A{)S^G>%5Z@g@;V}uSn`KIi&^D5ryd(I*7vbqRP3f5fTgIdWDda zB?`yo=G7HP=l6`xsf#x+LLe%Zw1(=|#oeZt4YK*-v&{Hk<>rgW<}uO`dTzRr1;s0k zD9op6D++ma5{6x-@P@VO=Vp;@LeI@b6y`h27%a?!Tk4cNo>9jn^48Bzd2Q6u&&pcm z)m6?dTf$^8KNpm}ZwGqGWDT@kMs=-@!EQwr^96_f-+)M)p(c|rG4jPm@W=YI?Hw`B zh8_B6l#N9Zu~@Zp{sJb}lXmgTeZ696RXhdN?4WnN{GJSv9i}dT$}Xzz#lX&HU_aNm zuZe%d@R{ewxC3tFVMY8C``jOMhqBrE$6MM)t^V=iX+QRlzULabXkm2H?3SJBV@9dI zgH;m!O3Q7Q9$24k%gAxzimS3ST)X!xELqO?FfM<^_Ek>)SmqG z-eM-gcBI8KZ#@4{-dv0^vx0u+450tarbFz>3#@I|Ph9p9XixOfb~w^Qdl_g^g1PXa zYFQb3Kv5tAT89Sg_`0$%Guv<2KKK2LTA$pT*CsjPxN`NUYEfhmJA<9O6DfX*PmyB} z97Yt)7zxYQzrzOJ`G^Upb*dvB!wm3T8{RrIlGpZnGAmSj0!8Az7>QChWX}vPIto zB$mwXDbA%(P=9kmKN|Ynx#7`h7ytN)2%DL|1K>;j4OYHj>ZGMUqWU2+<- zjm|b>(9oN6%?i=bo1?@8qXaxYVE@c^COwF;_Nvtv&UgxDcM!jWCpAutG7RwK&l#!m z^NI3sm8<=-(H*h!aWGM=P1rLhB4^T5x>}Bmkj~+%tZ>0^kpsf9+Xk3nTM#)R9P5ps z&K-Rbv)QwY>#&QbM+S$xM`mEpc=MQR>n`6i;~3#+nYQL^RX67j2y#OYYA?FRg)7fc zE4X7{g0QmX1UZJZAjt8!k7up$#E#1W*K^$@(I>O~$&$`NT|-b*c7sd5cVF@Qx|9;2gV;PY1^Zo> z*x`=^x(~hh$D0}c)E}%qb#tzGAOOJqNJ1-ea%j0n^N&V#=f5ocbZ7@>8KVZbIvAlr zdW`x+XZv_T7zZIk{joC-&T}6A6jOUp7NH{+vw=pxXw{6o7_JzRlMy*Q95wr^1(L+e#veub1Cv7er;j87pko0v9pW6q*bp0(|^il$`)fapJa9uUcw*7+?)&0enf9^@nvf8 z^$^xjCA&M6;=4VrHYFK(lUVWz+-JOu=ODw$hcBL|ujiUKJ{2@pGHodp7)xirRqJNKE}bJPPqQ3bbOW8j4lYVkIS6+9-s;cSaA zTlPebNQ$k%2j=b3*{hDuZ64X$@2M_bn{V)P+O*dv24jYfH+-`-Q)$Uq`b=`yc|$4OZ=9#7_{S*hQ$`RiUv{ zC>Wh(^`_BRvqF{k3Z|gn^qjJ9OJe=Igkwi##ZJhs`1}SiW=BuVWrBw)m*WhG9i1Eh zjK6lid0lcUjD*aLm)Lbi{ZI;bXCRYPb*s7>`ZIT2M?2N|Z{&%jZq6GMSerWP6|Sb3 ztHbAoDo1E;qnYZ%-8+t>N~rQ|J&EPlt3LC&jgv=$3yeWx6sh3 z*vLeKLzQPCtqd}g<~|r{Crt+P(%VpQ2ao_-Amk-6DGg4WQl<>v{2ax?lIG2gRHYAB zbY4i8#e0|vP=G819+6-kUVo7<|`kj+!^3*L>X|Nt`1OOO!E5I==ZcQaK(m z?kw_*7@q?Ii81QZ6=Qz+VmwL}JTV@;UVZw`x$Lfl7%wuMNEz;g7#E4ljM4pf8ZoZX z`L^ggvT~db%uILZvVGFPqe0C^N9&g}9{CsbOG~03*Dr)$N*$Cq+QT`YBnQ`E_XON} zIm(ipeeDyb9s1bWS_FMte$-2totzHj8#0Fzt-O{=?*CU zLZ4Z_Tfd%HTIyT$Yg*o-`WN``frR~9%K0Jef=18#mJ&ZHiLT*nS)Zx}p|P*g3+B;Q zzJAnvDk+!|*{)APF>8sn=L7q(Ja^r|54{%ca+JIGFOOWh>S`SpD~z01O7%Gr{VVCk} zA*aBb-+a5-U#aPqk?-RXqizZjaQ56sYH{fo zu=2I_S{)ggLUPMcmHfMGe6lRF>EcWtxLpiYK2O2)4LecKZT~`*_n2D#-Ur*lc5fuz z3weCB`<`Lp?&k*gadtzIkgsse?e99`onC+Uf9@yK-}<*|(4V-fzru!D9hqvKqW_?) z%)`e@DrVv=z)f0O@CB|S-_3-12OlV+8fA3Hhm8}fT>B|@I%dzJ(eogcNIP(%^OeYL z;qIg4KR3I2o_l-_s;GRCy@R?HGRRd7O+FCNyRz zy)oIFS%5?R9S@eTInHE6YmyNcVYN?--tT6s}Q@@|JJ_vD2rC1HiJ8qD{r!t75&l{vgBihkOYrLtAe=+{N7 zKZW|{`-yroaIq)G|DL&&E0KhDDwa13jrmQ451mbVs+PqCkycru>pzA^sHCx9@+NO? zeVZ%)QXOtqu=dJ5qCfBbT6ErYXP0L4=C5fshb$+GJjeQNn^j!!!{~+4*#&DyE#kI9 z=$;v&=N2@ZS5#0J8q1yCjPN+24>wy;TySAl*;S>n++<@V)^Sn}{sH{UxNX-vzue?4 zy`jn{pg1~!0iNv?{|k0wa>I(PtPr>CT!xkNjdR`28YIICPCYx#Sj;Uq#!{O(9sD$y z;-?o3De>Zil7)R+NI=d*76Qh7X{--(dTyj`QLGt)8);D#CHBmhOkr)PDlEk2G)C<3 z&e4yYVTeho61iJDgs3w(HAGvK7W84P$H7aDbxC7mJrQ`x#il)h-sFgr@WhH+Gx94& zzf}}<%pr4I-;PmeOohlX%7y@DRT(91c9KRTKJP}29Q$-dn3ix$`LhbhtnN{$tC+jj zxJ)%OOynX4#u4tUK^BY))G(d*oGA`fo+l7HARnOU699~gs{sf5M4&qP(CGcVWeTSMtZ#{$GG;~IGS-=*f?1(^6rF1JYQfUc7nE||3ucrwThkNi zwj*EAF@{43XSYUZ=&I=a@bs^d|KALrm7xn-g@;b(bbh$vyKFHs)S+eTf;UHfjmy1f z^unxY#}aC5iu8%*B732#_fd)Q_xNA*y;x>fUKY#DXtz?STgh{p?7{1FHMva zhdr6shQO8^ zo-c60G*NbQC$It2>@Cxw00TDJ$A%+hf72`zAv9(;ehMinwj>IdwxS##k6**NoEq`z zB+Hkbe69*_x?k}etimD+3411X64GZnC|!Mo03HOBN96uIFoH3{JVaD>^qw3m0%ARW z*%~fg6Zme_qY|=cG4Yo=MA$?DkkDA`P?bziZw`l*g!5M(ux@nymOllVr|>6KwUEz@ z$LHx=<3?Uy&OmuMv$U{j1$s+8iFJGsKOY0T*Pc@47qa+u+=ic}QBSpos_q3aKEd=` zyMCv*nx4f#n~>P}b#SXxhbb(lcLl`swJ*ah7WW2REEcU*JyeKgR@S4-SoY{3Cy3B_ z&K6@;O<#G&@sSh%WsM}G8^UY$kD)O;iU<$OmK2yg*!{pJ$sNiq+JX{hzUSr$_cG?S7W*@+6yXgjw*2tZ5~j z?UX~jqxoX{9@$sUjEsbBC(>Uwwq0rWJz6ZqKzXYEZO?w>ehyFUCi%6?MUz4+(@-n% zX+|kp{qF3Dwg7+p4WmB4cBaxO*6+1xhM-b$$NTfY5>8`b!($8%rsNreVHtxZ-AB!o z5wCo(=-XpskspmQ__Q?!5BxzgXN|#o%=s^44CVmstye|;!qMO4Ik1img@k$x$Yx5u zgIKzJ*wJ2o4IY-4Z{N%>XC!b;tuoH(&SWC#BvSlZgwW;7iOxRPNxlaR=|il!O-XDd z;j#5)N_TAcEwPSE9JnQ!If!^!*#U_W(&@4ftm11?_EsrJxjqFK449eFKS`Up+mHoc zWON<}W0O7WO;Q}IXYjvrn*i9~*u@Nt*&UQd7wY7e*}Ad^B}kWJ_EieYg(^)tUMosv z-x_bsKnV7>uAxd3ilJY)YxCpZXo|lQsyqljd-unjcOac{ex)=v&<|z95>CjPL5(j% z9t@2wBkwr3E|&(0+!|lb)4+5lf3?}5Mb~jiH^=VNn<*}rxebk$MyH!|omc`tjr1gN z5%OFVWr=rsGD>?U&VyvezZTzr2uHuiuXFAwufi5oaF-KKHc5MNt%&hb4uwK0EO!P( z%_w}QvbNpECFZ#eFs)V?u5wL?w6vEV*La56$eBQJ#%Ubz&e75wL+6nvgoL$`e4Vc< zJJac;r*L9`4F=VB3MRQFBxsY|no2Xu4weWK7_!1?=Uc4TPKt8|^T%4~2&c!3)#uDM z;zM=*Q90<9mlzCs-_1FMKGr|MeZr*rE`2k~<|H*`@DvUap=G#8%GG~<|3kh&S?Z_R{ z#K?`%$T5BpcpXjGck=WJ+0NlUaY?zB70H@aaxKv_0J%&8omMvl;p`8r7h^E zJrLu*a>uXdPC{bGul_mWiGectfa@o^{+F2L|B(UyAMEpgZw@JD5fnM;OIEsr+<6nK z>frKNXN=SGBdtQtO1b6GEcR2Dz-OuSSxOfB^%zu{i?wKRNi2gLE)mF`D9%&)}+VrI@bVRIdWnLYjgJ$xosh$}j zz3-m+@aL>#fA4P&fk`x+g=)=oF;qEPG<45g2Mks5X}n^7>D1qTls-}2-6aNFi*Kpp zoac`-7JvO>#`}j*c4p09a+;nUI-pnfi|S)&d|jyL49Lz*u56`#i`lyWCYw2o-+z&{}Vm*E5 zXHwF_I=weGe)E0gGW%oQ8yTVgomfgQRz>-YC+=7!XTmqgY>X%Q@`JZGMj2Gk+Z(&u znojR!icQ^T{uY0SL+@+a*;(wRJ;w&zLpRdbRSiC%sEvB&Ai6}p0XlxOd=C5e{KI!E zmE>)EeqC8m^qp^k+5Nd+f4z#kGo;KqNdw#_q<{ao2vPL8o&8r zQbfo#hn0}kL728|{@B9{e)`qn(?B`&sA#-T2^s9!D``=Y_hkrKqw%;hL>Pc-?{rHfmSZ!5(zKW+vbO*NB{y-FUqKMvs_ZAsXr?Eg=X&G&^+N-&XO6Oq)$`up9U7&g%%7p^{hl_0Sk~>4 zx*xa|_41h3dzh$P?M~W5Y8zbL^HVCGq5E?T>G7NQOY2-P>O239%xUP_4s}+d_Lnx@ zm;=HlL14jmoi17RPuW-347pe2RNZm%G_HH{(BoJ90lSl@^^~jQ*D}=8A{bJ-``5EJ z{hU4O%ksx>{hD3B^15f3vNpV{a{k^f^edCb9a&GPVtPLM>yO&`iN6)~>z}H5 z=g46hb5iAAhMh5WtBw3`qei;I<8RLcO&Q`!-`>F~6ZeC=R9<~Y!u^4LThu$HGQ``6 zg#~6?y+r!sDT2y(B7Q2ulpM?u_d%aY=4XdC%8-|;%0ABFcY^9`O!zEaslH|4J9M|U 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%0DK>a`6IaG^^YTqRoA5Ef2Du=Ubb-omE3<;Rk0Adr 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

niz1J1e2lOS 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≫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

  • )Q>JZb^-MSq`JErhFY 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℘Ex6_-QuYxhTpw>ZcT;o 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

    udu!58r&hwuQ=V9^ydbX^#*I+tiiJItxb|w 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%0D5;szQZr+?1r3!+qtW!S3$%mN$6hGl^syTX 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

    mTB`MHZ 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

    B$qjSwda`;GvP7juupguo|s9ben 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�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 z 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 topmost frame + current_frames = _current_frames() + topmost_frame = current_frames.get(thread._ident) + if topmost_frame is None: + # Note: this is expected for dummy threads (so, getting the topmost frame should be + # treated as optional). + pydev_log.info( + "Unable to get topmost frame for thread: %s, thread.ident: %s, id(thread): %s\nCurrent frames: %s.\n" "GEVENT_SUPPORT: %s", + thread, + thread.ident, + id(thread), + current_frames, + SUPPORT_GEVENT, + ) + + return topmost_frame + + # fmt: off + # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + cpdef update_stepping_info(self): + # ELSE +# def update_stepping_info(self): + # ENDIF + # fmt: on + _update_stepping_info(self) + + def __str__(self): + return "State:%s Stop:%s Cmd: %s Kill:%s" % (self.pydev_state, self.pydev_step_stop, self.pydev_step_cmd, self.pydev_notify_kill) + + +_set_additional_thread_info_lock = ForkSafeLock() +_next_additional_info = [PyDBAdditionalThreadInfo()] + + +# fmt: off +# IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) +cpdef set_additional_thread_info(thread): +# ELSE +# def set_additional_thread_info(thread): +# ENDIF +# fmt: on + try: + additional_info = thread.additional_info + if additional_info is None: + raise AttributeError() + except: + with _set_additional_thread_info_lock: + # If it's not there, set it within a lock to avoid any racing + # conditions. + try: + additional_info = thread.additional_info + except: + additional_info = None + + if additional_info is None: + # Note: don't call PyDBAdditionalThreadInfo constructor at this + # point as it can piggy-back into the debugger which could + # get here again, rather get the global ref which was pre-created + # and add a new entry only after we set thread.additional_info. + additional_info = _next_additional_info[0] + thread.additional_info = additional_info + additional_info.weak_thread = weakref.ref(thread) + add_additional_info(additional_info) + del _next_additional_info[:] + _next_additional_info.append(PyDBAdditionalThreadInfo()) + + return additional_info + + +# fmt: off +# IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) +cdef set _all_infos +cdef set _infos_stepping +cdef object _update_infos_lock +# ELSE +# ENDIF +# fmt: on + +_all_infos = set() +_infos_stepping = set() +_update_infos_lock = ForkSafeLock() + + +# fmt: off +# IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) +cdef _update_stepping_info(PyDBAdditionalThreadInfo info): +# ELSE +# def _update_stepping_info(info): +# ENDIF +# fmt: on + + global _infos_stepping + global _all_infos + + with _update_infos_lock: + # Removes entries that are no longer valid. + new_all_infos = set() + for info in _all_infos: + if info._get_related_thread() is not None: + new_all_infos.add(info) + _all_infos = new_all_infos + + new_stepping = set() + for info in _all_infos: + if info._is_stepping(): + new_stepping.add(info) + _infos_stepping = new_stepping + + py_db = get_global_debugger() + if py_db is not None and not py_db.pydb_disposed: + thread = info.weak_thread() + if thread is not None: + thread_id = get_thread_id(thread) + _queue, event = py_db.get_internal_queue_and_event(thread_id) + event.set() + +# fmt: off +# IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) +cpdef add_additional_info(PyDBAdditionalThreadInfo info): +# ELSE +# def add_additional_info(info): +# ENDIF +# fmt: on + with _update_infos_lock: + _all_infos.add(info) + if info._is_stepping(): + _infos_stepping.add(info) + +# fmt: off +# IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) +cpdef remove_additional_info(PyDBAdditionalThreadInfo info): +# ELSE +# def remove_additional_info(info): +# ENDIF +# fmt: on + with _update_infos_lock: + _all_infos.discard(info) + _infos_stepping.discard(info) + + +# fmt: off +# IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) +cpdef bint any_thread_stepping(): +# ELSE +# def any_thread_stepping(): +# ENDIF +# fmt: on + return bool(_infos_stepping) +import linecache +import os.path +import re + +from _pydev_bundle import pydev_log +from _pydevd_bundle import pydevd_dont_trace +from _pydevd_bundle.pydevd_constants import ( + RETURN_VALUES_DICT, + NO_FTRACE, + EXCEPTION_TYPE_HANDLED, + EXCEPTION_TYPE_USER_UNHANDLED, + PYDEVD_IPYTHON_CONTEXT, + PYDEVD_USE_SYS_MONITORING, +) +from _pydevd_bundle.pydevd_frame_utils import add_exception_to_frame, just_raised, remove_exception_from_frame, ignore_exception_trace +from _pydevd_bundle.pydevd_utils import get_clsname_for_code +from pydevd_file_utils import get_abs_path_real_path_and_base_from_frame +from _pydevd_bundle.pydevd_comm_constants import constant_to_str, CMD_SET_FUNCTION_BREAK +import sys + +try: + from _pydevd_bundle.pydevd_bytecode_utils import get_smart_step_into_variant_from_frame_offset +except ImportError: + + def get_smart_step_into_variant_from_frame_offset(*args, **kwargs): + return None + + +# IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) +# ELSE +# # Note: those are now inlined on cython. +# 107 = 107 +# 144 = 144 +# 109 = 109 +# 160 = 160 +# 108 = 108 +# 159 = 159 +# 137 = 137 +# 111 = 111 +# 128 = 128 +# 206 = 206 +# 1 = 1 +# 2 = 2 +# ENDIF + +basename = os.path.basename + +IGNORE_EXCEPTION_TAG = re.compile("[^#]*#.*@IgnoreException") +DEBUG_START = ("pydevd.py", "run") +DEBUG_START_PY3K = ("_pydev_execfile.py", "execfile") +TRACE_PROPERTY = "pydevd_traceproperty.py" + +import dis + +try: + StopAsyncIteration +except NameError: + StopAsyncIteration = StopIteration + + +# IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) +def is_unhandled_exception(container_obj, py_db, frame, int last_raise_line, set raise_lines): +# ELSE +# def is_unhandled_exception(container_obj, py_db, frame, last_raise_line, raise_lines): + # ENDIF + if frame.f_lineno in raise_lines: + return True + + else: + try_except_infos = container_obj.try_except_infos + if try_except_infos is None: + container_obj.try_except_infos = try_except_infos = py_db.collect_try_except_info(frame.f_code) + + if not try_except_infos: + # Consider the last exception as unhandled because there's no try..except in it. + return True + else: + # Now, consider only the try..except for the raise + valid_try_except_infos = [] + for try_except_info in try_except_infos: + if try_except_info.is_line_in_try_block(last_raise_line): + valid_try_except_infos.append(try_except_info) + + if not valid_try_except_infos: + return True + + else: + # Note: check all, not only the "valid" ones to cover the case + # in "tests_python.test_tracing_on_top_level.raise_unhandled10" + # where one try..except is inside the other with only a raise + # and it's gotten in the except line. + for try_except_info in try_except_infos: + if try_except_info.is_line_in_except_block(frame.f_lineno): + if frame.f_lineno == try_except_info.except_line or frame.f_lineno in try_except_info.raise_lines_in_except: + # In a raise inside a try..except block or some except which doesn't + # match the raised exception. + return True + return False + + +# IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) +cdef class _TryExceptContainerObj: + cdef public list try_except_infos; + def __init__(self): + self.try_except_infos = None +# ELSE +# class _TryExceptContainerObj(object): +# """ +# A dumb container object just to contain the try..except info when needed. Meant to be +# persistent among multiple PyDBFrames to the same code object. +# """ +# +# try_except_infos = None +# +# +# ENDIF + + +# ======================================================================================================================= +# PyDBFrame +# ======================================================================================================================= +# IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) +cdef class PyDBFrame: +# ELSE +# class PyDBFrame: +# """This makes the tracing for a given frame, so, the trace_dispatch +# is used initially when we enter into a new context ('call') and then +# is reused for the entire context. +# """ +# + # ENDIF + + # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + cdef tuple _args + cdef int should_skip + cdef object exc_info + def __init__(self, tuple args): + self._args = args # In the cython version we don't need to pass the frame + self.should_skip = -1 # On cythonized version, put in instance. + self.exc_info = () + # ELSE +# should_skip = -1 # Default value in class (put in instance on set). +# exc_info = () # Default value in class (put in instance on set). +# +# if PYDEVD_USE_SYS_MONITORING: +# +# def __init__(self, *args, **kwargs): +# raise RuntimeError("Not expected to be used in sys.monitoring.") +# +# else: +# +# def __init__(self, args): +# # args = py_db, abs_path_canonical_path_and_base, base, info, t, frame +# # yeap, much faster than putting in self and then getting it from self later on +# self._args = args + # ENDIF + + def set_suspend(self, *args, **kwargs): + self._args[0].set_suspend(*args, **kwargs) + + def do_wait_suspend(self, *args, **kwargs): + self._args[0].do_wait_suspend(*args, **kwargs) + + # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + def trace_exception(self, frame, str event, arg): + cdef bint should_stop; + cdef tuple exc_info; + # ELSE +# def trace_exception(self, frame, event, arg): + # ENDIF + if event == "exception": + should_stop, frame, exc_info = should_stop_on_exception(self._args[0], self._args[2], frame, self._args[3], arg, self.exc_info) + self.exc_info = exc_info + + if should_stop: + if handle_exception(self._args[0], self._args[3], frame, arg, EXCEPTION_TYPE_HANDLED): + return self.trace_dispatch + + elif event == "return": + exc_info = self.exc_info + if exc_info and arg is None: + frame_skips_cache, frame_cache_key = self._args[4], self._args[5] + custom_key = (frame_cache_key, "try_exc_info") + container_obj = frame_skips_cache.get(custom_key) + if container_obj is None: + container_obj = frame_skips_cache[custom_key] = _TryExceptContainerObj() + if is_unhandled_exception(container_obj, self._args[0], frame, exc_info[1], exc_info[2]) and self.handle_user_exception( + frame + ): + return self.trace_dispatch + + return self.trace_exception + + def handle_user_exception(self, frame): + exc_info = self.exc_info + if exc_info: + return handle_exception(self._args[0], self._args[3], frame, exc_info[0], EXCEPTION_TYPE_USER_UNHANDLED) + return False + + # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + cdef get_func_name(self, frame): + cdef str func_name + # ELSE +# def get_func_name(self, frame): + # ENDIF + code_obj = frame.f_code + func_name = code_obj.co_name + try: + cls_name = get_clsname_for_code(code_obj, frame) + if cls_name is not None: + return "%s.%s" % (cls_name, func_name) + else: + return func_name + except: + pydev_log.exception() + return func_name + + # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + cdef _show_return_values(self, frame, arg): + # ELSE +# def _show_return_values(self, frame, arg): + # ENDIF + try: + try: + f_locals_back = getattr(frame.f_back, "f_locals", None) + if f_locals_back is not None: + return_values_dict = f_locals_back.get(RETURN_VALUES_DICT, None) + if return_values_dict is None: + return_values_dict = {} + f_locals_back[RETURN_VALUES_DICT] = return_values_dict + name = self.get_func_name(frame) + return_values_dict[name] = arg + except: + pydev_log.exception() + finally: + f_locals_back = None + + # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + cdef _remove_return_values(self, py_db, frame): + # ELSE +# def _remove_return_values(self, py_db, frame): + # ENDIF + try: + try: + # Showing return values was turned off, we should remove them from locals dict. + # The values can be in the current frame or in the back one + frame.f_locals.pop(RETURN_VALUES_DICT, None) + + f_locals_back = getattr(frame.f_back, "f_locals", None) + if f_locals_back is not None: + f_locals_back.pop(RETURN_VALUES_DICT, None) + except: + pydev_log.exception() + finally: + f_locals_back = None + + # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + cdef _get_unfiltered_back_frame(self, py_db, frame): + # ELSE +# def _get_unfiltered_back_frame(self, py_db, frame): + # ENDIF + f = frame.f_back + while f is not None: + if not py_db.is_files_filter_enabled: + return f + + else: + if py_db.apply_files_filter(f, f.f_code.co_filename, False): + f = f.f_back + + else: + return f + + return f + + # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + cdef _is_same_frame(self, target_frame, current_frame): + cdef PyDBAdditionalThreadInfo info; + # ELSE +# def _is_same_frame(self, target_frame, current_frame): + # ENDIF + if target_frame is current_frame: + return True + + info = self._args[2] + if info.pydev_use_scoped_step_frame: + # If using scoped step we don't check the target, we just need to check + # if the current matches the same heuristic where the target was defined. + if target_frame is not None and current_frame is not None: + if target_frame.f_code.co_filename == current_frame.f_code.co_filename: + # The co_name may be different (it may include the line number), but + # the filename must still be the same. + f = current_frame.f_back + if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]: + f = f.f_back + if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]: + return True + + return False + + # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + cpdef trace_dispatch(self, frame, str event, arg): + cdef tuple abs_path_canonical_path_and_base; + cdef bint is_exception_event; + cdef bint has_exception_breakpoints; + cdef bint can_skip; + cdef bint stop; + cdef bint stop_on_plugin_breakpoint; + cdef PyDBAdditionalThreadInfo info; + cdef int step_cmd; + cdef int line; + cdef bint is_line; + cdef bint is_call; + cdef bint is_return; + cdef bint should_stop; + cdef dict breakpoints_for_file; + cdef dict stop_info; + cdef str curr_func_name; + cdef dict frame_skips_cache; + cdef object frame_cache_key; + cdef tuple line_cache_key; + cdef int breakpoints_in_line_cache; + cdef int breakpoints_in_frame_cache; + cdef bint has_breakpoint_in_frame; + cdef bint is_coroutine_or_generator; + cdef int bp_line; + cdef object bp; + cdef int pydev_smart_parent_offset + cdef int pydev_smart_child_offset + cdef tuple pydev_smart_step_into_variants + # ELSE +# def trace_dispatch(self, frame, event, arg): + # ENDIF + # Note: this is a big function because most of the logic related to hitting a breakpoint and + # stepping is contained in it. Ideally this could be split among multiple functions, but the + # problem in this case is that in pure-python function calls are expensive and even more so + # when tracing is on (because each function call will get an additional tracing call). We + # try to address this by using the info.is_tracing for the fastest possible return, but the + # cost is still high (maybe we could use code-generation in the future and make the code + # generation be better split among what each part does). + + try: + # DEBUG = '_debugger_case_yield_from.py' in frame.f_code.co_filename + py_db, abs_path_canonical_path_and_base, info, thread, frame_skips_cache, frame_cache_key = self._args + # if DEBUG: print('frame trace_dispatch %s %s %s %s %s %s, stop: %s' % (frame.f_lineno, frame.f_code.co_name, frame.f_code.co_filename, event, constant_to_str(info.pydev_step_cmd), arg, info.pydev_step_stop)) + info.is_tracing += 1 + + # TODO: This shouldn't be needed. The fact that frame.f_lineno + # is None seems like a bug in Python 3.11. + # Reported in: https://github.com/python/cpython/issues/94485 + line = frame.f_lineno or 0 # Workaround or case where frame.f_lineno is None + line_cache_key = (frame_cache_key, line) + + if py_db.pydb_disposed: + return None if event == "call" else NO_FTRACE + + plugin_manager = py_db.plugin + has_exception_breakpoints = ( + py_db.break_on_caught_exceptions or py_db.break_on_user_uncaught_exceptions or py_db.has_plugin_exception_breaks + ) + + stop_frame = info.pydev_step_stop + step_cmd = info.pydev_step_cmd + function_breakpoint_on_call_event = None + + if frame.f_code.co_flags & 0xA0: # 0xa0 == CO_GENERATOR = 0x20 | CO_COROUTINE = 0x80 + # Dealing with coroutines and generators: + # When in a coroutine we change the perceived event to the debugger because + # a call, StopIteration exception and return are usually just pausing/unpausing it. + if event == "line": + is_line = True + is_call = False + is_return = False + is_exception_event = False + + elif event == "return": + is_line = False + is_call = False + is_return = True + is_exception_event = False + + returns_cache_key = (frame_cache_key, "returns") + return_lines = frame_skips_cache.get(returns_cache_key) + if return_lines is None: + # Note: we're collecting the return lines by inspecting the bytecode as + # there are multiple returns and multiple stop iterations when awaiting and + # it doesn't give any clear indication when a coroutine or generator is + # finishing or just pausing. + return_lines = set() + for x in py_db.collect_return_info(frame.f_code): + # Note: cython does not support closures in cpdefs (so we can't use + # a list comprehension). + return_lines.add(x.return_line) + + frame_skips_cache[returns_cache_key] = return_lines + + if line not in return_lines: + # Not really a return (coroutine/generator paused). + return self.trace_dispatch + else: + if self.exc_info: + self.handle_user_exception(frame) + return self.trace_dispatch + + # Tricky handling: usually when we're on a frame which is about to exit + # we set the step mode to step into, but in this case we'd end up in the + # asyncio internal machinery, which is not what we want, so, we just + # ask the stop frame to be a level up. + # + # Note that there's an issue here which we may want to fix in the future: if + # the back frame is a frame which is filtered, we won't stop properly. + # Solving this may not be trivial as we'd need to put a scope in the step + # in, but we may have to do it anyways to have a step in which doesn't end + # up in asyncio). + # + # Note2: we don't revert to a step in if we're doing scoped stepping + # (because on scoped stepping we're always receiving a call/line/return + # event for each line in ipython, so, we can't revert to step in on return + # as the return shouldn't mean that we've actually completed executing a + # frame in this case). + if stop_frame is frame and not info.pydev_use_scoped_step_frame: + if step_cmd in (108, 159, 107, 144): + f = self._get_unfiltered_back_frame(py_db, frame) + if f is not None: + info.pydev_step_cmd = 206 + info.pydev_step_stop = f + else: + if step_cmd == 108: + info.pydev_step_cmd = 107 + info.pydev_step_stop = None + + elif step_cmd == 159: + info.pydev_step_cmd = 144 + info.pydev_step_stop = None + + elif step_cmd == 206: + # We're exiting this one, so, mark the new coroutine context. + f = self._get_unfiltered_back_frame(py_db, frame) + if f is not None: + info.pydev_step_stop = f + else: + info.pydev_step_cmd = 107 + info.pydev_step_stop = None + + elif event == "exception": + breakpoints_for_file = None + if has_exception_breakpoints: + should_stop, frame, exc_info = should_stop_on_exception( + self._args[0], self._args[2], frame, self._args[3], arg, self.exc_info + ) + self.exc_info = exc_info + if should_stop: + if handle_exception(self._args[0], self._args[3], frame, arg, EXCEPTION_TYPE_HANDLED): + return self.trace_dispatch + + return self.trace_dispatch + else: + # event == 'call' or event == 'c_XXX' + return self.trace_dispatch + + else: # Not coroutine nor generator + if event == "line": + is_line = True + is_call = False + is_return = False + is_exception_event = False + + elif event == "return": + is_line = False + is_return = True + is_call = False + is_exception_event = False + + # If we are in single step mode and something causes us to exit the current frame, we need to make sure we break + # eventually. Force the step mode to step into and the step stop frame to None. + # I.e.: F6 in the end of a function should stop in the next possible position (instead of forcing the user + # to make a step in or step over at that location). + # Note: this is especially troublesome when we're skipping code with the + # @DontTrace comment. + if ( + stop_frame is frame + and not info.pydev_use_scoped_step_frame + and is_return + and step_cmd + in (108, 109, 159, 160, 128) + ): + if step_cmd in (108, 109, 128): + info.pydev_step_cmd = 107 + else: + info.pydev_step_cmd = 144 + info.pydev_step_stop = None + + if self.exc_info: + if self.handle_user_exception(frame): + return self.trace_dispatch + + elif event == "call": + is_line = False + is_call = True + is_return = False + is_exception_event = False + if frame.f_code.co_firstlineno == frame.f_lineno: # Check line to deal with async/await. + function_breakpoint_on_call_event = py_db.function_breakpoint_name_to_breakpoint.get(frame.f_code.co_name) + + elif event == "exception": + is_exception_event = True + breakpoints_for_file = None + if has_exception_breakpoints: + should_stop, frame, exc_info = should_stop_on_exception( + self._args[0], self._args[2], frame, self._args[3], arg, self.exc_info + ) + self.exc_info = exc_info + if should_stop: + if handle_exception(self._args[0], self._args[3], frame, arg, EXCEPTION_TYPE_HANDLED): + return self.trace_dispatch + is_line = False + is_return = False + is_call = False + + else: + # Unexpected: just keep the same trace func (i.e.: event == 'c_XXX'). + return self.trace_dispatch + + if not is_exception_event: + breakpoints_for_file = py_db.breakpoints.get(abs_path_canonical_path_and_base[1]) + + can_skip = False + + if info.pydev_state == 1: # 1 = 1 + # we can skip if: + # - we have no stop marked + # - we should make a step return/step over and we're not in the current frame + # - we're stepping into a coroutine context and we're not in that context + if step_cmd == -1: + can_skip = True + + elif step_cmd in ( + 108, + 109, + 159, + 160, + ) and not self._is_same_frame(stop_frame, frame): + can_skip = True + + elif step_cmd == 128 and ( + stop_frame is not None + and stop_frame is not frame + and stop_frame is not frame.f_back + and (frame.f_back is None or stop_frame is not frame.f_back.f_back) + ): + can_skip = True + + elif step_cmd == 144: + if py_db.apply_files_filter(frame, frame.f_code.co_filename, True) and ( + frame.f_back is None or py_db.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True) + ): + can_skip = True + + elif step_cmd == 206: + f = frame + while f is not None: + if self._is_same_frame(stop_frame, f): + break + f = f.f_back + else: + can_skip = True + + if can_skip: + if plugin_manager is not None and (py_db.has_plugin_line_breaks or py_db.has_plugin_exception_breaks): + can_skip = plugin_manager.can_skip(py_db, frame) + + if ( + can_skip + and py_db.show_return_values + and info.pydev_step_cmd in (108, 159) + and self._is_same_frame(stop_frame, frame.f_back) + ): + # trace function for showing return values after step over + can_skip = False + + # Let's check to see if we are in a function that has a breakpoint. If we don't have a breakpoint, + # we will return nothing for the next trace + # also, after we hit a breakpoint and go to some other debugging state, we have to force the set trace anyway, + # so, that's why the additional checks are there. + + if function_breakpoint_on_call_event: + pass # Do nothing here (just keep on going as we can't skip it). + + elif not breakpoints_for_file: + if can_skip: + if has_exception_breakpoints: + return self.trace_exception + else: + return None if is_call else NO_FTRACE + + else: + # When cached, 0 means we don't have a breakpoint and 1 means we have. + if can_skip: + breakpoints_in_line_cache = frame_skips_cache.get(line_cache_key, -1) + if breakpoints_in_line_cache == 0: + return self.trace_dispatch + + breakpoints_in_frame_cache = frame_skips_cache.get(frame_cache_key, -1) + if breakpoints_in_frame_cache != -1: + # Gotten from cache. + has_breakpoint_in_frame = breakpoints_in_frame_cache == 1 + + else: + has_breakpoint_in_frame = False + + try: + func_lines = set() + for offset_and_lineno in dis.findlinestarts(frame.f_code): + func_lines.add(offset_and_lineno[1]) + except: + # This is a fallback for implementations where we can't get the function + # lines -- i.e.: jython (in this case clients need to provide the function + # name to decide on the skip or we won't be able to skip the function + # completely). + + # Checks the breakpoint to see if there is a context match in some function. + curr_func_name = frame.f_code.co_name + + # global context is set with an empty name + if curr_func_name in ("?", "", ""): + curr_func_name = "" + + for bp in breakpoints_for_file.values(): + # will match either global or some function + if bp.func_name in ("None", curr_func_name): + has_breakpoint_in_frame = True + break + else: + for bp_line in breakpoints_for_file: # iterate on keys + if bp_line in func_lines: + has_breakpoint_in_frame = True + break + + # Cache the value (1 or 0 or -1 for default because of cython). + if has_breakpoint_in_frame: + frame_skips_cache[frame_cache_key] = 1 + else: + frame_skips_cache[frame_cache_key] = 0 + + if can_skip and not has_breakpoint_in_frame: + if has_exception_breakpoints: + return self.trace_exception + else: + return None if is_call else NO_FTRACE + + # We may have hit a breakpoint or we are already in step mode. Either way, let's check what we should do in this frame + # if DEBUG: print('NOT skipped: %s %s %s %s' % (frame.f_lineno, frame.f_code.co_name, event, frame.__class__.__name__)) + + try: + stop_on_plugin_breakpoint = False + # return is not taken into account for breakpoint hit because we'd have a double-hit in this case + # (one for the line and the other for the return). + + stop_info = {} + breakpoint = None + stop = False + stop_reason = 111 + bp_type = None + + if function_breakpoint_on_call_event: + breakpoint = function_breakpoint_on_call_event + stop = True + new_frame = frame + stop_reason = CMD_SET_FUNCTION_BREAK + + elif is_line and info.pydev_state != 2 and breakpoints_for_file is not None and line in breakpoints_for_file: + breakpoint = breakpoints_for_file[line] + new_frame = frame + stop = True + + elif plugin_manager is not None and py_db.has_plugin_line_breaks: + result = plugin_manager.get_breakpoint(py_db, frame, event, self._args[2]) + if result: + stop_on_plugin_breakpoint = True + breakpoint, new_frame, bp_type = result + + if breakpoint: + # ok, hit breakpoint, now, we have to discover if it is a conditional breakpoint + # lets do the conditional stuff here + if breakpoint.expression is not None: + py_db.handle_breakpoint_expression(breakpoint, info, new_frame) + + if stop or stop_on_plugin_breakpoint: + eval_result = False + if breakpoint.has_condition: + eval_result = py_db.handle_breakpoint_condition(info, breakpoint, new_frame) + if not eval_result: + stop = False + stop_on_plugin_breakpoint = False + + if is_call and ( + frame.f_code.co_name in ("", "") or (line == 1 and frame.f_code.co_name.startswith(" may be executed having each line compiled as a new + # module, so it's the same case as . + + return self.trace_dispatch + + # Handle logpoint (on a logpoint we should never stop). + if (stop or stop_on_plugin_breakpoint) and breakpoint.is_logpoint: + stop = False + stop_on_plugin_breakpoint = False + + if info.pydev_message is not None and len(info.pydev_message) > 0: + cmd = py_db.cmd_factory.make_io_message(info.pydev_message + os.linesep, "1") + py_db.writer.add_command(cmd) + + if py_db.show_return_values: + if is_return and ( + ( + info.pydev_step_cmd in (108, 159, 128) + and (self._is_same_frame(stop_frame, frame.f_back)) + ) + or (info.pydev_step_cmd in (109, 160) and (self._is_same_frame(stop_frame, frame))) + or (info.pydev_step_cmd in (107, 206)) + or ( + info.pydev_step_cmd == 144 + and frame.f_back is not None + and not py_db.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True) + ) + ): + self._show_return_values(frame, arg) + + elif py_db.remove_return_values_flag: + try: + self._remove_return_values(py_db, frame) + finally: + py_db.remove_return_values_flag = False + + if stop: + self.set_suspend( + thread, + stop_reason, + suspend_other_threads=breakpoint and breakpoint.suspend_policy == "ALL", + ) + + elif stop_on_plugin_breakpoint and plugin_manager is not None: + result = plugin_manager.suspend(py_db, thread, frame, bp_type) + if result: + frame = result + + # if thread has a suspend flag, we suspend with a busy wait + if info.pydev_state == 2: + self.do_wait_suspend(thread, frame, event, arg) + return self.trace_dispatch + else: + if not breakpoint and is_line: + # No stop from anyone and no breakpoint found in line (cache that). + frame_skips_cache[line_cache_key] = 0 + + except: + # Unfortunately Python itself stops the tracing when it originates from + # the tracing function, so, we can't do much about it (just let the user know). + exc = sys.exc_info()[0] + cmd = py_db.cmd_factory.make_console_message( + "%s raised from within the callback set in sys.settrace.\nDebugging will be disabled for this thread (%s).\n" + % ( + exc, + thread, + ) + ) + py_db.writer.add_command(cmd) + if not issubclass(exc, (KeyboardInterrupt, SystemExit)): + pydev_log.exception() + + raise + + # step handling. We stop when we hit the right frame + try: + should_skip = 0 + if pydevd_dont_trace.should_trace_hook is not None: + if self.should_skip == -1: + # I.e.: cache the result on self.should_skip (no need to evaluate the same frame multiple times). + # Note that on a code reload, we won't re-evaluate this because in practice, the frame.f_code + # Which will be handled by this frame is read-only, so, we can cache it safely. + if not pydevd_dont_trace.should_trace_hook(frame.f_code, abs_path_canonical_path_and_base[0]): + # -1, 0, 1 to be Cython-friendly + should_skip = self.should_skip = 1 + else: + should_skip = self.should_skip = 0 + else: + should_skip = self.should_skip + + plugin_stop = False + if should_skip: + stop = False + + elif step_cmd in (107, 144, 206): + force_check_project_scope = step_cmd == 144 + if is_line: + if not info.pydev_use_scoped_step_frame: + if force_check_project_scope or py_db.is_files_filter_enabled: + stop = not py_db.apply_files_filter(frame, frame.f_code.co_filename, force_check_project_scope) + else: + stop = True + else: + if force_check_project_scope or py_db.is_files_filter_enabled: + # Make sure we check the filtering inside ipython calls too... + if not not py_db.apply_files_filter(frame, frame.f_code.co_filename, force_check_project_scope): + return None if is_call else NO_FTRACE + + # We can only stop inside the ipython call. + filename = frame.f_code.co_filename + if filename.endswith(".pyc"): + filename = filename[:-1] + + if not filename.endswith(PYDEVD_IPYTHON_CONTEXT[0]): + f = frame.f_back + while f is not None: + if f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]: + f2 = f.f_back + if f2 is not None and f2.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2]: + pydev_log.debug("Stop inside ipython call") + stop = True + break + f = f.f_back + + del f + + if not stop: + # In scoped mode if step in didn't work in this context it won't work + # afterwards anyways. + return None if is_call else NO_FTRACE + + elif is_return and frame.f_back is not None and not info.pydev_use_scoped_step_frame: + if py_db.get_file_type(frame.f_back) == py_db.PYDEV_FILE: + stop = False + else: + if force_check_project_scope or py_db.is_files_filter_enabled: + stop = not py_db.apply_files_filter( + frame.f_back, frame.f_back.f_code.co_filename, force_check_project_scope + ) + if stop: + # Prevent stopping in a return to the same location we were initially + # (i.e.: double-stop at the same place due to some filtering). + if info.step_in_initial_location == (frame.f_back, frame.f_back.f_lineno): + stop = False + else: + stop = True + else: + stop = False + + if stop: + if step_cmd == 206: + # i.e.: Check if we're stepping into the proper context. + f = frame + while f is not None: + if self._is_same_frame(stop_frame, f): + break + f = f.f_back + else: + stop = False + + if plugin_manager is not None: + result = plugin_manager.cmd_step_into(py_db, frame, event, self._args[2], self._args[3], stop_info, stop) + if result: + stop, plugin_stop = result + + elif step_cmd in (108, 159): + # Note: when dealing with a step over my code it's the same as a step over (the + # difference is that when we return from a frame in one we go to regular step + # into and in the other we go to a step into my code). + stop = self._is_same_frame(stop_frame, frame) and is_line + # Note: don't stop on a return for step over, only for line events + # i.e.: don't stop in: (stop_frame is frame.f_back and is_return) as we'd stop twice in that line. + + if plugin_manager is not None: + result = plugin_manager.cmd_step_over(py_db, frame, event, self._args[2], self._args[3], stop_info, stop) + if result: + stop, plugin_stop = result + + elif step_cmd == 128: + stop = False + back = frame.f_back + if self._is_same_frame(stop_frame, frame) and is_return: + # We're exiting the smart step into initial frame (so, we probably didn't find our target). + stop = True + + elif self._is_same_frame(stop_frame, back) and is_line: + if info.pydev_smart_child_offset != -1: + # i.e.: in this case, we're not interested in the pause in the parent, rather + # we're interested in the pause in the child (when the parent is at the proper place). + stop = False + + else: + pydev_smart_parent_offset = info.pydev_smart_parent_offset + + pydev_smart_step_into_variants = info.pydev_smart_step_into_variants + if pydev_smart_parent_offset >= 0 and pydev_smart_step_into_variants: + # Preferred mode (when the smart step into variants are available + # and the offset is set). + stop = get_smart_step_into_variant_from_frame_offset( + back.f_lasti, pydev_smart_step_into_variants + ) is get_smart_step_into_variant_from_frame_offset( + pydev_smart_parent_offset, pydev_smart_step_into_variants + ) + + else: + # Only the name/line is available, so, check that. + curr_func_name = frame.f_code.co_name + + # global context is set with an empty name + if curr_func_name in ("?", "") or curr_func_name is None: + curr_func_name = "" + if curr_func_name == info.pydev_func_name and stop_frame.f_lineno == info.pydev_next_line: + stop = True + + if not stop: + # In smart step into, if we didn't hit it in this frame once, that'll + # not be the case next time either, so, disable tracing for this frame. + return None if is_call else NO_FTRACE + + elif back is not None and self._is_same_frame(stop_frame, back.f_back) and is_line: + # Ok, we have to track 2 stops at this point, the parent and the child offset. + # This happens when handling a step into which targets a function inside a list comprehension + # or generator (in which case an intermediary frame is created due to an internal function call). + pydev_smart_parent_offset = info.pydev_smart_parent_offset + pydev_smart_child_offset = info.pydev_smart_child_offset + # print('matched back frame', pydev_smart_parent_offset, pydev_smart_child_offset) + # print('parent f_lasti', back.f_back.f_lasti) + # print('child f_lasti', back.f_lasti) + stop = False + if pydev_smart_child_offset >= 0 and pydev_smart_child_offset >= 0: + pydev_smart_step_into_variants = info.pydev_smart_step_into_variants + + if pydev_smart_parent_offset >= 0 and pydev_smart_step_into_variants: + # Note that we don't really check the parent offset, only the offset of + # the child (because this is a generator, the parent may have moved forward + # already -- and that's ok, so, we just check that the parent frame + # matches in this case). + smart_step_into_variant = get_smart_step_into_variant_from_frame_offset( + pydev_smart_parent_offset, pydev_smart_step_into_variants + ) + # print('matched parent offset', pydev_smart_parent_offset) + # Ok, now, check the child variant + children_variants = smart_step_into_variant.children_variants + stop = children_variants and ( + get_smart_step_into_variant_from_frame_offset(back.f_lasti, children_variants) + is get_smart_step_into_variant_from_frame_offset(pydev_smart_child_offset, children_variants) + ) + # print('stop at child', stop) + + if not stop: + # In smart step into, if we didn't hit it in this frame once, that'll + # not be the case next time either, so, disable tracing for this frame. + return None if is_call else NO_FTRACE + + elif step_cmd in (109, 160): + stop = is_return and self._is_same_frame(stop_frame, frame) + + else: + stop = False + + if stop and step_cmd != -1 and is_return and hasattr(frame, "f_back"): + f_code = getattr(frame.f_back, "f_code", None) + if f_code is not None: + if py_db.get_file_type(frame.f_back) == py_db.PYDEV_FILE: + stop = False + + if plugin_stop: + plugin_manager.stop(py_db, frame, event, self._args[3], stop_info, arg, step_cmd) + elif stop: + if is_line: + self.set_suspend(thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd) + self.do_wait_suspend(thread, frame, event, arg) + elif is_return: # return event + back = frame.f_back + if back is not None: + # When we get to the pydevd run function, the debugging has actually finished for the main thread + # (note that it can still go on for other threads, but for this one, we just make it finish) + # So, just setting it to None should be OK + back_absolute_filename, _, base = get_abs_path_real_path_and_base_from_frame(back) + if (base, back.f_code.co_name) in (DEBUG_START, DEBUG_START_PY3K): + back = None + + elif base == TRACE_PROPERTY: + # We dont want to trace the return event of pydevd_traceproperty (custom property for debugging) + # if we're in a return, we want it to appear to the user in the previous frame! + return None if is_call else NO_FTRACE + + elif pydevd_dont_trace.should_trace_hook is not None: + if not pydevd_dont_trace.should_trace_hook(back.f_code, back_absolute_filename): + # In this case, we'll have to skip the previous one because it shouldn't be traced. + # Also, we have to reset the tracing, because if the parent's parent (or some + # other parent) has to be traced and it's not currently, we wouldn't stop where + # we should anymore (so, a step in/over/return may not stop anywhere if no parent is traced). + # Related test: _debugger_case17a.py + py_db.set_trace_for_frame_and_parents(thread.ident, back) + return None if is_call else NO_FTRACE + + if back is not None: + # if we're in a return, we want it to appear to the user in the previous frame! + self.set_suspend(thread, step_cmd, original_step_cmd=info.pydev_original_step_cmd) + self.do_wait_suspend(thread, back, event, arg) + else: + # in jython we may not have a back frame + info.pydev_step_stop = None + info.pydev_original_step_cmd = -1 + info.pydev_step_cmd = -1 + info.pydev_state = 1 + info.update_stepping_info() + + # if we are quitting, let's stop the tracing + if py_db.quitting: + return None if is_call else NO_FTRACE + + return self.trace_dispatch + except: + # Unfortunately Python itself stops the tracing when it originates from + # the tracing function, so, we can't do much about it (just let the user know). + exc = sys.exc_info()[0] + cmd = py_db.cmd_factory.make_console_message( + "%s raised from within the callback set in sys.settrace.\nDebugging will be disabled for this thread (%s).\n" + % ( + exc, + thread, + ) + ) + py_db.writer.add_command(cmd) + if not issubclass(exc, (KeyboardInterrupt, SystemExit)): + pydev_log.exception() + raise + + finally: + info.is_tracing -= 1 + + # end trace_dispatch + + +# IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) +def should_stop_on_exception(py_db, PyDBAdditionalThreadInfo info, frame, thread, arg, prev_user_uncaught_exc_info, is_unwind=False): + cdef bint should_stop; + cdef bint was_just_raised; + cdef list check_excs; +# ELSE +# def should_stop_on_exception(py_db, info, frame, thread, arg, prev_user_uncaught_exc_info, is_unwind=False): + # ENDIF + + should_stop = False + maybe_user_uncaught_exc_info = prev_user_uncaught_exc_info + + # 2 = 2 + if info.pydev_state != 2: # and breakpoint is not None: + exception, value, trace = arg + + if trace is not None and hasattr(trace, "tb_next"): + # on jython trace is None on the first event and it may not have a tb_next. + + should_stop = False + exception_breakpoint = None + try: + if py_db.plugin is not None: + result = py_db.plugin.exception_break(py_db, frame, thread, arg, is_unwind) + if result: + should_stop, frame = result + except: + pydev_log.exception() + + if not should_stop: + # Apply checks that don't need the exception breakpoint (where we shouldn't ever stop). + if exception == SystemExit and py_db.ignore_system_exit_code(value): + pass + + elif exception in (GeneratorExit, StopIteration, StopAsyncIteration): + # These exceptions are control-flow related (they work as a generator + # pause), so, we shouldn't stop on them. + pass + + elif ignore_exception_trace(trace): + pass + + else: + was_just_raised = trace.tb_next is None + + # It was not handled by any plugin, lets check exception breakpoints. + check_excs = [] + + # Note: check user unhandled before regular exceptions. + exc_break_user = py_db.get_exception_breakpoint(exception, py_db.break_on_user_uncaught_exceptions) + if exc_break_user is not None: + check_excs.append((exc_break_user, True)) + + exc_break_caught = py_db.get_exception_breakpoint(exception, py_db.break_on_caught_exceptions) + if exc_break_caught is not None: + check_excs.append((exc_break_caught, False)) + + for exc_break, is_user_uncaught in check_excs: + # Initially mark that it should stop and then go into exclusions. + should_stop = True + + if py_db.exclude_exception_by_filter(exc_break, trace): + pydev_log.debug( + "Ignore exception %s in library %s -- (%s)" % (exception, frame.f_code.co_filename, frame.f_code.co_name) + ) + should_stop = False + + elif exc_break.condition is not None and not py_db.handle_breakpoint_condition(info, exc_break, frame): + should_stop = False + + elif is_user_uncaught: + # Note: we don't stop here, we just collect the exc_info to use later on... + should_stop = False + if not py_db.apply_files_filter(frame, frame.f_code.co_filename, True) and ( + frame.f_back is None or py_db.apply_files_filter(frame.f_back, frame.f_back.f_code.co_filename, True) + ): + # User uncaught means that we're currently in user code but the code + # up the stack is library code. + exc_info = prev_user_uncaught_exc_info + if not exc_info: + exc_info = (arg, frame.f_lineno, set([frame.f_lineno])) + else: + lines = exc_info[2] + lines.add(frame.f_lineno) + exc_info = (arg, frame.f_lineno, lines) + maybe_user_uncaught_exc_info = exc_info + else: + # I.e.: these are only checked if we're not dealing with user uncaught exceptions. + if ( + exc_break.notify_on_first_raise_only + and py_db.skip_on_exceptions_thrown_in_same_context + and not was_just_raised + and not just_raised(trace.tb_next) + ): + # In this case we never stop if it was just raised, so, to know if it was the first we + # need to check if we're in the 2nd method. + should_stop = False # I.e.: we stop only when we're at the caller of a method that throws an exception + + elif ( + exc_break.notify_on_first_raise_only + and not py_db.skip_on_exceptions_thrown_in_same_context + and not was_just_raised + ): + should_stop = False # I.e.: we stop only when it was just raised + + elif was_just_raised and py_db.skip_on_exceptions_thrown_in_same_context: + # Option: Don't break if an exception is caught in the same function from which it is thrown + should_stop = False + + if should_stop: + exception_breakpoint = exc_break + try: + info.pydev_message = exc_break.qname + except: + info.pydev_message = exc_break.qname.encode("utf-8") + break + + if should_stop: + # Always add exception to frame (must remove later after we proceed). + add_exception_to_frame(frame, (exception, value, trace)) + + if exception_breakpoint is not None and exception_breakpoint.expression is not None: + py_db.handle_breakpoint_expression(exception_breakpoint, info, frame) + + return should_stop, frame, maybe_user_uncaught_exc_info + + +# Same thing in the main debugger but only considering the file contents, while the one in the main debugger +# considers the user input (so, the actual result must be a join of both). +filename_to_lines_where_exceptions_are_ignored: dict = {} +filename_to_stat_info: dict = {} + + +# IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) +def handle_exception(py_db, thread, frame, arg, str exception_type): + cdef bint stopped; + cdef tuple abs_real_path_and_base; + cdef str absolute_filename; + cdef str canonical_normalized_filename; + cdef dict lines_ignored; + cdef dict frame_id_to_frame; + cdef dict merged; + cdef object trace_obj; +# ELSE +# def handle_exception(py_db, thread, frame, arg, exception_type): + # ENDIF + stopped = False + try: + # print('handle_exception', frame.f_lineno, frame.f_code.co_name) + + # We have 3 things in arg: exception type, description, traceback object + trace_obj = arg[2] + + initial_trace_obj = trace_obj + if trace_obj.tb_next is None and trace_obj.tb_frame is frame: + # I.e.: tb_next should be only None in the context it was thrown (trace_obj.tb_frame is frame is just a double check). + pass + else: + # Get the trace_obj from where the exception was raised... + while trace_obj.tb_next is not None: + trace_obj = trace_obj.tb_next + + if py_db.ignore_exceptions_thrown_in_lines_with_ignore_exception: + for check_trace_obj in (initial_trace_obj, trace_obj): + abs_real_path_and_base = get_abs_path_real_path_and_base_from_frame(check_trace_obj.tb_frame) + absolute_filename = abs_real_path_and_base[0] + canonical_normalized_filename = abs_real_path_and_base[1] + + lines_ignored = filename_to_lines_where_exceptions_are_ignored.get(canonical_normalized_filename) + if lines_ignored is None: + lines_ignored = filename_to_lines_where_exceptions_are_ignored[canonical_normalized_filename] = {} + + try: + curr_stat = os.stat(absolute_filename) + curr_stat = (curr_stat.st_size, curr_stat.st_mtime) + except: + curr_stat = None + + last_stat = filename_to_stat_info.get(absolute_filename) + if last_stat != curr_stat: + filename_to_stat_info[absolute_filename] = curr_stat + lines_ignored.clear() + try: + linecache.checkcache(absolute_filename) + except: + pydev_log.exception("Error in linecache.checkcache(%r)", absolute_filename) + + from_user_input = py_db.filename_to_lines_where_exceptions_are_ignored.get(canonical_normalized_filename) + if from_user_input: + merged = {} + merged.update(lines_ignored) + # Override what we have with the related entries that the user entered + merged.update(from_user_input) + else: + merged = lines_ignored + + exc_lineno = check_trace_obj.tb_lineno + + # print ('lines ignored', lines_ignored) + # print ('user input', from_user_input) + # print ('merged', merged, 'curr', exc_lineno) + + if exc_lineno not in merged: # Note: check on merged but update lines_ignored. + try: + line = linecache.getline(absolute_filename, exc_lineno, check_trace_obj.tb_frame.f_globals) + except: + pydev_log.exception("Error in linecache.getline(%r, %s, f_globals)", absolute_filename, exc_lineno) + line = "" + + if IGNORE_EXCEPTION_TAG.match(line) is not None: + lines_ignored[exc_lineno] = 1 + return False + else: + # Put in the cache saying not to ignore + lines_ignored[exc_lineno] = 0 + else: + # Ok, dict has it already cached, so, let's check it... + if merged.get(exc_lineno, 0): + return False + + try: + frame_id_to_frame = {} + frame_id_to_frame[id(frame)] = frame + f = trace_obj.tb_frame + while f is not None: + frame_id_to_frame[id(f)] = f + f = f.f_back + f = None + + stopped = True + py_db.send_caught_exception_stack(thread, arg, id(frame)) + try: + py_db.set_suspend(thread, 137) + py_db.do_wait_suspend(thread, frame, "exception", arg, exception_type=exception_type) + finally: + py_db.send_caught_exception_stack_proceeded(thread) + except: + pydev_log.exception() + + py_db.set_trace_for_frame_and_parents(thread.ident, frame) + finally: + # Make sure the user cannot see the '__exception__' we added after we leave the suspend state. + remove_exception_from_frame(frame) + # Clear some local variables... + frame = None + trace_obj = None + initial_trace_obj = None + check_trace_obj = None + f = None + frame_id_to_frame = None + py_db = None + thread = None + + return stopped +from _pydev_bundle.pydev_is_thread_alive import is_thread_alive +from _pydev_bundle.pydev_log import exception as pydev_log_exception +from _pydev_bundle._pydev_saved_modules import threading +from _pydevd_bundle.pydevd_constants import ( + get_current_thread_id, + NO_FTRACE, + USE_CUSTOM_SYS_CURRENT_FRAMES_MAP, + ForkSafeLock, + PYDEVD_USE_SYS_MONITORING, +) +from pydevd_file_utils import get_abs_path_real_path_and_base_from_frame, NORM_PATHS_AND_BASE_CONTAINER + +# fmt: off +# IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) +from cpython.object cimport PyObject +from cpython.ref cimport Py_INCREF, Py_XDECREF +# ELSE +# from _pydevd_bundle.pydevd_frame import PyDBFrame, is_unhandled_exception +# ENDIF +# fmt: on + +# fmt: off +# IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) +cdef dict _global_notify_skipped_step_in +# ELSE +# # Note: those are now inlined on cython. +# 107 = 107 +# 144 = 144 +# 109 = 109 +# 160 = 160 +# ENDIF +# fmt: on + +# Cache where we should keep that we completely skipped entering some context. +# It needs to be invalidated when: +# - Breakpoints are changed +# It can be used when running regularly (without step over/step in/step return) +global_cache_skips = {} +global_cache_frame_skips = {} + +_global_notify_skipped_step_in = False +_global_notify_skipped_step_in_lock = ForkSafeLock() + + +def notify_skipped_step_in_because_of_filters(py_db, frame): + global _global_notify_skipped_step_in + + with _global_notify_skipped_step_in_lock: + if _global_notify_skipped_step_in: + # Check with lock in place (callers should actually have checked + # before without the lock in place due to performance). + return + _global_notify_skipped_step_in = True + py_db.notify_skipped_step_in_because_of_filters(frame) + + +# fmt: off +# IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) +cdef class SafeCallWrapper: + cdef method_object + def __init__(self, method_object): + self.method_object = method_object + def __call__(self, *args): + #Cannot use 'self' once inside the delegate call since we are borrowing the self reference f_trace field + #in the frame, and that reference might get destroyed by set trace on frame and parents + cdef PyObject* method_obj = self.method_object + Py_INCREF(method_obj) + ret = (method_obj)(*args) + Py_XDECREF (method_obj) + return SafeCallWrapper(ret) if ret is not None else None + def get_method_object(self): + return self.method_object +# ELSE +# ENDIF +# fmt: on + + +def fix_top_level_trace_and_get_trace_func(py_db, frame): + # fmt: off + # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + cdef str filename; + cdef str name; + cdef tuple args; + # ENDIF + # fmt: on + + # Note: this is always the first entry-point in the tracing for any thread. + # After entering here we'll set a new tracing function for this thread + # where more information is cached (and will also setup the tracing for + # frames where we should deal with unhandled exceptions). + thread = None + # Cache the frame which should be traced to deal with unhandled exceptions. + # (i.e.: thread entry-points). + + f_unhandled = frame + # print('called at', f_unhandled.f_code.co_name, f_unhandled.f_code.co_filename, f_unhandled.f_code.co_firstlineno) + force_only_unhandled_tracer = False + while f_unhandled is not None: + # name = splitext(basename(f_unhandled.f_code.co_filename))[0] + + name = f_unhandled.f_code.co_filename + # basename + i = name.rfind("/") + j = name.rfind("\\") + if j > i: + i = j + if i >= 0: + name = name[i + 1 :] + # remove ext + i = name.rfind(".") + if i >= 0: + name = name[:i] + + if name == "threading": + if f_unhandled.f_code.co_name in ("__bootstrap", "_bootstrap"): + # We need __bootstrap_inner, not __bootstrap. + return None, False + + elif f_unhandled.f_code.co_name in ("__bootstrap_inner", "_bootstrap_inner"): + # Note: be careful not to use threading.currentThread to avoid creating a dummy thread. + t = f_unhandled.f_locals.get("self") + force_only_unhandled_tracer = True + if t is not None and isinstance(t, threading.Thread): + thread = t + break + + elif name == "pydev_monkey": + if f_unhandled.f_code.co_name == "__call__": + force_only_unhandled_tracer = True + break + + elif name == "pydevd": + if f_unhandled.f_code.co_name in ("run", "main"): + # We need to get to _exec + return None, False + + if f_unhandled.f_code.co_name == "_exec": + force_only_unhandled_tracer = True + break + + elif name == "pydevd_tracing": + return None, False + + elif f_unhandled.f_back is None: + break + + f_unhandled = f_unhandled.f_back + + if thread is None: + # Important: don't call threadingCurrentThread if we're in the threading module + # to avoid creating dummy threads. + if py_db.threading_get_ident is not None: + thread = py_db.threading_active.get(py_db.threading_get_ident()) + if thread is None: + return None, False + else: + # Jython does not have threading.get_ident(). + thread = py_db.threading_current_thread() + + if getattr(thread, "pydev_do_not_trace", None): + py_db.disable_tracing() + return None, False + + try: + additional_info = thread.additional_info + if additional_info is None: + raise AttributeError() + except: + additional_info = py_db.set_additional_thread_info(thread) + + # print('enter thread tracer', thread, get_current_thread_id(thread)) + args = (py_db, thread, additional_info, global_cache_skips, global_cache_frame_skips) + + if f_unhandled is not None: + if f_unhandled.f_back is None and not force_only_unhandled_tracer: + # Happens when we attach to a running program (cannot reuse instance because it's mutable). + top_level_thread_tracer = TopLevelThreadTracerNoBackFrame(ThreadTracer(args), args) + additional_info.top_level_thread_tracer_no_back_frames.append( + top_level_thread_tracer + ) # Hack for cython to keep it alive while the thread is alive (just the method in the SetTrace is not enough). + else: + top_level_thread_tracer = additional_info.top_level_thread_tracer_unhandled + if top_level_thread_tracer is None: + # Stop in some internal place to report about unhandled exceptions + top_level_thread_tracer = TopLevelThreadTracerOnlyUnhandledExceptions(args) + additional_info.top_level_thread_tracer_unhandled = ( + top_level_thread_tracer + ) # Hack for cython to keep it alive while the thread is alive (just the method in the SetTrace is not enough). + + # print(' --> found to trace unhandled', f_unhandled.f_code.co_name, f_unhandled.f_code.co_filename, f_unhandled.f_code.co_firstlineno) + f_trace = top_level_thread_tracer.get_trace_dispatch_func() + # fmt: off + # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + f_trace = SafeCallWrapper(f_trace) + # ENDIF + # fmt: on + f_unhandled.f_trace = f_trace + + if frame is f_unhandled: + return f_trace, False + + thread_tracer = additional_info.thread_tracer + if thread_tracer is None or thread_tracer._args[0] is not py_db: + thread_tracer = ThreadTracer(args) + additional_info.thread_tracer = thread_tracer + + # fmt: off + # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + return SafeCallWrapper(thread_tracer), True + # ELSE +# return thread_tracer, True + # ENDIF + # fmt: on + + +def trace_dispatch(py_db, frame, event, arg): + thread_trace_func, apply_to_settrace = py_db.fix_top_level_trace_and_get_trace_func(py_db, frame) + if thread_trace_func is None: + return None if event == "call" else NO_FTRACE + if apply_to_settrace: + py_db.enable_tracing(thread_trace_func) + return thread_trace_func(frame, event, arg) + + +# fmt: off +# IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) +cdef class TopLevelThreadTracerOnlyUnhandledExceptions: + cdef public tuple _args; + def __init__(self, tuple args): + self._args = args +# ELSE +# class TopLevelThreadTracerOnlyUnhandledExceptions(object): +# def __init__(self, args): +# self._args = args +# +# ENDIF +# fmt: on + + def trace_unhandled_exceptions(self, frame, event, arg): + # Note that we ignore the frame as this tracing method should only be put in topmost frames already. + # print('trace_unhandled_exceptions', event, frame.f_code.co_name, frame.f_code.co_filename, frame.f_code.co_firstlineno) + if event == "exception" and arg is not None: + py_db, t, additional_info = self._args[0:3] + if arg is not None: + if not additional_info.suspended_at_unhandled: + additional_info.suspended_at_unhandled = True + + py_db.stop_on_unhandled_exception(py_db, t, additional_info, arg) + + # No need to reset frame.f_trace to keep the same trace function. + return self.trace_unhandled_exceptions + + def get_trace_dispatch_func(self): + return self.trace_unhandled_exceptions + +# fmt: off +# IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) +cdef class TopLevelThreadTracerNoBackFrame: + cdef public object _frame_trace_dispatch; + cdef public tuple _args; + cdef public object try_except_infos; + cdef public object _last_exc_arg; + cdef public set _raise_lines; + cdef public int _last_raise_line; + def __init__(self, frame_trace_dispatch, tuple args): + self._frame_trace_dispatch = frame_trace_dispatch + self._args = args + self.try_except_infos = None + self._last_exc_arg = None + self._raise_lines = set() + self._last_raise_line = -1 +# ELSE +# class TopLevelThreadTracerNoBackFrame(object): +# """ +# This tracer is pretty special in that it's dealing with a frame without f_back (i.e.: top frame +# on remote attach or QThread). +# +# This means that we have to carefully inspect exceptions to discover whether the exception will +# be unhandled or not (if we're dealing with an unhandled exception we need to stop as unhandled, +# otherwise we need to use the regular tracer -- unfortunately the debugger has little info to +# work with in the tracing -- see: https://bugs.python.org/issue34099, so, we inspect bytecode to +# determine if some exception will be traced or not... note that if this is not available -- such +# as on Jython -- we consider any top-level exception to be unnhandled). +# """ +# +# def __init__(self, frame_trace_dispatch, args): +# self._frame_trace_dispatch = frame_trace_dispatch +# self._args = args +# self.try_except_infos = None +# self._last_exc_arg = None +# self._raise_lines = set() +# self._last_raise_line = -1 +# +# ENDIF +# fmt: on + + def trace_dispatch_and_unhandled_exceptions(self, frame, event, arg): + # DEBUG = 'code_to_debug' in frame.f_code.co_filename + # if DEBUG: print('trace_dispatch_and_unhandled_exceptions: %s %s %s %s %s %s' % (event, frame.f_code.co_name, frame.f_code.co_filename, frame.f_code.co_firstlineno, self._frame_trace_dispatch, frame.f_lineno)) + frame_trace_dispatch = self._frame_trace_dispatch + if frame_trace_dispatch is not None: + self._frame_trace_dispatch = frame_trace_dispatch(frame, event, arg) + + if event == "exception": + self._last_exc_arg = arg + self._raise_lines.add(frame.f_lineno) + self._last_raise_line = frame.f_lineno + + elif event == "return" and self._last_exc_arg is not None: + # For unhandled exceptions we actually track the return when at the topmost level. + try: + py_db, t, additional_info = self._args[0:3] + if not additional_info.suspended_at_unhandled: # Note: only check it here, don't set. + if is_unhandled_exception(self, py_db, frame, self._last_raise_line, self._raise_lines): + py_db.stop_on_unhandled_exception(py_db, t, additional_info, self._last_exc_arg) + finally: + # Remove reference to exception after handling it. + self._last_exc_arg = None + + ret = self.trace_dispatch_and_unhandled_exceptions + + # Need to reset (the call to _frame_trace_dispatch may have changed it). + # fmt: off + # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + frame.f_trace = SafeCallWrapper(ret) + # ELSE +# frame.f_trace = ret + # ENDIF + # fmt: on + return ret + + def get_trace_dispatch_func(self): + return self.trace_dispatch_and_unhandled_exceptions + + +# fmt: off +# IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) +cdef class ThreadTracer: + cdef public tuple _args; + def __init__(self, tuple args): + self._args = args +# ELSE +# class ThreadTracer(object): +# def __init__(self, args): +# self._args = args +# +# ENDIF +# fmt: on + + def __call__(self, frame, event, arg): + """This is the callback used when we enter some context in the debugger. + + We also decorate the thread we are in with info about the debugging. + The attributes added are: + pydev_state + pydev_step_stop + pydev_step_cmd + pydev_notify_kill + + :param PyDB py_db: + This is the global debugger (this method should actually be added as a method to it). + """ + # fmt: off + # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + cdef str filename; + cdef str base; + cdef int pydev_step_cmd; + cdef object frame_cache_key; + cdef dict cache_skips; + cdef bint is_stepping; + cdef tuple abs_path_canonical_path_and_base; + cdef PyDBAdditionalThreadInfo additional_info; + # ENDIF + # fmt: on + + # DEBUG = 'code_to_debug' in frame.f_code.co_filename + # if DEBUG: print('ENTER: trace_dispatch: %s %s %s %s' % (frame.f_code.co_filename, frame.f_lineno, event, frame.f_code.co_name)) + py_db, t, additional_info, cache_skips, frame_skips_cache = self._args + if additional_info.is_tracing: + return None if event == "call" else NO_FTRACE # we don't wan't to trace code invoked from pydevd_frame.trace_dispatch + + additional_info.is_tracing += 1 + try: + pydev_step_cmd = additional_info.pydev_step_cmd + is_stepping = pydev_step_cmd != -1 + if py_db.pydb_disposed: + return None if event == "call" else NO_FTRACE + + # if thread is not alive, cancel trace_dispatch processing + if not is_thread_alive(t): + py_db.notify_thread_not_alive(get_current_thread_id(t)) + return None if event == "call" else NO_FTRACE + + # Note: it's important that the context name is also given because we may hit something once + # in the global context and another in the local context. + frame_cache_key = frame.f_code + if frame_cache_key in cache_skips: + if not is_stepping: + # if DEBUG: print('skipped: trace_dispatch (cache hit)', frame_cache_key, frame.f_lineno, event, frame.f_code.co_name) + return None if event == "call" else NO_FTRACE + else: + # When stepping we can't take into account caching based on the breakpoints (only global filtering). + if cache_skips.get(frame_cache_key) == 1: + if ( + additional_info.pydev_original_step_cmd in (107, 144) + and not _global_notify_skipped_step_in + ): + notify_skipped_step_in_because_of_filters(py_db, frame) + + back_frame = frame.f_back + if back_frame is not None and pydev_step_cmd in ( + 107, + 144, + 109, + 160, + ): + back_frame_cache_key = back_frame.f_code + if cache_skips.get(back_frame_cache_key) == 1: + # if DEBUG: print('skipped: trace_dispatch (cache hit: 1)', frame_cache_key, frame.f_lineno, event, frame.f_code.co_name) + return None if event == "call" else NO_FTRACE + else: + # if DEBUG: print('skipped: trace_dispatch (cache hit: 2)', frame_cache_key, frame.f_lineno, event, frame.f_code.co_name) + return None if event == "call" else NO_FTRACE + + try: + # Make fast path faster! + abs_path_canonical_path_and_base = NORM_PATHS_AND_BASE_CONTAINER[frame.f_code.co_filename] + except: + abs_path_canonical_path_and_base = get_abs_path_real_path_and_base_from_frame(frame) + + file_type = py_db.get_file_type( + frame, abs_path_canonical_path_and_base + ) # we don't want to debug threading or anything related to pydevd + + if file_type is not None: + if file_type == 1: # inlining LIB_FILE = 1 + if not py_db.in_project_scope(frame, abs_path_canonical_path_and_base[0]): + # if DEBUG: print('skipped: trace_dispatch (not in scope)', abs_path_canonical_path_and_base[2], frame.f_lineno, event, frame.f_code.co_name, file_type) + cache_skips[frame_cache_key] = 1 + return None if event == "call" else NO_FTRACE + else: + # if DEBUG: print('skipped: trace_dispatch', abs_path_canonical_path_and_base[2], frame.f_lineno, event, frame.f_code.co_name, file_type) + cache_skips[frame_cache_key] = 1 + return None if event == "call" else NO_FTRACE + + if py_db.is_files_filter_enabled: + if py_db.apply_files_filter(frame, abs_path_canonical_path_and_base[0], False): + cache_skips[frame_cache_key] = 1 + + if ( + is_stepping + and additional_info.pydev_original_step_cmd in (107, 144) + and not _global_notify_skipped_step_in + ): + notify_skipped_step_in_because_of_filters(py_db, frame) + + # A little gotcha, sometimes when we're stepping in we have to stop in a + # return event showing the back frame as the current frame, so, we need + # to check not only the current frame but the back frame too. + back_frame = frame.f_back + if back_frame is not None and pydev_step_cmd in ( + 107, + 144, + 109, + 160, + ): + if py_db.apply_files_filter(back_frame, back_frame.f_code.co_filename, False): + back_frame_cache_key = back_frame.f_code + cache_skips[back_frame_cache_key] = 1 + # if DEBUG: print('skipped: trace_dispatch (filtered out: 1)', frame_cache_key, frame.f_lineno, event, frame.f_code.co_name) + return None if event == "call" else NO_FTRACE + else: + # if DEBUG: print('skipped: trace_dispatch (filtered out: 2)', frame_cache_key, frame.f_lineno, event, frame.f_code.co_name) + return None if event == "call" else NO_FTRACE + + # if DEBUG: print('trace_dispatch', filename, frame.f_lineno, event, frame.f_code.co_name, file_type) + + # Just create PyDBFrame directly (removed support for Python versions < 2.5, which required keeping a weak + # reference to the frame). + ret = PyDBFrame( + ( + py_db, + abs_path_canonical_path_and_base, + additional_info, + t, + frame_skips_cache, + frame_cache_key, + ) + ).trace_dispatch(frame, event, arg) + if ret is None: + # 1 means skipped because of filters. + # 2 means skipped because no breakpoints were hit. + cache_skips[frame_cache_key] = 2 + return None if event == "call" else NO_FTRACE + + # fmt: off + # IFDEF CYTHON -- DONT EDIT THIS FILE (it is automatically generated) + frame.f_trace = SafeCallWrapper(ret) # Make sure we keep the returned tracer. + # ELSE +# frame.f_trace = ret # Make sure we keep the returned tracer. + # ENDIF + # fmt: on + return ret + + except SystemExit: + return None if event == "call" else NO_FTRACE + + except Exception: + if py_db.pydb_disposed: + return None if event == "call" else NO_FTRACE # Don't log errors when we're shutting down. + # Log it + try: + if pydev_log_exception is not None: + # This can actually happen during the interpreter shutdown in Python 2.7 + pydev_log_exception() + except: + # Error logging? We're really in the interpreter shutdown... + # (https://github.com/fabioz/PyDev.Debugger/issues/8) + pass + return None if event == "call" else NO_FTRACE + finally: + additional_info.is_tracing -= 1 + + +if USE_CUSTOM_SYS_CURRENT_FRAMES_MAP: + # This is far from ideal, as we'll leak frames (we'll always have the last created frame, not really + # the last topmost frame saved -- this should be Ok for our usage, but it may leak frames and things + # may live longer... as IronPython is garbage-collected, things should live longer anyways, so, it + # shouldn't be an issue as big as it's in CPython -- it may still be annoying, but this should + # be a reasonable workaround until IronPython itself is able to provide that functionality). + # + # See: https://github.com/IronLanguages/main/issues/1630 + from _pydevd_bundle.pydevd_constants import constructed_tid_to_last_frame + + _original_call = ThreadTracer.__call__ + + def __call__(self, frame, event, arg): + constructed_tid_to_last_frame[self._args[1].ident] = frame + return _original_call(self, frame, event, arg) + + ThreadTracer.__call__ = __call__ + +if PYDEVD_USE_SYS_MONITORING: + + def fix_top_level_trace_and_get_trace_func(*args, **kwargs): + raise RuntimeError("Not used in sys.monitoring mode.") diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython_wrapper.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython_wrapper.py new file mode 100644 index 000000000..3e1cbbc9a --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython_wrapper.py @@ -0,0 +1,68 @@ +import sys + +try: + try: + from _pydevd_bundle_ext import pydevd_cython as mod + + except ImportError: + from _pydevd_bundle import pydevd_cython as mod + +except ImportError: + import struct + + try: + is_python_64bit = struct.calcsize("P") == 8 + except: + # In Jython this call fails, but this is Ok, we don't support Jython for speedups anyways. + raise ImportError + plat = "32" + if is_python_64bit: + plat = "64" + + # We also accept things as: + # + # _pydevd_bundle.pydevd_cython_win32_27_32 + # _pydevd_bundle.pydevd_cython_win32_34_64 + # + # to have multiple pre-compiled pyds distributed along the IDE + # (generated by build_tools/build_binaries_windows.py). + + mod_name = "pydevd_cython_%s_%s%s_%s" % ( + sys.platform, + sys.version_info[0], + sys.version_info[1], + plat, + ) + check_name = "_pydevd_bundle.%s" % (mod_name,) + mod = getattr(__import__(check_name), mod_name) + +# Regardless of how it was found, make sure it's later available as the +# initial name so that the expected types from cython in frame eval +# are valid. +sys.modules["_pydevd_bundle.pydevd_cython"] = mod + +trace_dispatch = mod.trace_dispatch + +PyDBAdditionalThreadInfo = mod.PyDBAdditionalThreadInfo + +set_additional_thread_info = mod.set_additional_thread_info + +any_thread_stepping = mod.any_thread_stepping + +remove_additional_info = mod.remove_additional_info + +global_cache_skips = mod.global_cache_skips + +global_cache_frame_skips = mod.global_cache_frame_skips + +_set_additional_thread_info_lock = mod._set_additional_thread_info_lock + +fix_top_level_trace_and_get_trace_func = mod.fix_top_level_trace_and_get_trace_func + +handle_exception = mod.handle_exception + +should_stop_on_exception = mod.should_stop_on_exception + +is_unhandled_exception = mod.is_unhandled_exception + +version = getattr(mod, "version", 0) diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_daemon_thread.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_daemon_thread.py new file mode 100644 index 000000000..bd00d3fa4 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_daemon_thread.py @@ -0,0 +1,230 @@ +import sys +import weakref + +import pydevd_tracing +from _pydev_bundle import _pydev_saved_modules, pydev_log +from _pydev_bundle._pydev_saved_modules import threading +from _pydev_bundle.pydev_log import exception as pydev_log_exception +from _pydevd_sys_monitoring import pydevd_sys_monitoring + +from _pydevd_bundle.pydevd_collect_bytecode_info import iter_instructions +from _pydevd_bundle.pydevd_constants import ( + IS_IRONPYTHON, + IS_JYTHON, + PYDEVD_APPLY_PATCHING_TO_HIDE_PYDEVD_THREADS, + PYDEVD_USE_SYS_MONITORING, +) +from _pydevd_bundle.pydevd_utils import notify_about_gevent_if_needed + +if IS_JYTHON: + import org.python.core as JyCore # @UnresolvedImport + + +class PyDBDaemonThread(threading.Thread): + def __init__(self, py_db, target_and_args=None): + """ + :param target_and_args: + tuple(func, args, kwargs) if this should be a function and args to run. + -- Note: use through run_as_pydevd_daemon_thread(). + """ + threading.Thread.__init__(self) + notify_about_gevent_if_needed() + self._py_db = weakref.ref(py_db) + self._kill_received = False + mark_as_pydevd_daemon_thread(self) + self._target_and_args = target_and_args + + @property + def py_db(self): + return self._py_db() + + def run(self): + created_pydb_daemon = self.py_db.created_pydb_daemon_threads + created_pydb_daemon[self] = 1 + try: + try: + if IS_JYTHON and not isinstance( + threading.current_thread(), threading._MainThread + ): + # we shouldn't update sys.modules for the main thread, cause it leads to the second importing 'threading' + # module, and the new instance of main thread is created + ss = JyCore.PySystemState() + # Note: Py.setSystemState() affects only the current thread. + JyCore.Py.setSystemState(ss) + + self._stop_trace() + self._on_run() + except: + if sys is not None and pydev_log_exception is not None: + pydev_log_exception() + finally: + del created_pydb_daemon[self] + + def _on_run(self): + if self._target_and_args is not None: + target, args, kwargs = self._target_and_args + target(*args, **kwargs) + else: + raise NotImplementedError("Should be reimplemented by: %s" % self.__class__) + + def do_kill_pydev_thread(self): + if not self._kill_received: + pydev_log.debug("%s received kill signal", self.name) + self._kill_received = True + + def _stop_trace(self): + if self.pydev_do_not_trace: + if PYDEVD_USE_SYS_MONITORING: + pydevd_sys_monitoring.stop_monitoring(all_threads=False) + return + pydevd_tracing.SetTrace(None) # no debugging on this thread + + +def _collect_load_names(func): + found_load_names = set() + for instruction in iter_instructions(func.__code__): + if instruction.opname in ("LOAD_GLOBAL", "LOAD_ATTR", "LOAD_METHOD"): + found_load_names.add(instruction.argrepr) + return found_load_names + + +def _patch_threading_to_hide_pydevd_threads(): + """ + Patches the needed functions on the `threading` module so that the pydevd threads are hidden. + + Note that we patch the functions __code__ to avoid issues if some code had already imported those + variables prior to the patching. + """ + found_load_names = _collect_load_names(threading.enumerate) + # i.e.: we'll only apply the patching if the function seems to be what we expect. + + new_threading_enumerate = None + + if found_load_names in ( + {"_active_limbo_lock", "_limbo", "_active", "values", "list"}, + {"_active_limbo_lock", "_limbo", "_active", "values", "NULL + list"}, + { + "NULL + list", + "_active", + "_active_limbo_lock", + "NULL|self + values", + "_limbo", + }, + { + "_active_limbo_lock", + "values + NULL|self", + "_limbo", + "_active", + "list + NULL", + }, + ): + pydev_log.debug("Applying patching to hide pydevd threads (Py3 version).") + + def new_threading_enumerate(): + with _active_limbo_lock: + ret = list(_active.values()) + list(_limbo.values()) + + return [t for t in ret if not getattr(t, "is_pydev_daemon_thread", False)] + + elif found_load_names == set(("_active_limbo_lock", "_limbo", "_active", "values")): + pydev_log.debug("Applying patching to hide pydevd threads (Py2 version).") + + def new_threading_enumerate(): + with _active_limbo_lock: + ret = _active.values() + _limbo.values() + + return [t for t in ret if not getattr(t, "is_pydev_daemon_thread", False)] + + else: + pydev_log.info( + "Unable to hide pydevd threads. Found names in threading.enumerate: %s", + found_load_names, + ) + + if new_threading_enumerate is not None: + + def pydevd_saved_threading_enumerate(): + with threading._active_limbo_lock: + return list(threading._active.values()) + list( + threading._limbo.values() + ) + + _pydev_saved_modules.pydevd_saved_threading_enumerate = ( + pydevd_saved_threading_enumerate + ) + + threading.enumerate.__code__ = new_threading_enumerate.__code__ + + # We also need to patch the active count (to match what we have in the enumerate). + def new_active_count(): + # Note: as this will be executed in the `threading` module, `enumerate` will + # actually be threading.enumerate. + return len(enumerate()) + + threading.active_count.__code__ = new_active_count.__code__ + + # When shutting down, Python (on some versions) may do something as: + # + # def _pickSomeNonDaemonThread(): + # for t in enumerate(): + # if not t.daemon and t.is_alive(): + # return t + # return None + # + # But in this particular case, we do want threads with `is_pydev_daemon_thread` to appear + # explicitly due to the pydevd `CheckAliveThread` (because we want the shutdown to wait on it). + # So, it can't rely on the `enumerate` for that anymore as it's patched to not return pydevd threads. + if hasattr(threading, "_pickSomeNonDaemonThread"): + + def new_pick_some_non_daemon_thread(): + with _active_limbo_lock: + # Ok for py2 and py3. + threads = list(_active.values()) + list(_limbo.values()) + + for t in threads: + if not t.daemon and t.is_alive(): + return t + return None + + threading._pickSomeNonDaemonThread.__code__ = ( + new_pick_some_non_daemon_thread.__code__ + ) + + +_patched_threading_to_hide_pydevd_threads = False + + +def mark_as_pydevd_daemon_thread(thread): + if ( + not IS_JYTHON + and not IS_IRONPYTHON + and PYDEVD_APPLY_PATCHING_TO_HIDE_PYDEVD_THREADS + ): + global _patched_threading_to_hide_pydevd_threads + if not _patched_threading_to_hide_pydevd_threads: + # When we mark the first thread as a pydevd daemon thread, we also change the threading + # functions to hide pydevd threads. + # Note: we don't just "hide" the pydevd threads from the threading module by not using it + # (i.e.: just using the `thread.start_new_thread` instead of `threading.Thread`) + # because there's 1 thread (the `CheckAliveThread`) which is a pydevd thread but + # isn't really a daemon thread (so, we need CPython to wait on it for shutdown, + # in which case it needs to be in `threading` and the patching would be needed anyways). + _patched_threading_to_hide_pydevd_threads = True + try: + _patch_threading_to_hide_pydevd_threads() + except: + pydev_log.exception("Error applying patching to hide pydevd threads.") + + thread.pydev_do_not_trace = True + thread.is_pydev_daemon_thread = True + thread.daemon = True + + +def run_as_pydevd_daemon_thread(py_db, func, *args, **kwargs): + """ + Runs a function as a pydevd daemon thread (without any tracing in place). + """ + t = PyDBDaemonThread(py_db, target_and_args=(func, args, kwargs)) + t.name = "%s (pydevd daemon thread)" % (func.__name__,) + t.start() + return t diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_defaults.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_defaults.py new file mode 100644 index 000000000..e5a6fa5ff --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_defaults.py @@ -0,0 +1,73 @@ +""" +This module holds the customization settings for the debugger. +""" + +import sys + +from _pydev_bundle import pydev_log + +from _pydevd_bundle.pydevd_constants import QUOTED_LINE_PROTOCOL + + +class PydevdCustomization: + DEFAULT_PROTOCOL: str = QUOTED_LINE_PROTOCOL + + # Debug mode may be set to 'debugpy-dap'. + # + # In 'debugpy-dap' mode the following settings are done to PyDB: + # + # py_db.skip_suspend_on_breakpoint_exception = (BaseException,) + # py_db.skip_print_breakpoint_exception = (NameError,) + # py_db.multi_threads_single_notification = True + DEBUG_MODE: str = "" + + # This may be a ; to be pre-imported + # Something as: 'c:/temp/foo;my_module.bar' + # + # What's done in this case is something as: + # + # sys.path.insert(0, ) + # try: + # import + # finally: + # del sys.path[0] + # + # If the pre-import fails an output message is + # sent (but apart from that debugger execution + # should continue). + PREIMPORT: str = "" + + +def on_pydb_init(py_db): + if PydevdCustomization.DEBUG_MODE == "debugpy-dap": + pydev_log.debug("Apply debug mode: debugpy-dap") + py_db.skip_suspend_on_breakpoint_exception = (BaseException,) + py_db.skip_print_breakpoint_exception = (NameError,) + py_db.multi_threads_single_notification = True + elif not PydevdCustomization.DEBUG_MODE: + pydev_log.debug("Apply debug mode: default") + else: + pydev_log.debug( + "WARNING: unknown debug mode: %s", PydevdCustomization.DEBUG_MODE + ) + + if PydevdCustomization.PREIMPORT: + pydev_log.debug("Preimport: %s", PydevdCustomization.PREIMPORT) + try: + sys_path_entry, module_name = PydevdCustomization.PREIMPORT.rsplit( + ";", maxsplit=1 + ) + except Exception: + pydev_log.exception("Expected ';' in %s" % (PydevdCustomization.PREIMPORT,)) + else: + try: + sys.path.insert(0, sys_path_entry) + try: + __import__(module_name) + finally: + sys.path.remove(sys_path_entry) + except Exception: + pydev_log.exception( + "Error importing %s (with sys.path entry: %s)" + % (module_name, sys_path_entry) + ) diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_dont_trace.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_dont_trace.py new file mode 100644 index 000000000..500cbcefc --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_dont_trace.py @@ -0,0 +1,123 @@ +""" +Support for a tag that allows skipping over functions while debugging. +""" +import linecache +import re + +# To suppress tracing a method, add the tag @DontTrace +# to a comment either preceding or on the same line as +# the method definition +# +# E.g.: +# #@DontTrace +# def test1(): +# pass +# +# ... or ... +# +# def test2(): #@DontTrace +# pass +DONT_TRACE_TAG = "@DontTrace" + +# Regular expression to match a decorator (at the beginning +# of a line). +RE_DECORATOR = re.compile(r"^\s*@") + +# Mapping from code object to bool. +# If the key exists, the value is the cached result of should_trace_hook +_filename_to_ignored_lines = {} + + +def default_should_trace_hook(code, absolute_filename): + """ + Return True if this frame should be traced, False if tracing should be blocked. + """ + # First, check whether this code object has a cached value + ignored_lines = _filename_to_ignored_lines.get(absolute_filename) + if ignored_lines is None: + # Now, look up that line of code and check for a @DontTrace + # preceding or on the same line as the method. + # E.g.: + # #@DontTrace + # def test(): + # pass + # ... or ... + # def test(): #@DontTrace + # pass + ignored_lines = {} + lines = linecache.getlines(absolute_filename) + for i_line, line in enumerate(lines): + j = line.find("#") + if j >= 0: + comment = line[j:] + if DONT_TRACE_TAG in comment: + ignored_lines[i_line] = 1 + + # Note: when it's found in the comment, mark it up and down for the decorator lines found. + k = i_line - 1 + while k >= 0: + if RE_DECORATOR.match(lines[k]): + ignored_lines[k] = 1 + k -= 1 + else: + break + + k = i_line + 1 + while k <= len(lines): + if RE_DECORATOR.match(lines[k]): + ignored_lines[k] = 1 + k += 1 + else: + break + + _filename_to_ignored_lines[absolute_filename] = ignored_lines + + func_line = code.co_firstlineno - 1 # co_firstlineno is 1-based, so -1 is needed + return not ( + func_line - 1 in ignored_lines # -1 to get line before method + or func_line in ignored_lines + ) # method line + + +should_trace_hook = None + + +def clear_trace_filter_cache(): + """ + Clear the trace filter cache. + Call this after reloading. + """ + global should_trace_hook + try: + # Need to temporarily disable a hook because otherwise + # _filename_to_ignored_lines.clear() will never complete. + old_hook = should_trace_hook + should_trace_hook = None + + # Clear the linecache + linecache.clearcache() + _filename_to_ignored_lines.clear() + + finally: + should_trace_hook = old_hook + + +def trace_filter(mode): + """ + Set the trace filter mode. + + mode: Whether to enable the trace hook. + True: Trace filtering on (skipping methods tagged @DontTrace) + False: Trace filtering off (trace methods tagged @DontTrace) + None/default: Toggle trace filtering. + """ + global should_trace_hook + if mode is None: + mode = should_trace_hook is None + + if mode: + should_trace_hook = default_should_trace_hook + else: + should_trace_hook = None + + return mode diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_dont_trace_files.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_dont_trace_files.py new file mode 100644 index 000000000..7fe198165 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_dont_trace_files.py @@ -0,0 +1,178 @@ +# Important: Autogenerated file. + +# fmt: off +# DO NOT edit manually! +# DO NOT edit manually! + +LIB_FILE = 1 +PYDEV_FILE = 2 + +DONT_TRACE_DIRS = { + '_pydev_bundle': PYDEV_FILE, + '_pydev_runfiles': PYDEV_FILE, + '_pydevd_bundle': PYDEV_FILE, + '_pydevd_frame_eval': PYDEV_FILE, + '_pydevd_sys_monitoring': PYDEV_FILE, + 'pydev_ipython': LIB_FILE, + 'pydev_sitecustomize': PYDEV_FILE, + 'pydevd_attach_to_process': PYDEV_FILE, + 'pydevd_concurrency_analyser': PYDEV_FILE, + 'pydevd_plugins': PYDEV_FILE, + 'test_pydevd_reload': PYDEV_FILE, +} + +LIB_FILES_IN_DONT_TRACE_DIRS = { + '__init__.py', + 'inputhook.py', + 'inputhookglut.py', + 'inputhookgtk.py', + 'inputhookgtk3.py', + 'inputhookpyglet.py', + 'inputhookqt4.py', + 'inputhookqt5.py', + 'inputhookqt6.py', + 'inputhooktk.py', + 'inputhookwx.py', + 'matplotlibtools.py', + 'qt.py', + 'qt_for_kernel.py', + 'qt_loaders.py', + 'version.py', +} + +DONT_TRACE = { + # commonly used things from the stdlib that we don't want to trace + 'Queue.py':LIB_FILE, + 'queue.py':LIB_FILE, + 'socket.py':LIB_FILE, + 'weakref.py':LIB_FILE, + '_weakrefset.py':LIB_FILE, + 'linecache.py':LIB_FILE, + 'threading.py':LIB_FILE, + 'dis.py':LIB_FILE, + + # things from pydev that we don't want to trace + '__main__pydevd_gen_debug_adapter_protocol.py': PYDEV_FILE, + '_pydev_calltip_util.py': PYDEV_FILE, + '_pydev_completer.py': PYDEV_FILE, + '_pydev_execfile.py': PYDEV_FILE, + '_pydev_filesystem_encoding.py': PYDEV_FILE, + '_pydev_getopt.py': PYDEV_FILE, + '_pydev_imports_tipper.py': PYDEV_FILE, + '_pydev_jy_imports_tipper.py': PYDEV_FILE, + '_pydev_log.py': PYDEV_FILE, + '_pydev_saved_modules.py': PYDEV_FILE, + '_pydev_sys_patch.py': PYDEV_FILE, + '_pydev_tipper_common.py': PYDEV_FILE, + '_pydevd_sys_monitoring.py': PYDEV_FILE, + 'django_debug.py': PYDEV_FILE, + 'jinja2_debug.py': PYDEV_FILE, + 'pycompletionserver.py': PYDEV_FILE, + 'pydev_app_engine_debug_startup.py': PYDEV_FILE, + 'pydev_console_utils.py': PYDEV_FILE, + 'pydev_import_hook.py': PYDEV_FILE, + 'pydev_imports.py': PYDEV_FILE, + 'pydev_ipython_console.py': PYDEV_FILE, + 'pydev_ipython_console_011.py': PYDEV_FILE, + 'pydev_is_thread_alive.py': PYDEV_FILE, + 'pydev_localhost.py': PYDEV_FILE, + 'pydev_log.py': PYDEV_FILE, + 'pydev_monkey.py': PYDEV_FILE, + 'pydev_monkey_qt.py': PYDEV_FILE, + 'pydev_override.py': PYDEV_FILE, + 'pydev_run_in_console.py': PYDEV_FILE, + 'pydev_runfiles.py': PYDEV_FILE, + 'pydev_runfiles_coverage.py': PYDEV_FILE, + 'pydev_runfiles_nose.py': PYDEV_FILE, + 'pydev_runfiles_parallel.py': PYDEV_FILE, + 'pydev_runfiles_parallel_client.py': PYDEV_FILE, + 'pydev_runfiles_pytest2.py': PYDEV_FILE, + 'pydev_runfiles_unittest.py': PYDEV_FILE, + 'pydev_runfiles_xml_rpc.py': PYDEV_FILE, + 'pydev_umd.py': PYDEV_FILE, + 'pydev_versioncheck.py': PYDEV_FILE, + 'pydevconsole.py': PYDEV_FILE, + 'pydevconsole_code.py': PYDEV_FILE, + 'pydevd.py': PYDEV_FILE, + 'pydevd_additional_thread_info.py': PYDEV_FILE, + 'pydevd_additional_thread_info_regular.py': PYDEV_FILE, + 'pydevd_api.py': PYDEV_FILE, + 'pydevd_base_schema.py': PYDEV_FILE, + 'pydevd_breakpoints.py': PYDEV_FILE, + 'pydevd_bytecode_utils.py': PYDEV_FILE, + 'pydevd_bytecode_utils_py311.py': PYDEV_FILE, + 'pydevd_code_to_source.py': PYDEV_FILE, + 'pydevd_collect_bytecode_info.py': PYDEV_FILE, + 'pydevd_comm.py': PYDEV_FILE, + 'pydevd_comm_constants.py': PYDEV_FILE, + 'pydevd_command_line_handling.py': PYDEV_FILE, + 'pydevd_concurrency_logger.py': PYDEV_FILE, + 'pydevd_console.py': PYDEV_FILE, + 'pydevd_constants.py': PYDEV_FILE, + 'pydevd_custom_frames.py': PYDEV_FILE, + 'pydevd_cython_wrapper.py': PYDEV_FILE, + 'pydevd_daemon_thread.py': PYDEV_FILE, + 'pydevd_defaults.py': PYDEV_FILE, + 'pydevd_dont_trace.py': PYDEV_FILE, + 'pydevd_dont_trace_files.py': PYDEV_FILE, + 'pydevd_exec2.py': PYDEV_FILE, + 'pydevd_extension_api.py': PYDEV_FILE, + 'pydevd_extension_utils.py': PYDEV_FILE, + 'pydevd_file_utils.py': PYDEV_FILE, + 'pydevd_filtering.py': PYDEV_FILE, + 'pydevd_frame.py': PYDEV_FILE, + 'pydevd_frame_eval_cython_wrapper.py': PYDEV_FILE, + 'pydevd_frame_eval_main.py': PYDEV_FILE, + 'pydevd_frame_tracing.py': PYDEV_FILE, + 'pydevd_frame_utils.py': PYDEV_FILE, + 'pydevd_gevent_integration.py': PYDEV_FILE, + 'pydevd_helpers.py': PYDEV_FILE, + 'pydevd_import_class.py': PYDEV_FILE, + 'pydevd_io.py': PYDEV_FILE, + 'pydevd_json_debug_options.py': PYDEV_FILE, + 'pydevd_line_validation.py': PYDEV_FILE, + 'pydevd_modify_bytecode.py': PYDEV_FILE, + 'pydevd_net_command.py': PYDEV_FILE, + 'pydevd_net_command_factory_json.py': PYDEV_FILE, + 'pydevd_net_command_factory_xml.py': PYDEV_FILE, + 'pydevd_plugin_numpy_types.py': PYDEV_FILE, + 'pydevd_plugin_pandas_types.py': PYDEV_FILE, + 'pydevd_plugin_utils.py': PYDEV_FILE, + 'pydevd_plugins_django_form_str.py': PYDEV_FILE, + 'pydevd_process_net_command.py': PYDEV_FILE, + 'pydevd_process_net_command_json.py': PYDEV_FILE, + 'pydevd_referrers.py': PYDEV_FILE, + 'pydevd_reload.py': PYDEV_FILE, + 'pydevd_resolver.py': PYDEV_FILE, + 'pydevd_runpy.py': PYDEV_FILE, + 'pydevd_safe_repr.py': PYDEV_FILE, + 'pydevd_save_locals.py': PYDEV_FILE, + 'pydevd_schema.py': PYDEV_FILE, + 'pydevd_schema_log.py': PYDEV_FILE, + 'pydevd_signature.py': PYDEV_FILE, + 'pydevd_source_mapping.py': PYDEV_FILE, + 'pydevd_stackless.py': PYDEV_FILE, + 'pydevd_suspended_frames.py': PYDEV_FILE, + 'pydevd_sys_monitoring.py': PYDEV_FILE, + 'pydevd_thread_lifecycle.py': PYDEV_FILE, + 'pydevd_thread_wrappers.py': PYDEV_FILE, + 'pydevd_timeout.py': PYDEV_FILE, + 'pydevd_trace_dispatch.py': PYDEV_FILE, + 'pydevd_trace_dispatch_regular.py': PYDEV_FILE, + 'pydevd_traceproperty.py': PYDEV_FILE, + 'pydevd_tracing.py': PYDEV_FILE, + 'pydevd_utils.py': PYDEV_FILE, + 'pydevd_vars.py': PYDEV_FILE, + 'pydevd_vm_type.py': PYDEV_FILE, + 'pydevd_xml.py': PYDEV_FILE, +} + +# if we try to trace io.py it seems it can get halted (see http://bugs.python.org/issue4716) +DONT_TRACE['io.py'] = LIB_FILE + +# Don't trace common encodings too +DONT_TRACE['cp1252.py'] = LIB_FILE +DONT_TRACE['utf_8.py'] = LIB_FILE +DONT_TRACE['codecs.py'] = LIB_FILE + +# fmt: on diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_exec2.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_exec2.py new file mode 100644 index 000000000..486e8eb1d --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_exec2.py @@ -0,0 +1,5 @@ +def Exec(exp, global_vars, local_vars=None): + if local_vars is not None: + exec(exp, global_vars, local_vars) + else: + exec(exp, global_vars) diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_extension_api.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_extension_api.py new file mode 100644 index 000000000..8cabe7995 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_extension_api.py @@ -0,0 +1,107 @@ +import abc +from typing import Any + + +# borrowed from from six +def _with_metaclass(meta, *bases): + """Create a base class with a metaclass.""" + + class metaclass(meta): + def __new__(cls, name, this_bases, d): + return meta(name, bases, d) + + return type.__new__(metaclass, "temporary_class", (), {}) + + +# ======================================================================================================================= +# AbstractResolver +# ======================================================================================================================= +class _AbstractResolver(_with_metaclass(abc.ABCMeta)): + """ + This class exists only for documentation purposes to explain how to create a resolver. + + Some examples on how to resolve things: + - list: get_dictionary could return a dict with index->item and use the index to resolve it later + - set: get_dictionary could return a dict with id(object)->object and reiterate in that array to resolve it later + - arbitrary instance: get_dictionary could return dict with attr_name->attr and use getattr to resolve it later + """ + + @abc.abstractmethod + def resolve(self, var, attribute): + """ + In this method, we'll resolve some child item given the string representation of the item in the key + representing the previously asked dictionary. + + :param var: this is the actual variable to be resolved. + :param attribute: this is the string representation of a key previously returned in get_dictionary. + """ + raise NotImplementedError + + @abc.abstractmethod + def get_dictionary(self, var): + """ + :param var: this is the variable that should have its children gotten. + + :return: a dictionary where each pair key, value should be shown to the user as children items + in the variables view for the given var. + """ + raise NotImplementedError + + +class _AbstractProvider(_with_metaclass(abc.ABCMeta)): + @abc.abstractmethod + def can_provide(self, type_object, type_name): + raise NotImplementedError + + +# ======================================================================================================================= +# API CLASSES: +# ======================================================================================================================= + + +class TypeResolveProvider(_AbstractResolver, _AbstractProvider): + """ + Implement this in an extension to provide a custom resolver, see _AbstractResolver + """ + + +class StrPresentationProvider(_AbstractProvider): + """ + Implement this in an extension to provide a str presentation for a type + """ + + def get_str_in_context(self, val: Any, context: str): + """ + :param val: + This is the object for which we want a string representation. + + :param context: + This is the context in which the variable is being requested. Valid values: + "watch", + "repl", + "hover", + "clipboard" + + :note: this method is not required (if it's not available, get_str is called directly, + so, it's only needed if the string representation needs to be converted based on + the context). + """ + return self.get_str(val) + + @abc.abstractmethod + def get_str(self, val): + raise NotImplementedError + + +class DebuggerEventHandler(_with_metaclass(abc.ABCMeta)): + """ + Implement this to receive lifecycle events from the debugger + """ + + def on_debugger_modules_loaded(self, **kwargs): + """ + This method invoked after all debugger modules are loaded. Useful for importing and/or patching debugger + modules at a safe time + :param kwargs: This is intended to be flexible dict passed from the debugger. + Currently passes the debugger version + """ diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_extension_utils.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_extension_utils.py new file mode 100644 index 000000000..9614eb601 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_extension_utils.py @@ -0,0 +1,72 @@ +import pkgutil +import sys + +from _pydev_bundle import pydev_log + +try: + import pydevd_plugins.extensions as extensions +except: + pydev_log.exception() + extensions = None + + +class ExtensionManager: + def __init__(self): + self.loaded_extensions = None + self.type_to_instance = {} + + def _load_modules(self): + self.loaded_extensions = [] + if extensions: + for module_loader, name, ispkg in pkgutil.walk_packages( + extensions.__path__, extensions.__name__ + "." + ): + mod_name = name.split(".")[-1] + if not ispkg and mod_name.startswith("pydevd_plugin"): + try: + __import__(name) + module = sys.modules[name] + self.loaded_extensions.append(module) + except ImportError: + pydev_log.critical("Unable to load extension: %s", name) + + def _ensure_loaded(self): + if self.loaded_extensions is None: + self._load_modules() + + def _iter_attr(self): + for extension in self.loaded_extensions: + dunder_all = getattr(extension, "__all__", None) + for attr_name in dir(extension): + if not attr_name.startswith("_"): + if dunder_all is None or attr_name in dunder_all: + yield attr_name, getattr(extension, attr_name) + + def get_extension_classes(self, extension_type): + self._ensure_loaded() + if extension_type in self.type_to_instance: + return self.type_to_instance[extension_type] + handlers = self.type_to_instance.setdefault(extension_type, []) + for attr_name, attr in self._iter_attr(): + if ( + isinstance(attr, type) + and issubclass(attr, extension_type) + and attr is not extension_type + ): + try: + handlers.append(attr()) + except: + pydev_log.exception("Unable to load extension class: %s", attr_name) + return handlers + + +EXTENSION_MANAGER_INSTANCE = ExtensionManager() + + +def extensions_of_type(extension_type): + """ + + :param T extension_type: The type of the extension hook + :rtype: list[T] + """ + return EXTENSION_MANAGER_INSTANCE.get_extension_classes(extension_type) diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_filtering.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_filtering.py new file mode 100644 index 000000000..4af7dfb93 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_filtering.py @@ -0,0 +1,388 @@ +import fnmatch +import glob +import json +import os.path +import sys +from collections import namedtuple + +import pydevd_file_utils +from _pydev_bundle import pydev_log +from _pydev_bundle._pydev_saved_modules import threading +from pydevd_file_utils import normcase + +from _pydevd_bundle import pydevd_constants +from _pydevd_bundle.pydevd_constants import ( + IS_PYPY, + IS_WINDOWS, + LIBRARY_CODE_BASENAMES_STARTING_WITH, + USER_CODE_BASENAMES_STARTING_WITH, + is_true_in_env, +) + +ExcludeFilter = namedtuple("ExcludeFilter", "name, exclude, is_path") + + +def _convert_to_str_and_clear_empty(roots): + new_roots = [] + for root in roots: + assert isinstance(root, str), "%s not str (found: %s)" % (root, type(root)) + if root: + new_roots.append(root) + return new_roots + + +def _check_matches(patterns, paths): + if not patterns and not paths: + # Matched to the end. + return True + + if (not patterns and paths) or (patterns and not paths): + return False + + pattern = normcase(patterns[0]) + path = normcase(paths[0]) + + if not glob.has_magic(pattern): + if pattern != path: + return False + + elif pattern == "**": + if len(patterns) == 1: + return True # if ** is the last one it matches anything to the right. + + for i in range(len(paths)): + # Recursively check the remaining patterns as the + # current pattern could match any number of paths. + if _check_matches(patterns[1:], paths[i:]): + return True + + elif not fnmatch.fnmatch(path, pattern): + # Current part doesn't match. + return False + + return _check_matches(patterns[1:], paths[1:]) + + +def glob_matches_path(path, pattern, sep=os.sep, altsep=os.altsep): + if altsep: + pattern = pattern.replace(altsep, sep) + path = path.replace(altsep, sep) + + drive = "" + if len(path) > 1 and path[1] == ":": + drive, path = path[0], path[2:] + + if drive and len(pattern) > 1: + if pattern[1] == ":": + if drive.lower() != pattern[0].lower(): + return False + pattern = pattern[2:] + + patterns = pattern.split(sep) + paths = path.split(sep) + if paths: + if paths[0] == "": + paths = paths[1:] + if patterns: + if patterns[0] == "": + patterns = patterns[1:] + + return _check_matches(patterns, paths) + + +class FilesFiltering: + """ + Note: calls at FilesFiltering are uncached. + + The actual API used should be through PyDB. + """ + + def __init__(self): + self._exclude_filters = [] + self._project_roots = [] + self._library_roots = [] + + # Filter out libraries? + self._use_libraries_filter = False + self.require_module = ( + False # True if some exclude filter filters by the module. + ) + + self.set_use_libraries_filter(is_true_in_env("PYDEVD_FILTER_LIBRARIES")) + + project_roots = os.getenv("IDE_PROJECT_ROOTS", None) + if project_roots is not None: + project_roots = project_roots.split(os.pathsep) + else: + project_roots = [] + self.set_project_roots(project_roots) + + library_roots = os.getenv("LIBRARY_ROOTS", None) + if library_roots is not None: + library_roots = library_roots.split(os.pathsep) + else: + library_roots = self._get_default_library_roots() + self.set_library_roots(library_roots) + + # Stepping filters. + pydevd_filters = os.getenv("PYDEVD_FILTERS", "") + # To filter out it's something as: {'**/not_my_code/**': True} + if pydevd_filters: + pydev_log.debug("PYDEVD_FILTERS %s", (pydevd_filters,)) + if pydevd_filters.startswith("{"): + # dict(glob_pattern (str) -> exclude(True or False)) + exclude_filters = [] + for key, val in json.loads(pydevd_filters).items(): + exclude_filters.append(ExcludeFilter(key, val, True)) + self._exclude_filters = exclude_filters + else: + # A ';' separated list of strings with globs for the + # list of excludes. + filters = pydevd_filters.split(";") + new_filters = [] + for new_filter in filters: + if new_filter.strip(): + new_filters.append( + ExcludeFilter(new_filter.strip(), True, True) + ) + self._exclude_filters = new_filters + + @classmethod + def _get_default_library_roots(cls): + pydev_log.debug("Collecting default library roots.") + # Provide sensible defaults if not in env vars. + import site + + roots = [] + + try: + import sysconfig # Python 2.7 onwards only. + except ImportError: + pass + else: + for path_name in set(("stdlib", "platstdlib", "purelib", "platlib")) & set( + sysconfig.get_path_names() + ): + roots.append(sysconfig.get_path(path_name)) + + # Make sure we always get at least the standard library location (based on the `os` and + # `threading` modules -- it's a bit weird that it may be different on the ci, but it happens). + roots.append(os.path.dirname(os.__file__)) + roots.append(os.path.dirname(threading.__file__)) + if IS_PYPY: + # On PyPy 3.6 (7.3.1) it wrongly says that sysconfig.get_path('stdlib') is + # /lib-pypy when the installed version is /lib_pypy. + try: + import _pypy_wait + except ImportError: + pydev_log.debug( + "Unable to import _pypy_wait on PyPy when collecting default library roots." + ) + else: + pypy_lib_dir = os.path.dirname(_pypy_wait.__file__) + pydev_log.debug("Adding %s to default library roots.", pypy_lib_dir) + roots.append(pypy_lib_dir) + + if hasattr(site, "getusersitepackages"): + site_paths = site.getusersitepackages() + if isinstance(site_paths, (list, tuple)): + for site_path in site_paths: + roots.append(site_path) + else: + roots.append(site_paths) + + if hasattr(site, "getsitepackages"): + site_paths = site.getsitepackages() + if isinstance(site_paths, (list, tuple)): + for site_path in site_paths: + roots.append(site_path) + else: + roots.append(site_paths) + + for path in sys.path: + if os.path.exists(path) and os.path.basename(path) in ( + "site-packages", + "pip-global", + ): + roots.append(path) + + # On WASM some of the roots may not exist, filter those out. + roots = [path for path in roots if path is not None] + roots.extend([os.path.realpath(path) for path in roots]) + + return sorted(set(roots)) + + def _fix_roots(self, roots): + roots = _convert_to_str_and_clear_empty(roots) + new_roots = [] + for root in roots: + path = self._absolute_normalized_path(root) + if pydevd_constants.IS_WINDOWS: + new_roots.append(path + "\\") + else: + new_roots.append(path + "/") + return new_roots + + def _absolute_normalized_path(self, filename): + """ + Provides a version of the filename that's absolute and normalized. + """ + return normcase(pydevd_file_utils.absolute_path(filename)) + + def set_project_roots(self, project_roots): + self._project_roots = self._fix_roots(project_roots) + pydev_log.debug("IDE_PROJECT_ROOTS %s\n" % project_roots) + + def _get_project_roots(self): + return self._project_roots + + def set_library_roots(self, roots): + self._library_roots = self._fix_roots(roots) + pydev_log.debug("LIBRARY_ROOTS %s\n" % roots) + + def _get_library_roots(self): + return self._library_roots + + def in_project_roots(self, received_filename): + """ + Note: don't call directly. Use PyDb.in_project_scope (there's no caching here and it doesn't + handle all possibilities for knowing whether a project is actually in the scope, it + just handles the heuristics based on the absolute_normalized_filename without the actual frame). + """ + DEBUG = False + + if received_filename.startswith(USER_CODE_BASENAMES_STARTING_WITH): + if DEBUG: + pydev_log.debug( + "In in_project_roots - user basenames - starts with %s (%s)", + received_filename, + USER_CODE_BASENAMES_STARTING_WITH, + ) + return True + + if received_filename.startswith(LIBRARY_CODE_BASENAMES_STARTING_WITH): + if DEBUG: + pydev_log.debug( + "Not in in_project_roots - library basenames - starts with %s (%s)", + received_filename, + LIBRARY_CODE_BASENAMES_STARTING_WITH, + ) + return False + + project_roots = self._get_project_roots() # roots are absolute/normalized. + + absolute_normalized_filename = self._absolute_normalized_path(received_filename) + absolute_normalized_filename_as_dir = absolute_normalized_filename + ( + "\\" if IS_WINDOWS else "/" + ) + + found_in_project = [] + for root in project_roots: + if root and ( + absolute_normalized_filename.startswith(root) + or root == absolute_normalized_filename_as_dir + ): + if DEBUG: + pydev_log.debug( + "In project: %s (%s)", absolute_normalized_filename, root + ) + found_in_project.append(root) + + found_in_library = [] + library_roots = self._get_library_roots() + for root in library_roots: + if root and ( + absolute_normalized_filename.startswith(root) + or root == absolute_normalized_filename_as_dir + ): + found_in_library.append(root) + if DEBUG: + pydev_log.debug( + "In library: %s (%s)", absolute_normalized_filename, root + ) + else: + if DEBUG: + pydev_log.debug( + "Not in library: %s (%s)", absolute_normalized_filename, root + ) + + if not project_roots: + # If we have no project roots configured, consider it being in the project + # roots if it's not found in site-packages (because we have defaults for those + # and not the other way around). + in_project = not found_in_library + if DEBUG: + pydev_log.debug( + "Final in project (no project roots): %s (%s)", + absolute_normalized_filename, + in_project, + ) + + else: + in_project = False + if found_in_project: + if not found_in_library: + if DEBUG: + pydev_log.debug( + "Final in project (in_project and not found_in_library): %s (True)", + absolute_normalized_filename, + ) + in_project = True + else: + # Found in both, let's see which one has the bigger path matched. + if max(len(x) for x in found_in_project) > max( + len(x) for x in found_in_library + ): + in_project = True + if DEBUG: + pydev_log.debug( + "Final in project (found in both): %s (%s)", + absolute_normalized_filename, + in_project, + ) + + return in_project + + def use_libraries_filter(self): + """ + Should we debug only what's inside project folders? + """ + return self._use_libraries_filter + + def set_use_libraries_filter(self, use): + pydev_log.debug("pydevd: Use libraries filter: %s\n" % use) + self._use_libraries_filter = use + + def use_exclude_filters(self): + # Enabled if we have any filters registered. + return len(self._exclude_filters) > 0 + + def exclude_by_filter(self, absolute_filename, module_name): + """ + :return: True if it should be excluded, False if it should be included and None + if no rule matched the given file. + """ + for ( + exclude_filter + ) in self._exclude_filters: # : :type exclude_filter: ExcludeFilter + if exclude_filter.is_path: + if glob_matches_path(absolute_filename, exclude_filter.name): + return exclude_filter.exclude + else: + # Module filter. + if exclude_filter.name == module_name or module_name.startswith( + exclude_filter.name + "." + ): + return exclude_filter.exclude + return None + + def set_exclude_filters(self, exclude_filters): + """ + :param list(ExcludeFilter) exclude_filters: + """ + self._exclude_filters = exclude_filters + self.require_module = False + for exclude_filter in exclude_filters: + if not exclude_filter.is_path: + self.require_module = True + break diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame.py new file mode 100644 index 000000000..aa13ac9d8 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame.py @@ -0,0 +1,1607 @@ +import linecache +import os.path +import re +import sys + +from _pydev_bundle import pydev_log +from pydevd_file_utils import get_abs_path_real_path_and_base_from_frame + +from _pydevd_bundle import pydevd_dont_trace +from _pydevd_bundle.pydevd_comm_constants import CMD_SET_FUNCTION_BREAK +from _pydevd_bundle.pydevd_constants import ( + EXCEPTION_TYPE_HANDLED, + EXCEPTION_TYPE_USER_UNHANDLED, + NO_FTRACE, + PYDEVD_IPYTHON_CONTEXT, + PYDEVD_USE_SYS_MONITORING, + RETURN_VALUES_DICT, +) +from _pydevd_bundle.pydevd_frame_utils import ( + add_exception_to_frame, + ignore_exception_trace, + just_raised, + remove_exception_from_frame, +) +from _pydevd_bundle.pydevd_utils import get_clsname_for_code + +try: + from _pydevd_bundle.pydevd_bytecode_utils import ( + get_smart_step_into_variant_from_frame_offset, + ) +except ImportError: + + def get_smart_step_into_variant_from_frame_offset(*args, **kwargs): + return None + + +# IFDEF CYTHON +# cython_inline_constant: CMD_STEP_INTO = 107 +# cython_inline_constant: CMD_STEP_INTO_MY_CODE = 144 +# cython_inline_constant: CMD_STEP_RETURN = 109 +# cython_inline_constant: CMD_STEP_RETURN_MY_CODE = 160 +# cython_inline_constant: CMD_STEP_OVER = 108 +# cython_inline_constant: CMD_STEP_OVER_MY_CODE = 159 +# cython_inline_constant: CMD_STEP_CAUGHT_EXCEPTION = 137 +# cython_inline_constant: CMD_SET_BREAK = 111 +# cython_inline_constant: CMD_SMART_STEP_INTO = 128 +# cython_inline_constant: CMD_STEP_INTO_COROUTINE = 206 +# cython_inline_constant: STATE_RUN = 1 +# cython_inline_constant: STATE_SUSPEND = 2 +# ELSE +# Note: those are now inlined on cython. +CMD_STEP_INTO = 107 +CMD_STEP_INTO_MY_CODE = 144 +CMD_STEP_RETURN = 109 +CMD_STEP_RETURN_MY_CODE = 160 +CMD_STEP_OVER = 108 +CMD_STEP_OVER_MY_CODE = 159 +CMD_STEP_CAUGHT_EXCEPTION = 137 +CMD_SET_BREAK = 111 +CMD_SMART_STEP_INTO = 128 +CMD_STEP_INTO_COROUTINE = 206 +STATE_RUN = 1 +STATE_SUSPEND = 2 +# ENDIF + +basename = os.path.basename + +IGNORE_EXCEPTION_TAG = re.compile("[^#]*#.*@IgnoreException") +DEBUG_START = ("pydevd.py", "run") +DEBUG_START_PY3K = ("_pydev_execfile.py", "execfile") +TRACE_PROPERTY = "pydevd_traceproperty.py" + +import dis + +try: + StopAsyncIteration +except NameError: + StopAsyncIteration = StopIteration + + +# IFDEF CYTHON +# def is_unhandled_exception(container_obj, py_db, frame, int last_raise_line, set raise_lines): +# ELSE +def is_unhandled_exception(container_obj, py_db, frame, last_raise_line, raise_lines): + # ENDIF + if frame.f_lineno in raise_lines: + return True + + else: + try_except_infos = container_obj.try_except_infos + if try_except_infos is None: + container_obj.try_except_infos = ( + try_except_infos + ) = py_db.collect_try_except_info(frame.f_code) + + if not try_except_infos: + # Consider the last exception as unhandled because there's no try..except in it. + return True + else: + # Now, consider only the try..except for the raise + valid_try_except_infos = [] + for try_except_info in try_except_infos: + if try_except_info.is_line_in_try_block(last_raise_line): + valid_try_except_infos.append(try_except_info) + + if not valid_try_except_infos: + return True + + else: + # Note: check all, not only the "valid" ones to cover the case + # in "tests_python.test_tracing_on_top_level.raise_unhandled10" + # where one try..except is inside the other with only a raise + # and it's gotten in the except line. + for try_except_info in try_except_infos: + if try_except_info.is_line_in_except_block(frame.f_lineno): + if ( + frame.f_lineno == try_except_info.except_line + or frame.f_lineno in try_except_info.raise_lines_in_except + ): + # In a raise inside a try..except block or some except which doesn't + # match the raised exception. + return True + return False + + +# IFDEF CYTHON +# cdef class _TryExceptContainerObj: +# cdef public list try_except_infos; +# def __init__(self): +# self.try_except_infos = None +# ELSE +class _TryExceptContainerObj: + """ + A dumb container object just to contain the try..except info when needed. Meant to be + persistent among multiple PyDBFrames to the same code object. + """ + + try_except_infos = None + + +# ENDIF + + +# ======================================================================================================================= +# PyDBFrame +# ======================================================================================================================= +# IFDEF CYTHON +# cdef class PyDBFrame: +# ELSE +class PyDBFrame: + """This makes the tracing for a given frame, so, the trace_dispatch + is used initially when we enter into a new context ('call') and then + is reused for the entire context. + """ + + # ENDIF + + # IFDEF CYTHON + # cdef tuple _args + # cdef int should_skip + # cdef object exc_info + # def __init__(self, tuple args): + # self._args = args # In the cython version we don't need to pass the frame + # self.should_skip = -1 # On cythonized version, put in instance. + # self.exc_info = () + # ELSE + should_skip = -1 # Default value in class (put in instance on set). + exc_info = () # Default value in class (put in instance on set). + + if PYDEVD_USE_SYS_MONITORING: + + def __init__(self, *args, **kwargs): + raise RuntimeError("Not expected to be used in sys.monitoring.") + + else: + + def __init__(self, args): + # args = py_db, abs_path_canonical_path_and_base, base, info, t, frame + # yeap, much faster than putting in self and then getting it from self later on + self._args = args + # ENDIF + + def set_suspend(self, *args, **kwargs): + self._args[0].set_suspend(*args, **kwargs) + + def do_wait_suspend(self, *args, **kwargs): + self._args[0].do_wait_suspend(*args, **kwargs) + + # IFDEF CYTHON + # def trace_exception(self, frame, str event, arg): + # cdef bint should_stop; + # cdef tuple exc_info; + # ELSE + def trace_exception(self, frame, event, arg): + # ENDIF + if event == "exception": + should_stop, frame, exc_info = should_stop_on_exception( + self._args[0], self._args[2], frame, self._args[3], arg, self.exc_info + ) + self.exc_info = exc_info + + if should_stop: + if handle_exception( + self._args[0], self._args[3], frame, arg, EXCEPTION_TYPE_HANDLED + ): + return self.trace_dispatch + + elif event == "return": + exc_info = self.exc_info + if exc_info and arg is None: + frame_skips_cache, frame_cache_key = self._args[4], self._args[5] + custom_key = (frame_cache_key, "try_exc_info") + container_obj = frame_skips_cache.get(custom_key) + if container_obj is None: + container_obj = frame_skips_cache[ + custom_key + ] = _TryExceptContainerObj() + if is_unhandled_exception( + container_obj, self._args[0], frame, exc_info[1], exc_info[2] + ) and self.handle_user_exception(frame): + return self.trace_dispatch + + return self.trace_exception + + def handle_user_exception(self, frame): + exc_info = self.exc_info + if exc_info: + return handle_exception( + self._args[0], + self._args[3], + frame, + exc_info[0], + EXCEPTION_TYPE_USER_UNHANDLED, + ) + return False + + # IFDEF CYTHON + # cdef get_func_name(self, frame): + # cdef str func_name + # ELSE + def get_func_name(self, frame): + # ENDIF + code_obj = frame.f_code + func_name = code_obj.co_name + try: + cls_name = get_clsname_for_code(code_obj, frame) + if cls_name is not None: + return "%s.%s" % (cls_name, func_name) + else: + return func_name + except: + pydev_log.exception() + return func_name + + # IFDEF CYTHON + # cdef _show_return_values(self, frame, arg): + # ELSE + def _show_return_values(self, frame, arg): + # ENDIF + try: + try: + f_locals_back = getattr(frame.f_back, "f_locals", None) + if f_locals_back is not None: + return_values_dict = f_locals_back.get(RETURN_VALUES_DICT, None) + if return_values_dict is None: + return_values_dict = {} + f_locals_back[RETURN_VALUES_DICT] = return_values_dict + name = self.get_func_name(frame) + return_values_dict[name] = arg + except: + pydev_log.exception() + finally: + f_locals_back = None + + # IFDEF CYTHON + # cdef _remove_return_values(self, py_db, frame): + # ELSE + def _remove_return_values(self, py_db, frame): + # ENDIF + try: + try: + # Showing return values was turned off, we should remove them from locals dict. + # The values can be in the current frame or in the back one + frame.f_locals.pop(RETURN_VALUES_DICT, None) + + f_locals_back = getattr(frame.f_back, "f_locals", None) + if f_locals_back is not None: + f_locals_back.pop(RETURN_VALUES_DICT, None) + except: + pydev_log.exception() + finally: + f_locals_back = None + + # IFDEF CYTHON + # cdef _get_unfiltered_back_frame(self, py_db, frame): + # ELSE + def _get_unfiltered_back_frame(self, py_db, frame): + # ENDIF + f = frame.f_back + while f is not None: + if not py_db.is_files_filter_enabled: + return f + + else: + if py_db.apply_files_filter(f, f.f_code.co_filename, False): + f = f.f_back + + else: + return f + + return f + + # IFDEF CYTHON + # cdef _is_same_frame(self, target_frame, current_frame): + # cdef PyDBAdditionalThreadInfo info; + # ELSE + def _is_same_frame(self, target_frame, current_frame): + # ENDIF + if target_frame is current_frame: + return True + + info = self._args[2] + if info.pydev_use_scoped_step_frame: + # If using scoped step we don't check the target, we just need to check + # if the current matches the same heuristic where the target was defined. + if target_frame is not None and current_frame is not None: + if target_frame.f_code.co_filename == current_frame.f_code.co_filename: + # The co_name may be different (it may include the line number), but + # the filename must still be the same. + f = current_frame.f_back + if f is not None and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]: + f = f.f_back + if ( + f is not None + and f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[2] + ): + return True + + return False + + # IFDEF CYTHON + # cpdef trace_dispatch(self, frame, str event, arg): + # cdef tuple abs_path_canonical_path_and_base; + # cdef bint is_exception_event; + # cdef bint has_exception_breakpoints; + # cdef bint can_skip; + # cdef bint stop; + # cdef bint stop_on_plugin_breakpoint; + # cdef PyDBAdditionalThreadInfo info; + # cdef int step_cmd; + # cdef int line; + # cdef bint is_line; + # cdef bint is_call; + # cdef bint is_return; + # cdef bint should_stop; + # cdef dict breakpoints_for_file; + # cdef dict stop_info; + # cdef str curr_func_name; + # cdef dict frame_skips_cache; + # cdef object frame_cache_key; + # cdef tuple line_cache_key; + # cdef int breakpoints_in_line_cache; + # cdef int breakpoints_in_frame_cache; + # cdef bint has_breakpoint_in_frame; + # cdef bint is_coroutine_or_generator; + # cdef int bp_line; + # cdef object bp; + # cdef int pydev_smart_parent_offset + # cdef int pydev_smart_child_offset + # cdef tuple pydev_smart_step_into_variants + # ELSE + def trace_dispatch(self, frame, event, arg): + # ENDIF + # Note: this is a big function because most of the logic related to hitting a breakpoint and + # stepping is contained in it. Ideally this could be split among multiple functions, but the + # problem in this case is that in pure-python function calls are expensive and even more so + # when tracing is on (because each function call will get an additional tracing call). We + # try to address this by using the info.is_tracing for the fastest possible return, but the + # cost is still high (maybe we could use code-generation in the future and make the code + # generation be better split among what each part does). + + try: + # DEBUG = '_debugger_case_yield_from.py' in frame.f_code.co_filename + ( + py_db, + abs_path_canonical_path_and_base, + info, + thread, + frame_skips_cache, + frame_cache_key, + ) = self._args + # if DEBUG: print('frame trace_dispatch %s %s %s %s %s %s, stop: %s' % (frame.f_lineno, frame.f_code.co_name, frame.f_code.co_filename, event, constant_to_str(info.pydev_step_cmd), arg, info.pydev_step_stop)) + info.is_tracing += 1 + + # TODO: This shouldn't be needed. The fact that frame.f_lineno + # is None seems like a bug in Python 3.11. + # Reported in: https://github.com/python/cpython/issues/94485 + line = ( + frame.f_lineno or 0 + ) # Workaround or case where frame.f_lineno is None + line_cache_key = (frame_cache_key, line) + + if py_db.pydb_disposed: + return None if event == "call" else NO_FTRACE + + plugin_manager = py_db.plugin + has_exception_breakpoints = ( + py_db.break_on_caught_exceptions + or py_db.break_on_user_uncaught_exceptions + or py_db.has_plugin_exception_breaks + ) + + stop_frame = info.pydev_step_stop + step_cmd = info.pydev_step_cmd + function_breakpoint_on_call_event = None + + if ( + frame.f_code.co_flags & 0xA0 + ): # 0xa0 == CO_GENERATOR = 0x20 | CO_COROUTINE = 0x80 + # Dealing with coroutines and generators: + # When in a coroutine we change the perceived event to the debugger because + # a call, StopIteration exception and return are usually just pausing/unpausing it. + if event == "line": + is_line = True + is_call = False + is_return = False + is_exception_event = False + + elif event == "return": + is_line = False + is_call = False + is_return = True + is_exception_event = False + + returns_cache_key = (frame_cache_key, "returns") + return_lines = frame_skips_cache.get(returns_cache_key) + if return_lines is None: + # Note: we're collecting the return lines by inspecting the bytecode as + # there are multiple returns and multiple stop iterations when awaiting and + # it doesn't give any clear indication when a coroutine or generator is + # finishing or just pausing. + return_lines = set() + for x in py_db.collect_return_info(frame.f_code): + # Note: cython does not support closures in cpdefs (so we can't use + # a list comprehension). + return_lines.add(x.return_line) + + frame_skips_cache[returns_cache_key] = return_lines + + if line not in return_lines: + # Not really a return (coroutine/generator paused). + return self.trace_dispatch + else: + if self.exc_info: + self.handle_user_exception(frame) + return self.trace_dispatch + + # Tricky handling: usually when we're on a frame which is about to exit + # we set the step mode to step into, but in this case we'd end up in the + # asyncio internal machinery, which is not what we want, so, we just + # ask the stop frame to be a level up. + # + # Note that there's an issue here which we may want to fix in the future: if + # the back frame is a frame which is filtered, we won't stop properly. + # Solving this may not be trivial as we'd need to put a scope in the step + # in, but we may have to do it anyways to have a step in which doesn't end + # up in asyncio). + # + # Note2: we don't revert to a step in if we're doing scoped stepping + # (because on scoped stepping we're always receiving a call/line/return + # event for each line in ipython, so, we can't revert to step in on return + # as the return shouldn't mean that we've actually completed executing a + # frame in this case). + if stop_frame is frame and not info.pydev_use_scoped_step_frame: + if step_cmd in ( + CMD_STEP_OVER, + CMD_STEP_OVER_MY_CODE, + CMD_STEP_INTO, + CMD_STEP_INTO_MY_CODE, + ): + f = self._get_unfiltered_back_frame(py_db, frame) + if f is not None: + info.pydev_step_cmd = CMD_STEP_INTO_COROUTINE + info.pydev_step_stop = f + else: + if step_cmd == CMD_STEP_OVER: + info.pydev_step_cmd = CMD_STEP_INTO + info.pydev_step_stop = None + + elif step_cmd == CMD_STEP_OVER_MY_CODE: + info.pydev_step_cmd = CMD_STEP_INTO_MY_CODE + info.pydev_step_stop = None + + elif step_cmd == CMD_STEP_INTO_COROUTINE: + # We're exiting this one, so, mark the new coroutine context. + f = self._get_unfiltered_back_frame(py_db, frame) + if f is not None: + info.pydev_step_stop = f + else: + info.pydev_step_cmd = CMD_STEP_INTO + info.pydev_step_stop = None + + elif event == "exception": + breakpoints_for_file = None + if has_exception_breakpoints: + should_stop, frame, exc_info = should_stop_on_exception( + self._args[0], + self._args[2], + frame, + self._args[3], + arg, + self.exc_info, + ) + self.exc_info = exc_info + if should_stop: + if handle_exception( + self._args[0], + self._args[3], + frame, + arg, + EXCEPTION_TYPE_HANDLED, + ): + return self.trace_dispatch + + return self.trace_dispatch + else: + # event == 'call' or event == 'c_XXX' + return self.trace_dispatch + + else: # Not coroutine nor generator + if event == "line": + is_line = True + is_call = False + is_return = False + is_exception_event = False + + elif event == "return": + is_line = False + is_return = True + is_call = False + is_exception_event = False + + # If we are in single step mode and something causes us to exit the current frame, we need to make sure we break + # eventually. Force the step mode to step into and the step stop frame to None. + # I.e.: F6 in the end of a function should stop in the next possible position (instead of forcing the user + # to make a step in or step over at that location). + # Note: this is especially troublesome when we're skipping code with the + # @DontTrace comment. + if ( + stop_frame is frame + and not info.pydev_use_scoped_step_frame + and is_return + and step_cmd + in ( + CMD_STEP_OVER, + CMD_STEP_RETURN, + CMD_STEP_OVER_MY_CODE, + CMD_STEP_RETURN_MY_CODE, + CMD_SMART_STEP_INTO, + ) + ): + if step_cmd in ( + CMD_STEP_OVER, + CMD_STEP_RETURN, + CMD_SMART_STEP_INTO, + ): + info.pydev_step_cmd = CMD_STEP_INTO + else: + info.pydev_step_cmd = CMD_STEP_INTO_MY_CODE + info.pydev_step_stop = None + + if self.exc_info: + if self.handle_user_exception(frame): + return self.trace_dispatch + + elif event == "call": + is_line = False + is_call = True + is_return = False + is_exception_event = False + if ( + frame.f_code.co_firstlineno == frame.f_lineno + ): # Check line to deal with async/await. + function_breakpoint_on_call_event = ( + py_db.function_breakpoint_name_to_breakpoint.get( + frame.f_code.co_name + ) + ) + + elif event == "exception": + is_exception_event = True + breakpoints_for_file = None + if has_exception_breakpoints: + should_stop, frame, exc_info = should_stop_on_exception( + self._args[0], + self._args[2], + frame, + self._args[3], + arg, + self.exc_info, + ) + self.exc_info = exc_info + if should_stop: + if handle_exception( + self._args[0], + self._args[3], + frame, + arg, + EXCEPTION_TYPE_HANDLED, + ): + return self.trace_dispatch + is_line = False + is_return = False + is_call = False + + else: + # Unexpected: just keep the same trace func (i.e.: event == 'c_XXX'). + return self.trace_dispatch + + if not is_exception_event: + breakpoints_for_file = py_db.breakpoints.get( + abs_path_canonical_path_and_base[1] + ) + + can_skip = False + + if info.pydev_state == 1: # STATE_RUN = 1 + # we can skip if: + # - we have no stop marked + # - we should make a step return/step over and we're not in the current frame + # - we're stepping into a coroutine context and we're not in that context + if step_cmd == -1: + can_skip = True + + elif step_cmd in ( + CMD_STEP_OVER, + CMD_STEP_RETURN, + CMD_STEP_OVER_MY_CODE, + CMD_STEP_RETURN_MY_CODE, + ) and not self._is_same_frame(stop_frame, frame): + can_skip = True + + elif step_cmd == CMD_SMART_STEP_INTO and ( + stop_frame is not None + and stop_frame is not frame + and stop_frame is not frame.f_back + and ( + frame.f_back is None + or stop_frame is not frame.f_back.f_back + ) + ): + can_skip = True + + elif step_cmd == CMD_STEP_INTO_MY_CODE: + if py_db.apply_files_filter( + frame, frame.f_code.co_filename, True + ) and ( + frame.f_back is None + or py_db.apply_files_filter( + frame.f_back, frame.f_back.f_code.co_filename, True + ) + ): + can_skip = True + + elif step_cmd == CMD_STEP_INTO_COROUTINE: + f = frame + while f is not None: + if self._is_same_frame(stop_frame, f): + break + f = f.f_back + else: + can_skip = True + + if can_skip: + if plugin_manager is not None and ( + py_db.has_plugin_line_breaks + or py_db.has_plugin_exception_breaks + ): + can_skip = plugin_manager.can_skip(py_db, frame) + + if ( + can_skip + and py_db.show_return_values + and info.pydev_step_cmd + in (CMD_STEP_OVER, CMD_STEP_OVER_MY_CODE) + and self._is_same_frame(stop_frame, frame.f_back) + ): + # trace function for showing return values after step over + can_skip = False + + # Let's check to see if we are in a function that has a breakpoint. If we don't have a breakpoint, + # we will return nothing for the next trace + # also, after we hit a breakpoint and go to some other debugging state, we have to force the set trace anyway, + # so, that's why the additional checks are there. + + if function_breakpoint_on_call_event: + pass # Do nothing here (just keep on going as we can't skip it). + + elif not breakpoints_for_file: + if can_skip: + if has_exception_breakpoints: + return self.trace_exception + else: + return None if is_call else NO_FTRACE + + else: + # When cached, 0 means we don't have a breakpoint and 1 means we have. + if can_skip: + breakpoints_in_line_cache = frame_skips_cache.get( + line_cache_key, -1 + ) + if breakpoints_in_line_cache == 0: + return self.trace_dispatch + + breakpoints_in_frame_cache = frame_skips_cache.get( + frame_cache_key, -1 + ) + if breakpoints_in_frame_cache != -1: + # Gotten from cache. + has_breakpoint_in_frame = breakpoints_in_frame_cache == 1 + + else: + has_breakpoint_in_frame = False + + try: + func_lines = set() + for offset_and_lineno in dis.findlinestarts(frame.f_code): + func_lines.add(offset_and_lineno[1]) + except: + # This is a fallback for implementations where we can't get the function + # lines -- i.e.: jython (in this case clients need to provide the function + # name to decide on the skip or we won't be able to skip the function + # completely). + + # Checks the breakpoint to see if there is a context match in some function. + curr_func_name = frame.f_code.co_name + + # global context is set with an empty name + if curr_func_name in ("?", "", ""): + curr_func_name = "" + + for bp in breakpoints_for_file.values(): + # will match either global or some function + if bp.func_name in ("None", curr_func_name): + has_breakpoint_in_frame = True + break + else: + for bp_line in breakpoints_for_file: # iterate on keys + if bp_line in func_lines: + has_breakpoint_in_frame = True + break + + # Cache the value (1 or 0 or -1 for default because of cython). + if has_breakpoint_in_frame: + frame_skips_cache[frame_cache_key] = 1 + else: + frame_skips_cache[frame_cache_key] = 0 + + if can_skip and not has_breakpoint_in_frame: + if has_exception_breakpoints: + return self.trace_exception + else: + return None if is_call else NO_FTRACE + + # We may have hit a breakpoint or we are already in step mode. Either way, let's check what we should do in this frame + # if DEBUG: print('NOT skipped: %s %s %s %s' % (frame.f_lineno, frame.f_code.co_name, event, frame.__class__.__name__)) + + try: + stop_on_plugin_breakpoint = False + # return is not taken into account for breakpoint hit because we'd have a double-hit in this case + # (one for the line and the other for the return). + + stop_info = {} + breakpoint = None + stop = False + stop_reason = CMD_SET_BREAK + bp_type = None + + if function_breakpoint_on_call_event: + breakpoint = function_breakpoint_on_call_event + stop = True + new_frame = frame + stop_reason = CMD_SET_FUNCTION_BREAK + + elif ( + is_line + and info.pydev_state != STATE_SUSPEND + and breakpoints_for_file is not None + and line in breakpoints_for_file + ): + breakpoint = breakpoints_for_file[line] + new_frame = frame + stop = True + + elif plugin_manager is not None and py_db.has_plugin_line_breaks: + result = plugin_manager.get_breakpoint( + py_db, frame, event, self._args[2] + ) + if result: + stop_on_plugin_breakpoint = True + breakpoint, new_frame, bp_type = result + + if breakpoint: + # ok, hit breakpoint, now, we have to discover if it is a conditional breakpoint + # lets do the conditional stuff here + if breakpoint.expression is not None: + py_db.handle_breakpoint_expression(breakpoint, info, new_frame) + + if stop or stop_on_plugin_breakpoint: + eval_result = False + if breakpoint.has_condition: + eval_result = py_db.handle_breakpoint_condition( + info, breakpoint, new_frame + ) + if not eval_result: + stop = False + stop_on_plugin_breakpoint = False + + if is_call and ( + frame.f_code.co_name in ("", "") + or (line == 1 and frame.f_code.co_name.startswith(" may be executed having each line compiled as a new + # module, so it's the same case as . + + return self.trace_dispatch + + # Handle logpoint (on a logpoint we should never stop). + if (stop or stop_on_plugin_breakpoint) and breakpoint.is_logpoint: + stop = False + stop_on_plugin_breakpoint = False + + if ( + info.pydev_message is not None + and len(info.pydev_message) > 0 + ): + cmd = py_db.cmd_factory.make_io_message( + info.pydev_message + os.linesep, "1" + ) + py_db.writer.add_command(cmd) + + if py_db.show_return_values: + if is_return and ( + ( + info.pydev_step_cmd + in ( + CMD_STEP_OVER, + CMD_STEP_OVER_MY_CODE, + CMD_SMART_STEP_INTO, + ) + and (self._is_same_frame(stop_frame, frame.f_back)) + ) + or ( + info.pydev_step_cmd + in (CMD_STEP_RETURN, CMD_STEP_RETURN_MY_CODE) + and (self._is_same_frame(stop_frame, frame)) + ) + or ( + info.pydev_step_cmd + in (CMD_STEP_INTO, CMD_STEP_INTO_COROUTINE) + ) + or ( + info.pydev_step_cmd == CMD_STEP_INTO_MY_CODE + and frame.f_back is not None + and not py_db.apply_files_filter( + frame.f_back, frame.f_back.f_code.co_filename, True + ) + ) + ): + self._show_return_values(frame, arg) + + elif py_db.remove_return_values_flag: + try: + self._remove_return_values(py_db, frame) + finally: + py_db.remove_return_values_flag = False + + if stop: + self.set_suspend( + thread, + stop_reason, + suspend_other_threads=breakpoint + and breakpoint.suspend_policy == "ALL", + ) + + elif stop_on_plugin_breakpoint and plugin_manager is not None: + result = plugin_manager.suspend(py_db, thread, frame, bp_type) + if result: + frame = result + + # if thread has a suspend flag, we suspend with a busy wait + if info.pydev_state == STATE_SUSPEND: + self.do_wait_suspend(thread, frame, event, arg) + return self.trace_dispatch + else: + if not breakpoint and is_line: + # No stop from anyone and no breakpoint found in line (cache that). + frame_skips_cache[line_cache_key] = 0 + + except: + # Unfortunately Python itself stops the tracing when it originates from + # the tracing function, so, we can't do much about it (just let the user know). + exc = sys.exc_info()[0] + cmd = py_db.cmd_factory.make_console_message( + "%s raised from within the callback set in sys.settrace.\nDebugging will be disabled for this thread (%s).\n" + % ( + exc, + thread, + ) + ) + py_db.writer.add_command(cmd) + if not issubclass(exc, (KeyboardInterrupt, SystemExit)): + pydev_log.exception() + + raise + + # step handling. We stop when we hit the right frame + try: + should_skip = 0 + if pydevd_dont_trace.should_trace_hook is not None: + if self.should_skip == -1: + # I.e.: cache the result on self.should_skip (no need to evaluate the same frame multiple times). + # Note that on a code reload, we won't re-evaluate this because in practice, the frame.f_code + # Which will be handled by this frame is read-only, so, we can cache it safely. + if not pydevd_dont_trace.should_trace_hook( + frame.f_code, abs_path_canonical_path_and_base[0] + ): + # -1, 0, 1 to be Cython-friendly + should_skip = self.should_skip = 1 + else: + should_skip = self.should_skip = 0 + else: + should_skip = self.should_skip + + plugin_stop = False + if should_skip: + stop = False + + elif step_cmd in ( + CMD_STEP_INTO, + CMD_STEP_INTO_MY_CODE, + CMD_STEP_INTO_COROUTINE, + ): + force_check_project_scope = step_cmd == CMD_STEP_INTO_MY_CODE + if is_line: + if not info.pydev_use_scoped_step_frame: + if ( + force_check_project_scope + or py_db.is_files_filter_enabled + ): + stop = not py_db.apply_files_filter( + frame, + frame.f_code.co_filename, + force_check_project_scope, + ) + else: + stop = True + else: + if ( + force_check_project_scope + or py_db.is_files_filter_enabled + ): + # Make sure we check the filtering inside ipython calls too... + if not not py_db.apply_files_filter( + frame, + frame.f_code.co_filename, + force_check_project_scope, + ): + return None if is_call else NO_FTRACE + + # We can only stop inside the ipython call. + filename = frame.f_code.co_filename + if filename.endswith(".pyc"): + filename = filename[:-1] + + if not filename.endswith(PYDEVD_IPYTHON_CONTEXT[0]): + f = frame.f_back + while f is not None: + if f.f_code.co_name == PYDEVD_IPYTHON_CONTEXT[1]: + f2 = f.f_back + if ( + f2 is not None + and f2.f_code.co_name + == PYDEVD_IPYTHON_CONTEXT[2] + ): + pydev_log.debug("Stop inside ipython call") + stop = True + break + f = f.f_back + + del f + + if not stop: + # In scoped mode if step in didn't work in this context it won't work + # afterwards anyways. + return None if is_call else NO_FTRACE + + elif ( + is_return + and frame.f_back is not None + and not info.pydev_use_scoped_step_frame + ): + if py_db.get_file_type(frame.f_back) == py_db.PYDEV_FILE: + stop = False + else: + if ( + force_check_project_scope + or py_db.is_files_filter_enabled + ): + stop = not py_db.apply_files_filter( + frame.f_back, + frame.f_back.f_code.co_filename, + force_check_project_scope, + ) + if stop: + # Prevent stopping in a return to the same location we were initially + # (i.e.: double-stop at the same place due to some filtering). + if info.step_in_initial_location == ( + frame.f_back, + frame.f_back.f_lineno, + ): + stop = False + else: + stop = True + else: + stop = False + + if stop: + if step_cmd == CMD_STEP_INTO_COROUTINE: + # i.e.: Check if we're stepping into the proper context. + f = frame + while f is not None: + if self._is_same_frame(stop_frame, f): + break + f = f.f_back + else: + stop = False + + if plugin_manager is not None: + result = plugin_manager.cmd_step_into( + py_db, + frame, + event, + self._args[2], + self._args[3], + stop_info, + stop, + ) + if result: + stop, plugin_stop = result + + elif step_cmd in (CMD_STEP_OVER, CMD_STEP_OVER_MY_CODE): + # Note: when dealing with a step over my code it's the same as a step over (the + # difference is that when we return from a frame in one we go to regular step + # into and in the other we go to a step into my code). + stop = self._is_same_frame(stop_frame, frame) and is_line + # Note: don't stop on a return for step over, only for line events + # i.e.: don't stop in: (stop_frame is frame.f_back and is_return) as we'd stop twice in that line. + + if plugin_manager is not None: + result = plugin_manager.cmd_step_over( + py_db, + frame, + event, + self._args[2], + self._args[3], + stop_info, + stop, + ) + if result: + stop, plugin_stop = result + + elif step_cmd == CMD_SMART_STEP_INTO: + stop = False + back = frame.f_back + if self._is_same_frame(stop_frame, frame) and is_return: + # We're exiting the smart step into initial frame (so, we probably didn't find our target). + stop = True + + elif self._is_same_frame(stop_frame, back) and is_line: + if info.pydev_smart_child_offset != -1: + # i.e.: in this case, we're not interested in the pause in the parent, rather + # we're interested in the pause in the child (when the parent is at the proper place). + stop = False + + else: + pydev_smart_parent_offset = info.pydev_smart_parent_offset + + pydev_smart_step_into_variants = ( + info.pydev_smart_step_into_variants + ) + if ( + pydev_smart_parent_offset >= 0 + and pydev_smart_step_into_variants + ): + # Preferred mode (when the smart step into variants are available + # and the offset is set). + stop = get_smart_step_into_variant_from_frame_offset( + back.f_lasti, pydev_smart_step_into_variants + ) is get_smart_step_into_variant_from_frame_offset( + pydev_smart_parent_offset, + pydev_smart_step_into_variants, + ) + + else: + # Only the name/line is available, so, check that. + curr_func_name = frame.f_code.co_name + + # global context is set with an empty name + if ( + curr_func_name in ("?", "") + or curr_func_name is None + ): + curr_func_name = "" + if ( + curr_func_name == info.pydev_func_name + and stop_frame.f_lineno == info.pydev_next_line + ): + stop = True + + if not stop: + # In smart step into, if we didn't hit it in this frame once, that'll + # not be the case next time either, so, disable tracing for this frame. + return None if is_call else NO_FTRACE + + elif ( + back is not None + and self._is_same_frame(stop_frame, back.f_back) + and is_line + ): + # Ok, we have to track 2 stops at this point, the parent and the child offset. + # This happens when handling a step into which targets a function inside a list comprehension + # or generator (in which case an intermediary frame is created due to an internal function call). + pydev_smart_parent_offset = info.pydev_smart_parent_offset + pydev_smart_child_offset = info.pydev_smart_child_offset + # print('matched back frame', pydev_smart_parent_offset, pydev_smart_child_offset) + # print('parent f_lasti', back.f_back.f_lasti) + # print('child f_lasti', back.f_lasti) + stop = False + if ( + pydev_smart_child_offset >= 0 + and pydev_smart_child_offset >= 0 + ): + pydev_smart_step_into_variants = ( + info.pydev_smart_step_into_variants + ) + + if ( + pydev_smart_parent_offset >= 0 + and pydev_smart_step_into_variants + ): + # Note that we don't really check the parent offset, only the offset of + # the child (because this is a generator, the parent may have moved forward + # already -- and that's ok, so, we just check that the parent frame + # matches in this case). + smart_step_into_variant = ( + get_smart_step_into_variant_from_frame_offset( + pydev_smart_parent_offset, + pydev_smart_step_into_variants, + ) + ) + # print('matched parent offset', pydev_smart_parent_offset) + # Ok, now, check the child variant + children_variants = ( + smart_step_into_variant.children_variants + ) + stop = children_variants and ( + get_smart_step_into_variant_from_frame_offset( + back.f_lasti, children_variants + ) + is get_smart_step_into_variant_from_frame_offset( + pydev_smart_child_offset, children_variants + ) + ) + # print('stop at child', stop) + + if not stop: + # In smart step into, if we didn't hit it in this frame once, that'll + # not be the case next time either, so, disable tracing for this frame. + return None if is_call else NO_FTRACE + + elif step_cmd in (CMD_STEP_RETURN, CMD_STEP_RETURN_MY_CODE): + stop = is_return and self._is_same_frame(stop_frame, frame) + + else: + stop = False + + if stop and step_cmd != -1 and is_return and hasattr(frame, "f_back"): + f_code = getattr(frame.f_back, "f_code", None) + if f_code is not None: + if py_db.get_file_type(frame.f_back) == py_db.PYDEV_FILE: + stop = False + + if plugin_stop: + plugin_manager.stop( + py_db, frame, event, self._args[3], stop_info, arg, step_cmd + ) + elif stop: + if is_line: + self.set_suspend( + thread, + step_cmd, + original_step_cmd=info.pydev_original_step_cmd, + ) + self.do_wait_suspend(thread, frame, event, arg) + elif is_return: # return event + back = frame.f_back + if back is not None: + # When we get to the pydevd run function, the debugging has actually finished for the main thread + # (note that it can still go on for other threads, but for this one, we just make it finish) + # So, just setting it to None should be OK + ( + back_absolute_filename, + _, + base, + ) = get_abs_path_real_path_and_base_from_frame(back) + if (base, back.f_code.co_name) in ( + DEBUG_START, + DEBUG_START_PY3K, + ): + back = None + + elif base == TRACE_PROPERTY: + # We dont want to trace the return event of pydevd_traceproperty (custom property for debugging) + # if we're in a return, we want it to appear to the user in the previous frame! + return None if is_call else NO_FTRACE + + elif pydevd_dont_trace.should_trace_hook is not None: + if not pydevd_dont_trace.should_trace_hook( + back.f_code, back_absolute_filename + ): + # In this case, we'll have to skip the previous one because it shouldn't be traced. + # Also, we have to reset the tracing, because if the parent's parent (or some + # other parent) has to be traced and it's not currently, we wouldn't stop where + # we should anymore (so, a step in/over/return may not stop anywhere if no parent is traced). + # Related test: _debugger_case17a.py + py_db.set_trace_for_frame_and_parents( + thread.ident, back + ) + return None if is_call else NO_FTRACE + + if back is not None: + # if we're in a return, we want it to appear to the user in the previous frame! + self.set_suspend( + thread, + step_cmd, + original_step_cmd=info.pydev_original_step_cmd, + ) + self.do_wait_suspend(thread, back, event, arg) + else: + # in jython we may not have a back frame + info.pydev_step_stop = None + info.pydev_original_step_cmd = -1 + info.pydev_step_cmd = -1 + info.pydev_state = STATE_RUN + info.update_stepping_info() + + # if we are quitting, let's stop the tracing + if py_db.quitting: + return None if is_call else NO_FTRACE + + return self.trace_dispatch + except: + # Unfortunately Python itself stops the tracing when it originates from + # the tracing function, so, we can't do much about it (just let the user know). + exc = sys.exc_info()[0] + cmd = py_db.cmd_factory.make_console_message( + "%s raised from within the callback set in sys.settrace.\nDebugging will be disabled for this thread (%s).\n" + % ( + exc, + thread, + ) + ) + py_db.writer.add_command(cmd) + if not issubclass(exc, (KeyboardInterrupt, SystemExit)): + pydev_log.exception() + raise + + finally: + info.is_tracing -= 1 + + # end trace_dispatch + + +# IFDEF CYTHON +# def should_stop_on_exception(py_db, PyDBAdditionalThreadInfo info, frame, thread, arg, prev_user_uncaught_exc_info, is_unwind=False): +# cdef bint should_stop; +# cdef bint was_just_raised; +# cdef list check_excs; +# ELSE +def should_stop_on_exception( + py_db, info, frame, thread, arg, prev_user_uncaught_exc_info, is_unwind=False +): + # ENDIF + + should_stop = False + maybe_user_uncaught_exc_info = prev_user_uncaught_exc_info + + # STATE_SUSPEND = 2 + if info.pydev_state != 2: # and breakpoint is not None: + exception, value, trace = arg + + if trace is not None and hasattr(trace, "tb_next"): + # on jython trace is None on the first event and it may not have a tb_next. + + should_stop = False + exception_breakpoint = None + try: + if py_db.plugin is not None: + result = py_db.plugin.exception_break( + py_db, frame, thread, arg, is_unwind + ) + if result: + should_stop, frame = result + except: + pydev_log.exception() + + if not should_stop: + # Apply checks that don't need the exception breakpoint (where we shouldn't ever stop). + if exception == SystemExit and py_db.ignore_system_exit_code(value): + pass + + elif exception in (GeneratorExit, StopIteration, StopAsyncIteration): + # These exceptions are control-flow related (they work as a generator + # pause), so, we shouldn't stop on them. + pass + + elif ignore_exception_trace(trace): + pass + + else: + was_just_raised = trace.tb_next is None + + # It was not handled by any plugin, lets check exception breakpoints. + check_excs = [] + + # Note: check user unhandled before regular exceptions. + exc_break_user = py_db.get_exception_breakpoint( + exception, py_db.break_on_user_uncaught_exceptions + ) + if exc_break_user is not None: + check_excs.append((exc_break_user, True)) + + exc_break_caught = py_db.get_exception_breakpoint( + exception, py_db.break_on_caught_exceptions + ) + if exc_break_caught is not None: + check_excs.append((exc_break_caught, False)) + + for exc_break, is_user_uncaught in check_excs: + # Initially mark that it should stop and then go into exclusions. + should_stop = True + + if py_db.exclude_exception_by_filter(exc_break, trace): + pydev_log.debug( + "Ignore exception %s in library %s -- (%s)" + % ( + exception, + frame.f_code.co_filename, + frame.f_code.co_name, + ) + ) + should_stop = False + + elif ( + exc_break.condition is not None + and not py_db.handle_breakpoint_condition( + info, exc_break, frame + ) + ): + should_stop = False + + elif is_user_uncaught: + # Note: we don't stop here, we just collect the exc_info to use later on... + should_stop = False + if not py_db.apply_files_filter( + frame, frame.f_code.co_filename, True + ) and ( + frame.f_back is None + or py_db.apply_files_filter( + frame.f_back, frame.f_back.f_code.co_filename, True + ) + ): + # User uncaught means that we're currently in user code but the code + # up the stack is library code. + exc_info = prev_user_uncaught_exc_info + if not exc_info: + exc_info = ( + arg, + frame.f_lineno, + set([frame.f_lineno]), + ) + else: + lines = exc_info[2] + lines.add(frame.f_lineno) + exc_info = (arg, frame.f_lineno, lines) + maybe_user_uncaught_exc_info = exc_info + else: + # I.e.: these are only checked if we're not dealing with user uncaught exceptions. + if ( + exc_break.notify_on_first_raise_only + and py_db.skip_on_exceptions_thrown_in_same_context + and not was_just_raised + and not just_raised(trace.tb_next) + ): + # In this case we never stop if it was just raised, so, to know if it was the first we + # need to check if we're in the 2nd method. + should_stop = False # I.e.: we stop only when we're at the caller of a method that throws an exception + + elif ( + exc_break.notify_on_first_raise_only + and not py_db.skip_on_exceptions_thrown_in_same_context + and not was_just_raised + ): + should_stop = ( + False # I.e.: we stop only when it was just raised + ) + + elif ( + was_just_raised + and py_db.skip_on_exceptions_thrown_in_same_context + ): + # Option: Don't break if an exception is caught in the same function from which it is thrown + should_stop = False + + if should_stop: + exception_breakpoint = exc_break + try: + info.pydev_message = exc_break.qname + except: + info.pydev_message = exc_break.qname.encode("utf-8") + break + + if should_stop: + # Always add exception to frame (must remove later after we proceed). + add_exception_to_frame(frame, (exception, value, trace)) + + if ( + exception_breakpoint is not None + and exception_breakpoint.expression is not None + ): + py_db.handle_breakpoint_expression( + exception_breakpoint, info, frame + ) + + return should_stop, frame, maybe_user_uncaught_exc_info + + +# Same thing in the main debugger but only considering the file contents, while the one in the main debugger +# considers the user input (so, the actual result must be a join of both). +filename_to_lines_where_exceptions_are_ignored: dict = {} +filename_to_stat_info: dict = {} + + +# IFDEF CYTHON +# def handle_exception(py_db, thread, frame, arg, str exception_type): +# cdef bint stopped; +# cdef tuple abs_real_path_and_base; +# cdef str absolute_filename; +# cdef str canonical_normalized_filename; +# cdef dict lines_ignored; +# cdef dict frame_id_to_frame; +# cdef dict merged; +# cdef object trace_obj; +# ELSE +def handle_exception(py_db, thread, frame, arg, exception_type): + # ENDIF + stopped = False + try: + # print('handle_exception', frame.f_lineno, frame.f_code.co_name) + + # We have 3 things in arg: exception type, description, traceback object + trace_obj = arg[2] + + initial_trace_obj = trace_obj + if trace_obj.tb_next is None and trace_obj.tb_frame is frame: + # I.e.: tb_next should be only None in the context it was thrown (trace_obj.tb_frame is frame is just a double check). + pass + else: + # Get the trace_obj from where the exception was raised... + while trace_obj.tb_next is not None: + trace_obj = trace_obj.tb_next + + if py_db.ignore_exceptions_thrown_in_lines_with_ignore_exception: + for check_trace_obj in (initial_trace_obj, trace_obj): + abs_real_path_and_base = get_abs_path_real_path_and_base_from_frame( + check_trace_obj.tb_frame + ) + absolute_filename = abs_real_path_and_base[0] + canonical_normalized_filename = abs_real_path_and_base[1] + + lines_ignored = filename_to_lines_where_exceptions_are_ignored.get( + canonical_normalized_filename + ) + if lines_ignored is None: + lines_ignored = filename_to_lines_where_exceptions_are_ignored[ + canonical_normalized_filename + ] = {} + + try: + curr_stat = os.stat(absolute_filename) + curr_stat = (curr_stat.st_size, curr_stat.st_mtime) + except: + curr_stat = None + + last_stat = filename_to_stat_info.get(absolute_filename) + if last_stat != curr_stat: + filename_to_stat_info[absolute_filename] = curr_stat + lines_ignored.clear() + try: + linecache.checkcache(absolute_filename) + except: + pydev_log.exception( + "Error in linecache.checkcache(%r)", absolute_filename + ) + + from_user_input = ( + py_db.filename_to_lines_where_exceptions_are_ignored.get( + canonical_normalized_filename + ) + ) + if from_user_input: + merged = {} + merged.update(lines_ignored) + # Override what we have with the related entries that the user entered + merged.update(from_user_input) + else: + merged = lines_ignored + + exc_lineno = check_trace_obj.tb_lineno + + # print ('lines ignored', lines_ignored) + # print ('user input', from_user_input) + # print ('merged', merged, 'curr', exc_lineno) + + if ( + exc_lineno not in merged + ): # Note: check on merged but update lines_ignored. + try: + line = linecache.getline( + absolute_filename, + exc_lineno, + check_trace_obj.tb_frame.f_globals, + ) + except: + pydev_log.exception( + "Error in linecache.getline(%r, %s, f_globals)", + absolute_filename, + exc_lineno, + ) + line = "" + + if IGNORE_EXCEPTION_TAG.match(line) is not None: + lines_ignored[exc_lineno] = 1 + return False + else: + # Put in the cache saying not to ignore + lines_ignored[exc_lineno] = 0 + else: + # Ok, dict has it already cached, so, let's check it... + if merged.get(exc_lineno, 0): + return False + + try: + frame_id_to_frame = {} + frame_id_to_frame[id(frame)] = frame + f = trace_obj.tb_frame + while f is not None: + frame_id_to_frame[id(f)] = f + f = f.f_back + f = None + + stopped = True + py_db.send_caught_exception_stack(thread, arg, id(frame)) + try: + py_db.set_suspend(thread, CMD_STEP_CAUGHT_EXCEPTION) + py_db.do_wait_suspend( + thread, frame, "exception", arg, exception_type=exception_type + ) + finally: + py_db.send_caught_exception_stack_proceeded(thread) + except: + pydev_log.exception() + + py_db.set_trace_for_frame_and_parents(thread.ident, frame) + finally: + # Make sure the user cannot see the '__exception__' we added after we leave the suspend state. + remove_exception_from_frame(frame) + # Clear some local variables... + frame = None + trace_obj = None + initial_trace_obj = None + check_trace_obj = None + f = None + frame_id_to_frame = None + py_db = None + thread = None + + return stopped diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame_utils.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame_utils.py new file mode 100644 index 000000000..ea5e89459 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame_utils.py @@ -0,0 +1,496 @@ +import itertools +from os.path import basename, splitext +from typing import Any, Dict + +from _pydev_bundle import pydev_log + +from _pydevd_bundle.pydevd_constants import ( + EXCEPTION_TYPE_UNHANDLED, + EXCEPTION_TYPE_USER_UNHANDLED, + IS_PY311_OR_GREATER, + IS_PY313_0, +) + + +class Frame: + def __init__( + self, f_back, f_fileno, f_code, f_locals, f_globals=None, f_trace=None + ): + self.f_back = f_back + self.f_lineno = f_fileno + self.f_code = f_code + self.f_locals = f_locals + self.f_globals = f_globals + self.f_trace = f_trace + + if self.f_globals is None: + self.f_globals = {} + + +class FCode: + def __init__(self, name, filename): + self.co_name = name + self.co_filename = filename + self.co_firstlineno = 1 + self.co_flags = 0 + + def co_lines(self): + return () + + +def add_exception_to_frame(frame, exception_info): + frame.f_locals["__exception__"] = exception_info + + +def remove_exception_from_frame(frame): + if IS_PY313_0: + # In 3.13.0 frame.f_locals became a proxy for a dict, It does not + # have methods to allow items to be removed, only added. So just set the item to None. + # Should be fixed in 3.13.1 in PR: https://github.com/python/cpython/pull/125616 + frame.f_locals["__exception__"] = None + else: + frame.f_locals.pop("__exception__", None) + + +FILES_WITH_IMPORT_HOOKS = ["pydev_monkey_qt.py", "pydev_import_hook.py"] + + +def just_raised(trace): + if trace is None: + return False + + return trace.tb_next is None + + +def short_tb(exc_tb): + traceback = [] + while exc_tb: + traceback.append( + "{%r, %r, %r}" + % ( + exc_tb.tb_frame.f_code.co_filename, + exc_tb.tb_frame.f_code.co_name, + exc_tb.tb_lineno, + ) + ) + exc_tb = exc_tb.tb_next + return "Traceback: %s\n" % (" -> ".join(traceback)) + + +def short_frame(frame): + if frame is None: + return "None" + + filename = frame.f_code.co_filename + name = splitext(basename(filename))[0] + line = hasattr(frame, "f_lineno") and frame.f_lineno or 1 + return "%s::%s %s" % (name, frame.f_code.co_name, line) + + +def short_stack(frame): + stack = [] + while frame: + stack.append(short_frame(frame)) + frame = frame.f_back if hasattr(frame, "f_back") else None + return "Stack: %s\n" % (" -> ".join(stack)) + + +def ignore_exception_trace(trace): + while trace is not None: + filename = trace.tb_frame.f_code.co_filename + if filename in ( + "", + "", + ): + # Do not stop on inner exceptions in py3 while importing + return True + + # ImportError should appear in a user's code, not inside debugger + for file in FILES_WITH_IMPORT_HOOKS: + if filename.endswith(file): + return True + + trace = trace.tb_next + + return False + + +def cached_call(obj, func, *args): + cached_name = "_cached_" + func.__name__ + if not hasattr(obj, cached_name): + setattr(obj, cached_name, func(*args)) + + return getattr(obj, cached_name) + + +class _LineColInfo: + def __init__(self, lineno, end_lineno, colno, end_colno): + self.lineno = lineno + self.end_lineno = end_lineno + self.colno = colno + self.end_colno = end_colno + + def map_columns_to_line(self, original_line: str): + """ + The columns internally are actually based on bytes. + + Also, the position isn't always the ideal one as the start may not be + what we want (if the user has many subscripts in the line the start + will always be the same and only the end would change). + For more details see: + https://github.com/microsoft/debugpy/issues/1099#issuecomment-1303403995 + + So, this function maps the start/end columns to the position to be shown in the editor. + """ + colno = _utf8_byte_offset_to_character_offset(original_line, self.colno) + end_colno = _utf8_byte_offset_to_character_offset(original_line, self.end_colno) + + if self.lineno == self.end_lineno: + try: + ret = _extract_caret_anchors_in_bytes_from_line_segment( + original_line[colno:end_colno] + ) + if ret is not None: + return ( + _utf8_byte_offset_to_character_offset( + original_line, ret[0] + self.colno + ), + _utf8_byte_offset_to_character_offset( + original_line, ret[1] + self.colno + ), + ) + except Exception: + pass # Suppress exception + + return colno, end_colno + + +_utf8_with_2_bytes = 0x80 +_utf8_with_3_bytes = 0x800 +_utf8_with_4_bytes = 0x10000 + + +def _utf8_byte_offset_to_character_offset(s: str, offset: int): + byte_offset = 0 + char_offset = 0 + offset = offset or 0 + + for char_offset, character in enumerate(s): + byte_offset += 1 + + codepoint = ord(character) + + if codepoint >= _utf8_with_4_bytes: + byte_offset += 3 + + elif codepoint >= _utf8_with_3_bytes: + byte_offset += 2 + + elif codepoint >= _utf8_with_2_bytes: + byte_offset += 1 + + if byte_offset > offset: + break + else: + char_offset += 1 + + return char_offset + + +# Based on traceback._extract_caret_anchors_in_bytes_from_line_segment (Python 3.11.0) +def _extract_caret_anchors_in_bytes_from_line_segment(segment: str): + import ast + + try: + segment = segment.encode("utf-8") + except UnicodeEncodeError: + return None + try: + tree = ast.parse(segment) + except SyntaxError: + return None + + if len(tree.body) != 1: + return None + + statement = tree.body[0] + if isinstance(statement, ast.Expr): + expr = statement.value + if isinstance(expr, ast.BinOp): + operator_str = segment[expr.left.end_col_offset : expr.right.col_offset] + operator_offset = len(operator_str) - len(operator_str.lstrip()) + + left_anchor = expr.left.end_col_offset + operator_offset + right_anchor = left_anchor + 1 + if operator_offset + 1 < len(operator_str) and not operator_str[ + operator_offset + 1 + ] == ord(b" "): + right_anchor += 1 + return left_anchor, right_anchor + if isinstance(expr, ast.Subscript): + return expr.value.end_col_offset, expr.slice.end_col_offset + 1 + + return None + + +class FramesList: + def __init__(self): + self._frames = [] + + # If available, the line number for the frame will be gotten from this dict, + # otherwise frame.f_lineno will be used (needed for unhandled exceptions as + # the place where we report may be different from the place where it's raised). + self.frame_id_to_lineno = {} + self.frame_id_to_line_col_info: Dict[Any, _LineColInfo] = {} + + self.exc_type = None + self.exc_desc = None + self.trace_obj = None + + # This may be set to set the current frame (for the case where we have + # an unhandled exception where we want to show the root bu we have a different + # executing frame). + self.current_frame = None + + # This is to know whether an exception was extracted from a __cause__ or __context__. + self.exc_context_msg = "" + + self.chained_frames_list = None + + def append(self, frame): + self._frames.append(frame) + + def last_frame(self): + return self._frames[-1] + + def __len__(self): + return len(self._frames) + + def __iter__(self): + return iter(self._frames) + + def __repr__(self): + lst = ["FramesList("] + + lst.append("\n exc_type: ") + lst.append(str(self.exc_type)) + + lst.append("\n exc_desc: ") + lst.append(str(self.exc_desc)) + + lst.append("\n trace_obj: ") + lst.append(str(self.trace_obj)) + + lst.append("\n current_frame: ") + lst.append(str(self.current_frame)) + + for frame in self._frames: + lst.append("\n ") + lst.append(repr(frame)) + lst.append(",") + + if self.chained_frames_list is not None: + lst.append("\n--- Chained ---\n") + lst.append(str(self.chained_frames_list)) + + lst.append("\n)") + + return "".join(lst) + + __str__ = __repr__ + + +class _DummyFrameWrapper: + def __init__(self, frame, f_lineno, f_back): + self._base_frame = frame + self.f_lineno = f_lineno + self.f_back = f_back + self.f_trace = None + original_code = frame.f_code + name = original_code.co_name + self.f_code = FCode(name, original_code.co_filename) + + @property + def f_locals(self): + return self._base_frame.f_locals + + @property + def f_globals(self): + return self._base_frame.f_globals + + def __str__(self): + return "<_DummyFrameWrapper, file '%s', line %s, %s" % ( + self.f_code.co_filename, + self.f_lineno, + self.f_code.co_name, + ) + + __repr__ = __str__ + + +_cause_message = ( + "\nThe above exception was the direct cause " "of the following exception:\n\n" +) + +_context_message = ( + "\nDuring handling of the above exception, " "another exception occurred:\n\n" +) + + +def create_frames_list_from_exception_cause(trace_obj, frame, exc_type, exc_desc, memo): + lst = [] + msg = "" + try: + exc_cause = getattr(exc_desc, "__cause__", None) + msg = _cause_message + except Exception: + exc_cause = None + + if exc_cause is None: + try: + exc_cause = getattr(exc_desc, "__context__", None) + msg = _context_message + except Exception: + exc_cause = None + + if exc_cause is None or id(exc_cause) in memo: + return None + + # The traceback module does this, so, let's play safe here too... + memo.add(id(exc_cause)) + + tb = exc_cause.__traceback__ + frames_list = FramesList() + frames_list.exc_type = type(exc_cause) + frames_list.exc_desc = exc_cause + frames_list.trace_obj = tb + frames_list.exc_context_msg = msg + + while tb is not None: + # Note: we don't use the actual tb.tb_frame because if the cause of the exception + # uses the same frame object, the id(frame) would be the same and the frame_id_to_lineno + # would be wrong as the same frame needs to appear with 2 different lines. + lst.append( + ( + _DummyFrameWrapper(tb.tb_frame, tb.tb_lineno, None), + tb.tb_lineno, + _get_line_col_info_from_tb(tb), + ) + ) + tb = tb.tb_next + + for tb_frame, tb_lineno, line_col_info in lst: + frames_list.append(tb_frame) + frames_list.frame_id_to_lineno[id(tb_frame)] = tb_lineno + frames_list.frame_id_to_line_col_info[id(tb_frame)] = line_col_info + + return frames_list + + +if IS_PY311_OR_GREATER: + + def _get_code_position(code, instruction_index): + if instruction_index < 0: + return (None, None, None, None) + positions_gen = code.co_positions() + # Note: some or all of the tuple elements can be None... + return next(itertools.islice(positions_gen, instruction_index // 2, None)) + + def _get_line_col_info_from_tb(tb): + positions = _get_code_position(tb.tb_frame.f_code, tb.tb_lasti) + if positions[0] is None: + return _LineColInfo(tb.tb_lineno, *positions[1:]) + else: + return _LineColInfo(*positions) + +else: + + def _get_line_col_info_from_tb(tb): + # Not available on older versions of Python. + return None + + +def create_frames_list_from_traceback( + trace_obj, frame, exc_type, exc_desc, exception_type=None +): + """ + :param trace_obj: + This is the traceback from which the list should be created. + + :param frame: + This is the first frame to be considered (i.e.: topmost frame). If None is passed, all + the frames from the traceback are shown (so, None should be passed for unhandled exceptions). + + :param exception_type: + If this is an unhandled exception or user unhandled exception, we'll not trim the stack to create from the passed + frame, rather, we'll just mark the frame in the frames list. + """ + lst = [] + + tb = trace_obj + if tb is not None and tb.tb_frame is not None: + f = tb.tb_frame.f_back + while f is not None: + lst.insert(0, (f, f.f_lineno, None)) + f = f.f_back + + while tb is not None: + lst.append((tb.tb_frame, tb.tb_lineno, _get_line_col_info_from_tb(tb))) + tb = tb.tb_next + + frames_list = None + + for tb_frame, tb_lineno, line_col_info in reversed(lst): + if frames_list is None and ( + (frame is tb_frame) + or (frame is None) + or (exception_type == EXCEPTION_TYPE_USER_UNHANDLED) + ): + frames_list = FramesList() + + if frames_list is not None: + frames_list.append(tb_frame) + frames_list.frame_id_to_lineno[id(tb_frame)] = tb_lineno + frames_list.frame_id_to_line_col_info[id(tb_frame)] = line_col_info + + if frames_list is None and frame is not None: + # Fallback (shouldn't happen in practice). + pydev_log.info( + "create_frames_list_from_traceback did not find topmost frame in list." + ) + frames_list = create_frames_list_from_frame(frame) + + frames_list.exc_type = exc_type + frames_list.exc_desc = exc_desc + frames_list.trace_obj = trace_obj + + if exception_type == EXCEPTION_TYPE_USER_UNHANDLED: + frames_list.current_frame = frame + elif exception_type == EXCEPTION_TYPE_UNHANDLED: + if len(frames_list) > 0: + frames_list.current_frame = frames_list.last_frame() + + curr = frames_list + memo = set() + memo.add(id(exc_desc)) + + while True: + chained = create_frames_list_from_exception_cause( + None, None, None, curr.exc_desc, memo + ) + if chained is None: + break + else: + curr.chained_frames_list = chained + curr = chained + + return frames_list + + +def create_frames_list_from_frame(frame): + lst = FramesList() + while frame is not None: + lst.append(frame) + frame = frame.f_back + + return lst diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_gevent_integration.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_gevent_integration.py new file mode 100644 index 000000000..6436ed67b --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_gevent_integration.py @@ -0,0 +1,120 @@ +import gevent +import greenlet +import pydevd_tracing +from _pydev_bundle import pydev_log +from pydevd_file_utils import basename + +from _pydevd_bundle.pydevd_constants import ( + GEVENT_SHOW_PAUSED_GREENLETS, + get_global_debugger, + thread_get_ident, +) +from _pydevd_bundle.pydevd_custom_frames import ( + add_custom_frame, + remove_custom_frame, + update_custom_frame, +) + +_saved_greenlets_to_custom_frame_thread_id = {} + +if GEVENT_SHOW_PAUSED_GREENLETS: + + def _get_paused_name(py_db, g): + frame = g.gr_frame + use_frame = frame + + # i.e.: Show in the description of the greenlet the last user-code found. + while use_frame is not None: + if py_db.apply_files_filter(use_frame, use_frame.f_code.co_filename, True): + frame = use_frame + use_frame = use_frame.f_back + else: + break + + if use_frame is None: + use_frame = frame + + return "%s: %s - %s" % ( + type(g).__name__, + use_frame.f_code.co_name, + basename(use_frame.f_code.co_filename), + ) + + def greenlet_events(event, args): + if event in ("switch", "throw"): + py_db = get_global_debugger() + origin, target = args + + if not origin.dead and origin.gr_frame is not None: + frame_custom_thread_id = _saved_greenlets_to_custom_frame_thread_id.get( + origin + ) + if frame_custom_thread_id is None: + _saved_greenlets_to_custom_frame_thread_id[ + origin + ] = add_custom_frame( + origin.gr_frame, + _get_paused_name(py_db, origin), + thread_get_ident(), + ) + else: + update_custom_frame( + frame_custom_thread_id, + origin.gr_frame, + _get_paused_name(py_db, origin), + thread_get_ident(), + ) + else: + frame_custom_thread_id = _saved_greenlets_to_custom_frame_thread_id.pop( + origin, None + ) + if frame_custom_thread_id is not None: + remove_custom_frame(frame_custom_thread_id) + + # This one will be resumed, so, remove custom frame from it. + frame_custom_thread_id = _saved_greenlets_to_custom_frame_thread_id.pop( + target, None + ) + if frame_custom_thread_id is not None: + remove_custom_frame(frame_custom_thread_id) + + # The tracing needs to be reapplied for each greenlet as gevent + # clears the tracing set through sys.settrace for each greenlet. + pydevd_tracing.reapply_settrace() + +else: + # i.e.: no logic related to showing paused greenlets is needed. + def greenlet_events(event, args): + pydevd_tracing.reapply_settrace() + + +def enable_gevent_integration(): + # References: + # https://greenlet.readthedocs.io/en/latest/api.html#greenlet.settrace + # https://greenlet.readthedocs.io/en/latest/tracing.html + + # Note: gevent.version_info is WRONG (gevent.__version__ must be used). + try: + if tuple(int(x) for x in gevent.__version__.split(".")[:2]) <= (20, 0): + if not GEVENT_SHOW_PAUSED_GREENLETS: + return + + if not hasattr(greenlet, "settrace"): + # In older versions it was optional. + # We still try to use if available though. + pydev_log.debug( + "greenlet.settrace not available. GEVENT_SHOW_PAUSED_GREENLETS will have no effect." + ) + return + try: + greenlet.settrace(greenlet_events) + except: + pydev_log.exception("Error with greenlet.settrace.") + except: + pydev_log.exception("Error setting up gevent %s.", gevent.__version__) + + +def log_gevent_debug_info(): + pydev_log.debug("Greenlet version: %s", greenlet.__version__) + pydev_log.debug("Gevent version: %s", gevent.__version__) + pydev_log.debug("Gevent install location: %s", gevent.__file__) diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_import_class.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_import_class.py new file mode 100644 index 000000000..a655e4700 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_import_class.py @@ -0,0 +1,70 @@ +# Note: code gotten from _pydev_imports_tipper. + +import sys + + +def _imp(name, log=None): + try: + return __import__(name) + except: + if "." in name: + sub = name[0 : name.rfind(".")] + + if log is not None: + log.add_content("Unable to import", name, "trying with", sub) + log.add_exception() + + return _imp(sub, log) + else: + s = "Unable to import module: %s - sys.path: %s" % (str(name), sys.path) + if log is not None: + log.add_content(s) + log.add_exception() + + raise ImportError(s) + + +IS_IPY = False +if sys.platform == "cli": + IS_IPY = True + _old_imp = _imp + + def _imp(name, log=None): + # We must add a reference in clr for .Net + import clr # @UnresolvedImport + + initial_name = name + while "." in name: + try: + clr.AddReference(name) + break # If it worked, that's OK. + except: + name = name[0 : name.rfind(".")] + else: + try: + clr.AddReference(name) + except: + pass # That's OK (not dot net module). + + return _old_imp(initial_name, log) + + +def import_name(name, log=None): + mod = _imp(name, log) + + components = name.split(".") + + old_comp = None + for comp in components[1:]: + try: + # this happens in the following case: + # we have mx.DateTime.mxDateTime.mxDateTime.pyd + # but after importing it, mx.DateTime.mxDateTime shadows access to mxDateTime.pyd + mod = getattr(mod, comp) + except AttributeError: + if old_comp != comp: + raise + + old_comp = comp + + return mod diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_io.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_io.py new file mode 100644 index 000000000..1f35c97fd --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_io.py @@ -0,0 +1,265 @@ +import os +import sys +from contextlib import contextmanager + +from _pydevd_bundle.pydevd_constants import ForkSafeLock, get_global_debugger + + +class IORedirector: + """ + This class works to wrap a stream (stdout/stderr) with an additional redirect. + """ + + def __init__(self, original, new_redirect, wrap_buffer=False): + """ + :param stream original: + The stream to be wrapped (usually stdout/stderr, but could be None). + + :param stream new_redirect: + Usually IOBuf (below). + + :param bool wrap_buffer: + Whether to create a buffer attribute (needed to mimick python 3 s + tdout/stderr which has a buffer to write binary data). + """ + self._lock = ForkSafeLock(rlock=True) + self._writing = False + self._redirect_to = (original, new_redirect) + if wrap_buffer and hasattr(original, "buffer"): + self.buffer = IORedirector(original.buffer, new_redirect.buffer, False) + + def write(self, s): + # Note that writing to the original stream may fail for some reasons + # (such as trying to write something that's not a string or having it closed). + with self._lock: + if self._writing: + return + self._writing = True + try: + for r in self._redirect_to: + if hasattr(r, "write"): + r.write(s) + finally: + self._writing = False + + def isatty(self): + for r in self._redirect_to: + if hasattr(r, "isatty"): + return r.isatty() + return False + + def flush(self): + for r in self._redirect_to: + if hasattr(r, "flush"): + r.flush() + + def __getattr__(self, name): + for r in self._redirect_to: + if hasattr(r, name): + return getattr(r, name) + raise AttributeError(name) + + +class RedirectToPyDBIoMessages: + def __init__(self, out_ctx, wrap_stream, wrap_buffer, on_write=None): + """ + :param out_ctx: + 1=stdout and 2=stderr + + :param wrap_stream: + Either sys.stdout or sys.stderr. + + :param bool wrap_buffer: + If True the buffer attribute (which wraps writing bytes) should be + wrapped. + + :param callable(str) on_write: + May be a custom callable to be called when to write something. + If not passed the default implementation will create an io message + and send it through the debugger. + """ + encoding = getattr(wrap_stream, "encoding", None) + if not encoding: + encoding = os.environ.get("PYTHONIOENCODING", "utf-8") + self.encoding = encoding + self._out_ctx = out_ctx + if wrap_buffer: + self.buffer = RedirectToPyDBIoMessages( + out_ctx, wrap_stream, wrap_buffer=False, on_write=on_write + ) + self._on_write = on_write + + def get_pydb(self): + # Note: separate method for mocking on tests. + return get_global_debugger() + + def flush(self): + pass # no-op here + + def write(self, s): + if self._on_write is not None: + self._on_write(s) + return + + if s: + # Need s in str + if isinstance(s, bytes): + s = s.decode(self.encoding, errors="replace") + + py_db = self.get_pydb() + if py_db is not None: + # Note that the actual message contents will be a xml with utf-8, although + # the entry is str on py3 and bytes on py2. + cmd = py_db.cmd_factory.make_io_message(s, self._out_ctx) + if py_db.writer is not None: + py_db.writer.add_command(cmd) + + +class IOBuf: + """This class works as a replacement for stdio and stderr. + It is a buffer and when its contents are requested, it will erase what + it has so far so that the next return will not return the same contents again. + """ + + def __init__(self): + self.buflist = [] + import os + + self.encoding = os.environ.get("PYTHONIOENCODING", "utf-8") + + def getvalue(self): + b = self.buflist + self.buflist = [] # clear it + return "".join(b) # bytes on py2, str on py3. + + def write(self, s): + if isinstance(s, bytes): + s = s.decode(self.encoding, errors="replace") + self.buflist.append(s) + + def isatty(self): + return False + + def flush(self): + pass + + def empty(self): + return len(self.buflist) == 0 + + +class _RedirectInfo: + def __init__(self, original, redirect_to): + self.original = original + self.redirect_to = redirect_to + + +class _RedirectionsHolder: + _lock = ForkSafeLock(rlock=True) + _stack_stdout = [] + _stack_stderr = [] + + _pydevd_stdout_redirect_ = None + _pydevd_stderr_redirect_ = None + + +def start_redirect(keep_original_redirection=False, std="stdout", redirect_to=None): + """ + @param std: 'stdout', 'stderr', or 'both' + """ + with _RedirectionsHolder._lock: + if redirect_to is None: + redirect_to = IOBuf() + + if std == "both": + config_stds = ["stdout", "stderr"] + else: + config_stds = [std] + + for std in config_stds: + original = getattr(sys, std) + stack = getattr(_RedirectionsHolder, "_stack_%s" % std) + + if keep_original_redirection: + wrap_buffer = True if hasattr(redirect_to, "buffer") else False + new_std_instance = IORedirector( + getattr(sys, std), redirect_to, wrap_buffer=wrap_buffer + ) + setattr(sys, std, new_std_instance) + else: + new_std_instance = redirect_to + setattr(sys, std, redirect_to) + + stack.append(_RedirectInfo(original, new_std_instance)) + + return redirect_to + + +def end_redirect(std="stdout"): + with _RedirectionsHolder._lock: + if std == "both": + config_stds = ["stdout", "stderr"] + else: + config_stds = [std] + for std in config_stds: + stack = getattr(_RedirectionsHolder, "_stack_%s" % std) + redirect_info = stack.pop() + setattr(sys, std, redirect_info.original) + + +def redirect_stream_to_pydb_io_messages(std): + """ + :param std: + 'stdout' or 'stderr' + """ + with _RedirectionsHolder._lock: + redirect_to_name = "_pydevd_%s_redirect_" % (std,) + if getattr(_RedirectionsHolder, redirect_to_name) is None: + wrap_buffer = True + original = getattr(sys, std) + + redirect_to = RedirectToPyDBIoMessages( + 1 if std == "stdout" else 2, original, wrap_buffer + ) + start_redirect( + keep_original_redirection=True, std=std, redirect_to=redirect_to + ) + + stack = getattr(_RedirectionsHolder, "_stack_%s" % std) + setattr(_RedirectionsHolder, redirect_to_name, stack[-1]) + return True + + return False + + +def stop_redirect_stream_to_pydb_io_messages(std): + """ + :param std: + 'stdout' or 'stderr' + """ + with _RedirectionsHolder._lock: + redirect_to_name = "_pydevd_%s_redirect_" % (std,) + redirect_info = getattr(_RedirectionsHolder, redirect_to_name) + if redirect_info is not None: # :type redirect_info: _RedirectInfo + setattr(_RedirectionsHolder, redirect_to_name, None) + + stack = getattr(_RedirectionsHolder, "_stack_%s" % std) + prev_info = stack.pop() + + curr = getattr(sys, std) + if curr is redirect_info.redirect_to: + setattr(sys, std, redirect_info.original) + + +@contextmanager +def redirect_stream_to_pydb_io_messages_context(): + with _RedirectionsHolder._lock: + redirecting = [] + for std in ("stdout", "stderr"): + if redirect_stream_to_pydb_io_messages(std): + redirecting.append(std) + + try: + yield + finally: + for std in redirecting: + stop_redirect_stream_to_pydb_io_messages(std) diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_json_debug_options.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_json_debug_options.py new file mode 100644 index 000000000..be9f01e4e --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_json_debug_options.py @@ -0,0 +1,206 @@ +import json +import urllib.parse as urllib_parse + + +class DebugOptions: + __slots__ = [ + "just_my_code", + "redirect_output", + "show_return_value", + "break_system_exit_zero", + "django_debug", + "flask_debug", + "stop_on_entry", + "max_exception_stack_frames", + "gui_event_loop", + "client_os", + ] + + def __init__(self): + self.just_my_code = True + self.redirect_output = False + self.show_return_value = False + self.break_system_exit_zero = False + self.django_debug = False + self.flask_debug = False + self.stop_on_entry = False + self.max_exception_stack_frames = 0 + self.gui_event_loop = "matplotlib" + self.client_os = None + + def to_json(self): + dct = {} + for s in self.__slots__: + dct[s] = getattr(self, s) + return json.dumps(dct) + + def update_fom_debug_options(self, debug_options): + if "DEBUG_STDLIB" in debug_options: + self.just_my_code = not debug_options.get("DEBUG_STDLIB") + + if "REDIRECT_OUTPUT" in debug_options: + self.redirect_output = debug_options.get("REDIRECT_OUTPUT") + + if "SHOW_RETURN_VALUE" in debug_options: + self.show_return_value = debug_options.get("SHOW_RETURN_VALUE") + + if "BREAK_SYSTEMEXIT_ZERO" in debug_options: + self.break_system_exit_zero = debug_options.get("BREAK_SYSTEMEXIT_ZERO") + + if "DJANGO_DEBUG" in debug_options: + self.django_debug = debug_options.get("DJANGO_DEBUG") + + if "FLASK_DEBUG" in debug_options: + self.flask_debug = debug_options.get("FLASK_DEBUG") + + if "STOP_ON_ENTRY" in debug_options: + self.stop_on_entry = debug_options.get("STOP_ON_ENTRY") + + if "CLIENT_OS_TYPE" in debug_options: + self.client_os = debug_options.get("CLIENT_OS_TYPE") + + # Note: _max_exception_stack_frames cannot be set by debug options. + + def update_from_args(self, args): + if "justMyCode" in args: + self.just_my_code = bool_parser(args["justMyCode"]) + else: + # i.e.: if justMyCode is provided, don't check the deprecated value + if "debugStdLib" in args: + self.just_my_code = not bool_parser(args["debugStdLib"]) + + if "redirectOutput" in args: + self.redirect_output = bool_parser(args["redirectOutput"]) + + if "showReturnValue" in args: + self.show_return_value = bool_parser(args["showReturnValue"]) + + if "breakOnSystemExitZero" in args: + self.break_system_exit_zero = bool_parser(args["breakOnSystemExitZero"]) + + if "django" in args: + self.django_debug = bool_parser(args["django"]) + + if "flask" in args: + self.flask_debug = bool_parser(args["flask"]) + + if "jinja" in args: + self.flask_debug = bool_parser(args["jinja"]) + + if "stopOnEntry" in args: + self.stop_on_entry = bool_parser(args["stopOnEntry"]) + + self.max_exception_stack_frames = int_parser( + args.get("maxExceptionStackFrames", 0) + ) + + if "guiEventLoop" in args: + self.gui_event_loop = str(args["guiEventLoop"]) + + if "clientOS" in args: + self.client_os = str(args["clientOS"]).upper() + + +def int_parser(s, default_value=0): + try: + return int(s) + except Exception: + return default_value + + +def bool_parser(s): + return s in ("True", "true", "1", True, 1) + + +def unquote(s): + return None if s is None else urllib_parse.unquote(s) + + +DEBUG_OPTIONS_PARSER = { + "WAIT_ON_ABNORMAL_EXIT": bool_parser, + "WAIT_ON_NORMAL_EXIT": bool_parser, + "BREAK_SYSTEMEXIT_ZERO": bool_parser, + "REDIRECT_OUTPUT": bool_parser, + "DJANGO_DEBUG": bool_parser, + "FLASK_DEBUG": bool_parser, + "FIX_FILE_PATH_CASE": bool_parser, + "CLIENT_OS_TYPE": unquote, + "DEBUG_STDLIB": bool_parser, + "STOP_ON_ENTRY": bool_parser, + "SHOW_RETURN_VALUE": bool_parser, + "MULTIPROCESS": bool_parser, +} + +DEBUG_OPTIONS_BY_FLAG = { + "RedirectOutput": "REDIRECT_OUTPUT=True", + "WaitOnNormalExit": "WAIT_ON_NORMAL_EXIT=True", + "WaitOnAbnormalExit": "WAIT_ON_ABNORMAL_EXIT=True", + "BreakOnSystemExitZero": "BREAK_SYSTEMEXIT_ZERO=True", + "Django": "DJANGO_DEBUG=True", + "Flask": "FLASK_DEBUG=True", + "Jinja": "FLASK_DEBUG=True", + "FixFilePathCase": "FIX_FILE_PATH_CASE=True", + "DebugStdLib": "DEBUG_STDLIB=True", + "WindowsClient": "CLIENT_OS_TYPE=WINDOWS", + "UnixClient": "CLIENT_OS_TYPE=UNIX", + "StopOnEntry": "STOP_ON_ENTRY=True", + "ShowReturnValue": "SHOW_RETURN_VALUE=True", + "Multiprocess": "MULTIPROCESS=True", +} + + +def _build_debug_options(flags): + """Build string representation of debug options from the launch config.""" + return ";".join( + DEBUG_OPTIONS_BY_FLAG[flag] + for flag in flags or [] + if flag in DEBUG_OPTIONS_BY_FLAG + ) + + +def _parse_debug_options(opts): + """Debug options are semicolon separated key=value pairs""" + options = {} + if not opts: + return options + + for opt in opts.split(";"): + try: + key, value = opt.split("=") + except ValueError: + continue + try: + options[key] = DEBUG_OPTIONS_PARSER[key](value) + except KeyError: + continue + + return options + + +def _extract_debug_options(opts, flags=None): + """Return the debug options encoded in the given value. + + "opts" is a semicolon-separated string of "key=value" pairs. + "flags" is a list of strings. + + If flags is provided then it is used as a fallback. + + The values come from the launch config: + + { + type:'python', + request:'launch'|'attach', + name:'friendly name for debug config', + debugOptions:[ + 'RedirectOutput', 'Django' + ], + options:'REDIRECT_OUTPUT=True;DJANGO_DEBUG=True' + } + + Further information can be found here: + + https://code.visualstudio.com/docs/editor/debugging#_launchjson-attributes + """ + if not opts: + opts = _build_debug_options(flags) + return _parse_debug_options(opts) diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command.py new file mode 100644 index 000000000..db37d9e3f --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command.py @@ -0,0 +1,155 @@ +import json + +from _pydev_bundle import pydev_log + +from _pydevd_bundle.pydevd_comm_constants import CMD_EXIT, ID_TO_MEANING +from _pydevd_bundle.pydevd_constants import ( + HTTP_JSON_PROTOCOL, + HTTP_PROTOCOL, + IS_JYTHON, + DebugInfoHolder, + ForkSafeLock, + get_protocol, +) + +# Keep for backward compatibility @UnusedImport +from _pydevd_bundle.pydevd_utils import quote_smart as quote +from _pydevd_bundle.pydevd_utils import to_string + + +class _BaseNetCommand: + # Command id. Should be set in instance. + id = -1 + + # Dict representation of the command to be set in instance. Only set for json commands. + as_dict = None + + def send(self, *args, **kwargs): + pass + + def call_after_send(self, callback): + pass + + +class _NullNetCommand(_BaseNetCommand): + pass + + +class _NullExitCommand(_NullNetCommand): + id = CMD_EXIT + + +# Constant meant to be passed to the writer when the command is meant to be ignored. +NULL_NET_COMMAND = _NullNetCommand() + +# Exit command -- only internal (we don't want/need to send this to the IDE). +NULL_EXIT_COMMAND = _NullExitCommand() + + +class NetCommand(_BaseNetCommand): + """ + Commands received/sent over the network. + + Command can represent command received from the debugger, + or one to be sent by daemon. + """ + + next_seq = 0 # sequence numbers + + _showing_debug_info = 0 + _show_debug_info_lock = ForkSafeLock(rlock=True) + + _after_send = None + + def __init__(self, cmd_id, seq, text, is_json=False): + """ + If sequence is 0, new sequence will be generated (otherwise, this was the response + to a command from the client). + """ + protocol = get_protocol() + self.id = cmd_id + if seq == 0: + NetCommand.next_seq += 2 + seq = NetCommand.next_seq + + self.seq = seq + + if is_json: + if hasattr(text, "to_dict"): + as_dict = text.to_dict(update_ids_to_dap=True) + else: + assert isinstance(text, dict) + as_dict = text + as_dict["pydevd_cmd_id"] = cmd_id + as_dict["seq"] = seq + self.as_dict = as_dict + text = json.dumps(as_dict) + + assert isinstance(text, str) + + if DebugInfoHolder.DEBUG_TRACE_LEVEL >= 1: + self._show_debug_info(cmd_id, seq, text) + + if is_json: + msg = text + else: + if protocol not in (HTTP_PROTOCOL, HTTP_JSON_PROTOCOL): + encoded = quote(to_string(text), '/<>_=" \t') + msg = "%s\t%s\t%s\n" % (cmd_id, seq, encoded) + + else: + msg = "%s\t%s\t%s" % (cmd_id, seq, text) + + if isinstance(msg, str): + msg = msg.encode("utf-8") + + assert isinstance(msg, bytes) + as_bytes = msg + self._as_bytes = as_bytes + + def send(self, sock): + as_bytes = self._as_bytes + try: + if get_protocol() in (HTTP_PROTOCOL, HTTP_JSON_PROTOCOL): + sock.sendall( + ("Content-Length: %s\r\n\r\n" % len(as_bytes)).encode("ascii") + ) + sock.sendall(as_bytes) + if self._after_send: + for method in self._after_send: + method(sock) + except: + if IS_JYTHON: + # Ignore errors in sock.sendall in Jython (seems to be common for Jython to + # give spurious exceptions at interpreter shutdown here). + pass + else: + raise + + def call_after_send(self, callback): + if not self._after_send: + self._after_send = [callback] + else: + self._after_send.append(callback) + + @classmethod + def _show_debug_info(cls, cmd_id, seq, text): + with cls._show_debug_info_lock: + # Only one thread each time (rlock). + if cls._showing_debug_info: + # avoid recursing in the same thread (just printing could create + # a new command when redirecting output). + return + + cls._showing_debug_info += 1 + try: + out_message = "sending cmd (%s) --> " % (get_protocol(),) + out_message += "%20s" % ID_TO_MEANING.get(str(cmd_id), "UNKNOWN") + out_message += " " + out_message += text.replace("\n", " ") + try: + pydev_log.critical("%s\n", out_message) + except: + pass + finally: + cls._showing_debug_info -= 1 diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_json.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_json.py new file mode 100644 index 000000000..7cb154dc3 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_json.py @@ -0,0 +1,688 @@ +import itertools +import linecache +import os +import socket as socket_module +from functools import partial +from io import StringIO + +import pydevd_file_utils +from _pydev_bundle import pydev_log +from _pydev_bundle._pydev_imports_tipper import ( + TYPE_ATTR, + TYPE_BUILTIN, + TYPE_CLASS, + TYPE_FUNCTION, + TYPE_IMPORT, + TYPE_PARAM, +) +from _pydev_bundle.pydev_is_thread_alive import is_thread_alive +from _pydev_bundle.pydev_override import overrides + +from _pydevd_bundle import pydevd_constants, pydevd_frame_utils, pydevd_utils +from _pydevd_bundle._debug_adapter import pydevd_schema +from _pydevd_bundle._debug_adapter.pydevd_schema import ( + ContinuedEventBody, + ExitedEvent, + ExitedEventBody, + Module, + ModuleEvent, + ModuleEventBody, + OutputEvent, + OutputEventBody, +) +from _pydevd_bundle.pydevd_additional_thread_info import set_additional_thread_info +from _pydevd_bundle.pydevd_comm import build_exception_info_response +from _pydevd_bundle.pydevd_comm_constants import ( + CMD_ADD_EXCEPTION_BREAK, + CMD_EXIT, + CMD_INPUT_REQUESTED, + CMD_MODULE_EVENT, + CMD_RETURN, + CMD_SET_BREAK, + CMD_SET_FUNCTION_BREAK, + CMD_SET_NEXT_STATEMENT, + CMD_SMART_STEP_INTO, + CMD_STEP_CAUGHT_EXCEPTION, + CMD_STEP_INTO, + CMD_STEP_INTO_COROUTINE, + CMD_STEP_INTO_MY_CODE, + CMD_STEP_OVER, + CMD_STEP_OVER_MY_CODE, + CMD_STEP_RETURN, + CMD_STEP_RETURN_MY_CODE, + CMD_STOP_ON_START, + CMD_THREAD_CREATE, + CMD_THREAD_KILL, + CMD_THREAD_RESUME_SINGLE_NOTIFICATION, + CMD_THREAD_RUN, + CMD_THREAD_SUSPEND_SINGLE_NOTIFICATION, + CMD_WRITE_TO_CONSOLE, +) +from _pydevd_bundle.pydevd_constants import DebugInfoHolder, ForkSafeLock, get_thread_id +from _pydevd_bundle.pydevd_net_command import NULL_NET_COMMAND, NetCommand +from _pydevd_bundle.pydevd_net_command_factory_xml import NetCommandFactory +from _pydevd_bundle.pydevd_utils import get_non_pydevd_threads + + +class ModulesManager: + def __init__(self): + self._lock = ForkSafeLock() + self._modules = {} + self._next_id = partial(next, itertools.count(0)) + + def track_module(self, filename_in_utf8, module_name, frame): + """ + :return list(NetCommand): + Returns a list with the module events to be sent. + """ + if filename_in_utf8 in self._modules: + return [] + + module_events = [] + with self._lock: + # Must check again after getting the lock. + if filename_in_utf8 in self._modules: + return + + try: + version = str(frame.f_globals.get("__version__", "")) + except: + version = "" + + try: + package_name = str(frame.f_globals.get("__package__", "")) + except: + package_name = "" + + module_id = self._next_id() + + module = Module(module_id, module_name, filename_in_utf8) + if version: + module.version = version + + if package_name: + # Note: package doesn't appear in the docs but seems to be expected? + module.kwargs["package"] = package_name + + module_event = ModuleEvent(ModuleEventBody("new", module)) + + module_events.append( + NetCommand(CMD_MODULE_EVENT, 0, module_event, is_json=True) + ) + + self._modules[filename_in_utf8] = module.to_dict() + return module_events + + def get_modules_info(self): + """ + :return list(Module) + """ + with self._lock: + return list(self._modules.values()) + + +class NetCommandFactoryJson(NetCommandFactory): + """ + Factory for commands which will provide messages as json (they should be + similar to the debug adapter where possible, although some differences + are currently Ok). + + Note that it currently overrides the xml version so that messages + can be done one at a time (any message not overridden will currently + use the xml version) -- after having all messages handled, it should + no longer use NetCommandFactory as the base class. + """ + + def __init__(self): + NetCommandFactory.__init__(self) + self.modules_manager = ModulesManager() + + @overrides(NetCommandFactory.make_version_message) + def make_version_message(self, seq): + return NULL_NET_COMMAND # Not a part of the debug adapter protocol + + @overrides(NetCommandFactory.make_protocol_set_message) + def make_protocol_set_message(self, seq): + return NULL_NET_COMMAND # Not a part of the debug adapter protocol + + @overrides(NetCommandFactory.make_thread_created_message) + def make_thread_created_message(self, thread): + # Note: the thread id for the debug adapter must be an int + # (make the actual id from get_thread_id respect that later on). + msg = pydevd_schema.ThreadEvent( + pydevd_schema.ThreadEventBody("started", get_thread_id(thread)), + ) + + return NetCommand(CMD_THREAD_CREATE, 0, msg, is_json=True) + + @overrides(NetCommandFactory.make_custom_frame_created_message) + def make_custom_frame_created_message(self, frame_id, frame_description): + self._additional_thread_id_to_thread_name[frame_id] = frame_description + msg = pydevd_schema.ThreadEvent( + pydevd_schema.ThreadEventBody("started", frame_id), + ) + + return NetCommand(CMD_THREAD_CREATE, 0, msg, is_json=True) + + @overrides(NetCommandFactory.make_thread_killed_message) + def make_thread_killed_message(self, tid): + self._additional_thread_id_to_thread_name.pop(tid, None) + msg = pydevd_schema.ThreadEvent( + pydevd_schema.ThreadEventBody("exited", tid), + ) + + return NetCommand(CMD_THREAD_KILL, 0, msg, is_json=True) + + @overrides(NetCommandFactory.make_list_threads_message) + def make_list_threads_message(self, py_db, seq): + threads = [] + for thread in get_non_pydevd_threads(): + if is_thread_alive(thread): + thread_id = get_thread_id(thread) + + # Notify that it's created (no-op if we already notified before). + py_db.notify_thread_created(thread_id, thread) + + thread_schema = pydevd_schema.Thread(id=thread_id, name=thread.name) + threads.append(thread_schema.to_dict()) + + for thread_id, thread_name in list( + self._additional_thread_id_to_thread_name.items() + ): + thread_schema = pydevd_schema.Thread(id=thread_id, name=thread_name) + threads.append(thread_schema.to_dict()) + + body = pydevd_schema.ThreadsResponseBody(threads) + response = pydevd_schema.ThreadsResponse( + request_seq=seq, success=True, command="threads", body=body + ) + + return NetCommand(CMD_RETURN, 0, response, is_json=True) + + @overrides(NetCommandFactory.make_get_completions_message) + def make_get_completions_message(self, seq, completions, qualifier, start): + COMPLETION_TYPE_LOOK_UP = { + TYPE_IMPORT: pydevd_schema.CompletionItemType.MODULE, + TYPE_CLASS: pydevd_schema.CompletionItemType.CLASS, + TYPE_FUNCTION: pydevd_schema.CompletionItemType.FUNCTION, + TYPE_ATTR: pydevd_schema.CompletionItemType.FIELD, + TYPE_BUILTIN: pydevd_schema.CompletionItemType.KEYWORD, + TYPE_PARAM: pydevd_schema.CompletionItemType.VARIABLE, + } + + qualifier = qualifier.lower() + qualifier_len = len(qualifier) + targets = [] + for completion in completions: + label = completion[0] + if label.lower().startswith(qualifier): + completion = pydevd_schema.CompletionItem( + label=label, + type=COMPLETION_TYPE_LOOK_UP[completion[3]], + start=start, + length=qualifier_len, + ) + targets.append(completion.to_dict()) + + body = pydevd_schema.CompletionsResponseBody(targets) + response = pydevd_schema.CompletionsResponse( + request_seq=seq, success=True, command="completions", body=body + ) + return NetCommand(CMD_RETURN, 0, response, is_json=True) + + def _format_frame_name(self, fmt, initial_name, module_name, line, path): + if fmt is None: + return initial_name + frame_name = initial_name + if fmt.get("module", False): + if module_name: + if initial_name == "": + frame_name = module_name + else: + frame_name = "%s.%s" % (module_name, initial_name) + else: + basename = os.path.basename(path) + basename = ( + basename[0:-3] if basename.lower().endswith(".py") else basename + ) + if initial_name == "": + frame_name = "%s in %s" % (initial_name, basename) + else: + frame_name = "%s.%s" % (basename, initial_name) + + if fmt.get("line", False): + frame_name = "%s : %d" % (frame_name, line) + + return frame_name + + @overrides(NetCommandFactory.make_get_thread_stack_message) + def make_get_thread_stack_message( + self, + py_db, + seq, + thread_id, + topmost_frame, + fmt, + must_be_suspended=False, + start_frame=0, + levels=0, + ): + frames = [] + module_events = [] + + try: + # : :type suspended_frames_manager: SuspendedFramesManager + suspended_frames_manager = py_db.suspended_frames_manager + frames_list = suspended_frames_manager.get_frames_list(thread_id) + if frames_list is None: + # Could not find stack of suspended frame... + if must_be_suspended: + return None + else: + frames_list = pydevd_frame_utils.create_frames_list_from_frame( + topmost_frame + ) + + for ( + frame_id, + frame, + method_name, + original_filename, + filename_in_utf8, + lineno, + applied_mapping, + show_as_current_frame, + line_col_info, + ) in self._iter_visible_frames_info( + py_db, frames_list, flatten_chained=True + ): + try: + module_name = str(frame.f_globals.get("__name__", "")) + except: + module_name = "" + + module_events.extend( + self.modules_manager.track_module( + filename_in_utf8, module_name, frame + ) + ) + + presentation_hint = None + if not getattr( + frame, "IS_PLUGIN_FRAME", False + ): # Never filter out plugin frames! + if py_db.is_files_filter_enabled and py_db.apply_files_filter( + frame, original_filename, False + ): + continue + + if not py_db.in_project_scope(frame): + presentation_hint = "subtle" + + formatted_name = self._format_frame_name( + fmt, method_name, module_name, lineno, filename_in_utf8 + ) + if show_as_current_frame: + formatted_name += " (Current frame)" + source_reference = ( + pydevd_file_utils.get_client_filename_source_reference( + filename_in_utf8 + ) + ) + + if ( + not source_reference + and not applied_mapping + and not os.path.exists(original_filename) + ): + if getattr(frame.f_code, "co_lines", None) or getattr( + frame.f_code, "co_lnotab", None + ): + # Create a source-reference to be used where we provide the source by decompiling the code. + # Note: When the time comes to retrieve the source reference in this case, we'll + # check the linecache first (see: get_decompiled_source_from_frame_id). + source_reference = ( + pydevd_file_utils.create_source_reference_for_frame_id( + frame_id, original_filename + ) + ) + else: + # Check if someone added a source reference to the linecache (Python attrs does this). + if linecache.getline(original_filename, 1): + source_reference = ( + pydevd_file_utils.create_source_reference_for_linecache( + original_filename + ) + ) + + column = 1 + endcol = None + if line_col_info is not None: + try: + line_text = linecache.getline(original_filename, lineno) + except: + if DebugInfoHolder.DEBUG_TRACE_LEVEL >= 2: + pydev_log.exception( + "Unable to get line from linecache for file: %s", + original_filename, + ) + else: + if line_text: + colno, endcolno = line_col_info.map_columns_to_line( + line_text + ) + column = colno + 1 + if line_col_info.lineno == line_col_info.end_lineno: + endcol = endcolno + 1 + + frames.append( + pydevd_schema.StackFrame( + frame_id, + formatted_name, + lineno, + column=column, + endColumn=endcol, + source={ + "path": filename_in_utf8, + "sourceReference": source_reference, + }, + presentationHint=presentation_hint, + ).to_dict() + ) + finally: + topmost_frame = None + + for module_event in module_events: + py_db.writer.add_command(module_event) + + total_frames = len(frames) + stack_frames = frames + if bool(levels): + start = start_frame + end = min(start + levels, total_frames) + stack_frames = frames[start:end] + + response = pydevd_schema.StackTraceResponse( + request_seq=seq, + success=True, + command="stackTrace", + body=pydevd_schema.StackTraceResponseBody( + stackFrames=stack_frames, totalFrames=total_frames + ), + ) + return NetCommand(CMD_RETURN, 0, response, is_json=True) + + @overrides(NetCommandFactory.make_warning_message) + def make_warning_message(self, msg): + category = "important" + body = OutputEventBody(msg, category) + event = OutputEvent(body) + return NetCommand(CMD_WRITE_TO_CONSOLE, 0, event, is_json=True) + + @overrides(NetCommandFactory.make_io_message) + def make_io_message(self, msg, ctx): + category = "stdout" if int(ctx) == 1 else "stderr" + body = OutputEventBody(msg, category) + event = OutputEvent(body) + return NetCommand(CMD_WRITE_TO_CONSOLE, 0, event, is_json=True) + + @overrides(NetCommandFactory.make_console_message) + def make_console_message(self, msg): + category = "console" + body = OutputEventBody(msg, category) + event = OutputEvent(body) + return NetCommand(CMD_WRITE_TO_CONSOLE, 0, event, is_json=True) + + _STEP_REASONS = set( + [ + CMD_STEP_INTO, + CMD_STEP_INTO_MY_CODE, + CMD_STEP_OVER, + CMD_STEP_OVER_MY_CODE, + CMD_STEP_RETURN, + CMD_STEP_RETURN_MY_CODE, + CMD_STEP_INTO_MY_CODE, + CMD_STOP_ON_START, + CMD_STEP_INTO_COROUTINE, + CMD_SMART_STEP_INTO, + ] + ) + _EXCEPTION_REASONS = set( + [ + CMD_STEP_CAUGHT_EXCEPTION, + CMD_ADD_EXCEPTION_BREAK, + ] + ) + + @overrides(NetCommandFactory.make_thread_suspend_single_notification) + def make_thread_suspend_single_notification( + self, py_db, thread_id, thread, stop_reason + ): + exc_desc = None + exc_name = None + info = set_additional_thread_info(thread) + + preserve_focus_hint = False + if stop_reason in self._STEP_REASONS: + if info.pydev_original_step_cmd == CMD_STOP_ON_START: + # Just to make sure that's not set as the original reason anymore. + info.pydev_original_step_cmd = -1 + stop_reason = "entry" + else: + stop_reason = "step" + elif stop_reason in self._EXCEPTION_REASONS: + stop_reason = "exception" + elif stop_reason == CMD_SET_BREAK: + stop_reason = "breakpoint" + elif stop_reason == CMD_SET_FUNCTION_BREAK: + stop_reason = "function breakpoint" + elif stop_reason == CMD_SET_NEXT_STATEMENT: + stop_reason = "goto" + else: + stop_reason = "pause" + preserve_focus_hint = True + + if stop_reason == "exception": + exception_info_response = build_exception_info_response( + py_db, + thread_id, + thread, + -1, + set_additional_thread_info, + self._iter_visible_frames_info, + max_frames=-1, + ) + exception_info_response + + exc_name = exception_info_response.body.exceptionId + exc_desc = exception_info_response.body.description + + body = pydevd_schema.StoppedEventBody( + reason=stop_reason, + description=exc_desc, + threadId=thread_id, + text=exc_name, + allThreadsStopped=True, + preserveFocusHint=preserve_focus_hint, + ) + event = pydevd_schema.StoppedEvent(body) + return NetCommand( + CMD_THREAD_SUSPEND_SINGLE_NOTIFICATION, 0, event, is_json=True + ) + + @overrides(NetCommandFactory.make_thread_resume_single_notification) + def make_thread_resume_single_notification(self, thread_id): + body = ContinuedEventBody(threadId=thread_id, allThreadsContinued=True) + event = pydevd_schema.ContinuedEvent(body) + return NetCommand(CMD_THREAD_RESUME_SINGLE_NOTIFICATION, 0, event, is_json=True) + + @overrides(NetCommandFactory.make_set_next_stmnt_status_message) + def make_set_next_stmnt_status_message(self, seq, is_success, exception_msg): + response = pydevd_schema.GotoResponse( + request_seq=int(seq), + success=is_success, + command="goto", + body={}, + message=(None if is_success else exception_msg), + ) + return NetCommand(CMD_RETURN, 0, response, is_json=True) + + @overrides(NetCommandFactory.make_send_curr_exception_trace_message) + def make_send_curr_exception_trace_message(self, *args, **kwargs): + return NULL_NET_COMMAND # Not a part of the debug adapter protocol + + @overrides(NetCommandFactory.make_send_curr_exception_trace_proceeded_message) + def make_send_curr_exception_trace_proceeded_message(self, *args, **kwargs): + return NULL_NET_COMMAND # Not a part of the debug adapter protocol + + @overrides(NetCommandFactory.make_send_breakpoint_exception_message) + def make_send_breakpoint_exception_message(self, *args, **kwargs): + return NULL_NET_COMMAND # Not a part of the debug adapter protocol + + @overrides(NetCommandFactory.make_process_created_message) + def make_process_created_message(self, *args, **kwargs): + return NULL_NET_COMMAND # Not a part of the debug adapter protocol + + @overrides(NetCommandFactory.make_process_about_to_be_replaced_message) + def make_process_about_to_be_replaced_message(self): + event = ExitedEvent(ExitedEventBody(-1, pydevdReason="processReplaced")) + + cmd = NetCommand(CMD_RETURN, 0, event, is_json=True) + + def after_send(socket): + socket.setsockopt(socket_module.IPPROTO_TCP, socket_module.TCP_NODELAY, 1) + + cmd.call_after_send(after_send) + return cmd + + @overrides(NetCommandFactory.make_thread_suspend_message) + def make_thread_suspend_message( + self, + py_db, + thread_id, + frames_list, + stop_reason, + message, + trace_suspend_type, + thread, + info, + ): + from _pydevd_bundle.pydevd_comm_constants import CMD_THREAD_SUSPEND + + if py_db.multi_threads_single_notification: + pydev_log.debug("Skipping per-thread thread suspend notification.") + return NULL_NET_COMMAND # Don't send per-thread, send a single one. + pydev_log.debug( + "Sending per-thread thread suspend notification (stop_reason: %s)", + stop_reason, + ) + + exc_desc = None + exc_name = None + preserve_focus_hint = False + if stop_reason in self._STEP_REASONS: + if info.pydev_original_step_cmd == CMD_STOP_ON_START: + # Just to make sure that's not set as the original reason anymore. + info.pydev_original_step_cmd = -1 + stop_reason = "entry" + else: + stop_reason = "step" + elif stop_reason in self._EXCEPTION_REASONS: + stop_reason = "exception" + elif stop_reason == CMD_SET_BREAK: + stop_reason = "breakpoint" + elif stop_reason == CMD_SET_FUNCTION_BREAK: + stop_reason = "function breakpoint" + elif stop_reason == CMD_SET_NEXT_STATEMENT: + stop_reason = "goto" + else: + stop_reason = "pause" + preserve_focus_hint = True + + if stop_reason == "exception": + exception_info_response = build_exception_info_response( + py_db, + thread_id, + thread, + -1, + set_additional_thread_info, + self._iter_visible_frames_info, + max_frames=-1, + ) + exception_info_response + + exc_name = exception_info_response.body.exceptionId + exc_desc = exception_info_response.body.description + + body = pydevd_schema.StoppedEventBody( + reason=stop_reason, + description=exc_desc, + threadId=thread_id, + text=exc_name, + allThreadsStopped=False, + preserveFocusHint=preserve_focus_hint, + ) + event = pydevd_schema.StoppedEvent(body) + return NetCommand(CMD_THREAD_SUSPEND, 0, event, is_json=True) + + @overrides(NetCommandFactory.make_thread_run_message) + def make_thread_run_message(self, py_db, thread_id, reason): + if py_db.multi_threads_single_notification: + return NULL_NET_COMMAND # Don't send per-thread, send a single one. + body = ContinuedEventBody(threadId=thread_id, allThreadsContinued=False) + event = pydevd_schema.ContinuedEvent(body) + return NetCommand(CMD_THREAD_RUN, 0, event, is_json=True) + + @overrides(NetCommandFactory.make_reloaded_code_message) + def make_reloaded_code_message(self, *args, **kwargs): + return NULL_NET_COMMAND # Not a part of the debug adapter protocol + + @overrides(NetCommandFactory.make_input_requested_message) + def make_input_requested_message(self, started): + event = pydevd_schema.PydevdInputRequestedEvent(body={}) + return NetCommand(CMD_INPUT_REQUESTED, 0, event, is_json=True) + + @overrides(NetCommandFactory.make_skipped_step_in_because_of_filters) + def make_skipped_step_in_because_of_filters(self, py_db, frame): + msg = "Frame skipped from debugging during step-in." + if py_db.get_use_libraries_filter(): + msg += ( + '\nNote: may have been skipped because of "justMyCode" option (default == true). ' + 'Try setting "justMyCode": false in the debug configuration (e.g., launch.json).\n' + ) + return self.make_warning_message(msg) + + @overrides(NetCommandFactory.make_evaluation_timeout_msg) + def make_evaluation_timeout_msg(self, py_db, expression, curr_thread): + msg = """Evaluating: %s did not finish after %.2f seconds. +This may mean a number of things: +- This evaluation is really slow and this is expected. + In this case it's possible to silence this error by raising the timeout, setting the + PYDEVD_WARN_EVALUATION_TIMEOUT environment variable to a bigger value. + +- The evaluation may need other threads running while it's running: + In this case, it's possible to set the PYDEVD_UNBLOCK_THREADS_TIMEOUT + environment variable so that if after a given timeout an evaluation doesn't finish, + other threads are unblocked or you can manually resume all threads. + + Alternatively, it's also possible to skip breaking on a particular thread by setting a + `pydev_do_not_trace = True` attribute in the related threading.Thread instance + (if some thread should always be running and no breakpoints are expected to be hit in it). + +- The evaluation is deadlocked: + In this case you may set the PYDEVD_THREAD_DUMP_ON_WARN_EVALUATION_TIMEOUT + environment variable to true so that a thread dump is shown along with this message and + optionally, set the PYDEVD_INTERRUPT_THREAD_TIMEOUT to some value so that the debugger + tries to interrupt the evaluation (if possible) when this happens. +""" % (expression, pydevd_constants.PYDEVD_WARN_EVALUATION_TIMEOUT) + + if pydevd_constants.PYDEVD_THREAD_DUMP_ON_WARN_EVALUATION_TIMEOUT: + stream = StringIO() + pydevd_utils.dump_threads(stream, show_pydevd_threads=False) + msg += "\n\n%s\n" % stream.getvalue() + return self.make_warning_message(msg) + + @overrides(NetCommandFactory.make_exit_command) + def make_exit_command(self, py_db): + event = pydevd_schema.TerminatedEvent(pydevd_schema.TerminatedEventBody()) + return NetCommand(CMD_EXIT, 0, event, is_json=True) diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_xml.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_xml.py new file mode 100644 index 000000000..da923491c --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_xml.py @@ -0,0 +1,674 @@ +import json +from io import StringIO + +import pydevd_file_utils +from _pydev_bundle import pydev_log +from _pydev_bundle._pydev_completer import completions_to_xml +from _pydev_bundle.pydev_is_thread_alive import is_thread_alive +from pydevd_file_utils import get_abs_path_real_path_and_base_from_frame +from pydevd_tracing import get_exception_traceback_str + +from _pydevd_bundle import ( + pydevd_constants, + pydevd_frame_utils, + pydevd_utils, + pydevd_xml, +) +from _pydevd_bundle.pydevd_comm_constants import ( + CMD_ERROR, + CMD_EVALUATE_CONSOLE_EXPRESSION, + CMD_EVALUATE_EXPRESSION, + CMD_GET_ARRAY, + CMD_GET_BREAKPOINT_EXCEPTION, + CMD_GET_COMPLETIONS, + CMD_GET_DESCRIPTION, + CMD_GET_EXCEPTION_DETAILS, + CMD_GET_FILE_CONTENTS, + CMD_GET_FRAME, + CMD_GET_NEXT_STATEMENT_TARGETS, + CMD_GET_THREAD_STACK, + CMD_GET_VARIABLE, + CMD_INPUT_REQUESTED, + CMD_LOAD_FULL_VALUE, + CMD_LOAD_SOURCE, + CMD_LOAD_SOURCE_FROM_FRAME_ID, + CMD_PROCESS_CREATED, + CMD_RELOAD_CODE, + CMD_RETURN, + CMD_RUN_CUSTOM_OPERATION, + CMD_SEND_CURR_EXCEPTION_TRACE, + CMD_SEND_CURR_EXCEPTION_TRACE_PROCEEDED, + CMD_SET_NEXT_STATEMENT, + CMD_SET_PROTOCOL, + CMD_SHOW_CONSOLE, + CMD_SHOW_CYTHON_WARNING, + CMD_THREAD_CREATE, + CMD_THREAD_KILL, + CMD_THREAD_RESUME_SINGLE_NOTIFICATION, + CMD_THREAD_RUN, + CMD_THREAD_SUSPEND, + CMD_THREAD_SUSPEND_SINGLE_NOTIFICATION, + CMD_VERSION, + CMD_WRITE_TO_CONSOLE, + MAX_IO_MSG_SIZE, + VERSION_STRING, +) +from _pydevd_bundle.pydevd_constants import ( + DebugInfoHolder, + get_thread_id, +) +from _pydevd_bundle.pydevd_frame_utils import FramesList + +# Keep for backward compatibility @UnusedImport +from _pydevd_bundle.pydevd_net_command import ( + NULL_EXIT_COMMAND, + NULL_NET_COMMAND, + NetCommand, +) +from _pydevd_bundle.pydevd_utils import get_non_pydevd_threads +from _pydevd_bundle.pydevd_utils import quote_smart as quote + + +# ======================================================================================================================= +# NetCommandFactory +# ======================================================================================================================= +class NetCommandFactory: + def __init__(self): + self._additional_thread_id_to_thread_name = {} + + def _thread_to_xml(self, thread): + """Thread information as XML""" + name = pydevd_xml.make_valid_xml_value(thread.name) + cmd_text = '' % (quote(name), get_thread_id(thread)) + return cmd_text + + def make_error_message(self, seq, text): + cmd = NetCommand(CMD_ERROR, seq, text) + if DebugInfoHolder.DEBUG_TRACE_LEVEL > 2: + pydev_log.error("Error: %s" % (text,)) + return cmd + + def make_protocol_set_message(self, seq): + return NetCommand(CMD_SET_PROTOCOL, seq, "") + + def make_thread_created_message(self, thread): + cmdText = "" + self._thread_to_xml(thread) + "" + return NetCommand(CMD_THREAD_CREATE, 0, cmdText) + + def make_process_created_message(self): + cmdText = "" + return NetCommand(CMD_PROCESS_CREATED, 0, cmdText) + + def make_process_about_to_be_replaced_message(self): + return NULL_NET_COMMAND + + def make_show_cython_warning_message(self): + try: + return NetCommand(CMD_SHOW_CYTHON_WARNING, 0, "") + except: + return self.make_error_message(0, get_exception_traceback_str()) + + def make_custom_frame_created_message(self, frame_id, frame_description): + self._additional_thread_id_to_thread_name[frame_id] = frame_description + frame_description = pydevd_xml.make_valid_xml_value(frame_description) + return NetCommand( + CMD_THREAD_CREATE, + 0, + '' % (frame_description, frame_id), + ) + + def make_list_threads_message(self, py_db, seq): + """Returns thread listing as XML""" + try: + threads = get_non_pydevd_threads() + cmd_text = [""] + append = cmd_text.append + for thread in threads: + if is_thread_alive(thread): + append(self._thread_to_xml(thread)) + + for thread_id, thread_name in list( + self._additional_thread_id_to_thread_name.items() + ): + name = pydevd_xml.make_valid_xml_value(thread_name) + append('' % (quote(name), thread_id)) + + append("") + return NetCommand(CMD_RETURN, seq, "".join(cmd_text)) + except: + return self.make_error_message(seq, get_exception_traceback_str()) + + def make_get_thread_stack_message( + self, + py_db, + seq, + thread_id, + topmost_frame, + fmt, + must_be_suspended=False, + start_frame=0, + levels=0, + ): + """ + Returns thread stack as XML. + + :param must_be_suspended: If True and the thread is not suspended, returns None. + """ + try: + # If frame is None, the return is an empty frame list. + cmd_text = ['' % (thread_id,)] + + if topmost_frame is not None: + try: + # : :type suspended_frames_manager: SuspendedFramesManager + suspended_frames_manager = py_db.suspended_frames_manager + frames_list = suspended_frames_manager.get_frames_list(thread_id) + if frames_list is None: + # Could not find stack of suspended frame... + if must_be_suspended: + return None + else: + frames_list = ( + pydevd_frame_utils.create_frames_list_from_frame( + topmost_frame + ) + ) + + cmd_text.append(self.make_thread_stack_str(py_db, frames_list)) + finally: + topmost_frame = None + cmd_text.append("") + return NetCommand(CMD_GET_THREAD_STACK, seq, "".join(cmd_text)) + except: + return self.make_error_message(seq, get_exception_traceback_str()) + + def make_variable_changed_message(self, seq, payload): + # notify debugger that value was changed successfully + return NetCommand(CMD_RETURN, seq, payload) + + def make_warning_message(self, msg): + return self.make_io_message(msg, 2) + + def make_console_message(self, msg): + return self.make_io_message(msg, 2) + + def make_io_message(self, msg, ctx): + """ + @param msg: the message to pass to the debug server + @param ctx: 1 for stdio 2 for stderr + """ + try: + msg = pydevd_constants.as_str(msg) + + if len(msg) > MAX_IO_MSG_SIZE: + msg = msg[0:MAX_IO_MSG_SIZE] + msg += "..." + + msg = pydevd_xml.make_valid_xml_value(quote(msg, "/>_= ")) + return NetCommand( + str(CMD_WRITE_TO_CONSOLE), + 0, + '' % (msg, ctx), + ) + except: + return self.make_error_message(0, get_exception_traceback_str()) + + def make_version_message(self, seq): + try: + return NetCommand(CMD_VERSION, seq, VERSION_STRING) + except: + return self.make_error_message(seq, get_exception_traceback_str()) + + def make_thread_killed_message(self, tid): + self._additional_thread_id_to_thread_name.pop(tid, None) + try: + return NetCommand(CMD_THREAD_KILL, 0, str(tid)) + except: + return self.make_error_message(0, get_exception_traceback_str()) + + def _iter_visible_frames_info(self, py_db, frames_list, flatten_chained=False): + assert frames_list.__class__ == FramesList + is_chained = False + while True: + for frame in frames_list: + show_as_current_frame = frame is frames_list.current_frame + if frame.f_code is None: + pydev_log.info("Frame without f_code: %s", frame) + continue # IronPython sometimes does not have it! + + method_name = ( + frame.f_code.co_name + ) # method name (if in method) or ? if global + if method_name is None: + pydev_log.info("Frame without co_name: %s", frame) + continue # IronPython sometimes does not have it! + + if is_chained: + method_name = "[Chained Exc: %s] %s" % ( + frames_list.exc_desc, + method_name, + ) + + abs_path_real_path_and_base = ( + get_abs_path_real_path_and_base_from_frame(frame) + ) + if ( + py_db.get_file_type(frame, abs_path_real_path_and_base) + == py_db.PYDEV_FILE + ): + # Skip pydevd files. + frame = frame.f_back + continue + + frame_id = id(frame) + lineno = frames_list.frame_id_to_lineno.get(frame_id, frame.f_lineno) + line_col_info = frames_list.frame_id_to_line_col_info.get(frame_id) + + filename_in_utf8, lineno, changed = py_db.source_mapping.map_to_client( + abs_path_real_path_and_base[0], lineno + ) + ( + new_filename_in_utf8, + applied_mapping, + ) = pydevd_file_utils.map_file_to_client(filename_in_utf8) + applied_mapping = applied_mapping or changed + + yield ( + frame_id, + frame, + method_name, + abs_path_real_path_and_base[0], + new_filename_in_utf8, + lineno, + applied_mapping, + show_as_current_frame, + line_col_info, + ) + + if not flatten_chained: + break + + frames_list = frames_list.chained_frames_list + if frames_list is None or len(frames_list) == 0: + break + is_chained = True + + def make_thread_stack_str(self, py_db, frames_list): + assert frames_list.__class__ == FramesList + make_valid_xml_value = pydevd_xml.make_valid_xml_value + cmd_text_list = [] + append = cmd_text_list.append + + try: + for ( + frame_id, + frame, + method_name, + _original_filename, + filename_in_utf8, + lineno, + _applied_mapping, + _show_as_current_frame, + line_col_info, + ) in self._iter_visible_frames_info( + py_db, frames_list, flatten_chained=True + ): + # print("file is ", filename_in_utf8) + # print("line is ", lineno) + + # Note: variables are all gotten 'on-demand'. + append( + '' + % (quote(make_valid_xml_value(filename_in_utf8), "/>_= \t"), lineno) + ) + append("") + except: + pydev_log.exception() + + return "".join(cmd_text_list) + + def make_thread_suspend_str( + self, + py_db, + thread_id, + frames_list, + stop_reason=None, + message=None, + trace_suspend_type="trace", + ): + """ + :return tuple(str,str): + Returns tuple(thread_suspended_str, thread_stack_str). + + i.e.: + ( + ''' + + + + + + + ''' + , + ''' + + + ''' + ) + """ + assert frames_list.__class__ == FramesList + make_valid_xml_value = pydevd_xml.make_valid_xml_value + cmd_text_list = [] + append = cmd_text_list.append + + cmd_text_list.append("") + if message: + message = make_valid_xml_value(message) + + append('") + thread_stack_str = self.make_thread_stack_str(py_db, frames_list) + append(thread_stack_str) + append("") + + return "".join(cmd_text_list), thread_stack_str + + def make_thread_suspend_message( + self, + py_db, + thread_id, + frames_list, + stop_reason, + message, + trace_suspend_type, + thread, + additional_info, + ): + try: + thread_suspend_str, thread_stack_str = self.make_thread_suspend_str( + py_db, thread_id, frames_list, stop_reason, message, trace_suspend_type + ) + cmd = NetCommand(CMD_THREAD_SUSPEND, 0, thread_suspend_str) + cmd.thread_stack_str = thread_stack_str + cmd.thread_suspend_str = thread_suspend_str + return cmd + except: + return self.make_error_message(0, get_exception_traceback_str()) + + def make_thread_suspend_single_notification( + self, py_db, thread_id, thread, stop_reason + ): + try: + return NetCommand( + CMD_THREAD_SUSPEND_SINGLE_NOTIFICATION, + 0, + json.dumps({"thread_id": thread_id, "stop_reason": stop_reason}), + ) + except: + return self.make_error_message(0, get_exception_traceback_str()) + + def make_thread_resume_single_notification(self, thread_id): + try: + return NetCommand( + CMD_THREAD_RESUME_SINGLE_NOTIFICATION, + 0, + json.dumps({"thread_id": thread_id}), + ) + except: + return self.make_error_message(0, get_exception_traceback_str()) + + def make_thread_run_message(self, py_db, thread_id, reason): + try: + return NetCommand(CMD_THREAD_RUN, 0, "%s\t%s" % (thread_id, reason)) + except: + return self.make_error_message(0, get_exception_traceback_str()) + + def make_get_variable_message(self, seq, payload): + try: + return NetCommand(CMD_GET_VARIABLE, seq, payload) + except Exception: + return self.make_error_message(seq, get_exception_traceback_str()) + + def make_get_array_message(self, seq, payload): + try: + return NetCommand(CMD_GET_ARRAY, seq, payload) + except Exception: + return self.make_error_message(seq, get_exception_traceback_str()) + + def make_get_description_message(self, seq, payload): + try: + return NetCommand(CMD_GET_DESCRIPTION, seq, payload) + except Exception: + return self.make_error_message(seq, get_exception_traceback_str()) + + def make_get_frame_message(self, seq, payload): + try: + return NetCommand(CMD_GET_FRAME, seq, payload) + except Exception: + return self.make_error_message(seq, get_exception_traceback_str()) + + def make_evaluate_expression_message(self, seq, payload): + try: + return NetCommand(CMD_EVALUATE_EXPRESSION, seq, payload) + except Exception: + return self.make_error_message(seq, get_exception_traceback_str()) + + def make_get_completions_message(self, seq, completions, qualifier, start): + try: + payload = completions_to_xml(completions) + return NetCommand(CMD_GET_COMPLETIONS, seq, payload) + except Exception: + return self.make_error_message(seq, get_exception_traceback_str()) + + def make_get_file_contents(self, seq, payload): + try: + return NetCommand(CMD_GET_FILE_CONTENTS, seq, payload) + except Exception: + return self.make_error_message(seq, get_exception_traceback_str()) + + def make_reloaded_code_message(self, seq, reloaded_ok): + try: + return NetCommand( + CMD_RELOAD_CODE, + seq, + '' % reloaded_ok, + ) + except Exception: + return self.make_error_message(seq, get_exception_traceback_str()) + + def make_send_breakpoint_exception_message(self, seq, payload): + try: + return NetCommand(CMD_GET_BREAKPOINT_EXCEPTION, seq, payload) + except Exception: + return self.make_error_message(seq, get_exception_traceback_str()) + + def _make_send_curr_exception_trace_str( + self, py_db, thread_id, exc_type, exc_desc, trace_obj + ): + frames_list = pydevd_frame_utils.create_frames_list_from_traceback( + trace_obj, None, exc_type, exc_desc + ) + + exc_type = ( + pydevd_xml.make_valid_xml_value(str(exc_type)).replace("\t", " ") + or "exception: type unknown" + ) + exc_desc = ( + pydevd_xml.make_valid_xml_value(str(exc_desc)).replace("\t", " ") + or "exception: no description" + ) + + thread_suspend_str, thread_stack_str = self.make_thread_suspend_str( + py_db, thread_id, frames_list, CMD_SEND_CURR_EXCEPTION_TRACE, "" + ) + return exc_type, exc_desc, thread_suspend_str, thread_stack_str + + def make_send_curr_exception_trace_message( + self, py_db, seq, thread_id, curr_frame_id, exc_type, exc_desc, trace_obj + ): + try: + ( + exc_type, + exc_desc, + thread_suspend_str, + _thread_stack_str, + ) = self._make_send_curr_exception_trace_str( + py_db, thread_id, exc_type, exc_desc, trace_obj + ) + payload = ( + str(curr_frame_id) + + "\t" + + exc_type + + "\t" + + exc_desc + + "\t" + + thread_suspend_str + ) + return NetCommand(CMD_SEND_CURR_EXCEPTION_TRACE, seq, payload) + except Exception: + return self.make_error_message(seq, get_exception_traceback_str()) + + def make_get_exception_details_message(self, py_db, seq, thread_id, topmost_frame): + """Returns exception details as XML""" + try: + # If the debugger is not suspended, just return the thread and its id. + cmd_text = ['") + cmd_text.append(thread_stack_str) + break + frame = frame.f_back + else: + cmd_text.append(">") + finally: + frame = None + cmd_text.append("") + return NetCommand(CMD_GET_EXCEPTION_DETAILS, seq, "".join(cmd_text)) + except: + return self.make_error_message(seq, get_exception_traceback_str()) + + def make_send_curr_exception_trace_proceeded_message(self, seq, thread_id): + try: + return NetCommand( + CMD_SEND_CURR_EXCEPTION_TRACE_PROCEEDED, 0, str(thread_id) + ) + except: + return self.make_error_message(0, get_exception_traceback_str()) + + def make_send_console_message(self, seq, payload): + try: + return NetCommand(CMD_EVALUATE_CONSOLE_EXPRESSION, seq, payload) + except Exception: + return self.make_error_message(seq, get_exception_traceback_str()) + + def make_custom_operation_message(self, seq, payload): + try: + return NetCommand(CMD_RUN_CUSTOM_OPERATION, seq, payload) + except Exception: + return self.make_error_message(seq, get_exception_traceback_str()) + + def make_load_source_message(self, seq, source): + return NetCommand(CMD_LOAD_SOURCE, seq, source) + + def make_load_source_from_frame_id_message(self, seq, source): + return NetCommand(CMD_LOAD_SOURCE_FROM_FRAME_ID, seq, source) + + def make_show_console_message(self, py_db, thread_id, frame): + try: + frames_list = pydevd_frame_utils.create_frames_list_from_frame(frame) + thread_suspended_str, _thread_stack_str = self.make_thread_suspend_str( + py_db, thread_id, frames_list, CMD_SHOW_CONSOLE, "" + ) + return NetCommand(CMD_SHOW_CONSOLE, 0, thread_suspended_str) + except: + return self.make_error_message(0, get_exception_traceback_str()) + + def make_input_requested_message(self, started): + try: + return NetCommand(CMD_INPUT_REQUESTED, 0, str(started)) + except: + return self.make_error_message(0, get_exception_traceback_str()) + + def make_set_next_stmnt_status_message(self, seq, is_success, exception_msg): + try: + message = str(is_success) + "\t" + exception_msg + return NetCommand(CMD_SET_NEXT_STATEMENT, int(seq), message) + except: + return self.make_error_message(0, get_exception_traceback_str()) + + def make_load_full_value_message(self, seq, payload): + try: + return NetCommand(CMD_LOAD_FULL_VALUE, seq, payload) + except Exception: + return self.make_error_message(seq, get_exception_traceback_str()) + + def make_get_next_statement_targets_message(self, seq, payload): + try: + return NetCommand(CMD_GET_NEXT_STATEMENT_TARGETS, seq, payload) + except Exception: + return self.make_error_message(seq, get_exception_traceback_str()) + + def make_skipped_step_in_because_of_filters(self, py_db, frame): + return NULL_NET_COMMAND # Not a part of the xml protocol + + def make_evaluation_timeout_msg(self, py_db, expression, thread): + msg = """pydevd: Evaluating: %s did not finish after %.2f seconds. +This may mean a number of things: +- This evaluation is really slow and this is expected. + In this case it's possible to silence this error by raising the timeout, setting the + PYDEVD_WARN_EVALUATION_TIMEOUT environment variable to a bigger value. + +- The evaluation may need other threads running while it's running: + In this case, you may need to manually let other paused threads continue. + + Alternatively, it's also possible to skip breaking on a particular thread by setting a + `pydev_do_not_trace = True` attribute in the related threading.Thread instance + (if some thread should always be running and no breakpoints are expected to be hit in it). + +- The evaluation is deadlocked: + In this case you may set the PYDEVD_THREAD_DUMP_ON_WARN_EVALUATION_TIMEOUT + environment variable to true so that a thread dump is shown along with this message and + optionally, set the PYDEVD_INTERRUPT_THREAD_TIMEOUT to some value so that the debugger + tries to interrupt the evaluation (if possible) when this happens. +""" % (expression, pydevd_constants.PYDEVD_WARN_EVALUATION_TIMEOUT) + + if pydevd_constants.PYDEVD_THREAD_DUMP_ON_WARN_EVALUATION_TIMEOUT: + stream = StringIO() + pydevd_utils.dump_threads(stream, show_pydevd_threads=False) + msg += "\n\n%s\n" % stream.getvalue() + return self.make_warning_message(msg) + + def make_exit_command(self, py_db): + return NULL_EXIT_COMMAND diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_plugin_utils.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_plugin_utils.py new file mode 100644 index 000000000..a5cfc1ada --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_plugin_utils.py @@ -0,0 +1,223 @@ +import types +from typing import Literal, Tuple + +from _pydev_bundle import pydev_log + +try: + from pydevd_plugins import django_debug +except: + django_debug = None + pydev_log.debug("Unable to load django_debug plugin") + +try: + from pydevd_plugins import jinja2_debug +except: + jinja2_debug = None + pydev_log.debug("Unable to load jinja2_debug plugin") + + +def load_plugins(): + plugins = [] + if django_debug is not None: + plugins.append(django_debug) + + if jinja2_debug is not None: + plugins.append(jinja2_debug) + return plugins + + +def bind_func_to_method(func, obj, method_name): + bound_method = types.MethodType(func, obj) + + setattr(obj, method_name, bound_method) + return bound_method + + +class PluginManager: + EMPTY_SENTINEL = object() + + def __init__(self, main_debugger): + self.plugins = load_plugins() + + # When some breakpoint is added for a given plugin it becomes active. + self.active_plugins = [] + + self.main_debugger = main_debugger + + def add_breakpoint(self, func_name, *args, **kwargs): + # add breakpoint for plugin + for plugin in self.plugins: + if hasattr(plugin, func_name): + func = getattr(plugin, func_name) + result = func(*args, **kwargs) + if result: + self.activate(plugin) + return result + return None + + def activate(self, plugin): + if plugin not in self.active_plugins: + self.active_plugins.append(plugin) + + # These are not a part of the API, rather, `add_breakpoint` should be used with `add_line_breakpoint` or `add_exception_breakpoint` + # which will call it for all plugins and then if it's valid it'll be activated. + # + # def add_line_breakpoint(self, py_db, type, canonical_normalized_filename, breakpoint_id, line, condition, expression, func_name, hit_condition=None, is_logpoint=False, add_breakpoint_result=None, on_changed_breakpoint_state=None): + # def add_exception_breakpoint(plugin, py_db, type, exception): + + def after_breakpoints_consolidated( + self, + py_db, + canonical_normalized_filename, + id_to_pybreakpoint, + file_to_line_to_breakpoints, + ): + for plugin in self.active_plugins: + plugin.after_breakpoints_consolidated( + py_db, + canonical_normalized_filename, + id_to_pybreakpoint, + file_to_line_to_breakpoints, + ) + + def remove_exception_breakpoint(self, py_db, exception_type, exception): + """ + :param exception_type: 'django', 'jinja2' (can be extended) + """ + for plugin in self.active_plugins: + ret = plugin.remove_exception_breakpoint(py_db, exception_type, exception) + if ret: + return ret + + return None + + def remove_all_exception_breakpoints(self, py_db): + for plugin in self.active_plugins: + plugin.remove_all_exception_breakpoints(py_db) + + def get_breakpoints(self, py_db, breakpoint_type): + """ + :param breakpoint_type: 'django-line', 'jinja2-line' + """ + for plugin in self.active_plugins: + ret = plugin.get_breakpoints(py_db, breakpoint_type) + if ret: + return ret + + def can_skip(self, py_db, frame): + for plugin in self.active_plugins: + if not plugin.can_skip(py_db, frame): + return False + return True + + def required_events_breakpoint(self) -> Tuple[Literal["line", "call"], ...]: + ret = () + for plugin in self.active_plugins: + new = plugin.required_events_breakpoint() + if new: + ret += new + + return ret + + def required_events_stepping(self) -> Tuple[Literal["line", "call", "return"], ...]: + ret = () + for plugin in self.active_plugins: + new = plugin.required_events_stepping() + if new: + ret += new + + return ret + + def is_tracked_frame(self, frame) -> bool: + for plugin in self.active_plugins: + if plugin.is_tracked_frame(frame): + return True + return False + + def has_exception_breaks(self, py_db) -> bool: + for plugin in self.active_plugins: + if plugin.has_exception_breaks(py_db): + return True + return False + + def has_line_breaks(self, py_db) -> bool: + for plugin in self.active_plugins: + if plugin.has_line_breaks(py_db): + return True + return False + + def cmd_step_into(self, py_db, frame, event, info, thread, stop_info, stop: bool): + """ + :param stop_info: in/out information. If it should stop then it'll be + filled by the plugin. + :param stop: whether the stop has already been flagged for this frame. + :returns: + tuple(stop, plugin_stop) + """ + plugin_stop = False + for plugin in self.active_plugins: + stop, plugin_stop = plugin.cmd_step_into( + py_db, frame, event, info, thread, stop_info, stop + ) + if plugin_stop: + return stop, plugin_stop + return stop, plugin_stop + + def cmd_step_over(self, py_db, frame, event, info, thread, stop_info, stop): + plugin_stop = False + for plugin in self.active_plugins: + stop, plugin_stop = plugin.cmd_step_over( + py_db, frame, event, info, thread, stop_info, stop + ) + if plugin_stop: + return stop, plugin_stop + return stop, plugin_stop + + def stop(self, py_db, frame, event, thread, stop_info, arg, step_cmd): + """ + The way this works is that the `cmd_step_into` or `cmd_step_over` + is called which then fills the `stop_info` and then this method + is called to do the actual stop. + """ + for plugin in self.active_plugins: + stopped = plugin.stop(py_db, frame, event, thread, stop_info, arg, step_cmd) + if stopped: + return stopped + return False + + def get_breakpoint(self, py_db, frame, event, info): + for plugin in self.active_plugins: + ret = plugin.get_breakpoint(py_db, frame, event, info) + if ret: + return ret + return None + + def suspend(self, py_db, thread, frame, bp_type): + """ + :param bp_type: 'django' or 'jinja2' + + :return: + The frame for the suspend or None if it should not be suspended. + """ + for plugin in self.active_plugins: + ret = plugin.suspend(py_db, thread, frame, bp_type) + if ret is not None: + return ret + + return None + + def exception_break(self, py_db, frame, thread, arg, is_unwind=False): + for plugin in self.active_plugins: + ret = plugin.exception_break(py_db, frame, thread, arg, is_unwind) + if ret is not None: + return ret + + return None + + def change_variable(self, frame, attr, expression): + for plugin in self.active_plugins: + ret = plugin.change_variable(frame, attr, expression, self.EMPTY_SENTINEL) + if ret is not self.EMPTY_SENTINEL: + return ret + + return self.EMPTY_SENTINEL diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command.py new file mode 100644 index 000000000..d0b4f9ac2 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command.py @@ -0,0 +1,990 @@ +import json +import os +import sys +import traceback +from io import StringIO + +import pydevd_file_utils +from _pydev_bundle import pydev_log +from _pydev_bundle.pydev_log import exception as pydev_log_exception + +from _pydevd_bundle import pydevd_dont_trace, pydevd_traceproperty, pydevd_utils +from _pydevd_bundle.pydevd_additional_thread_info import set_additional_thread_info +from _pydevd_bundle.pydevd_api import PyDevdAPI +from _pydevd_bundle.pydevd_breakpoints import get_exception_class +from _pydevd_bundle.pydevd_comm import ( + InternalConsoleGetCompletions, + InternalEvaluateConsoleExpression, + InternalRunCustomOperation, + internal_get_next_statement_targets, + internal_get_smart_step_into_variants, +) +from _pydevd_bundle.pydevd_comm_constants import ( + CMD_AUTHENTICATE, + CMD_EXEC_EXPRESSION, + ID_TO_MEANING, +) +from _pydevd_bundle.pydevd_constants import IS_WINDOWS, NEXT_VALUE_SEPARATOR, NULL +from _pydevd_bundle.pydevd_net_command import NetCommand +from _pydevd_bundle.pydevd_thread_lifecycle import pydevd_find_thread_by_id + + +class _PyDevCommandProcessor: + def __init__(self): + self.api = PyDevdAPI() + + def process_net_command(self, py_db, cmd_id, seq, text): + """Processes a command received from the Java side + + @param cmd_id: the id of the command + @param seq: the sequence of the command + @param text: the text received in the command + """ + # We can only proceed if the client is already authenticated or if it's the + # command to authenticate. + if cmd_id != CMD_AUTHENTICATE and not py_db.authentication.is_authenticated(): + cmd = py_db.cmd_factory.make_error_message(seq, "Client not authenticated.") + py_db.writer.add_command(cmd) + return + + meaning = ID_TO_MEANING[str(cmd_id)] + + # print('Handling %s (%s)' % (meaning, text)) + + method_name = meaning.lower() + + on_command = getattr(self, method_name.lower(), None) + if on_command is None: + # I have no idea what this is all about + cmd = py_db.cmd_factory.make_error_message( + seq, "unexpected command " + str(cmd_id) + ) + py_db.writer.add_command(cmd) + return + + lock = py_db._main_lock + if method_name == "cmd_thread_dump_to_stderr": + # We can skip the main debugger locks for cases where we know it's not needed. + lock = NULL + + with lock: + try: + cmd = on_command(py_db, cmd_id, seq, text) + if cmd is not None: + py_db.writer.add_command(cmd) + except: + if ( + traceback is not None + and sys is not None + and pydev_log_exception is not None + ): + pydev_log_exception() + + stream = StringIO() + traceback.print_exc(file=stream) + cmd = py_db.cmd_factory.make_error_message( + seq, + "Unexpected exception in process_net_command.\nInitial params: %s. Exception: %s" + % (((cmd_id, seq, text), stream.getvalue())), + ) + if cmd is not None: + py_db.writer.add_command(cmd) + + def cmd_authenticate(self, py_db, cmd_id, seq, text): + access_token = text + py_db.authentication.login(access_token) + if py_db.authentication.is_authenticated(): + return NetCommand(cmd_id, seq, py_db.authentication.client_access_token) + + return py_db.cmd_factory.make_error_message(seq, "Client not authenticated.") + + def cmd_run(self, py_db, cmd_id, seq, text): + return self.api.run(py_db) + + def cmd_list_threads(self, py_db, cmd_id, seq, text): + return self.api.list_threads(py_db, seq) + + def cmd_get_completions(self, py_db, cmd_id, seq, text): + # we received some command to get a variable + # the text is: thread_id\tframe_id\tactivation token + thread_id, frame_id, _scope, act_tok = text.split("\t", 3) + + return self.api.request_completions(py_db, seq, thread_id, frame_id, act_tok) + + def cmd_get_thread_stack(self, py_db, cmd_id, seq, text): + # Receives a thread_id and a given timeout, which is the time we should + # wait to the provide the stack if a given thread is still not suspended. + if "\t" in text: + thread_id, timeout = text.split("\t") + timeout = float(timeout) + else: + thread_id = text + timeout = 0.5 # Default timeout is .5 seconds + + return self.api.request_stack(py_db, seq, thread_id, fmt={}, timeout=timeout) + + def cmd_set_protocol(self, py_db, cmd_id, seq, text): + return self.api.set_protocol(py_db, seq, text.strip()) + + def cmd_thread_suspend(self, py_db, cmd_id, seq, text): + return self.api.request_suspend_thread(py_db, text.strip()) + + def cmd_version(self, py_db, cmd_id, seq, text): + # Default based on server process (although ideally the IDE should + # provide it). + if IS_WINDOWS: + ide_os = "WINDOWS" + else: + ide_os = "UNIX" + + # Breakpoints can be grouped by 'LINE' or by 'ID'. + breakpoints_by = "LINE" + + splitted = text.split("\t") + if len(splitted) == 1: + _local_version = splitted + + elif len(splitted) == 2: + _local_version, ide_os = splitted + + elif len(splitted) == 3: + _local_version, ide_os, breakpoints_by = splitted + + version_msg = self.api.set_ide_os_and_breakpoints_by( + py_db, seq, ide_os, breakpoints_by + ) + + # Enable thread notifications after the version command is completed. + self.api.set_enable_thread_notifications(py_db, True) + + return version_msg + + def cmd_thread_run(self, py_db, cmd_id, seq, text): + return self.api.request_resume_thread(text.strip()) + + def _cmd_step(self, py_db, cmd_id, seq, text): + return self.api.request_step(py_db, text.strip(), cmd_id) + + cmd_step_into = _cmd_step + cmd_step_into_my_code = _cmd_step + cmd_step_over = _cmd_step + cmd_step_over_my_code = _cmd_step + cmd_step_return = _cmd_step + cmd_step_return_my_code = _cmd_step + + def _cmd_set_next(self, py_db, cmd_id, seq, text): + thread_id, line, func_name = text.split("\t", 2) + return self.api.request_set_next( + py_db, seq, thread_id, cmd_id, None, line, func_name + ) + + cmd_run_to_line = _cmd_set_next + cmd_set_next_statement = _cmd_set_next + + def cmd_smart_step_into(self, py_db, cmd_id, seq, text): + thread_id, line_or_bytecode_offset, func_name = text.split("\t", 2) + if line_or_bytecode_offset.startswith("offset="): + # In this case we request the smart step into to stop given the parent frame + # and the location of the parent frame bytecode offset and not just the func_name + # (this implies that `CMD_GET_SMART_STEP_INTO_VARIANTS` was previously used + # to know what are the valid stop points). + + temp = line_or_bytecode_offset[len("offset=") :] + if ";" in temp: + offset, child_offset = temp.split(";") + offset = int(offset) + child_offset = int(child_offset) + else: + child_offset = -1 + offset = int(temp) + return self.api.request_smart_step_into( + py_db, seq, thread_id, offset, child_offset + ) + else: + # If the offset wasn't passed, just use the line/func_name to do the stop. + return self.api.request_smart_step_into_by_func_name( + py_db, seq, thread_id, line_or_bytecode_offset, func_name + ) + + def cmd_reload_code(self, py_db, cmd_id, seq, text): + text = text.strip() + if "\t" not in text: + module_name = text.strip() + filename = None + else: + module_name, filename = text.split("\t", 1) + self.api.request_reload_code(py_db, seq, module_name, filename) + + def cmd_change_variable(self, py_db, cmd_id, seq, text): + # the text is: thread\tstackframe\tFRAME|GLOBAL\tattribute_to_change\tvalue_to_change + thread_id, frame_id, scope, attr_and_value = text.split("\t", 3) + + tab_index = attr_and_value.rindex("\t") + attr = attr_and_value[0:tab_index].replace("\t", ".") + value = attr_and_value[tab_index + 1 :] + self.api.request_change_variable( + py_db, seq, thread_id, frame_id, scope, attr, value + ) + + def cmd_get_variable(self, py_db, cmd_id, seq, text): + # we received some command to get a variable + # the text is: thread_id\tframe_id\tFRAME|GLOBAL\tattributes* + thread_id, frame_id, scopeattrs = text.split("\t", 2) + + if scopeattrs.find("\t") != -1: # there are attributes beyond scope + scope, attrs = scopeattrs.split("\t", 1) + else: + scope, attrs = (scopeattrs, None) + + self.api.request_get_variable(py_db, seq, thread_id, frame_id, scope, attrs) + + def cmd_get_array(self, py_db, cmd_id, seq, text): + # Note: untested and unused in pydev + # we received some command to get an array variable + # the text is: thread_id\tframe_id\tFRAME|GLOBAL\tname\ttemp\troffs\tcoffs\trows\tcols\tformat + ( + roffset, + coffset, + rows, + cols, + format, + thread_id, + frame_id, + scopeattrs, + ) = text.split("\t", 7) + + if scopeattrs.find("\t") != -1: # there are attributes beyond scope + scope, attrs = scopeattrs.split("\t", 1) + else: + scope, attrs = (scopeattrs, None) + + self.api.request_get_array( + py_db, + seq, + roffset, + coffset, + rows, + cols, + format, + thread_id, + frame_id, + scope, + attrs, + ) + + def cmd_show_return_values(self, py_db, cmd_id, seq, text): + show_return_values = text.split("\t")[1] + self.api.set_show_return_values(py_db, int(show_return_values) == 1) + + def cmd_load_full_value(self, py_db, cmd_id, seq, text): + # Note: untested and unused in pydev + thread_id, frame_id, scopeattrs = text.split("\t", 2) + vars = scopeattrs.split(NEXT_VALUE_SEPARATOR) + + self.api.request_load_full_value(py_db, seq, thread_id, frame_id, vars) + + def cmd_get_description(self, py_db, cmd_id, seq, text): + # Note: untested and unused in pydev + thread_id, frame_id, expression = text.split("\t", 2) + self.api.request_get_description(py_db, seq, thread_id, frame_id, expression) + + def cmd_get_frame(self, py_db, cmd_id, seq, text): + thread_id, frame_id, scope = text.split("\t", 2) + self.api.request_get_frame(py_db, seq, thread_id, frame_id) + + def cmd_set_break(self, py_db, cmd_id, seq, text): + # func name: 'None': match anything. Empty: match global, specified: only method context. + # command to add some breakpoint. + # text is filename\tline. Add to breakpoints dictionary + suspend_policy = "NONE" # Can be 'NONE' or 'ALL' + is_logpoint = False + hit_condition = None + if py_db._set_breakpoints_with_id: + try: + try: + ( + breakpoint_id, + btype, + filename, + line, + func_name, + condition, + expression, + hit_condition, + is_logpoint, + suspend_policy, + ) = text.split("\t", 9) + except ValueError: # not enough values to unpack + # No suspend_policy passed (use default). + ( + breakpoint_id, + btype, + filename, + line, + func_name, + condition, + expression, + hit_condition, + is_logpoint, + ) = text.split("\t", 8) + is_logpoint = is_logpoint == "True" + except ValueError: # not enough values to unpack + ( + breakpoint_id, + btype, + filename, + line, + func_name, + condition, + expression, + ) = text.split("\t", 6) + + breakpoint_id = int(breakpoint_id) + line = int(line) + + # We must restore new lines and tabs as done in + # AbstractDebugTarget.breakpointAdded + condition = ( + condition.replace("@_@NEW_LINE_CHAR@_@", "\n") + .replace("@_@TAB_CHAR@_@", "\t") + .strip() + ) + + expression = ( + expression.replace("@_@NEW_LINE_CHAR@_@", "\n") + .replace("@_@TAB_CHAR@_@", "\t") + .strip() + ) + else: + # Note: this else should be removed after PyCharm migrates to setting + # breakpoints by id (and ideally also provides func_name). + ( + btype, + filename, + line, + func_name, + suspend_policy, + condition, + expression, + ) = text.split("\t", 6) + # If we don't have an id given for each breakpoint, consider + # the id to be the line. + breakpoint_id = line = int(line) + + condition = ( + condition.replace("@_@NEW_LINE_CHAR@_@", "\n") + .replace("@_@TAB_CHAR@_@", "\t") + .strip() + ) + + expression = ( + expression.replace("@_@NEW_LINE_CHAR@_@", "\n") + .replace("@_@TAB_CHAR@_@", "\t") + .strip() + ) + + if condition is not None and (len(condition) <= 0 or condition == "None"): + condition = None + + if expression is not None and (len(expression) <= 0 or expression == "None"): + expression = None + + if hit_condition is not None and ( + len(hit_condition) <= 0 or hit_condition == "None" + ): + hit_condition = None + + def on_changed_breakpoint_state(breakpoint_id, add_breakpoint_result): + error_code = add_breakpoint_result.error_code + + translated_line = add_breakpoint_result.translated_line + translated_filename = add_breakpoint_result.translated_filename + msg = "" + if error_code: + if error_code == self.api.ADD_BREAKPOINT_FILE_NOT_FOUND: + msg = ( + "pydev debugger: Trying to add breakpoint to file that does not exist: %s (will have no effect).\n" + % (translated_filename,) + ) + + elif error_code == self.api.ADD_BREAKPOINT_FILE_EXCLUDED_BY_FILTERS: + msg = ( + "pydev debugger: Trying to add breakpoint to file that is excluded by filters: %s (will have no effect).\n" + % (translated_filename,) + ) + + elif error_code == self.api.ADD_BREAKPOINT_LAZY_VALIDATION: + msg = "" # Ignore this here (if/when loaded, it'll call on_changed_breakpoint_state again accordingly). + + elif error_code == self.api.ADD_BREAKPOINT_INVALID_LINE: + msg = ( + "pydev debugger: Trying to add breakpoint to line (%s) that is not valid in: %s.\n" + % ( + translated_line, + translated_filename, + ) + ) + + else: + # Shouldn't get here. + msg = ( + "pydev debugger: Breakpoint not validated (reason unknown -- please report as error): %s (%s).\n" + % ( + translated_filename, + translated_line, + ) + ) + + else: + if add_breakpoint_result.original_line != translated_line: + msg = ( + "pydev debugger (info): Breakpoint in line: %s moved to line: %s (in %s).\n" + % ( + add_breakpoint_result.original_line, + translated_line, + translated_filename, + ) + ) + + if msg: + py_db.writer.add_command(py_db.cmd_factory.make_warning_message(msg)) + + result = self.api.add_breakpoint( + py_db, + self.api.filename_to_str(filename), + btype, + breakpoint_id, + line, + condition, + func_name, + expression, + suspend_policy, + hit_condition, + is_logpoint, + on_changed_breakpoint_state=on_changed_breakpoint_state, + ) + + on_changed_breakpoint_state(breakpoint_id, result) + + def cmd_remove_break(self, py_db, cmd_id, seq, text): + # command to remove some breakpoint + # text is type\file\tid. Remove from breakpoints dictionary + breakpoint_type, filename, breakpoint_id = text.split("\t", 2) + + filename = self.api.filename_to_str(filename) + + try: + breakpoint_id = int(breakpoint_id) + except ValueError: + pydev_log.critical( + "Error removing breakpoint. Expected breakpoint_id to be an int. Found: %s", + breakpoint_id, + ) + + else: + self.api.remove_breakpoint(py_db, filename, breakpoint_type, breakpoint_id) + + def _cmd_exec_or_evaluate_expression(self, py_db, cmd_id, seq, text): + # command to evaluate the given expression + # text is: thread\tstackframe\tLOCAL\texpression + attr_to_set_result = "" + try: + ( + thread_id, + frame_id, + scope, + expression, + trim, + attr_to_set_result, + ) = text.split("\t", 5) + except ValueError: + thread_id, frame_id, scope, expression, trim = text.split("\t", 4) + is_exec = cmd_id == CMD_EXEC_EXPRESSION + trim_if_too_big = int(trim) == 1 + + self.api.request_exec_or_evaluate( + py_db, + seq, + thread_id, + frame_id, + expression, + is_exec, + trim_if_too_big, + attr_to_set_result, + ) + + cmd_evaluate_expression = _cmd_exec_or_evaluate_expression + cmd_exec_expression = _cmd_exec_or_evaluate_expression + + def cmd_console_exec(self, py_db, cmd_id, seq, text): + # command to exec expression in console, in case expression is only partially valid 'False' is returned + # text is: thread\tstackframe\tLOCAL\texpression + + thread_id, frame_id, scope, expression = text.split("\t", 3) + self.api.request_console_exec(py_db, seq, thread_id, frame_id, expression) + + def cmd_set_path_mapping_json(self, py_db, cmd_id, seq, text): + """ + :param text: + Json text. Something as: + + { + "pathMappings": [ + { + "localRoot": "c:/temp", + "remoteRoot": "/usr/temp" + } + ], + "debug": true, + "force": false + } + """ + as_json = json.loads(text) + force = as_json.get("force", False) + + path_mappings = [] + for pathMapping in as_json.get("pathMappings", []): + localRoot = pathMapping.get("localRoot", "") + remoteRoot = pathMapping.get("remoteRoot", "") + if (localRoot != "") and (remoteRoot != ""): + path_mappings.append((localRoot, remoteRoot)) + + if bool(path_mappings) or force: + pydevd_file_utils.setup_client_server_paths(path_mappings) + + debug = as_json.get("debug", False) + if debug or force: + pydevd_file_utils.DEBUG_CLIENT_SERVER_TRANSLATION = debug + + def cmd_set_py_exception_json(self, py_db, cmd_id, seq, text): + # This API is optional and works 'in bulk' -- it's possible + # to get finer-grained control with CMD_ADD_EXCEPTION_BREAK/CMD_REMOVE_EXCEPTION_BREAK + # which allows setting caught/uncaught per exception, although global settings such as: + # - skip_on_exceptions_thrown_in_same_context + # - ignore_exceptions_thrown_in_lines_with_ignore_exception + # must still be set through this API (before anything else as this clears all existing + # exception breakpoints). + try: + py_db.break_on_uncaught_exceptions = {} + py_db.break_on_caught_exceptions = {} + py_db.break_on_user_uncaught_exceptions = {} + + as_json = json.loads(text) + break_on_uncaught = as_json.get("break_on_uncaught", False) + break_on_caught = as_json.get("break_on_caught", False) + break_on_user_caught = as_json.get("break_on_user_caught", False) + py_db.skip_on_exceptions_thrown_in_same_context = as_json.get( + "skip_on_exceptions_thrown_in_same_context", False + ) + py_db.ignore_exceptions_thrown_in_lines_with_ignore_exception = as_json.get( + "ignore_exceptions_thrown_in_lines_with_ignore_exception", False + ) + ignore_libraries = as_json.get("ignore_libraries", False) + exception_types = as_json.get("exception_types", []) + + for exception_type in exception_types: + if not exception_type: + continue + + py_db.add_break_on_exception( + exception_type, + condition=None, + expression=None, + notify_on_handled_exceptions=break_on_caught, + notify_on_unhandled_exceptions=break_on_uncaught, + notify_on_user_unhandled_exceptions=break_on_user_caught, + notify_on_first_raise_only=True, + ignore_libraries=ignore_libraries, + ) + + py_db.on_breakpoints_changed() + except: + pydev_log.exception("Error when setting exception list. Received: %s", text) + + def cmd_set_py_exception(self, py_db, cmd_id, seq, text): + # DEPRECATED. Use cmd_set_py_exception_json instead. + try: + splitted = text.split(";") + py_db.break_on_uncaught_exceptions = {} + py_db.break_on_caught_exceptions = {} + py_db.break_on_user_uncaught_exceptions = {} + if len(splitted) >= 5: + if splitted[0] == "true": + break_on_uncaught = True + else: + break_on_uncaught = False + + if splitted[1] == "true": + break_on_caught = True + else: + break_on_caught = False + + if splitted[2] == "true": + py_db.skip_on_exceptions_thrown_in_same_context = True + else: + py_db.skip_on_exceptions_thrown_in_same_context = False + + if splitted[3] == "true": + py_db.ignore_exceptions_thrown_in_lines_with_ignore_exception = True + else: + py_db.ignore_exceptions_thrown_in_lines_with_ignore_exception = ( + False + ) + + if splitted[4] == "true": + ignore_libraries = True + else: + ignore_libraries = False + + for exception_type in splitted[5:]: + exception_type = exception_type.strip() + if not exception_type: + continue + + py_db.add_break_on_exception( + exception_type, + condition=None, + expression=None, + notify_on_handled_exceptions=break_on_caught, + notify_on_unhandled_exceptions=break_on_uncaught, + notify_on_user_unhandled_exceptions=False, # TODO (not currently supported in this API). + notify_on_first_raise_only=True, + ignore_libraries=ignore_libraries, + ) + else: + pydev_log.exception( + "Expected to have at least 5 ';' separated items. Received: %s", + text, + ) + + except: + pydev_log.exception("Error when setting exception list. Received: %s", text) + + def _load_source(self, py_db, cmd_id, seq, text): + filename = text + filename = self.api.filename_to_str(filename) + self.api.request_load_source(py_db, seq, filename) + + cmd_load_source = _load_source + cmd_get_file_contents = _load_source + + def cmd_load_source_from_frame_id(self, py_db, cmd_id, seq, text): + frame_id = text + self.api.request_load_source_from_frame_id(py_db, seq, frame_id) + + def cmd_set_property_trace(self, py_db, cmd_id, seq, text): + # Command which receives whether to trace property getter/setter/deleter + # text is feature_state(true/false);disable_getter/disable_setter/disable_deleter + if text: + splitted = text.split(";") + if len(splitted) >= 3: + if not py_db.disable_property_trace and splitted[0] == "true": + # Replacing property by custom property only when the debugger starts + pydevd_traceproperty.replace_builtin_property() + py_db.disable_property_trace = True + # Enable/Disable tracing of the property getter + if splitted[1] == "true": + py_db.disable_property_getter_trace = True + else: + py_db.disable_property_getter_trace = False + # Enable/Disable tracing of the property setter + if splitted[2] == "true": + py_db.disable_property_setter_trace = True + else: + py_db.disable_property_setter_trace = False + # Enable/Disable tracing of the property deleter + if splitted[3] == "true": + py_db.disable_property_deleter_trace = True + else: + py_db.disable_property_deleter_trace = False + + def cmd_add_exception_break(self, py_db, cmd_id, seq, text): + # Note that this message has some idiosyncrasies... + # + # notify_on_handled_exceptions can be 0, 1 or 2 + # 0 means we should not stop on handled exceptions. + # 1 means we should stop on handled exceptions showing it on all frames where the exception passes. + # 2 means we should stop on handled exceptions but we should only notify about it once. + # + # To ignore_libraries properly, besides setting ignore_libraries to 1, the IDE_PROJECT_ROOTS environment + # variable must be set (so, we'll ignore anything not below IDE_PROJECT_ROOTS) -- this is not ideal as + # the environment variable may not be properly set if it didn't start from the debugger (we should + # create a custom message for that). + # + # There are 2 global settings which can only be set in CMD_SET_PY_EXCEPTION. Namely: + # + # py_db.skip_on_exceptions_thrown_in_same_context + # - If True, we should only show the exception in a caller, not where it was first raised. + # + # py_db.ignore_exceptions_thrown_in_lines_with_ignore_exception + # - If True exceptions thrown in lines with '@IgnoreException' will not be shown. + + condition = "" + expression = "" + if text.find("\t") != -1: + try: + ( + exception, + condition, + expression, + notify_on_handled_exceptions, + notify_on_unhandled_exceptions, + ignore_libraries, + ) = text.split("\t", 5) + except: + ( + exception, + notify_on_handled_exceptions, + notify_on_unhandled_exceptions, + ignore_libraries, + ) = text.split("\t", 3) + else: + ( + exception, + notify_on_handled_exceptions, + notify_on_unhandled_exceptions, + ignore_libraries, + ) = text, 0, 0, 0 + + condition = ( + condition.replace("@_@NEW_LINE_CHAR@_@", "\n") + .replace("@_@TAB_CHAR@_@", "\t") + .strip() + ) + + if condition is not None and (len(condition) == 0 or condition == "None"): + condition = None + + expression = ( + expression.replace("@_@NEW_LINE_CHAR@_@", "\n") + .replace("@_@TAB_CHAR@_@", "\t") + .strip() + ) + + if expression is not None and (len(expression) == 0 or expression == "None"): + expression = None + + if exception.find("-") != -1: + breakpoint_type, exception = exception.split("-") + else: + breakpoint_type = "python" + + if breakpoint_type == "python": + self.api.add_python_exception_breakpoint( + py_db, + exception, + condition, + expression, + notify_on_handled_exceptions=int(notify_on_handled_exceptions) > 0, + notify_on_unhandled_exceptions=int(notify_on_unhandled_exceptions) == 1, + notify_on_user_unhandled_exceptions=0, # TODO (not currently supported in this API). + notify_on_first_raise_only=int(notify_on_handled_exceptions) == 2, + ignore_libraries=int(ignore_libraries) > 0, + ) + else: + self.api.add_plugins_exception_breakpoint(py_db, breakpoint_type, exception) + + def cmd_remove_exception_break(self, py_db, cmd_id, seq, text): + exception = text + if exception.find("-") != -1: + exception_type, exception = exception.split("-") + else: + exception_type = "python" + + if exception_type == "python": + self.api.remove_python_exception_breakpoint(py_db, exception) + else: + self.api.remove_plugins_exception_breakpoint( + py_db, exception_type, exception + ) + + def cmd_add_django_exception_break(self, py_db, cmd_id, seq, text): + self.api.add_plugins_exception_breakpoint( + py_db, breakpoint_type="django", exception=text + ) + + def cmd_remove_django_exception_break(self, py_db, cmd_id, seq, text): + self.api.remove_plugins_exception_breakpoint( + py_db, exception_type="django", exception=text + ) + + def cmd_evaluate_console_expression(self, py_db, cmd_id, seq, text): + # Command which takes care for the debug console communication + if text != "": + thread_id, frame_id, console_command = text.split("\t", 2) + console_command, line = console_command.split("\t") + + if console_command == "EVALUATE": + int_cmd = InternalEvaluateConsoleExpression( + seq, thread_id, frame_id, line, buffer_output=True + ) + + elif console_command == "EVALUATE_UNBUFFERED": + int_cmd = InternalEvaluateConsoleExpression( + seq, thread_id, frame_id, line, buffer_output=False + ) + + elif console_command == "GET_COMPLETIONS": + int_cmd = InternalConsoleGetCompletions(seq, thread_id, frame_id, line) + + else: + raise ValueError("Unrecognized command: %s" % (console_command,)) + + py_db.post_internal_command(int_cmd, thread_id) + + def cmd_run_custom_operation(self, py_db, cmd_id, seq, text): + # Command which runs a custom operation + if text != "": + try: + location, custom = text.split("||", 1) + except: + sys.stderr.write( + "Custom operation now needs a || separator. Found: %s\n" % (text,) + ) + raise + + thread_id, frame_id, scopeattrs = location.split("\t", 2) + + if scopeattrs.find("\t") != -1: # there are attributes beyond scope + scope, attrs = scopeattrs.split("\t", 1) + else: + scope, attrs = (scopeattrs, None) + + # : style: EXECFILE or EXEC + # : encoded_code_or_file: file to execute or code + # : fname: name of function to be executed in the resulting namespace + style, encoded_code_or_file, fnname = custom.split("\t", 3) + int_cmd = InternalRunCustomOperation( + seq, + thread_id, + frame_id, + scope, + attrs, + style, + encoded_code_or_file, + fnname, + ) + py_db.post_internal_command(int_cmd, thread_id) + + def cmd_ignore_thrown_exception_at(self, py_db, cmd_id, seq, text): + if text: + replace = "REPLACE:" # Not all 3.x versions support u'REPLACE:', so, doing workaround. + if text.startswith(replace): + text = text[8:] + py_db.filename_to_lines_where_exceptions_are_ignored.clear() + + if text: + for line in text.split("||"): # Can be bulk-created (one in each line) + original_filename, line_number = line.split("|") + original_filename = self.api.filename_to_server(original_filename) + + canonical_normalized_filename = ( + pydevd_file_utils.canonical_normalized_path(original_filename) + ) + absolute_filename = pydevd_file_utils.absolute_path( + original_filename + ) + + if os.path.exists(absolute_filename): + lines_ignored = ( + py_db.filename_to_lines_where_exceptions_are_ignored.get( + canonical_normalized_filename + ) + ) + if lines_ignored is None: + lines_ignored = py_db.filename_to_lines_where_exceptions_are_ignored[ + canonical_normalized_filename + ] = {} + lines_ignored[int(line_number)] = 1 + else: + sys.stderr.write( + "pydev debugger: warning: trying to ignore exception thrown" + " on file that does not exist: %s (will have no effect)\n" + % (absolute_filename,) + ) + + def cmd_enable_dont_trace(self, py_db, cmd_id, seq, text): + if text: + true_str = ( + "true" # Not all 3.x versions support u'str', so, doing workaround. + ) + mode = text.strip() == true_str + pydevd_dont_trace.trace_filter(mode) + + def cmd_redirect_output(self, py_db, cmd_id, seq, text): + if text: + py_db.enable_output_redirection("STDOUT" in text, "STDERR" in text) + + def cmd_get_next_statement_targets(self, py_db, cmd_id, seq, text): + thread_id, frame_id = text.split("\t", 1) + + py_db.post_method_as_internal_command( + thread_id, internal_get_next_statement_targets, seq, thread_id, frame_id + ) + + def cmd_get_smart_step_into_variants(self, py_db, cmd_id, seq, text): + thread_id, frame_id, start_line, end_line = text.split("\t", 3) + + py_db.post_method_as_internal_command( + thread_id, + internal_get_smart_step_into_variants, + seq, + thread_id, + frame_id, + start_line, + end_line, + set_additional_thread_info=set_additional_thread_info, + ) + + def cmd_set_project_roots(self, py_db, cmd_id, seq, text): + self.api.set_project_roots(py_db, text.split("\t")) + + def cmd_thread_dump_to_stderr(self, py_db, cmd_id, seq, text): + pydevd_utils.dump_threads() + + def cmd_stop_on_start(self, py_db, cmd_id, seq, text): + if text.strip() in ("True", "true", "1"): + self.api.stop_on_entry() + + def cmd_pydevd_json_config(self, py_db, cmd_id, seq, text): + # Expected to receive a json string as: + # { + # 'skip_suspend_on_breakpoint_exception': [], + # 'skip_print_breakpoint_exception': [], + # 'multi_threads_single_notification': bool, + # } + msg = json.loads(text.strip()) + if "skip_suspend_on_breakpoint_exception" in msg: + py_db.skip_suspend_on_breakpoint_exception = tuple( + get_exception_class(x) + for x in msg["skip_suspend_on_breakpoint_exception"] + ) + + if "skip_print_breakpoint_exception" in msg: + py_db.skip_print_breakpoint_exception = tuple( + get_exception_class(x) for x in msg["skip_print_breakpoint_exception"] + ) + + if "multi_threads_single_notification" in msg: + py_db.multi_threads_single_notification = msg[ + "multi_threads_single_notification" + ] + + def cmd_get_exception_details(self, py_db, cmd_id, seq, text): + thread_id = text + t = pydevd_find_thread_by_id(thread_id) + frame = None + if t is not None and not getattr(t, "pydev_do_not_trace", None): + additional_info = set_additional_thread_info(t) + frame = additional_info.get_topmost_frame(t) + try: + # Note: provide the return even if the thread is empty. + return py_db.cmd_factory.make_get_exception_details_message( + py_db, seq, thread_id, frame + ) + finally: + frame = None + t = None + + +process_net_command = _PyDevCommandProcessor().process_net_command diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command_json.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command_json.py new file mode 100644 index 000000000..77956d045 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command_json.py @@ -0,0 +1,1616 @@ +import itertools +import json +import linecache +import os +import platform +import sys +from functools import partial + +import pydevd_file_utils +from _pydev_bundle import pydev_log +from _pydevd_frame_eval.pydevd_frame_eval_main import USING_FRAME_EVAL + +from _pydevd_bundle._debug_adapter import pydevd_base_schema, pydevd_schema +from _pydevd_bundle._debug_adapter.pydevd_schema import ( + BreakpointEvent, + BreakpointEventBody, + Capabilities, + CompletionsResponseBody, + EvaluateResponseBody, + ExceptionOptions, + GotoTargetsResponseBody, + InitializedEvent, + ModulesResponseBody, + ProcessEvent, + ProcessEventBody, + PydevdAuthorizeRequest, + Request, + Response, + Scope, + ScopesResponseBody, + SetBreakpointsResponseBody, + SetExpressionResponseBody, + SetFunctionBreakpointsResponseBody, + SetVariableResponseBody, + SourceBreakpoint, + SourceResponseBody, + StepInTargetsResponseBody, + VariablesResponseBody, +) +from _pydevd_bundle.pydevd_additional_thread_info import set_additional_thread_info +from _pydevd_bundle.pydevd_api import PyDevdAPI +from _pydevd_bundle.pydevd_breakpoints import FunctionBreakpoint, get_exception_class +from _pydevd_bundle.pydevd_comm import internal_get_step_in_targets_json +from _pydevd_bundle.pydevd_comm_constants import ( + CMD_PROCESS_EVENT, + CMD_RETURN, + CMD_SET_NEXT_STATEMENT, + CMD_STEP_INTO, + CMD_STEP_INTO_MY_CODE, + CMD_STEP_OVER, + CMD_STEP_OVER_MY_CODE, + CMD_STEP_RETURN, + CMD_STEP_RETURN_MY_CODE, + file_system_encoding, +) +from _pydevd_bundle.pydevd_constants import ( + IS_64BIT_PROCESS, + PY_IMPL_NAME, + PY_IMPL_VERSION_STR, + PY_VERSION_STR, + DebugInfoHolder, +) +from _pydevd_bundle.pydevd_filtering import ExcludeFilter +from _pydevd_bundle.pydevd_json_debug_options import ( + DebugOptions, + _extract_debug_options, +) +from _pydevd_bundle.pydevd_net_command import NetCommand +from _pydevd_bundle.pydevd_thread_lifecycle import pydevd_find_thread_by_id +from _pydevd_bundle.pydevd_trace_dispatch import USING_CYTHON +from _pydevd_bundle.pydevd_utils import ( + ScopeRequest, + convert_dap_log_message_to_expression, +) + + +def _convert_rules_to_exclude_filters(rules, on_error): + exclude_filters = [] + if not isinstance(rules, list): + on_error('Invalid "rules" (expected list of dicts). Found: %s' % (rules,)) + + else: + directory_exclude_filters = [] + module_exclude_filters = [] + glob_exclude_filters = [] + + for rule in rules: + if not isinstance(rule, dict): + on_error( + 'Invalid "rules" (expected list of dicts). Found: %s' % (rules,) + ) + continue + + include = rule.get("include") + if include is None: + on_error( + 'Invalid "rule" (expected dict with "include"). Found: %s' % (rule,) + ) + continue + + path = rule.get("path") + module = rule.get("module") + if path is None and module is None: + on_error( + 'Invalid "rule" (expected dict with "path" or "module"). Found: %s' + % (rule,) + ) + continue + + if path is not None: + glob_pattern = path + if "*" not in path and "?" not in path: + if os.path.isdir(glob_pattern): + # If a directory was specified, add a '/**' + # to be consistent with the glob pattern required + # by pydevd. + if not glob_pattern.endswith("/") and not glob_pattern.endswith( + "\\" + ): + glob_pattern += "/" + glob_pattern += "**" + directory_exclude_filters.append( + ExcludeFilter(glob_pattern, not include, True) + ) + else: + glob_exclude_filters.append( + ExcludeFilter(glob_pattern, not include, True) + ) + + elif module is not None: + module_exclude_filters.append(ExcludeFilter(module, not include, False)) + + else: + on_error("Internal error: expected path or module to be specified.") + + # Note that we have to sort the directory/module exclude filters so that the biggest + # paths match first. + # i.e.: if we have: + # /sub1/sub2/sub3 + # a rule with /sub1/sub2 would match before a rule only with /sub1. + directory_exclude_filters = sorted( + directory_exclude_filters, + key=lambda exclude_filter: -len(exclude_filter.name), + ) + module_exclude_filters = sorted( + module_exclude_filters, key=lambda exclude_filter: -len(exclude_filter.name) + ) + exclude_filters = ( + directory_exclude_filters + glob_exclude_filters + module_exclude_filters + ) + + return exclude_filters + + +class IDMap: + def __init__(self): + self._value_to_key = {} + self._key_to_value = {} + self._next_id = partial(next, itertools.count(0)) + + def obtain_value(self, key): + return self._key_to_value[key] + + def obtain_key(self, value): + try: + key = self._value_to_key[value] + except KeyError: + key = self._next_id() + self._key_to_value[key] = value + self._value_to_key[value] = key + return key + + +class PyDevJsonCommandProcessor: + def __init__(self, from_json): + self.from_json = from_json + self.api = PyDevdAPI() + self._options = DebugOptions() + self._next_breakpoint_id = partial(next, itertools.count(0)) + self._goto_targets_map = IDMap() + self._launch_or_attach_request_done = False + + def process_net_command_json(self, py_db, json_contents, send_response=True): + """ + Processes a debug adapter protocol json command. + """ + DEBUG = False + + try: + if isinstance(json_contents, bytes): + json_contents = json_contents.decode("utf-8") + + request = self.from_json(json_contents, update_ids_from_dap=True) + except Exception as e: + try: + loaded_json = json.loads(json_contents) + request = Request( + loaded_json.get("command", ""), loaded_json["seq"] + ) + except: + # There's not much we can do in this case... + pydev_log.exception("Error loading json: %s", json_contents) + return + + error_msg = str(e) + if error_msg.startswith("'") and error_msg.endswith("'"): + error_msg = error_msg[1:-1] + + # This means a failure processing the request (but we were able to load the seq, + # so, answer with a failure response). + def on_request(py_db, request): + error_response = { + "type": "response", + "request_seq": request.seq, + "success": False, + "command": request.command, + "message": error_msg, + } + return NetCommand(CMD_RETURN, 0, error_response, is_json=True) + + else: + if DebugInfoHolder.DEBUG_TRACE_LEVEL >= 1: + pydev_log.info( + "Process %s: %s\n" + % ( + request.__class__.__name__, + json.dumps( + request.to_dict(update_ids_to_dap=True), + indent=4, + sort_keys=True, + ), + ) + ) + + assert request.type == "request" + method_name = "on_%s_request" % (request.command.lower(),) + on_request = getattr(self, method_name, None) + if on_request is None: + print( + "Unhandled: %s not available in PyDevJsonCommandProcessor.\n" + % (method_name,) + ) + return + + if DEBUG: + print( + "Handled in pydevd: %s (in PyDevJsonCommandProcessor).\n" + % (method_name,) + ) + + with py_db._main_lock: + if request.__class__ == PydevdAuthorizeRequest: + authorize_request = ( + request # : :type authorize_request: PydevdAuthorizeRequest + ) + access_token = authorize_request.arguments.debugServerAccessToken + py_db.authentication.login(access_token) + + if not py_db.authentication.is_authenticated(): + response = Response( + request.seq, + success=False, + command=request.command, + message="Client not authenticated.", + body={}, + ) + cmd = NetCommand(CMD_RETURN, 0, response, is_json=True) + py_db.writer.add_command(cmd) + return + + cmd = on_request(py_db, request) + if cmd is not None and send_response: + py_db.writer.add_command(cmd) + + def on_pydevdauthorize_request(self, py_db, request): + client_access_token = py_db.authentication.client_access_token + body = {"clientAccessToken": None} + if client_access_token: + body["clientAccessToken"] = client_access_token + + response = pydevd_base_schema.build_response(request, kwargs={"body": body}) + return NetCommand(CMD_RETURN, 0, response, is_json=True) + + def on_initialize_request(self, py_db, request): + body = Capabilities( + # Supported. + supportsConfigurationDoneRequest=True, + supportsConditionalBreakpoints=True, + supportsHitConditionalBreakpoints=True, + supportsEvaluateForHovers=True, + supportsSetVariable=True, + supportsGotoTargetsRequest=True, + supportsCompletionsRequest=True, + supportsModulesRequest=True, + supportsExceptionOptions=True, + supportsValueFormattingOptions=True, + supportsExceptionInfoRequest=True, + supportTerminateDebuggee=True, + supportsDelayedStackTraceLoading=True, + supportsLogPoints=True, + supportsSetExpression=True, + supportsTerminateRequest=True, + supportsClipboardContext=True, + supportsFunctionBreakpoints=True, + exceptionBreakpointFilters=[ + {"filter": "raised", "label": "Raised Exceptions", "default": False}, + {"filter": "uncaught", "label": "Uncaught Exceptions", "default": True}, + { + "filter": "userUnhandled", + "label": "User Uncaught Exceptions", + "default": False, + }, + ], + # Not supported. + supportsStepBack=False, + supportsRestartFrame=False, + supportsStepInTargetsRequest=True, + supportsRestartRequest=False, + supportsLoadedSourcesRequest=False, + supportsTerminateThreadsRequest=False, + supportsDataBreakpoints=False, + supportsReadMemoryRequest=False, + supportsDisassembleRequest=False, + additionalModuleColumns=[], + completionTriggerCharacters=[], + supportedChecksumAlgorithms=[], + ).to_dict() + + # Non-standard capabilities/info below. + body["supportsDebuggerProperties"] = True + + body["pydevd"] = pydevd_info = {} + pydevd_info["processId"] = os.getpid() + self.api.notify_initialize(py_db) + response = pydevd_base_schema.build_response(request, kwargs={"body": body}) + return NetCommand(CMD_RETURN, 0, response, is_json=True) + + def on_configurationdone_request(self, py_db, request): + """ + :param ConfigurationDoneRequest request: + """ + if not self._launch_or_attach_request_done: + pydev_log.critical( + "Missing launch request or attach request before configuration done request." + ) + + self.api.run(py_db) + self.api.notify_configuration_done(py_db) + + configuration_done_response = pydevd_base_schema.build_response(request) + return NetCommand(CMD_RETURN, 0, configuration_done_response, is_json=True) + + def on_threads_request(self, py_db, request): + """ + :param ThreadsRequest request: + """ + return self.api.list_threads(py_db, request.seq) + + def on_terminate_request(self, py_db, request): + """ + :param TerminateRequest request: + """ + self._request_terminate_process(py_db) + response = pydevd_base_schema.build_response(request) + return NetCommand(CMD_RETURN, 0, response, is_json=True) + + def _request_terminate_process(self, py_db): + self.api.request_terminate_process(py_db) + + def on_completions_request(self, py_db, request): + """ + :param CompletionsRequest request: + """ + arguments = request.arguments # : :type arguments: CompletionsArguments + seq = request.seq + text = arguments.text + frame_id = arguments.frameId + thread_id = py_db.suspended_frames_manager.get_thread_id_for_variable_reference( + frame_id + ) + + if thread_id is None: + body = CompletionsResponseBody([]) + variables_response = pydevd_base_schema.build_response( + request, + kwargs={ + "body": body, + "success": False, + "message": "Thread to get completions seems to have resumed already.", + }, + ) + return NetCommand(CMD_RETURN, 0, variables_response, is_json=True) + + # Note: line and column are 1-based (convert to 0-based for pydevd). + column = arguments.column - 1 + + if arguments.line is None: + # line is optional + line = -1 + else: + line = arguments.line - 1 + + self.api.request_completions( + py_db, seq, thread_id, frame_id, text, line=line, column=column + ) + + def _resolve_remote_root(self, local_root, remote_root): + if remote_root == ".": + cwd = os.getcwd() + append_pathsep = local_root.endswith("\\") or local_root.endswith("/") + return cwd + (os.path.sep if append_pathsep else "") + return remote_root + + def _set_debug_options(self, py_db, args, start_reason): + rules = args.get("rules") + stepping_resumes_all_threads = args.get("steppingResumesAllThreads", True) + self.api.set_stepping_resumes_all_threads(py_db, stepping_resumes_all_threads) + + terminate_child_processes = args.get("terminateChildProcesses", True) + self.api.set_terminate_child_processes(py_db, terminate_child_processes) + + terminate_keyboard_interrupt = ( + args.get("onTerminate", "kill") == "KeyboardInterrupt" + ) + self.api.set_terminate_keyboard_interrupt(py_db, terminate_keyboard_interrupt) + + variable_presentation = args.get("variablePresentation", None) + if isinstance(variable_presentation, dict): + + def get_variable_presentation(setting, default): + value = variable_presentation.get(setting, default) + if value not in ("group", "inline", "hide"): + pydev_log.info( + 'The value set for "%s" (%s) in the variablePresentation is not valid. Valid values are: "group", "inline", "hide"' + % ( + setting, + value, + ) + ) + value = default + + return value + + default = get_variable_presentation("all", "group") + + special_presentation = get_variable_presentation("special", default) + function_presentation = get_variable_presentation("function", default) + class_presentation = get_variable_presentation("class", default) + protected_presentation = get_variable_presentation("protected", default) + + self.api.set_variable_presentation( + py_db, + self.api.VariablePresentation( + special_presentation, + function_presentation, + class_presentation, + protected_presentation, + ), + ) + + exclude_filters = [] + + if rules is not None: + exclude_filters = _convert_rules_to_exclude_filters( + rules, lambda msg: self.api.send_error_message(py_db, msg) + ) + + self.api.set_exclude_filters(py_db, exclude_filters) + + debug_options = _extract_debug_options( + args.get("options"), + args.get("debugOptions"), + ) + self._options.update_fom_debug_options(debug_options) + self._options.update_from_args(args) + + self.api.set_use_libraries_filter(py_db, self._options.just_my_code) + + if self._options.client_os: + self.api.set_ide_os(self._options.client_os) + + path_mappings = [] + for pathMapping in args.get("pathMappings", []): + localRoot = pathMapping.get("localRoot", "") + remoteRoot = pathMapping.get("remoteRoot", "") + remoteRoot = self._resolve_remote_root(localRoot, remoteRoot) + if (localRoot != "") and (remoteRoot != ""): + path_mappings.append((localRoot, remoteRoot)) + + if bool(path_mappings): + pydevd_file_utils.setup_client_server_paths(path_mappings) + + resolve_symlinks = args.get("resolveSymlinks", None) + if resolve_symlinks is not None: + pydevd_file_utils.set_resolve_symlinks(resolve_symlinks) + + redirecting = args.get("isOutputRedirected") + if self._options.redirect_output: + py_db.enable_output_redirection(True, True) + redirecting = True + else: + py_db.enable_output_redirection(False, False) + + py_db.is_output_redirected = redirecting + + self.api.set_show_return_values(py_db, self._options.show_return_value) + + if not self._options.break_system_exit_zero: + ignore_system_exit_codes = [0, None] + if self._options.django_debug or self._options.flask_debug: + ignore_system_exit_codes += [3] + + self.api.set_ignore_system_exit_codes(py_db, ignore_system_exit_codes) + + auto_reload = args.get("autoReload", {}) + if not isinstance(auto_reload, dict): + pydev_log.info( + "Expected autoReload to be a dict. Received: %s" % (auto_reload,) + ) + auto_reload = {} + + enable_auto_reload = auto_reload.get("enable", False) + watch_dirs = auto_reload.get("watchDirectories") + if not watch_dirs: + watch_dirs = [] + # Note: by default this is no longer done because on some cases there are entries in the PYTHONPATH + # such as the home directory or /python/x64, where the site packages are in /python/x64/libs, so, + # we only watch the current working directory as well as executed script. + # check = getattr(sys, 'path', [])[:] + # # By default only watch directories that are in the project roots / + # # program dir (if available), sys.argv[0], as well as the current dir (we don't want to + # # listen to the whole site-packages by default as it can be huge). + # watch_dirs = [pydevd_file_utils.absolute_path(w) for w in check] + # watch_dirs = [w for w in watch_dirs if py_db.in_project_roots_filename_uncached(w) and os.path.isdir(w)] + + program = args.get("program") + if program: + if os.path.isdir(program): + watch_dirs.append(program) + else: + watch_dirs.append(os.path.dirname(program)) + watch_dirs.append(os.path.abspath(".")) + + argv = getattr(sys, "argv", []) + if argv: + f = argv[0] + if f: # argv[0] could be None (https://github.com/microsoft/debugpy/issues/987) + if os.path.isdir(f): + watch_dirs.append(f) + else: + watch_dirs.append(os.path.dirname(f)) + + if not isinstance(watch_dirs, (list, set, tuple)): + watch_dirs = (watch_dirs,) + new_watch_dirs = set() + for w in watch_dirs: + try: + new_watch_dirs.add( + pydevd_file_utils.get_path_with_real_case( + pydevd_file_utils.absolute_path(w) + ) + ) + except Exception: + pydev_log.exception("Error adding watch dir: %s", w) + watch_dirs = new_watch_dirs + + poll_target_time = auto_reload.get("pollingInterval", 1) + exclude_patterns = auto_reload.get( + "exclude", + ( + "**/.git/**", + "**/__pycache__/**", + "**/node_modules/**", + "**/.metadata/**", + "**/site-packages/**", + ), + ) + include_patterns = auto_reload.get("include", ("**/*.py", "**/*.pyw")) + self.api.setup_auto_reload_watcher( + py_db, + enable_auto_reload, + watch_dirs, + poll_target_time, + exclude_patterns, + include_patterns, + ) + + if self._options.stop_on_entry and start_reason == "launch": + self.api.stop_on_entry() + + self.api.set_gui_event_loop(py_db, self._options.gui_event_loop) + + def _send_process_event(self, py_db, start_method): + argv = getattr(sys, "argv", []) + if len(argv) > 0: + name = argv[0] + else: + name = "" + + if isinstance(name, bytes): + name = name.decode(file_system_encoding, "replace") + name = name.encode("utf-8") + + body = ProcessEventBody( + name=name, + systemProcessId=os.getpid(), + isLocalProcess=True, + startMethod=start_method, + ) + event = ProcessEvent(body) + py_db.writer.add_command(NetCommand(CMD_PROCESS_EVENT, 0, event, is_json=True)) + + def _handle_launch_or_attach_request(self, py_db, request, start_reason): + self._send_process_event(py_db, start_reason) + self._launch_or_attach_request_done = True + self.api.set_enable_thread_notifications(py_db, True) + self._set_debug_options( + py_db, request.arguments.kwargs, start_reason=start_reason + ) + response = pydevd_base_schema.build_response(request) + + initialized_event = InitializedEvent() + py_db.writer.add_command( + NetCommand(CMD_RETURN, 0, initialized_event, is_json=True) + ) + return NetCommand(CMD_RETURN, 0, response, is_json=True) + + def on_launch_request(self, py_db, request): + """ + :param LaunchRequest request: + """ + return self._handle_launch_or_attach_request( + py_db, request, start_reason="launch" + ) + + def on_attach_request(self, py_db, request): + """ + :param AttachRequest request: + """ + return self._handle_launch_or_attach_request( + py_db, request, start_reason="attach" + ) + + def on_pause_request(self, py_db, request): + """ + :param PauseRequest request: + """ + arguments = request.arguments # : :type arguments: PauseArguments + thread_id = arguments.threadId + + self.api.request_suspend_thread(py_db, thread_id=thread_id) + + response = pydevd_base_schema.build_response(request) + return NetCommand(CMD_RETURN, 0, response, is_json=True) + + def on_continue_request(self, py_db, request): + """ + :param ContinueRequest request: + """ + arguments = request.arguments # : :type arguments: ContinueArguments + thread_id = arguments.threadId + + def on_resumed(): + body = {"allThreadsContinued": thread_id == "*"} + response = pydevd_base_schema.build_response(request, kwargs={"body": body}) + cmd = NetCommand(CMD_RETURN, 0, response, is_json=True) + py_db.writer.add_command(cmd) + + if py_db.multi_threads_single_notification: + # Only send resumed notification when it has actually resumed! + # (otherwise the user could send a continue, receive the notification and then + # request a new pause which would be paused without sending any notification as + # it didn't really run in the first place). + py_db.threads_suspended_single_notification.add_on_resumed_callback( + on_resumed + ) + self.api.request_resume_thread(thread_id) + else: + # Only send resumed notification when it has actually resumed! + # (otherwise the user could send a continue, receive the notification and then + # request a new pause which would be paused without sending any notification as + # it didn't really run in the first place). + self.api.request_resume_thread(thread_id) + on_resumed() + + def on_next_request(self, py_db, request): + """ + :param NextRequest request: + """ + arguments = request.arguments # : :type arguments: NextArguments + thread_id = arguments.threadId + + if py_db.get_use_libraries_filter(): + step_cmd_id = CMD_STEP_OVER_MY_CODE + else: + step_cmd_id = CMD_STEP_OVER + + self.api.request_step(py_db, thread_id, step_cmd_id) + + response = pydevd_base_schema.build_response(request) + return NetCommand(CMD_RETURN, 0, response, is_json=True) + + def on_stepin_request(self, py_db, request): + """ + :param StepInRequest request: + """ + arguments = request.arguments # : :type arguments: StepInArguments + thread_id = arguments.threadId + + target_id = arguments.targetId + if target_id is not None: + thread = pydevd_find_thread_by_id(thread_id) + if thread is None: + response = Response( + request_seq=request.seq, + success=False, + command=request.command, + message="Unable to find thread from thread_id: %s" % (thread_id,), + body={}, + ) + return NetCommand(CMD_RETURN, 0, response, is_json=True) + + info = set_additional_thread_info(thread) + target_id_to_smart_step_into_variant = ( + info.target_id_to_smart_step_into_variant + ) + if not target_id_to_smart_step_into_variant: + variables_response = pydevd_base_schema.build_response( + request, + kwargs={ + "success": False, + "message": "Unable to step into target (no targets are saved in the thread info).", + }, + ) + return NetCommand(CMD_RETURN, 0, variables_response, is_json=True) + + variant = target_id_to_smart_step_into_variant.get(target_id) + if variant is not None: + parent = variant.parent + if parent is not None: + self.api.request_smart_step_into( + py_db, request.seq, thread_id, parent.offset, variant.offset + ) + else: + self.api.request_smart_step_into( + py_db, request.seq, thread_id, variant.offset, -1 + ) + else: + variables_response = pydevd_base_schema.build_response( + request, + kwargs={ + "success": False, + "message": "Unable to find step into target %s. Available targets: %s" + % (target_id, target_id_to_smart_step_into_variant), + }, + ) + return NetCommand(CMD_RETURN, 0, variables_response, is_json=True) + + else: + if py_db.get_use_libraries_filter(): + step_cmd_id = CMD_STEP_INTO_MY_CODE + else: + step_cmd_id = CMD_STEP_INTO + + self.api.request_step(py_db, thread_id, step_cmd_id) + + response = pydevd_base_schema.build_response(request) + return NetCommand(CMD_RETURN, 0, response, is_json=True) + + def on_stepintargets_request(self, py_db, request): + """ + :param StepInTargetsRequest request: + """ + frame_id = request.arguments.frameId + thread_id = py_db.suspended_frames_manager.get_thread_id_for_variable_reference( + frame_id + ) + + if thread_id is None: + body = StepInTargetsResponseBody([]) + variables_response = pydevd_base_schema.build_response( + request, + kwargs={ + "body": body, + "success": False, + "message": "Unable to get thread_id from frame_id (thread to get step in targets seems to have resumed already).", + }, + ) + return NetCommand(CMD_RETURN, 0, variables_response, is_json=True) + + py_db.post_method_as_internal_command( + thread_id, + internal_get_step_in_targets_json, + request.seq, + thread_id, + frame_id, + request, + set_additional_thread_info, + ) + + def on_stepout_request(self, py_db, request): + """ + :param StepOutRequest request: + """ + arguments = request.arguments # : :type arguments: StepOutArguments + thread_id = arguments.threadId + + if py_db.get_use_libraries_filter(): + step_cmd_id = CMD_STEP_RETURN_MY_CODE + else: + step_cmd_id = CMD_STEP_RETURN + + self.api.request_step(py_db, thread_id, step_cmd_id) + + response = pydevd_base_schema.build_response(request) + return NetCommand(CMD_RETURN, 0, response, is_json=True) + + def _get_hit_condition_expression(self, hit_condition): + """Following hit condition values are supported + + * x or == x when breakpoint is hit x times + * >= x when breakpoint is hit more than or equal to x times + * % x when breakpoint is hit multiple of x times + + Returns '@HIT@ == x' where @HIT@ will be replaced by number of hits + """ + if not hit_condition: + return None + + expr = hit_condition.strip() + try: + int(expr) + return f"@HIT@ == {expr}" + except ValueError: + pass + + if expr.startswith("%"): + return f"@HIT@ {expr} == 0" + + if expr.startswith("==") or expr.startswith(">") or expr.startswith("<"): + return f"@HIT@ {expr}" + + return hit_condition + + def on_disconnect_request(self, py_db, request): + """ + :param DisconnectRequest request: + """ + if request.arguments.terminateDebuggee: + self._request_terminate_process(py_db) + response = pydevd_base_schema.build_response(request) + return NetCommand(CMD_RETURN, 0, response, is_json=True) + + self._launch_or_attach_request_done = False + py_db.enable_output_redirection(False, False) + self.api.request_disconnect(py_db, resume_threads=True) + + response = pydevd_base_schema.build_response(request) + return NetCommand(CMD_RETURN, 0, response, is_json=True) + + def _verify_launch_or_attach_done(self, request): + if not self._launch_or_attach_request_done: + # Note that to validate the breakpoints we need the launch request to be done already + # (otherwise the filters wouldn't be set for the breakpoint validation). + if request.command == "setFunctionBreakpoints": + body = SetFunctionBreakpointsResponseBody([]) + else: + body = SetBreakpointsResponseBody([]) + response = pydevd_base_schema.build_response( + request, + kwargs={ + "body": body, + "success": False, + "message": "Breakpoints may only be set after the launch request is received.", + }, + ) + return NetCommand(CMD_RETURN, 0, response, is_json=True) + + def on_setfunctionbreakpoints_request(self, py_db, request): + """ + :param SetFunctionBreakpointsRequest request: + """ + response = self._verify_launch_or_attach_done(request) + if response is not None: + return response + + arguments = ( + request.arguments + ) # : :type arguments: SetFunctionBreakpointsArguments + function_breakpoints = [] + suspend_policy = "ALL" if py_db.multi_threads_single_notification else "NONE" + + # Not currently covered by the DAP. + is_logpoint = False + expression = None + + breakpoints_set = [] + arguments.breakpoints = arguments.breakpoints or [] + for bp in arguments.breakpoints: + hit_condition = self._get_hit_condition_expression(bp.get("hitCondition")) + condition = bp.get("condition") + + function_breakpoints.append( + FunctionBreakpoint( + bp["name"], + condition, + expression, + suspend_policy, + hit_condition, + is_logpoint, + ) + ) + + # Note: always succeeds. + breakpoints_set.append( + pydevd_schema.Breakpoint( + verified=True, id=self._next_breakpoint_id() + ).to_dict() + ) + + self.api.set_function_breakpoints(py_db, function_breakpoints) + + body = {"breakpoints": breakpoints_set} + set_breakpoints_response = pydevd_base_schema.build_response( + request, kwargs={"body": body} + ) + return NetCommand(CMD_RETURN, 0, set_breakpoints_response, is_json=True) + + def on_setbreakpoints_request(self, py_db, request): + """ + :param SetBreakpointsRequest request: + """ + response = self._verify_launch_or_attach_done(request) + if response is not None: + return response + + arguments = request.arguments # : :type arguments: SetBreakpointsArguments + # TODO: Path is optional here it could be source reference. + filename = self.api.filename_to_str(arguments.source.path) + func_name = "None" + + self.api.remove_all_breakpoints(py_db, filename) + + btype = "python-line" + suspend_policy = "ALL" if py_db.multi_threads_single_notification else "NONE" + + if not filename.lower().endswith( + ".py" + ): # Note: check based on original file, not mapping. + if self._options.django_debug: + btype = "django-line" + elif self._options.flask_debug: + btype = "jinja2-line" + + breakpoints_set = [] + arguments.breakpoints = arguments.breakpoints or [] + for source_breakpoint in arguments.breakpoints: + source_breakpoint = SourceBreakpoint(**source_breakpoint) + line = source_breakpoint.line + condition = source_breakpoint.condition + breakpoint_id = self._next_breakpoint_id() + + hit_condition = self._get_hit_condition_expression( + source_breakpoint.hitCondition + ) + log_message = source_breakpoint.logMessage + if not log_message: + is_logpoint = None + expression = None + else: + is_logpoint = True + expression = convert_dap_log_message_to_expression(log_message) + + on_changed_breakpoint_state = partial( + self._on_changed_breakpoint_state, py_db, arguments.source + ) + result = self.api.add_breakpoint( + py_db, + filename, + btype, + breakpoint_id, + line, + condition, + func_name, + expression, + suspend_policy, + hit_condition, + is_logpoint, + adjust_line=True, + on_changed_breakpoint_state=on_changed_breakpoint_state, + ) + + bp = self._create_breakpoint_from_add_breakpoint_result( + py_db, arguments.source, breakpoint_id, result + ) + breakpoints_set.append(bp) + + body = {"breakpoints": breakpoints_set} + set_breakpoints_response = pydevd_base_schema.build_response( + request, kwargs={"body": body} + ) + return NetCommand(CMD_RETURN, 0, set_breakpoints_response, is_json=True) + + def _on_changed_breakpoint_state(self, py_db, source, breakpoint_id, result): + bp = self._create_breakpoint_from_add_breakpoint_result( + py_db, source, breakpoint_id, result + ) + body = BreakpointEventBody( + reason="changed", + breakpoint=bp, + ) + event = BreakpointEvent(body) + event_id = 0 # Actually ignored in this case + py_db.writer.add_command(NetCommand(event_id, 0, event, is_json=True)) + + def _create_breakpoint_from_add_breakpoint_result( + self, py_db, source, breakpoint_id, result + ): + error_code = result.error_code + + if error_code: + if error_code == self.api.ADD_BREAKPOINT_FILE_NOT_FOUND: + error_msg = "Breakpoint in file that does not exist." + + elif error_code == self.api.ADD_BREAKPOINT_FILE_EXCLUDED_BY_FILTERS: + error_msg = "Breakpoint in file excluded by filters." + if py_db.get_use_libraries_filter(): + error_msg += ( + '\nNote: may be excluded because of "justMyCode" option (default == true).' + 'Try setting "justMyCode": false in the debug configuration (e.g., launch.json).\n' + ) + + elif error_code == self.api.ADD_BREAKPOINT_LAZY_VALIDATION: + error_msg = "Waiting for code to be loaded to verify breakpoint." + + elif error_code == self.api.ADD_BREAKPOINT_INVALID_LINE: + error_msg = "Breakpoint added to invalid line." + + else: + # Shouldn't get here. + error_msg = ( + "Breakpoint not validated (reason unknown -- please report as bug)." + ) + + return pydevd_schema.Breakpoint( + verified=False, + id=breakpoint_id, + line=result.translated_line, + message=error_msg, + source=source, + ).to_dict() + else: + return pydevd_schema.Breakpoint( + verified=True, + id=breakpoint_id, + line=result.translated_line, + source=source, + ).to_dict() + + def on_setexceptionbreakpoints_request(self, py_db, request): + """ + :param SetExceptionBreakpointsRequest request: + """ + # : :type arguments: SetExceptionBreakpointsArguments + arguments = request.arguments + filters = arguments.filters + exception_options = arguments.exceptionOptions + self.api.remove_all_exception_breakpoints(py_db) + + # Can't set these in the DAP. + condition = None + expression = None + notify_on_first_raise_only = False + + ignore_libraries = 1 if py_db.get_use_libraries_filter() else 0 + + if exception_options: + break_raised = False + break_uncaught = False + + for option in exception_options: + option = ExceptionOptions(**option) + if not option.path: + continue + + # never: never breaks + # + # always: always breaks + # + # unhandled: breaks when exception unhandled + # + # userUnhandled: breaks if the exception is not handled by user code + + notify_on_handled_exceptions = 1 if option.breakMode == "always" else 0 + notify_on_unhandled_exceptions = ( + 1 if option.breakMode == "unhandled" else 0 + ) + notify_on_user_unhandled_exceptions = ( + 1 if option.breakMode == "userUnhandled" else 0 + ) + exception_paths = option.path + break_raised |= notify_on_handled_exceptions + break_uncaught |= notify_on_unhandled_exceptions + + exception_names = [] + if len(exception_paths) == 0: + continue + + elif len(exception_paths) == 1: + if "Python Exceptions" in exception_paths[0]["names"]: + exception_names = ["BaseException"] + + else: + path_iterator = iter(exception_paths) + if "Python Exceptions" in next(path_iterator)["names"]: + for path in path_iterator: + for ex_name in path["names"]: + exception_names.append(ex_name) + + for exception_name in exception_names: + self.api.add_python_exception_breakpoint( + py_db, + exception_name, + condition, + expression, + notify_on_handled_exceptions, + notify_on_unhandled_exceptions, + notify_on_user_unhandled_exceptions, + notify_on_first_raise_only, + ignore_libraries, + ) + + else: + break_raised = "raised" in filters + break_uncaught = "uncaught" in filters + break_user = "userUnhandled" in filters + if break_raised or break_uncaught or break_user: + notify_on_handled_exceptions = 1 if break_raised else 0 + notify_on_unhandled_exceptions = 1 if break_uncaught else 0 + notify_on_user_unhandled_exceptions = 1 if break_user else 0 + exception = "BaseException" + + self.api.add_python_exception_breakpoint( + py_db, + exception, + condition, + expression, + notify_on_handled_exceptions, + notify_on_unhandled_exceptions, + notify_on_user_unhandled_exceptions, + notify_on_first_raise_only, + ignore_libraries, + ) + + if break_raised: + btype = None + if self._options.django_debug: + btype = "django" + elif self._options.flask_debug: + btype = "jinja2" + + if btype: + self.api.add_plugins_exception_breakpoint( + py_db, btype, "BaseException" + ) # Note: Exception name could be anything here. + + # Note: no body required on success. + set_breakpoints_response = pydevd_base_schema.build_response(request) + return NetCommand(CMD_RETURN, 0, set_breakpoints_response, is_json=True) + + def on_stacktrace_request(self, py_db, request): + """ + :param StackTraceRequest request: + """ + # : :type stack_trace_arguments: StackTraceArguments + stack_trace_arguments = request.arguments + thread_id = stack_trace_arguments.threadId + + if stack_trace_arguments.startFrame: + start_frame = int(stack_trace_arguments.startFrame) + else: + start_frame = 0 + + if stack_trace_arguments.levels: + levels = int(stack_trace_arguments.levels) + else: + levels = 0 + + fmt = stack_trace_arguments.format + if hasattr(fmt, "to_dict"): + fmt = fmt.to_dict() + self.api.request_stack( + py_db, + request.seq, + thread_id, + fmt=fmt, + start_frame=start_frame, + levels=levels, + ) + + def on_exceptioninfo_request(self, py_db, request): + """ + :param ExceptionInfoRequest request: + """ + # : :type exception_into_arguments: ExceptionInfoArguments + exception_into_arguments = request.arguments + thread_id = exception_into_arguments.threadId + max_frames = self._options.max_exception_stack_frames + thread = pydevd_find_thread_by_id(thread_id) + if thread is not None: + self.api.request_exception_info_json( + py_db, request, thread_id, thread, max_frames + ) + else: + response = Response( + request_seq=request.seq, + success=False, + command=request.command, + message="Unable to find thread from thread_id: %s" % (thread_id,), + body={}, + ) + return NetCommand(CMD_RETURN, 0, response, is_json=True) + + def on_scopes_request(self, py_db, request): + """ + Scopes are the top-level items which appear for a frame (so, we receive the frame id + and provide the scopes it has). + + :param ScopesRequest request: + """ + frame_id = request.arguments.frameId + + variables_reference = frame_id + scopes = [ + Scope( + "Locals", + ScopeRequest(int(variables_reference), "locals"), + False, + presentationHint="locals", + ), + Scope("Globals", ScopeRequest(int(variables_reference), "globals"), False), + ] + body = ScopesResponseBody(scopes) + scopes_response = pydevd_base_schema.build_response( + request, kwargs={"body": body} + ) + return NetCommand(CMD_RETURN, 0, scopes_response, is_json=True) + + def on_evaluate_request(self, py_db, request): + """ + :param EvaluateRequest request: + """ + # : :type arguments: EvaluateArguments + arguments = request.arguments + + if arguments.frameId is None: + self.api.request_exec_or_evaluate_json(py_db, request, thread_id="*") + else: + thread_id = ( + py_db.suspended_frames_manager.get_thread_id_for_variable_reference( + arguments.frameId + ) + ) + + if thread_id is not None: + self.api.request_exec_or_evaluate_json(py_db, request, thread_id) + else: + body = EvaluateResponseBody("", 0) + response = pydevd_base_schema.build_response( + request, + kwargs={ + "body": body, + "success": False, + "message": "Unable to find thread for evaluation.", + }, + ) + return NetCommand(CMD_RETURN, 0, response, is_json=True) + + def on_setexpression_request(self, py_db, request): + # : :type arguments: SetExpressionArguments + arguments = request.arguments + + thread_id = py_db.suspended_frames_manager.get_thread_id_for_variable_reference( + arguments.frameId + ) + + if thread_id is not None: + self.api.request_set_expression_json(py_db, request, thread_id) + else: + body = SetExpressionResponseBody("") + response = pydevd_base_schema.build_response( + request, + kwargs={ + "body": body, + "success": False, + "message": "Unable to find thread to set expression.", + }, + ) + return NetCommand(CMD_RETURN, 0, response, is_json=True) + + def on_variables_request(self, py_db, request): + """ + Variables can be asked whenever some place returned a variables reference (so, it + can be a scope gotten from on_scopes_request, the result of some evaluation, etc.). + + Note that in the DAP the variables reference requires a unique int... the way this works for + pydevd is that an instance is generated for that specific variable reference and we use its + id(instance) to identify it to make sure all items are unique (and the actual {id->instance} + is added to a dict which is only valid while the thread is suspended and later cleared when + the related thread resumes execution). + + see: SuspendedFramesManager + + :param VariablesRequest request: + """ + arguments = request.arguments # : :type arguments: VariablesArguments + variables_reference = arguments.variablesReference + + if isinstance(variables_reference, ScopeRequest): + variables_reference = variables_reference.variable_reference + + thread_id = py_db.suspended_frames_manager.get_thread_id_for_variable_reference( + variables_reference + ) + if thread_id is not None: + self.api.request_get_variable_json(py_db, request, thread_id) + else: + variables = [] + body = VariablesResponseBody(variables) + variables_response = pydevd_base_schema.build_response( + request, + kwargs={ + "body": body, + "success": False, + "message": "Unable to find thread to evaluate variable reference.", + }, + ) + return NetCommand(CMD_RETURN, 0, variables_response, is_json=True) + + def on_setvariable_request(self, py_db, request): + arguments = request.arguments # : :type arguments: SetVariableArguments + variables_reference = arguments.variablesReference + + if isinstance(variables_reference, ScopeRequest): + variables_reference = variables_reference.variable_reference + + if arguments.name.startswith("(return) "): + response = pydevd_base_schema.build_response( + request, + kwargs={ + "body": SetVariableResponseBody(""), + "success": False, + "message": "Cannot change return value", + }, + ) + return NetCommand(CMD_RETURN, 0, response, is_json=True) + + thread_id = py_db.suspended_frames_manager.get_thread_id_for_variable_reference( + variables_reference + ) + + if thread_id is not None: + self.api.request_change_variable_json(py_db, request, thread_id) + else: + response = pydevd_base_schema.build_response( + request, + kwargs={ + "body": SetVariableResponseBody(""), + "success": False, + "message": "Unable to find thread to evaluate variable reference.", + }, + ) + return NetCommand(CMD_RETURN, 0, response, is_json=True) + + def on_modules_request(self, py_db, request): + modules_manager = ( + py_db.cmd_factory.modules_manager + ) # : :type modules_manager: ModulesManager + modules_info = modules_manager.get_modules_info() + body = ModulesResponseBody(modules_info) + variables_response = pydevd_base_schema.build_response( + request, kwargs={"body": body} + ) + return NetCommand(CMD_RETURN, 0, variables_response, is_json=True) + + def on_source_request(self, py_db, request): + """ + :param SourceRequest request: + """ + source_reference = request.arguments.sourceReference + server_filename = None + content = None + + if source_reference != 0: + server_filename = ( + pydevd_file_utils.get_server_filename_from_source_reference( + source_reference + ) + ) + if not server_filename: + server_filename = ( + pydevd_file_utils.get_source_reference_filename_from_linecache( + source_reference + ) + ) + + if server_filename: + # Try direct file access first - it's much faster when available. + try: + with open(server_filename) as stream: + content = stream.read() + except: + pass + + if content is None: + # File might not exist at all, or we might not have a permission to read it, + # but it might also be inside a zipfile, or an IPython cell. In this case, + # linecache might still be able to retrieve the source. + lines = ( + linecache.getline(server_filename, i) + for i in itertools.count(1) + ) + lines = itertools.takewhile( + bool, lines + ) # empty lines are '\n', EOF is '' + + # If we didn't get at least one line back, reset it to None so that it's + # reported as error below, and not as an empty file. + content = "".join(lines) or None + + if content is None: + frame_id = pydevd_file_utils.get_frame_id_from_source_reference( + source_reference + ) + pydev_log.debug( + "Found frame id: %s for source reference: %s", + frame_id, + source_reference, + ) + if frame_id is not None: + try: + content = self.api.get_decompiled_source_from_frame_id( + py_db, frame_id + ) + except Exception: + pydev_log.exception( + "Error getting source for frame id: %s", frame_id + ) + content = None + + body = SourceResponseBody(content or "") + response_args = {"body": body} + + if content is None: + if source_reference == 0: + message = "Source unavailable" + elif server_filename: + message = "Unable to retrieve source for %s" % (server_filename,) + else: + message = "Invalid sourceReference %d" % (source_reference,) + response_args.update({"success": False, "message": message}) + + response = pydevd_base_schema.build_response(request, kwargs=response_args) + return NetCommand(CMD_RETURN, 0, response, is_json=True) + + def on_gototargets_request(self, py_db, request): + path = request.arguments.source.path + line = request.arguments.line + target_id = self._goto_targets_map.obtain_key((path, line)) + target = {"id": target_id, "label": "%s:%s" % (path, line), "line": line} + body = GotoTargetsResponseBody(targets=[target]) + response_args = {"body": body} + response = pydevd_base_schema.build_response(request, kwargs=response_args) + return NetCommand(CMD_RETURN, 0, response, is_json=True) + + def on_goto_request(self, py_db, request): + target_id = int(request.arguments.targetId) + thread_id = request.arguments.threadId + try: + path, line = self._goto_targets_map.obtain_value(target_id) + except KeyError: + response = pydevd_base_schema.build_response( + request, + kwargs={ + "body": {}, + "success": False, + "message": "Unknown goto target id: %d" % (target_id,), + }, + ) + return NetCommand(CMD_RETURN, 0, response, is_json=True) + + self.api.request_set_next( + py_db, request.seq, thread_id, CMD_SET_NEXT_STATEMENT, path, line, "*" + ) + # See 'NetCommandFactoryJson.make_set_next_stmnt_status_message' for response + return None + + def on_setdebuggerproperty_request(self, py_db, request): + args = request.arguments # : :type args: SetDebuggerPropertyArguments + if args.ideOS is not None: + self.api.set_ide_os(args.ideOS) + + if ( + args.dontTraceStartPatterns is not None + and args.dontTraceEndPatterns is not None + ): + start_patterns = tuple(args.dontTraceStartPatterns) + end_patterns = tuple(args.dontTraceEndPatterns) + self.api.set_dont_trace_start_end_patterns( + py_db, start_patterns, end_patterns + ) + + if args.skipSuspendOnBreakpointException is not None: + py_db.skip_suspend_on_breakpoint_exception = tuple( + get_exception_class(x) for x in args.skipSuspendOnBreakpointException + ) + + if args.skipPrintBreakpointException is not None: + py_db.skip_print_breakpoint_exception = tuple( + get_exception_class(x) for x in args.skipPrintBreakpointException + ) + + if args.multiThreadsSingleNotification is not None: + py_db.multi_threads_single_notification = ( + args.multiThreadsSingleNotification + ) + + # TODO: Support other common settings. Note that not all of these might be relevant to python. + # JustMyCodeStepping: 0 or 1 + # AllowOutOfProcessSymbols: 0 or 1 + # DisableJITOptimization: 0 or 1 + # InterpreterOptions: 0 or 1 + # StopOnExceptionCrossingManagedBoundary: 0 or 1 + # WarnIfNoUserCodeOnLaunch: 0 or 1 + # EnableStepFiltering: true of false + + response = pydevd_base_schema.build_response(request, kwargs={"body": {}}) + return NetCommand(CMD_RETURN, 0, response, is_json=True) + + def on_pydevdsysteminfo_request(self, py_db, request): + try: + pid = os.getpid() + except AttributeError: + pid = None + + # It's possible to have the ppid reported from args. In this case, use that instead of the + # real ppid (athough we're using `ppid`, what we want in meaning is the `launcher_pid` -- + # so, if a python process is launched from another python process, consider that process the + # parent and not any intermediary stubs). + + ppid = py_db.get_arg_ppid() or self.api.get_ppid() + + try: + impl_desc = platform.python_implementation() + except AttributeError: + impl_desc = PY_IMPL_NAME + + py_info = pydevd_schema.PydevdPythonInfo( + version=PY_VERSION_STR, + implementation=pydevd_schema.PydevdPythonImplementationInfo( + name=PY_IMPL_NAME, + version=PY_IMPL_VERSION_STR, + description=impl_desc, + ), + ) + platform_info = pydevd_schema.PydevdPlatformInfo(name=sys.platform) + process_info = pydevd_schema.PydevdProcessInfo( + pid=pid, + ppid=ppid, + executable=sys.executable, + bitness=64 if IS_64BIT_PROCESS else 32, + ) + pydevd_info = pydevd_schema.PydevdInfo( + usingCython=USING_CYTHON, + usingFrameEval=USING_FRAME_EVAL, + ) + body = { + "python": py_info, + "platform": platform_info, + "process": process_info, + "pydevd": pydevd_info, + } + response = pydevd_base_schema.build_response(request, kwargs={"body": body}) + return NetCommand(CMD_RETURN, 0, response, is_json=True) + + def on_setpydevdsourcemap_request(self, py_db, request): + args = request.arguments # : :type args: SetPydevdSourceMapArguments + SourceMappingEntry = self.api.SourceMappingEntry + + path = args.source.path + source_maps = args.pydevdSourceMaps + # : :type source_map: PydevdSourceMap + new_mappings = [ + SourceMappingEntry( + source_map["line"], + source_map["endLine"], + source_map["runtimeLine"], + self.api.filename_to_str(source_map["runtimeSource"]["path"]), + ) + for source_map in source_maps + ] + + error_msg = self.api.set_source_mapping(py_db, path, new_mappings) + if error_msg: + response = pydevd_base_schema.build_response( + request, + kwargs={ + "body": {}, + "success": False, + "message": error_msg, + }, + ) + return NetCommand(CMD_RETURN, 0, response, is_json=True) + + response = pydevd_base_schema.build_response(request) + return NetCommand(CMD_RETURN, 0, response, is_json=True) diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_referrers.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_referrers.py new file mode 100644 index 000000000..25e28c4a1 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_referrers.py @@ -0,0 +1,285 @@ +import sys +from os.path import basename +from urllib.parse import unquote_plus + +from _pydev_bundle import pydev_log + +from _pydevd_bundle import pydevd_xml +from _pydevd_bundle.pydevd_constants import IS_PY311_OR_GREATER + + +# =================================================================================================== +# print_var_node +# =================================================================================================== +def print_var_node(xml_node, stream): + name = xml_node.getAttribute("name") + value = xml_node.getAttribute("value") + val_type = xml_node.getAttribute("type") + + found_as = xml_node.getAttribute("found_as") + stream.write("Name: ") + stream.write(unquote_plus(name)) + stream.write(", Value: ") + stream.write(unquote_plus(value)) + stream.write(", Type: ") + stream.write(unquote_plus(val_type)) + if found_as: + stream.write(", Found as: %s" % (unquote_plus(found_as),)) + stream.write("\n") + + +# =================================================================================================== +# print_referrers +# =================================================================================================== +def print_referrers(obj, stream=None): + if stream is None: + stream = sys.stdout + result = get_referrer_info(obj) + from xml.dom.minidom import parseString + + dom = parseString(result) + + xml = dom.getElementsByTagName("xml")[0] + for node in xml.childNodes: + if node.nodeType == node.TEXT_NODE: + continue + + if node.localName == "for": + stream.write("Searching references for: ") + for child in node.childNodes: + if child.nodeType == node.TEXT_NODE: + continue + print_var_node(child, stream) + + elif node.localName == "var": + stream.write("Referrer found: ") + print_var_node(node, stream) + + else: + sys.stderr.write("Unhandled node: %s\n" % (node,)) + + return result + + +# =================================================================================================== +# get_referrer_info +# =================================================================================================== +def get_referrer_info(searched_obj): + DEBUG = 0 + if DEBUG: + sys.stderr.write("Getting referrers info.\n") + try: + try: + if searched_obj is None: + ret = ["\n"] + + ret.append("\n") + ret.append( + pydevd_xml.var_to_xml( + searched_obj, + "Skipping getting referrers for None", + additional_in_xml=' id="%s"' % (id(searched_obj),), + ) + ) + ret.append("\n") + ret.append("") + ret = "".join(ret) + return ret + + obj_id = id(searched_obj) + + try: + if DEBUG: + sys.stderr.write("Getting referrers...\n") + import gc + + referrers = gc.get_referrers(searched_obj) + except: + pydev_log.exception() + ret = ["\n"] + + ret.append("\n") + ret.append( + pydevd_xml.var_to_xml( + searched_obj, + "Exception raised while trying to get_referrers.", + additional_in_xml=' id="%s"' % (id(searched_obj),), + ) + ) + ret.append("\n") + ret.append("") + ret = "".join(ret) + return ret + + if DEBUG: + sys.stderr.write("Found %s referrers.\n" % (len(referrers),)) + + curr_frame = sys._getframe() + frame_type = type(curr_frame) + + # Ignore this frame and any caller frame of this frame + + ignore_frames = {} # Should be a set, but it's not available on all python versions. + while curr_frame is not None: + if basename(curr_frame.f_code.co_filename).startswith("pydev"): + ignore_frames[curr_frame] = 1 + curr_frame = curr_frame.f_back + + ret = ["\n"] + + ret.append("\n") + if DEBUG: + sys.stderr.write( + 'Searching Referrers of obj with id="%s"\n' % (obj_id,) + ) + + ret.append( + pydevd_xml.var_to_xml( + searched_obj, 'Referrers of obj with id="%s"' % (obj_id,) + ) + ) + ret.append("\n") + + curr_frame = sys._getframe() + all_objects = None + + for r in referrers: + try: + if r in ignore_frames: + continue # Skip the references we may add ourselves + except: + pass # Ok: unhashable type checked... + + if r is referrers: + continue + + if r is curr_frame.f_locals: + continue + + r_type = type(r) + r_id = str(id(r)) + + representation = str(r_type) + + found_as = "" + if r_type == frame_type: + if DEBUG: + sys.stderr.write("Found frame referrer: %r\n" % (r,)) + for key, val in r.f_locals.items(): + if val is searched_obj: + found_as = key + break + + elif r_type == dict: + if DEBUG: + sys.stderr.write("Found dict referrer: %r\n" % (r,)) + + # Try to check if it's a value in the dict (and under which key it was found) + for key, val in r.items(): + if val is searched_obj: + found_as = key + if DEBUG: + sys.stderr.write( + " Found as %r in dict\n" % (found_as,) + ) + break + + # Ok, there's one annoying thing: many times we find it in a dict from an instance, + # but with this we don't directly have the class, only the dict, so, to workaround that + # we iterate over all reachable objects ad check if one of those has the given dict. + if all_objects is None: + all_objects = gc.get_objects() + + for x in all_objects: + try: + if getattr(x, "__dict__", None) is r: + r = x + r_type = type(x) + r_id = str(id(r)) + representation = str(r_type) + break + except: + pass # Just ignore any error here (i.e.: ReferenceError, etc.) + + elif r_type in (tuple, list): + if DEBUG: + sys.stderr.write("Found tuple referrer: %r\n" % (r,)) + + for i, x in enumerate(r): + if x is searched_obj: + found_as = "%s[%s]" % (r_type.__name__, i) + if DEBUG: + sys.stderr.write( + " Found as %s in tuple: \n" % (found_as,) + ) + break + + elif IS_PY311_OR_GREATER: + # Up to Python 3.10, gc.get_referrers for an instance actually returned the + # object.__dict__, but on Python 3.11 it returns the actual object, so, + # handling is a bit easier (we don't need the workaround from the dict + # case to find the actual instance, we just need to find the attribute name). + if DEBUG: + sys.stderr.write("Found dict referrer: %r\n" % (r,)) + + dct = getattr(r, "__dict__", None) + if dct: + # Try to check if it's a value in the dict (and under which key it was found) + for key, val in dct.items(): + if val is searched_obj: + found_as = key + if DEBUG: + sys.stderr.write( + " Found as %r in object instance\n" + % (found_as,) + ) + break + + if found_as: + if not isinstance(found_as, str): + found_as = str(found_as) + found_as = ' found_as="%s"' % ( + pydevd_xml.make_valid_xml_value(found_as), + ) + + ret.append( + pydevd_xml.var_to_xml( + r, + representation, + additional_in_xml=' id="%s"%s' % (r_id, found_as), + ) + ) + finally: + if DEBUG: + sys.stderr.write("Done searching for references.\n") + + # If we have any exceptions, don't keep dangling references from this frame to any of our objects. + all_objects = None + referrers = None + searched_obj = None + r = None + x = None + key = None + val = None + curr_frame = None + ignore_frames = None + except: + pydev_log.exception() + ret = ["\n"] + + ret.append("\n") + ret.append( + pydevd_xml.var_to_xml( + searched_obj, + "Error getting referrers for:", + additional_in_xml=' id="%s"' % (id(searched_obj),), + ) + ) + ret.append("\n") + ret.append("") + ret = "".join(ret) + return ret + + ret.append("") + ret = "".join(ret) + return ret diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_reload.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_reload.py new file mode 100644 index 000000000..9c81b0ac5 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_reload.py @@ -0,0 +1,459 @@ +""" +Based on the python xreload. + +Changes +====================== + +1. we don't recreate the old namespace from new classes. Rather, we keep the existing namespace, +load a new version of it and update only some of the things we can inplace. That way, we don't break +things such as singletons or end up with a second representation of the same class in memory. + +2. If we find it to be a __metaclass__, we try to update it as a regular class. + +3. We don't remove old attributes (and leave them lying around even if they're no longer used). + +4. Reload hooks were changed + +These changes make it more stable, especially in the common case (where in a debug session only the +contents of a function are changed), besides providing flexibility for users that want to extend +on it. + + + +Hooks +====================== + +Classes/modules can be specially crafted to work with the reload (so that it can, for instance, +update some constant which was changed). + +1. To participate in the change of some attribute: + + In a module: + + __xreload_old_new__(namespace, name, old, new) + + in a class: + + @classmethod + __xreload_old_new__(cls, name, old, new) + + A class or module may include a method called '__xreload_old_new__' which is called when we're + unable to reload a given attribute. + + + +2. To do something after the whole reload is finished: + + In a module: + + __xreload_after_reload_update__(namespace): + + In a class: + + @classmethod + __xreload_after_reload_update__(cls): + + + A class or module may include a method called '__xreload_after_reload_update__' which is called + after the reload finishes. + + +Important: when providing a hook, always use the namespace or cls provided and not anything in the global +namespace, as the global namespace are only temporarily created during the reload and may not reflect the +actual application state (while the cls and namespace passed are). + + +Current limitations +====================== + + +- Attributes/constants are added, but not changed (so singletons and the application state is not + broken -- use provided hooks to workaround it). + +- Code using metaclasses may not always work. + +- Functions and methods using decorators (other than classmethod and staticmethod) are not handled + correctly. + +- Renamings are not handled correctly. + +- Dependent modules are not reloaded. + +- New __slots__ can't be added to existing classes. + + +Info +====================== + +Original: http://svn.python.org/projects/sandbox/trunk/xreload/xreload.py +Note: it seems https://github.com/plone/plone.reload/blob/master/plone/reload/xreload.py enhances it (to check later) + +Interesting alternative: https://code.google.com/p/reimport/ + +Alternative to reload(). + +This works by executing the module in a scratch namespace, and then patching classes, methods and +functions in place. This avoids the need to patch instances. New objects are copied into the +target namespace. + +""" + +import types + +from _pydev_bundle import pydev_log +from _pydev_bundle.pydev_imports import execfile + +from _pydevd_bundle import pydevd_dont_trace +from _pydevd_bundle.pydevd_constants import get_global_debugger + +NO_DEBUG = 0 +LEVEL1 = 1 +LEVEL2 = 2 + +DEBUG = NO_DEBUG + + +def write_err(*args): + py_db = get_global_debugger() + if py_db is not None: + new_lst = [] + for a in args: + new_lst.append(str(a)) + + msg = " ".join(new_lst) + s = "code reload: %s\n" % (msg,) + cmd = py_db.cmd_factory.make_io_message(s, 2) + if py_db.writer is not None: + py_db.writer.add_command(cmd) + + +def notify_info0(*args): + write_err(*args) + + +def notify_info(*args): + if DEBUG >= LEVEL1: + write_err(*args) + + +def notify_info2(*args): + if DEBUG >= LEVEL2: + write_err(*args) + + +def notify_error(*args): + write_err(*args) + + +# ======================================================================================================================= +# code_objects_equal +# ======================================================================================================================= +def code_objects_equal(code0, code1): + for d in dir(code0): + if ( + d.startswith("_") + or "line" in d + or d in ("replace", "co_positions", "co_qualname") + ): + continue + if getattr(code0, d) != getattr(code1, d): + return False + return True + + +# ======================================================================================================================= +# xreload +# ======================================================================================================================= +def xreload(mod): + """Reload a module in place, updating classes, methods and functions. + + mod: a module object + + Returns a boolean indicating whether a change was done. + """ + r = Reload(mod) + r.apply() + found_change = r.found_change + r = None + pydevd_dont_trace.clear_trace_filter_cache() + return found_change + + +# This isn't actually used... Initially I planned to reload variables which are immutable on the +# namespace, but this can destroy places where we're saving state, which may not be what we want, +# so, we're being conservative and giving the user hooks if he wants to do a reload. +# +# immutable_types = [int, str, float, tuple] #That should be common to all Python versions +# +# for name in 'long basestr unicode frozenset'.split(): +# try: +# immutable_types.append(__builtins__[name]) +# except: +# pass #Just ignore: not all python versions are created equal. +# immutable_types = tuple(immutable_types) + + +# ======================================================================================================================= +# Reload +# ======================================================================================================================= +class Reload: + def __init__(self, mod, mod_name=None, mod_filename=None): + self.mod = mod + if mod_name: + self.mod_name = mod_name + else: + self.mod_name = mod.__name__ if mod is not None else None + + if mod_filename: + self.mod_filename = mod_filename + else: + self.mod_filename = mod.__file__ if mod is not None else None + + self.found_change = False + + def apply(self): + mod = self.mod + self._on_finish_callbacks = [] + try: + # Get the module namespace (dict) early; this is part of the type check + modns = mod.__dict__ + + # Execute the code. We copy the module dict to a temporary; then + # clear the module dict; then execute the new code in the module + # dict; then swap things back and around. This trick (due to + # Glyph Lefkowitz) ensures that the (readonly) __globals__ + # attribute of methods and functions is set to the correct dict + # object. + new_namespace = modns.copy() + new_namespace.clear() + if self.mod_filename: + new_namespace["__file__"] = self.mod_filename + try: + new_namespace["__builtins__"] = __builtins__ + except NameError: + raise # Ok if not there. + + if self.mod_name: + new_namespace["__name__"] = self.mod_name + if new_namespace["__name__"] == "__main__": + # We do this because usually the __main__ starts-up the program, guarded by + # the if __name__ == '__main__', but we don't want to start the program again + # on a reload. + new_namespace["__name__"] = "__main_reloaded__" + + execfile(self.mod_filename, new_namespace, new_namespace) + # Now we get to the hard part + oldnames = set(modns) + newnames = set(new_namespace) + + # Create new tokens (note: not deleting existing) + for name in newnames - oldnames: + notify_info0("Added:", name, "to namespace") + self.found_change = True + modns[name] = new_namespace[name] + + # Update in-place what we can + for name in oldnames & newnames: + self._update(modns, name, modns[name], new_namespace[name]) + + self._handle_namespace(modns) + + for c in self._on_finish_callbacks: + c() + del self._on_finish_callbacks[:] + except: + pydev_log.exception() + + def _handle_namespace(self, namespace, is_class_namespace=False): + on_finish = None + if is_class_namespace: + xreload_after_update = getattr( + namespace, "__xreload_after_reload_update__", None + ) + if xreload_after_update is not None: + self.found_change = True + on_finish = lambda: xreload_after_update() + + elif "__xreload_after_reload_update__" in namespace: + xreload_after_update = namespace["__xreload_after_reload_update__"] + self.found_change = True + on_finish = lambda: xreload_after_update(namespace) + + if on_finish is not None: + # If a client wants to know about it, give him a chance. + self._on_finish_callbacks.append(on_finish) + + def _update(self, namespace, name, oldobj, newobj, is_class_namespace=False): + """Update oldobj, if possible in place, with newobj. + + If oldobj is immutable, this simply returns newobj. + + Args: + oldobj: the object to be updated + newobj: the object used as the source for the update + """ + try: + notify_info2("Updating: ", oldobj) + if oldobj is newobj: + # Probably something imported + return + + if type(oldobj) is not type(newobj): + # Cop-out: if the type changed, give up + if name not in ("__builtins__",): + notify_error( + "Type of: %s (old: %s != new: %s) changed... Skipping." + % (name, type(oldobj), type(newobj)) + ) + return + + if isinstance(newobj, types.FunctionType): + self._update_function(oldobj, newobj) + return + + if isinstance(newobj, types.MethodType): + self._update_method(oldobj, newobj) + return + + if isinstance(newobj, classmethod): + self._update_classmethod(oldobj, newobj) + return + + if isinstance(newobj, staticmethod): + self._update_staticmethod(oldobj, newobj) + return + + if hasattr(types, "ClassType"): + classtype = ( + types.ClassType, + type, + ) # object is not instance of types.ClassType. + else: + classtype = type + + if isinstance(newobj, classtype): + self._update_class(oldobj, newobj) + return + + # New: dealing with metaclasses. + if ( + hasattr(newobj, "__metaclass__") + and hasattr(newobj, "__class__") + and newobj.__metaclass__ == newobj.__class__ + ): + self._update_class(oldobj, newobj) + return + + if namespace is not None: + # Check for the `__xreload_old_new__` protocol (don't even compare things + # as even doing a comparison may break things -- see: https://github.com/microsoft/debugpy/issues/615). + xreload_old_new = None + if is_class_namespace: + xreload_old_new = getattr(namespace, "__xreload_old_new__", None) + if xreload_old_new is not None: + self.found_change = True + xreload_old_new(name, oldobj, newobj) + + elif "__xreload_old_new__" in namespace: + xreload_old_new = namespace["__xreload_old_new__"] + xreload_old_new(namespace, name, oldobj, newobj) + self.found_change = True + + # Too much information to the user... + # else: + # notify_info0('%s NOT updated. Create __xreload_old_new__(name, old, new) for custom reload' % (name,)) + + except: + notify_error( + "Exception found when updating %s. Proceeding for other items." + % (name,) + ) + pydev_log.exception() + + # All of the following functions have the same signature as _update() + + def _update_function(self, oldfunc, newfunc): + """Update a function object.""" + oldfunc.__doc__ = newfunc.__doc__ + oldfunc.__dict__.update(newfunc.__dict__) + + try: + newfunc.__code__ + attr_name = "__code__" + except AttributeError: + newfunc.func_code + attr_name = "func_code" + + old_code = getattr(oldfunc, attr_name) + new_code = getattr(newfunc, attr_name) + if not code_objects_equal(old_code, new_code): + notify_info0("Updated function code:", oldfunc) + setattr(oldfunc, attr_name, new_code) + self.found_change = True + + try: + oldfunc.__defaults__ = newfunc.__defaults__ + except AttributeError: + oldfunc.func_defaults = newfunc.func_defaults + + return oldfunc + + def _update_method(self, oldmeth, newmeth): + """Update a method object.""" + # XXX What if im_func is not a function? + if hasattr(oldmeth, "im_func") and hasattr(newmeth, "im_func"): + self._update(None, None, oldmeth.im_func, newmeth.im_func) + elif hasattr(oldmeth, "__func__") and hasattr(newmeth, "__func__"): + self._update(None, None, oldmeth.__func__, newmeth.__func__) + return oldmeth + + def _update_class(self, oldclass, newclass): + """Update a class object.""" + olddict = oldclass.__dict__ + newdict = newclass.__dict__ + + oldnames = set(olddict) + newnames = set(newdict) + + for name in newnames - oldnames: + setattr(oldclass, name, newdict[name]) + notify_info0("Added:", name, "to", oldclass) + self.found_change = True + + # Note: not removing old things... + # for name in oldnames - newnames: + # notify_info('Removed:', name, 'from', oldclass) + # delattr(oldclass, name) + + for name in (oldnames & newnames) - set(["__dict__", "__doc__"]): + self._update( + oldclass, name, olddict[name], newdict[name], is_class_namespace=True + ) + + old_bases = getattr(oldclass, "__bases__", None) + new_bases = getattr(newclass, "__bases__", None) + if str(old_bases) != str(new_bases): + notify_error( + "Changing the hierarchy of a class is not supported. %s may be inconsistent." + % (oldclass,) + ) + + self._handle_namespace(oldclass, is_class_namespace=True) + + def _update_classmethod(self, oldcm, newcm): + """Update a classmethod update.""" + # While we can't modify the classmethod object itself (it has no + # mutable attributes), we *can* extract the underlying function + # (by calling __get__(), which returns a method object) and update + # it in-place. We don't have the class available to pass to + # __get__() but any object except None will do. + self._update(None, None, oldcm.__get__(0), newcm.__get__(0)) + + def _update_staticmethod(self, oldsm, newsm): + """Update a staticmethod update.""" + # While we can't modify the staticmethod object itself (it has no + # mutable attributes), we *can* extract the underlying function + # (by calling __get__(), which returns it) and update it in-place. + # We don't have the class available to pass to __get__() but any + # object except None will do. + self._update(None, None, oldsm.__get__(0), newsm.__get__(0)) diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_resolver.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_resolver.py new file mode 100644 index 000000000..5c0e60558 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_resolver.py @@ -0,0 +1,890 @@ +import traceback +from functools import partial +from io import StringIO +from os.path import basename + +from _pydev_bundle import pydev_log + +from _pydevd_bundle import pydevd_constants +from _pydevd_bundle.pydevd_constants import ( + GENERATED_LEN_ATTR_NAME, + IS_PY36_OR_GREATER, + IS_PYPY, + RETURN_VALUES_DICT, + DebugInfoHolder, + MethodWrapperType, +) +from _pydevd_bundle.pydevd_safe_repr import SafeRepr +from _pydevd_bundle.pydevd_utils import DAPGrouper, Timer, hasattr_checked + +TOO_LARGE_MSG = "Maximum number of items (%s) reached. To show more items customize the value of the PYDEVD_CONTAINER_RANDOM_ACCESS_MAX_ITEMS environment variable." +TOO_LARGE_ATTR = "Unable to handle:" + + +# ======================================================================================================================= +# UnableToResolveVariableException +# ======================================================================================================================= +class UnableToResolveVariableException(Exception): + pass + + +try: + from collections import OrderedDict +except: + OrderedDict = dict + +try: + import java.lang # @UnresolvedImport +except: + pass + +# ======================================================================================================================= +# See: pydevd_extension_api module for resolver interface +# ======================================================================================================================= + + +def sorted_attributes_key(attr_name): + if attr_name.startswith("__"): + if attr_name.endswith("__"): + # __ double under before and after __ + return (3, attr_name) + else: + # __ double under before + return (2, attr_name) + elif attr_name.startswith("_"): + # _ single under + return (1, attr_name) + else: + # Regular (Before anything) + return (0, attr_name) + + +# ======================================================================================================================= +# DefaultResolver +# ======================================================================================================================= +class DefaultResolver: + """ + DefaultResolver is the class that'll actually resolve how to show some variable. + """ + + def resolve(self, var, attribute): + return getattr(var, attribute) + + def get_contents_debug_adapter_protocol(self, obj, fmt=None): + if MethodWrapperType: + dct, used___dict__ = self._get_py_dictionary(obj) + else: + dct = self._get_jy_dictionary(obj)[0] + + lst = sorted(dct.items(), key=lambda tup: sorted_attributes_key(tup[0])) + if used___dict__: + eval_name = ".__dict__[%s]" + else: + eval_name = ".%s" + + ret = [] + for attr_name, attr_value in lst: + entry = (attr_name, attr_value, eval_name % attr_name) + ret.append(entry) + + return ret + + def get_dictionary(self, var, names=None, used___dict__=False): + if MethodWrapperType: + return self._get_py_dictionary(var, names, used___dict__=used___dict__)[0] + else: + return self._get_jy_dictionary(var)[0] + + def _get_jy_dictionary(self, obj): + ret = {} + found = java.util.HashMap() + + original = obj + if hasattr_checked(obj, "__class__") and obj.__class__ == java.lang.Class: + # get info about superclasses + classes = [] + classes.append(obj) + c = obj.getSuperclass() + while c != None: + classes.append(c) + c = c.getSuperclass() + + # get info about interfaces + interfs = [] + for obj in classes: + interfs.extend(obj.getInterfaces()) + classes.extend(interfs) + + # now is the time when we actually get info on the declared methods and fields + for obj in classes: + declaredMethods = obj.getDeclaredMethods() + declaredFields = obj.getDeclaredFields() + for i in range(len(declaredMethods)): + name = declaredMethods[i].getName() + ret[name] = declaredMethods[i].toString() + found.put(name, 1) + + for i in range(len(declaredFields)): + name = declaredFields[i].getName() + found.put(name, 1) + # if declaredFields[i].isAccessible(): + declaredFields[i].setAccessible(True) + # ret[name] = declaredFields[i].get( declaredFields[i] ) + try: + ret[name] = declaredFields[i].get(original) + except: + ret[name] = declaredFields[i].toString() + + # this simple dir does not always get all the info, that's why we have the part before + # (e.g.: if we do a dir on String, some methods that are from other interfaces such as + # charAt don't appear) + try: + d = dir(original) + for name in d: + if found.get(name) != 1: + ret[name] = getattr(original, name) + except: + # sometimes we're unable to do a dir + pass + + return ret + + def get_names(self, var): + used___dict__ = False + try: + names = dir(var) + except Exception: + names = [] + if not names: + if hasattr_checked(var, "__dict__"): + names = list(var.__dict__) + used___dict__ = True + return names, used___dict__ + + def _get_py_dictionary(self, var, names=None, used___dict__=False): + """ + :return tuple(names, used___dict__), where used___dict__ means we have to access + using obj.__dict__[name] instead of getattr(obj, name) + """ + # On PyPy we never show functions. This is because of a corner case where PyPy becomes + # absurdly slow -- it takes almost half a second to introspect a single numpy function (so, + # the related test, "test_case_16_resolve_numpy_array", times out... this probably isn't + # specific to numpy, but to any library where the CPython bridge is used, but as we + # can't be sure in the debugger, we play it safe and don't show it at all). + filter_function = IS_PYPY + + if not names: + names, used___dict__ = self.get_names(var) + d = {} + + # Be aware that the order in which the filters are applied attempts to + # optimize the operation by removing as many items as possible in the + # first filters, leaving fewer items for later filters + + timer = Timer() + cls = type(var) + for name in names: + try: + name_as_str = name + if name_as_str.__class__ != str: + name_as_str = "%r" % (name_as_str,) + + if not used___dict__: + attr = getattr(var, name) + else: + attr = var.__dict__[name] + + # filter functions? + if filter_function: + if inspect.isroutine(attr) or isinstance(attr, MethodWrapperType): + continue + except: + # if some error occurs getting it, let's put it to the user. + strIO = StringIO() + traceback.print_exc(file=strIO) + attr = strIO.getvalue() + + finally: + timer.report_if_getting_attr_slow(cls, name_as_str) + + d[name_as_str] = attr + + return d, used___dict__ + + +class DAPGrouperResolver: + def get_contents_debug_adapter_protocol(self, obj, fmt=None): + return obj.get_contents_debug_adapter_protocol() + + +_basic_immutable_types = (int, float, complex, str, bytes, type(None), bool, frozenset) + + +def _does_obj_repr_evaluate_to_obj(obj): + """ + If obj is an object where evaluating its representation leads to + the same object, return True, otherwise, return False. + """ + try: + if isinstance(obj, tuple): + for o in obj: + if not _does_obj_repr_evaluate_to_obj(o): + return False + return True + else: + return isinstance(obj, _basic_immutable_types) + except: + return False + + +# ======================================================================================================================= +# DictResolver +# ======================================================================================================================= +class DictResolver: + sort_keys = not IS_PY36_OR_GREATER + + def resolve(self, dct, key): + if key in (GENERATED_LEN_ATTR_NAME, TOO_LARGE_ATTR): + return None + + if "(" not in key: + # we have to treat that because the dict resolver is also used to directly resolve the global and local + # scopes (which already have the items directly) + try: + return dct[key] + except: + return getattr(dct, key) + + # ok, we have to iterate over the items to find the one that matches the id, because that's the only way + # to actually find the reference from the string we have before. + expected_id = int(key.split("(")[-1][:-1]) + for key, val in dct.items(): + if id(key) == expected_id: + return val + + raise UnableToResolveVariableException() + + def key_to_str(self, key, fmt=None): + if fmt is not None: + if fmt.get("hex", False): + safe_repr = SafeRepr() + safe_repr.convert_to_hex = True + return safe_repr(key) + return "%r" % (key,) + + def init_dict(self): + return {} + + def get_contents_debug_adapter_protocol(self, dct, fmt=None): + """ + This method is to be used in the case where the variables are all saved by its id (and as + such don't need to have the `resolve` method called later on, so, keys don't need to + embed the reference in the key). + + Note that the return should be ordered. + + :return list(tuple(name:str, value:object, evaluateName:str)) + """ + ret = [] + + i = 0 + + found_representations = set() + + for key, val in dct.items(): + i += 1 + key_as_str = self.key_to_str(key, fmt) + + if key_as_str not in found_representations: + found_representations.add(key_as_str) + else: + # If the key would be a duplicate, add the key id (otherwise + # VSCode won't show all keys correctly). + # See: https://github.com/microsoft/debugpy/issues/148 + key_as_str = "%s (id: %s)" % (key_as_str, id(key)) + found_representations.add(key_as_str) + + if _does_obj_repr_evaluate_to_obj(key): + s = self.key_to_str(key) # do not format the key + eval_key_str = "[%s]" % (s,) + else: + eval_key_str = None + ret.append((key_as_str, val, eval_key_str)) + if i >= pydevd_constants.PYDEVD_CONTAINER_RANDOM_ACCESS_MAX_ITEMS: + ret.append( + ( + TOO_LARGE_ATTR, + TOO_LARGE_MSG + % (pydevd_constants.PYDEVD_CONTAINER_RANDOM_ACCESS_MAX_ITEMS,), + None, + ) + ) + break + + # in case the class extends built-in type and has some additional fields + from_default_resolver = defaultResolver.get_contents_debug_adapter_protocol( + dct, fmt + ) + + if from_default_resolver: + ret = from_default_resolver + ret + + if self.sort_keys: + ret = sorted(ret, key=lambda tup: sorted_attributes_key(tup[0])) + + ret.append( + ( + GENERATED_LEN_ATTR_NAME, + len(dct), + partial(_apply_evaluate_name, evaluate_name="len(%s)"), + ) + ) + return ret + + def get_dictionary(self, dct): + ret = self.init_dict() + + i = 0 + for key, val in dct.items(): + i += 1 + # we need to add the id because otherwise we cannot find the real object to get its contents later on. + key = "%s (%s)" % (self.key_to_str(key), id(key)) + ret[key] = val + if i >= pydevd_constants.PYDEVD_CONTAINER_RANDOM_ACCESS_MAX_ITEMS: + ret[TOO_LARGE_ATTR] = TOO_LARGE_MSG % ( + pydevd_constants.PYDEVD_CONTAINER_RANDOM_ACCESS_MAX_ITEMS, + ) + break + + # in case if the class extends built-in type and has some additional fields + additional_fields = defaultResolver.get_dictionary(dct) + ret.update(additional_fields) + ret[GENERATED_LEN_ATTR_NAME] = len(dct) + return ret + + +def _apply_evaluate_name(parent_name, evaluate_name): + return evaluate_name % (parent_name,) + + +class MoreItemsRange: + def __init__(self, value, from_i, to_i): + self.value = value + self.from_i = from_i + self.to_i = to_i + + def get_contents_debug_adapter_protocol(self, _self, fmt=None): + l = len(self.value) + ret = [] + + format_str = "%0" + str(int(len(str(l - 1)))) + "d" + if fmt is not None and fmt.get("hex", False): + format_str = "0x%0" + str(int(len(hex(l).lstrip("0x")))) + "x" + + for i, item in enumerate(self.value[self.from_i : self.to_i]): + i += self.from_i + ret.append((format_str % i, item, "[%s]" % i)) + return ret + + def get_dictionary(self, _self, fmt=None): + dct = {} + for key, obj, _ in self.get_contents_debug_adapter_protocol(self, fmt): + dct[key] = obj + return dct + + def resolve(self, attribute): + """ + :param var: that's the original object we're dealing with. + :param attribute: that's the key to resolve + -- either the dict key in get_dictionary or the name in the dap protocol. + """ + return self.value[int(attribute)] + + def __eq__(self, o): + return ( + isinstance(o, MoreItemsRange) + and self.value is o.value + and self.from_i == o.from_i + and self.to_i == o.to_i + ) + + def __str__(self): + return "[%s:%s]" % (self.from_i, self.to_i) + + __repr__ = __str__ + + +class MoreItems: + def __init__(self, value, handled_items): + self.value = value + self.handled_items = handled_items + + def get_contents_debug_adapter_protocol(self, _self, fmt=None): + total_items = len(self.value) + remaining = total_items - self.handled_items + bucket_size = pydevd_constants.PYDEVD_CONTAINER_BUCKET_SIZE + + from_i = self.handled_items + to_i = from_i + min(bucket_size, remaining) + + ret = [] + while remaining > 0: + remaining -= bucket_size + more_items_range = MoreItemsRange(self.value, from_i, to_i) + ret.append((str(more_items_range), more_items_range, None)) + + from_i = to_i + to_i = from_i + min(bucket_size, remaining) + + return ret + + def get_dictionary(self, _self, fmt=None): + dct = {} + for key, obj, _ in self.get_contents_debug_adapter_protocol(self, fmt): + dct[key] = obj + return dct + + def resolve(self, attribute): + from_i, to_i = attribute[1:-1].split(":") + from_i = int(from_i) + to_i = int(to_i) + return MoreItemsRange(self.value, from_i, to_i) + + def __eq__(self, o): + return isinstance(o, MoreItems) and self.value is o.value + + def __str__(self): + return "..." + + __repr__ = __str__ + + +class ForwardInternalResolverToObject: + """ + To be used when we provide some internal object that'll actually do the resolution. + """ + + def get_contents_debug_adapter_protocol(self, obj, fmt=None): + return obj.get_contents_debug_adapter_protocol(fmt) + + def get_dictionary(self, var, fmt={}): + return var.get_dictionary(var, fmt) + + def resolve(self, var, attribute): + return var.resolve(attribute) + + +class TupleResolver: # to enumerate tuples and lists + def resolve(self, var, attribute): + """ + :param var: that's the original object we're dealing with. + :param attribute: that's the key to resolve + -- either the dict key in get_dictionary or the name in the dap protocol. + """ + if attribute in (GENERATED_LEN_ATTR_NAME, TOO_LARGE_ATTR): + return None + try: + return var[int(attribute)] + except: + if attribute == "more": + return MoreItems( + var, pydevd_constants.PYDEVD_CONTAINER_INITIAL_EXPANDED_ITEMS + ) + + return getattr(var, attribute) + + def get_contents_debug_adapter_protocol(self, lst, fmt=None): + """ + This method is to be used in the case where the variables are all saved by its id (and as + such don't need to have the `resolve` method called later on, so, keys don't need to + embed the reference in the key). + + Note that the return should be ordered. + + :return list(tuple(name:str, value:object, evaluateName:str)) + """ + lst_len = len(lst) + ret = [] + + format_str = "%0" + str(int(len(str(lst_len - 1)))) + "d" + if fmt is not None and fmt.get("hex", False): + format_str = "0x%0" + str(int(len(hex(lst_len).lstrip("0x")))) + "x" + + initial_expanded = pydevd_constants.PYDEVD_CONTAINER_INITIAL_EXPANDED_ITEMS + for i, item in enumerate(lst): + ret.append((format_str % i, item, "[%s]" % i)) + + if i >= initial_expanded - 1: + if ( + lst_len - initial_expanded + ) < pydevd_constants.PYDEVD_CONTAINER_BUCKET_SIZE: + # Special case: if we have just 1 more bucket just put it inline. + item = MoreItemsRange(lst, initial_expanded, lst_len) + + else: + # Multiple buckets + item = MoreItems(lst, initial_expanded) + ret.append(("more", item, None)) + break + + # Needed in case the class extends the built-in type and has some additional fields. + from_default_resolver = defaultResolver.get_contents_debug_adapter_protocol( + lst, fmt=fmt + ) + if from_default_resolver: + ret = from_default_resolver + ret + + ret.append( + ( + GENERATED_LEN_ATTR_NAME, + len(lst), + partial(_apply_evaluate_name, evaluate_name="len(%s)"), + ) + ) + return ret + + def get_dictionary(self, var, fmt={}): + l = len(var) + d = {} + + format_str = "%0" + str(int(len(str(l - 1)))) + "d" + if fmt is not None and fmt.get("hex", False): + format_str = "0x%0" + str(int(len(hex(l).lstrip("0x")))) + "x" + + initial_expanded = pydevd_constants.PYDEVD_CONTAINER_INITIAL_EXPANDED_ITEMS + for i, item in enumerate(var): + d[format_str % i] = item + + if i >= initial_expanded - 1: + item = MoreItems(var, initial_expanded) + d["more"] = item + break + + # in case if the class extends built-in type and has some additional fields + additional_fields = defaultResolver.get_dictionary(var) + d.update(additional_fields) + d[GENERATED_LEN_ATTR_NAME] = len(var) + return d + + +# ======================================================================================================================= +# SetResolver +# ======================================================================================================================= +class SetResolver: + """ + Resolves a set as dict id(object)->object + """ + + def get_contents_debug_adapter_protocol(self, obj, fmt=None): + ret = [] + + for i, item in enumerate(obj): + ret.append((str(id(item)), item, None)) + + if i >= pydevd_constants.PYDEVD_CONTAINER_RANDOM_ACCESS_MAX_ITEMS: + ret.append( + ( + TOO_LARGE_ATTR, + TOO_LARGE_MSG + % (pydevd_constants.PYDEVD_CONTAINER_RANDOM_ACCESS_MAX_ITEMS,), + None, + ) + ) + break + + # Needed in case the class extends the built-in type and has some additional fields. + from_default_resolver = defaultResolver.get_contents_debug_adapter_protocol( + obj, fmt=fmt + ) + if from_default_resolver: + ret = from_default_resolver + ret + ret.append( + ( + GENERATED_LEN_ATTR_NAME, + len(obj), + partial(_apply_evaluate_name, evaluate_name="len(%s)"), + ) + ) + return ret + + def resolve(self, var, attribute): + if attribute in (GENERATED_LEN_ATTR_NAME, TOO_LARGE_ATTR): + return None + + try: + attribute = int(attribute) + except: + return getattr(var, attribute) + + for v in var: + if id(v) == attribute: + return v + + raise UnableToResolveVariableException( + "Unable to resolve %s in %s" % (attribute, var) + ) + + def get_dictionary(self, var): + d = {} + for i, item in enumerate(var): + d[str(id(item))] = item + + if i >= pydevd_constants.PYDEVD_CONTAINER_RANDOM_ACCESS_MAX_ITEMS: + d[TOO_LARGE_ATTR] = TOO_LARGE_MSG % ( + pydevd_constants.PYDEVD_CONTAINER_RANDOM_ACCESS_MAX_ITEMS, + ) + break + + # in case if the class extends built-in type and has some additional fields + additional_fields = defaultResolver.get_dictionary(var) + d.update(additional_fields) + d[GENERATED_LEN_ATTR_NAME] = len(var) + return d + + def change_var_from_name(self, container, name, new_value): + # The name given in this case must be the id(item), so, we can actually + # iterate in the set and see which item matches the given id. + + try: + # Check that the new value can actually be added to a set (i.e.: it's hashable/comparable). + set().add(new_value) + except: + return None + + for item in container: + if str(id(item)) == name: + container.remove(item) + container.add(new_value) + return str(id(new_value)) + + return None + + +# ======================================================================================================================= +# InstanceResolver +# ======================================================================================================================= +class InstanceResolver: + def resolve(self, var, attribute): + field = var.__class__.getDeclaredField(attribute) + field.setAccessible(True) + return field.get(var) + + def get_dictionary(self, obj): + ret = {} + + declaredFields = obj.__class__.getDeclaredFields() + for i in range(len(declaredFields)): + name = declaredFields[i].getName() + try: + declaredFields[i].setAccessible(True) + ret[name] = declaredFields[i].get(obj) + except: + pydev_log.exception() + + return ret + + +# ======================================================================================================================= +# JyArrayResolver +# ======================================================================================================================= +class JyArrayResolver: + """ + This resolves a regular Object[] array from java + """ + + def resolve(self, var, attribute): + if attribute == GENERATED_LEN_ATTR_NAME: + return None + return var[int(attribute)] + + def get_dictionary(self, obj): + ret = {} + + for i in range(len(obj)): + ret[i] = obj[i] + + ret[GENERATED_LEN_ATTR_NAME] = len(obj) + return ret + + +# ======================================================================================================================= +# MultiValueDictResolver +# ======================================================================================================================= +class MultiValueDictResolver(DictResolver): + def resolve(self, dct, key): + if key in (GENERATED_LEN_ATTR_NAME, TOO_LARGE_ATTR): + return None + + # ok, we have to iterate over the items to find the one that matches the id, because that's the only way + # to actually find the reference from the string we have before. + expected_id = int(key.split("(")[-1][:-1]) + for key in list(dct.keys()): + val = dct.getlist(key) + if id(key) == expected_id: + return val + + raise UnableToResolveVariableException() + + +# ======================================================================================================================= +# DjangoFormResolver +# ======================================================================================================================= +class DjangoFormResolver(DefaultResolver): + def get_dictionary(self, var, names=None): + # Do not call self.errors because it is a property and has side effects. + names, used___dict__ = self.get_names(var) + + has_errors_attr = False + if "errors" in names: + has_errors_attr = True + names.remove("errors") + + d = defaultResolver.get_dictionary( + var, names=names, used___dict__=used___dict__ + ) + if has_errors_attr: + try: + errors_attr = getattr(var, "_errors") + except: + errors_attr = None + d["errors"] = errors_attr + return d + + +# ======================================================================================================================= +# DequeResolver +# ======================================================================================================================= +class DequeResolver(TupleResolver): + def get_dictionary(self, var): + d = TupleResolver.get_dictionary(self, var) + d["maxlen"] = getattr(var, "maxlen", None) + return d + + +# ======================================================================================================================= +# OrderedDictResolver +# ======================================================================================================================= +class OrderedDictResolver(DictResolver): + sort_keys = False + + def init_dict(self): + return OrderedDict() + + +# ======================================================================================================================= +# FrameResolver +# ======================================================================================================================= +class FrameResolver: + """ + This resolves a frame. + """ + + def resolve(self, obj, attribute): + if attribute == "__internals__": + return defaultResolver.get_dictionary(obj) + + if attribute == "stack": + return self.get_frame_stack(obj) + + if attribute == "f_locals": + return obj.f_locals + + return None + + def get_dictionary(self, obj): + ret = {} + ret["__internals__"] = defaultResolver.get_dictionary(obj) + ret["stack"] = self.get_frame_stack(obj) + ret["f_locals"] = obj.f_locals + return ret + + def get_frame_stack(self, frame): + ret = [] + if frame is not None: + ret.append(self.get_frame_name(frame)) + + while frame.f_back: + frame = frame.f_back + ret.append(self.get_frame_name(frame)) + + return ret + + def get_frame_name(self, frame): + if frame is None: + return "None" + try: + name = basename(frame.f_code.co_filename) + return "frame: %s [%s:%s] id:%s" % ( + frame.f_code.co_name, + name, + frame.f_lineno, + id(frame), + ) + except: + return "frame object" + + +defaultResolver = DefaultResolver() +dictResolver = DictResolver() +tupleResolver = TupleResolver() +instanceResolver = InstanceResolver() +jyArrayResolver = JyArrayResolver() +setResolver = SetResolver() +multiValueDictResolver = MultiValueDictResolver() +djangoFormResolver = DjangoFormResolver() +dequeResolver = DequeResolver() +orderedDictResolver = OrderedDictResolver() +frameResolver = FrameResolver() +dapGrouperResolver = DAPGrouperResolver() +forwardInternalResolverToObject = ForwardInternalResolverToObject() + + +class InspectStub: + def isbuiltin(self, _args): + return False + + def isroutine(self, object): + return False + + +try: + import inspect +except: + inspect = InspectStub() + + +def get_var_scope(attr_name, attr_value, evaluate_name, handle_return_values): + if attr_name.startswith("'"): + if attr_name.endswith("'"): + # i.e.: strings denote that it is a regular value in some container. + return "" + else: + i = attr_name.find("__' (") + if i >= 0: + # Handle attr_name such as: >>'__name__' (1732494379184)<< + attr_name = attr_name[1 : i + 2] + + if handle_return_values and attr_name == RETURN_VALUES_DICT: + return "" + + elif attr_name == GENERATED_LEN_ATTR_NAME: + return "" + + if attr_name.startswith("__") and attr_name.endswith("__"): + return DAPGrouper.SCOPE_SPECIAL_VARS + + if attr_name.startswith("_") or attr_name.endswith("__"): + return DAPGrouper.SCOPE_PROTECTED_VARS + + try: + if inspect.isroutine(attr_value) or isinstance(attr_value, MethodWrapperType): + return DAPGrouper.SCOPE_FUNCTION_VARS + + elif inspect.isclass(attr_value): + return DAPGrouper.SCOPE_CLASS_VARS + except: + # It's possible that isinstance throws an exception when dealing with user-code. + if DebugInfoHolder.DEBUG_TRACE_LEVEL > 0: + pydev_log.exception() + + return "" diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_runpy.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_runpy.py new file mode 100644 index 000000000..cd3ce4d5e --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_runpy.py @@ -0,0 +1,376 @@ +""" +Vendored copy of runpy from the standard library. + +It's vendored so that we can properly ignore it when used to start user code +while still making it possible for the user to debug runpy itself. + +runpy.py - locating and running Python code using the module namespace + +Provides support for locating and running Python scripts using the Python +module namespace instead of the native filesystem. + +This allows Python code to play nicely with non-filesystem based PEP 302 +importers when locating support scripts as well as when importing modules. +""" +# Written by Nick Coghlan +# to implement PEP 338 (Executing Modules as Scripts) + +import importlib.machinery # importlib first so we can test #15386 via -m +import importlib.util +import io +import os +import sys +import types + +__all__ = [ + "run_module", + "run_path", +] + + +# Note: fabioz: Don't use pkgutil (when handling caught exceptions we could end up +# showing exceptions in pkgutil.get_imported (specifically the KeyError), so, +# create a copy of the function we need to properly ignore this exception when +# running the program. +def pkgutil_get_importer(path_item): + """Retrieve a finder for the given path item + + The returned finder is cached in sys.path_importer_cache + if it was newly created by a path hook. + + The cache (or part of it) can be cleared manually if a + rescan of sys.path_hooks is necessary. + """ + try: + importer = sys.path_importer_cache[path_item] + except KeyError: + for path_hook in sys.path_hooks: + try: + importer = path_hook(path_item) + sys.path_importer_cache.setdefault(path_item, importer) + break + except ImportError: + pass + else: + importer = None + return importer + + +class _TempModule: + """Temporarily replace a module in sys.modules with an empty namespace""" + + def __init__(self, mod_name): + self.mod_name = mod_name + self.module = types.ModuleType(mod_name) + self._saved_module = [] + + def __enter__(self): + mod_name = self.mod_name + try: + self._saved_module.append(sys.modules[mod_name]) + except KeyError: + pass + sys.modules[mod_name] = self.module + return self + + def __exit__(self, *args): + if self._saved_module: + sys.modules[self.mod_name] = self._saved_module[0] + else: + del sys.modules[self.mod_name] + self._saved_module = [] + + +class _ModifiedArgv0: + def __init__(self, value): + self.value = value + self._saved_value = self._sentinel = object() + + def __enter__(self): + if self._saved_value is not self._sentinel: + raise RuntimeError("Already preserving saved value") + self._saved_value = sys.argv[0] + sys.argv[0] = self.value + + def __exit__(self, *args): + self.value = self._sentinel + sys.argv[0] = self._saved_value + + +# TODO: Replace these helpers with importlib._bootstrap_external functions. +def _run_code( + code, + run_globals, + init_globals=None, + mod_name=None, + mod_spec=None, + pkg_name=None, + script_name=None, +): + """Helper to run code in nominated namespace""" + if init_globals is not None: + run_globals.update(init_globals) + if mod_spec is None: + loader = None + fname = script_name + cached = None + else: + loader = mod_spec.loader + fname = mod_spec.origin + cached = mod_spec.cached + if pkg_name is None: + pkg_name = mod_spec.parent + run_globals.update( + __name__=mod_name, + __file__=fname, + __cached__=cached, + __doc__=None, + __loader__=loader, + __package__=pkg_name, + __spec__=mod_spec, + ) + exec(code, run_globals) + return run_globals + + +def _run_module_code( + code, + init_globals=None, + mod_name=None, + mod_spec=None, + pkg_name=None, + script_name=None, +): + """Helper to run code in new namespace with sys modified""" + fname = script_name if mod_spec is None else mod_spec.origin + with _TempModule(mod_name) as temp_module, _ModifiedArgv0(fname): + mod_globals = temp_module.module.__dict__ + _run_code( + code, mod_globals, init_globals, mod_name, mod_spec, pkg_name, script_name + ) + # Copy the globals of the temporary module, as they + # may be cleared when the temporary module goes away + return mod_globals.copy() + + +# Helper to get the full name, spec and code for a module +def _get_module_details(mod_name, error=ImportError): + if mod_name.startswith("."): + raise error("Relative module names not supported") + pkg_name, _, _ = mod_name.rpartition(".") + if pkg_name: + # Try importing the parent to avoid catching initialization errors + try: + __import__(pkg_name) + except ImportError as e: + # If the parent or higher ancestor package is missing, let the + # error be raised by find_spec() below and then be caught. But do + # not allow other errors to be caught. + if e.name is None or ( + e.name != pkg_name and not pkg_name.startswith(e.name + ".") + ): + raise + # Warn if the module has already been imported under its normal name + existing = sys.modules.get(mod_name) + if existing is not None and not hasattr(existing, "__path__"): + from warnings import warn + + msg = ( + f"{mod_name!r} found in sys.modules after import of " + f"package {pkg_name!r}, but prior to execution of " + f"{mod_name!r}; this may result in unpredictable " + "behaviour" + ) + warn(RuntimeWarning(msg)) + + try: + spec = importlib.util.find_spec(mod_name) + except (ImportError, AttributeError, TypeError, ValueError) as ex: + # This hack fixes an impedance mismatch between pkgutil and + # importlib, where the latter raises other errors for cases where + # pkgutil previously raised ImportError + msg = "Error while finding module specification for {!r} ({}: {})" + if mod_name.endswith(".py"): + msg += ( + f". Try using '{mod_name[:-3]}' instead of " + f"'{mod_name}' as the module name." + ) + raise error(msg.format(mod_name, type(ex).__name__, ex)) from ex + if spec is None: + raise error("No module named %s" % mod_name) + if spec.submodule_search_locations is not None: + if mod_name == "__main__" or mod_name.endswith(".__main__"): + raise error("Cannot use package as __main__ module") + try: + pkg_main_name = mod_name + ".__main__" + return _get_module_details(pkg_main_name, error) + except error as e: + if mod_name not in sys.modules: + raise # No module loaded; being a package is irrelevant + raise error( + ("%s; %r is a package and cannot " + "be directly executed") + % (e, mod_name) + ) + loader = spec.loader + if loader is None: + raise error("%r is a namespace package and cannot be executed" % mod_name) + try: + code = loader.get_code(mod_name) + except ImportError as e: + raise error(format(e)) from e + if code is None: + raise error("No code object available for %s" % mod_name) + return mod_name, spec, code + + +class _Error(Exception): + """Error that _run_module_as_main() should report without a traceback""" + + +# XXX ncoghlan: Should this be documented and made public? +# (Current thoughts: don't repeat the mistake that lead to its +# creation when run_module() no longer met the needs of +# mainmodule.c, but couldn't be changed because it was public) +def _run_module_as_main(mod_name, alter_argv=True): + """Runs the designated module in the __main__ namespace + + Note that the executed module will have full access to the + __main__ namespace. If this is not desirable, the run_module() + function should be used to run the module code in a fresh namespace. + + At the very least, these variables in __main__ will be overwritten: + __name__ + __file__ + __cached__ + __loader__ + __package__ + """ + try: + if alter_argv or mod_name != "__main__": # i.e. -m switch + mod_name, mod_spec, code = _get_module_details(mod_name, _Error) + else: # i.e. directory or zipfile execution + mod_name, mod_spec, code = _get_main_module_details(_Error) + except _Error as exc: + msg = "%s: %s" % (sys.executable, exc) + sys.exit(msg) + main_globals = sys.modules["__main__"].__dict__ + if alter_argv: + sys.argv[0] = mod_spec.origin + return _run_code(code, main_globals, None, "__main__", mod_spec) + + +def run_module(mod_name, init_globals=None, run_name=None, alter_sys=False): + """Execute a module's code without importing it + + Returns the resulting top level namespace dictionary + """ + mod_name, mod_spec, code = _get_module_details(mod_name) + if run_name is None: + run_name = mod_name + if alter_sys: + return _run_module_code(code, init_globals, run_name, mod_spec) + else: + # Leave the sys module alone + return _run_code(code, {}, init_globals, run_name, mod_spec) + + +def _get_main_module_details(error=ImportError): + # Helper that gives a nicer error message when attempting to + # execute a zipfile or directory by invoking __main__.py + # Also moves the standard __main__ out of the way so that the + # preexisting __loader__ entry doesn't cause issues + main_name = "__main__" + saved_main = sys.modules[main_name] + del sys.modules[main_name] + try: + return _get_module_details(main_name) + except ImportError as exc: + if main_name in str(exc): + raise error( + "can't find %r module in %r" % (main_name, sys.path[0]) + ) from exc + raise + finally: + sys.modules[main_name] = saved_main + + +try: + io_open_code = io.open_code +except AttributeError: + # Compatibility with Python 3.6/3.7 + import tokenize + + io_open_code = tokenize.open + + +def _get_code_from_file(run_name, fname): + # Check for a compiled file first + from pkgutil import read_code + + decoded_path = os.path.abspath(os.fsdecode(fname)) + with io_open_code(decoded_path) as f: + code = read_code(f) + if code is None: + # That didn't work, so try it as normal source code + with io_open_code(decoded_path) as f: + code = compile(f.read(), fname, "exec") + return code, fname + + +def run_path(path_name, init_globals=None, run_name=None): + """Execute code located at the specified filesystem location + + Returns the resulting top level namespace dictionary + + The file path may refer directly to a Python script (i.e. + one that could be directly executed with execfile) or else + it may refer to a zipfile or directory containing a top + level __main__.py script. + """ + if run_name is None: + run_name = "" + pkg_name = run_name.rpartition(".")[0] + importer = pkgutil_get_importer(path_name) + # Trying to avoid importing imp so as to not consume the deprecation warning. + is_NullImporter = False + if type(importer).__module__ == "imp": + if type(importer).__name__ == "NullImporter": + is_NullImporter = True + if isinstance(importer, type(None)) or is_NullImporter: + # Not a valid sys.path entry, so run the code directly + # execfile() doesn't help as we want to allow compiled files + code, fname = _get_code_from_file(run_name, path_name) + return _run_module_code( + code, init_globals, run_name, pkg_name=pkg_name, script_name=fname + ) + else: + # Finder is defined for path, so add it to + # the start of sys.path + sys.path.insert(0, path_name) + try: + # Here's where things are a little different from the run_module + # case. There, we only had to replace the module in sys while the + # code was running and doing so was somewhat optional. Here, we + # have no choice and we have to remove it even while we read the + # code. If we don't do this, a __loader__ attribute in the + # existing __main__ module may prevent location of the new module. + mod_name, mod_spec, code = _get_main_module_details() + with _TempModule(run_name) as temp_module, _ModifiedArgv0(path_name): + mod_globals = temp_module.module.__dict__ + return _run_code( + code, mod_globals, init_globals, run_name, mod_spec, pkg_name + ).copy() + finally: + try: + sys.path.remove(path_name) + except ValueError: + pass + + +if __name__ == "__main__": + # Run the module specified as the next command line argument + if len(sys.argv) < 2: + print("No module specified for execution", file=sys.stderr) + else: + del sys.argv[0] # Make the requested module sys.argv[0] + _run_module_as_main(sys.argv[0]) diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_safe_repr.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_safe_repr.py new file mode 100644 index 000000000..c65edb907 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_safe_repr.py @@ -0,0 +1,409 @@ +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See LICENSE in the project root +# for license information. + +# Gotten from ptvsd for supporting the format expected there. +import locale +import sys + +from _pydev_bundle import pydev_log + +from _pydevd_bundle.pydevd_constants import IS_PY36_OR_GREATER + + +class SafeRepr: + # Can be used to override the encoding from locale.getpreferredencoding() + locale_preferred_encoding = None + + # Can be used to override the encoding used for sys.stdout.encoding + sys_stdout_encoding = None + + # String types are truncated to maxstring_outer when at the outer- + # most level, and truncated to maxstring_inner characters inside + # collections. + maxstring_outer = 2**16 + maxstring_inner = 128 + string_types = (str, bytes) + bytes = bytes + set_info = (set, "{", "}", False) + frozenset_info = (frozenset, "frozenset({", "})", False) + int_types = (int,) + long_iter_types = (list, tuple, bytearray, range, dict, set, frozenset) + + # Collection types are recursively iterated for each limit in + # maxcollection. + maxcollection = (60, 20) + + # Specifies type, prefix string, suffix string, and whether to include a + # comma if there is only one element. (Using a sequence rather than a + # mapping because we use isinstance() to determine the matching type.) + collection_types = [ + (tuple, "(", ")", True), + (list, "[", "]", False), + frozenset_info, + set_info, + ] + try: + from collections import deque + + collection_types.append((deque, "deque([", "])", False)) + except Exception: + pass + + # type, prefix string, suffix string, item prefix string, + # item key/value separator, item suffix string + dict_types = [(dict, "{", "}", "", ": ", "")] + try: + from collections import OrderedDict + + dict_types.append((OrderedDict, "OrderedDict([", "])", "(", ", ", ")")) + except Exception: + pass + + # All other types are treated identically to strings, but using + # different limits. + maxother_outer = 2**16 + maxother_inner = 128 + + convert_to_hex = False + raw_value = False + + def __call__(self, obj): + """ + :param object obj: + The object for which we want a representation. + + :return str: + Returns bytes encoded as utf-8 on py2 and str on py3. + """ + try: + return "".join(self._repr(obj, 0)) + except Exception: + try: + return "An exception was raised: %r" % sys.exc_info()[1] + except Exception: + return "An exception was raised" + + def _repr(self, obj, level): + """Returns an iterable of the parts in the final repr string.""" + try: + obj_repr = type(obj).__repr__ + except Exception: + obj_repr = None + + def has_obj_repr(t): + r = t.__repr__ + try: + return obj_repr == r + except Exception: + return obj_repr is r + + for t, prefix, suffix, comma in self.collection_types: + if isinstance(obj, t) and has_obj_repr(t): + return self._repr_iter(obj, level, prefix, suffix, comma) + + for t, prefix, suffix, item_prefix, item_sep, item_suffix in self.dict_types: # noqa + if isinstance(obj, t) and has_obj_repr(t): + return self._repr_dict( + obj, level, prefix, suffix, item_prefix, item_sep, item_suffix + ) + + for t in self.string_types: + if isinstance(obj, t) and has_obj_repr(t): + return self._repr_str(obj, level) + + if self._is_long_iter(obj): + return self._repr_long_iter(obj) + + return self._repr_other(obj, level) + + # Determines whether an iterable exceeds the limits set in + # maxlimits, and is therefore unsafe to repr(). + def _is_long_iter(self, obj, level=0): + try: + # Strings have their own limits (and do not nest). Because + # they don't have __iter__ in 2.x, this check goes before + # the next one. + if isinstance(obj, self.string_types): + return len(obj) > self.maxstring_inner + + # If it's not an iterable (and not a string), it's fine. + if not hasattr(obj, "__iter__"): + return False + + # If it's not an instance of these collection types then it + # is fine. Note: this is a fix for + # https://github.com/Microsoft/ptvsd/issues/406 + if not isinstance(obj, self.long_iter_types): + return False + + # Iterable is its own iterator - this is a one-off iterable + # like generator or enumerate(). We can't really count that, + # but repr() for these should not include any elements anyway, + # so we can treat it the same as non-iterables. + if obj is iter(obj): + return False + + # range reprs fine regardless of length. + if isinstance(obj, range): + return False + + # numpy and scipy collections (ndarray etc) have + # self-truncating repr, so they're always safe. + try: + module = type(obj).__module__.partition(".")[0] + if module in ("numpy", "scipy"): + return False + except Exception: + pass + + # Iterables that nest too deep are considered long. + if level >= len(self.maxcollection): + return True + + # It is too long if the length exceeds the limit, or any + # of its elements are long iterables. + if hasattr(obj, "__len__"): + try: + size = len(obj) + except Exception: + size = None + if size is not None and size > self.maxcollection[level]: + return True + return any((self._is_long_iter(item, level + 1) for item in obj)) # noqa + return any( + i > self.maxcollection[level] or self._is_long_iter(item, level + 1) + for i, item in enumerate(obj) + ) # noqa + + except Exception: + # If anything breaks, assume the worst case. + return True + + def _repr_iter(self, obj, level, prefix, suffix, comma_after_single_element=False): + yield prefix + + if level >= len(self.maxcollection): + yield "..." + else: + count = self.maxcollection[level] + yield_comma = False + for item in obj: + if yield_comma: + yield ", " + yield_comma = True + + count -= 1 + if count <= 0: + yield "..." + break + + for p in self._repr(item, 100 if item is obj else level + 1): + yield p + else: + if comma_after_single_element: + if count == self.maxcollection[level] - 1: + yield "," + yield suffix + + def _repr_long_iter(self, obj): + try: + length = hex(len(obj)) if self.convert_to_hex else len(obj) + obj_repr = "<%s, len() = %s>" % (type(obj).__name__, length) + except Exception: + try: + obj_repr = "<" + type(obj).__name__ + ">" + except Exception: + obj_repr = "" + yield obj_repr + + def _repr_dict( + self, obj, level, prefix, suffix, item_prefix, item_sep, item_suffix + ): + if not obj: + yield prefix + suffix + return + if level >= len(self.maxcollection): + yield prefix + "..." + suffix + return + + yield prefix + + count = self.maxcollection[level] + yield_comma = False + + if IS_PY36_OR_GREATER: + # On Python 3.6 (onwards) dictionaries now keep + # insertion order. + sorted_keys = list(obj) + else: + try: + sorted_keys = sorted(obj) + except Exception: + sorted_keys = list(obj) + + for key in sorted_keys: + if yield_comma: + yield ", " + yield_comma = True + + count -= 1 + if count <= 0: + yield "..." + break + + yield item_prefix + for p in self._repr(key, level + 1): + yield p + + yield item_sep + + try: + item = obj[key] + except Exception: + yield "" + else: + for p in self._repr(item, 100 if item is obj else level + 1): + yield p + yield item_suffix + + yield suffix + + def _repr_str(self, obj, level): + try: + if self.raw_value: + # For raw value retrieval, ignore all limits. + if isinstance(obj, bytes): + yield obj.decode("latin-1") + else: + yield obj + return + + limit_inner = self.maxother_inner + limit_outer = self.maxother_outer + limit = limit_inner if level > 0 else limit_outer + if len(obj) <= limit: + # Note that we check the limit before doing the repr (so, the final string + # may actually be considerably bigger on some cases, as besides + # the additional u, b, ' chars, some chars may be escaped in repr, so + # even a single char such as \U0010ffff may end up adding more + # chars than expected). + yield self._convert_to_unicode_or_bytes_repr(repr(obj)) + return + + # Slightly imprecise calculations - we may end up with a string that is + # up to 6 characters longer than limit. If you need precise formatting, + # you are using the wrong class. + left_count, right_count = max(1, int(2 * limit / 3)), max(1, int(limit / 3)) # noqa + + # Important: only do repr after slicing to avoid duplicating a byte array that could be + # huge. + + # Note: we don't deal with high surrogates here because we're not dealing with the + # repr() of a random object. + # i.e.: A high surrogate unicode char may be splitted on Py2, but as we do a `repr` + # afterwards, that's ok. + + # Also, we just show the unicode/string/bytes repr() directly to make clear what the + # input type was (so, on py2 a unicode would start with u' and on py3 a bytes would + # start with b'). + + part1 = obj[:left_count] + part1 = repr(part1) + part1 = part1[: part1.rindex("'")] # Remove the last ' + + part2 = obj[-right_count:] + part2 = repr(part2) + part2 = part2[ + part2.index("'") + 1 : + ] # Remove the first ' (and possibly u or b). + + yield part1 + yield "..." + yield part2 + except: + # This shouldn't really happen, but let's play it safe. + pydev_log.exception("Error getting string representation to show.") + for part in self._repr_obj( + obj, level, self.maxother_inner, self.maxother_outer + ): + yield part + + def _repr_other(self, obj, level): + return self._repr_obj(obj, level, self.maxother_inner, self.maxother_outer) + + def _repr_obj(self, obj, level, limit_inner, limit_outer): + try: + if self.raw_value: + # For raw value retrieval, ignore all limits. + if isinstance(obj, bytes): + yield obj.decode("latin-1") + return + + try: + mv = memoryview(obj) + except Exception: + yield self._convert_to_unicode_or_bytes_repr(repr(obj)) + return + else: + # Map bytes to Unicode codepoints with same values. + yield mv.tobytes().decode("latin-1") + return + elif self.convert_to_hex and isinstance(obj, self.int_types): + obj_repr = hex(obj) + else: + obj_repr = repr(obj) + except Exception: + try: + obj_repr = object.__repr__(obj) + except Exception: + try: + obj_repr = "" # noqa + except Exception: + obj_repr = "" + + limit = limit_inner if level > 0 else limit_outer + + if limit >= len(obj_repr): + yield self._convert_to_unicode_or_bytes_repr(obj_repr) + return + + # Slightly imprecise calculations - we may end up with a string that is + # up to 3 characters longer than limit. If you need precise formatting, + # you are using the wrong class. + left_count, right_count = max(1, int(2 * limit / 3)), max(1, int(limit / 3)) # noqa + + yield obj_repr[:left_count] + yield "..." + yield obj_repr[-right_count:] + + def _convert_to_unicode_or_bytes_repr(self, obj_repr): + return obj_repr + + def _bytes_as_unicode_if_possible(self, obj_repr): + # We try to decode with 3 possible encoding (sys.stdout.encoding, + # locale.getpreferredencoding() and 'utf-8). If no encoding can decode + # the input, we return the original bytes. + try_encodings = [] + encoding = self.sys_stdout_encoding or getattr(sys.stdout, "encoding", "") + if encoding: + try_encodings.append(encoding.lower()) + + preferred_encoding = ( + self.locale_preferred_encoding or locale.getpreferredencoding() + ) + if preferred_encoding: + preferred_encoding = preferred_encoding.lower() + if preferred_encoding not in try_encodings: + try_encodings.append(preferred_encoding) + + if "utf-8" not in try_encodings: + try_encodings.append("utf-8") + + for encoding in try_encodings: + try: + return obj_repr.decode(encoding) + except UnicodeDecodeError: + pass + + return obj_repr # Return the original version (in bytes) diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_save_locals.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_save_locals.py new file mode 100644 index 000000000..5e3da1cf9 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_save_locals.py @@ -0,0 +1,134 @@ +""" +Utility for saving locals. +""" +import sys + +from _pydev_bundle import pydev_log + +from _pydevd_bundle.pydevd_constants import IS_PY313_OR_GREATER + +try: + import types + + frame_type = types.FrameType +except: + frame_type = type(sys._getframe()) + + +def is_save_locals_available(): + return save_locals_impl is not None + + +def save_locals(frame): + """ + Copy values from locals_dict into the fast stack slots in the given frame. + + Note: the 'save_locals' branch had a different approach wrapping the frame (much more code, but it gives ideas + on how to save things partially, not the 'whole' locals). + """ + if not isinstance(frame, frame_type): + # Fix exception when changing Django variable (receiving DjangoTemplateFrame) + return + + if save_locals_impl is not None: + try: + save_locals_impl(frame) + except: + pass + + +def make_save_locals_impl(): + """ + Factory for the 'save_locals_impl' method. This may seem like a complicated pattern but it is essential that the method is created at + module load time. Inner imports after module load time would cause an occasional debugger deadlock due to the importer lock and debugger + lock being taken in different order in different threads. + """ + try: + if "__pypy__" in sys.builtin_module_names: + import __pypy__ # @UnresolvedImport + + save_locals = __pypy__.locals_to_fast + except: + pass + else: + if "__pypy__" in sys.builtin_module_names: + + def save_locals_pypy_impl(frame): + save_locals(frame) + + return save_locals_pypy_impl + + if IS_PY313_OR_GREATER: + # No longer needed in Python 3.13 (deprecated) + # See PEP 667 + return None + + try: + import ctypes + + locals_to_fast = ctypes.pythonapi.PyFrame_LocalsToFast + except: + pass + else: + + def save_locals_ctypes_impl(frame): + locals_to_fast(ctypes.py_object(frame), ctypes.c_int(0)) + + return save_locals_ctypes_impl + + return None + + +save_locals_impl = make_save_locals_impl() + +_SENTINEL = [] # Any mutable will do. + + +def update_globals_and_locals(updated_globals, initial_globals, frame): + # We don't have the locals and passed all in globals, so, we have to + # manually choose how to update the variables. + # + # Note that the current implementation is a bit tricky: it does work in general + # but if we do something as 'some_var = 10' and 'some_var' is already defined to have + # the value '10' in the globals, we won't actually put that value in the locals + # (which means that the frame locals won't be updated). + # Still, the approach to have a single namespace was chosen because it was the only + # one that enabled creating and using variables during the same evaluation. + assert updated_globals is not None + f_locals = None + + removed = set(initial_globals).difference(updated_globals) + + for key, val in updated_globals.items(): + if val is not initial_globals.get(key, _SENTINEL): + if f_locals is None: + # Note: we call f_locals only once because each time + # we call it the values may be reset. + f_locals = frame.f_locals + + f_locals[key] = val + + if removed: + if f_locals is None: + # Note: we call f_locals only once because each time + # we call it the values may be reset. + f_locals = frame.f_locals + + for key in removed: + try: + del f_locals[key] + except Exception: + # Python 3.13.0 has issues here: + # https://github.com/python/cpython/pull/125616 + # This should be backported from the pull request + # but we still need to handle it in this version + try: + if key in f_locals: + f_locals[key] = None + except Exception as e: + pydev_log.info( + "Unable to remove key: %s from locals. Exception: %s", key, e + ) + + if f_locals is not None: + save_locals(frame) diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_signature.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_signature.py new file mode 100644 index 000000000..006cbaa75 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_signature.py @@ -0,0 +1,229 @@ +from _pydev_bundle import pydev_log + +try: + import trace +except ImportError: + pass +else: + trace._warn = ( + lambda *args: None + ) # workaround for http://bugs.python.org/issue17143 (PY-8706) + +import os + +from _pydevd_bundle import pydevd_xml +from _pydevd_bundle.pydevd_comm import CMD_SIGNATURE_CALL_TRACE, NetCommand +from _pydevd_bundle.pydevd_utils import get_clsname_for_code + + +class Signature: + def __init__(self, file, name): + self.file = file + self.name = name + self.args = [] + self.args_str = [] + self.return_type = None + + def add_arg(self, name, type): + self.args.append((name, type)) + self.args_str.append("%s:%s" % (name, type)) + + def set_args(self, frame, recursive=False): + self.args = [] + + code = frame.f_code + locals = frame.f_locals + + for i in range(0, code.co_argcount): + name = code.co_varnames[i] + class_name = get_type_of_value(locals[name], recursive=recursive) + + self.add_arg(name, class_name) + + def __str__(self): + return "%s %s(%s)" % (self.file, self.name, ", ".join(self.args_str)) + + +def get_type_of_value( + value, ignore_module_name=("__main__", "__builtin__", "builtins"), recursive=False +): + tp = type(value) + class_name = tp.__name__ + if class_name == "instance": # old-style classes + tp = value.__class__ + class_name = tp.__name__ + + if ( + hasattr(tp, "__module__") + and tp.__module__ + and tp.__module__ not in ignore_module_name + ): + class_name = "%s.%s" % (tp.__module__, class_name) + + if class_name == "list": + class_name = "List" + if len(value) > 0 and recursive: + class_name += "[%s]" % get_type_of_value(value[0], recursive=recursive) + return class_name + + if class_name == "dict": + class_name = "Dict" + if len(value) > 0 and recursive: + for k, v in value.items(): + class_name += "[%s, %s]" % ( + get_type_of_value(k, recursive=recursive), + get_type_of_value(v, recursive=recursive), + ) + break + return class_name + + if class_name == "tuple": + class_name = "Tuple" + if len(value) > 0 and recursive: + class_name += "[" + class_name += ", ".join( + get_type_of_value(v, recursive=recursive) for v in value + ) + class_name += "]" + + return class_name + + +def _modname(path): + """Return a plausible module name for the path""" + base = os.path.basename(path) + filename, ext = os.path.splitext(base) + return filename + + +class SignatureFactory: + def __init__(self): + self._caller_cache = {} + self.cache = CallSignatureCache() + + def create_signature(self, frame, filename, with_args=True): + try: + _, modulename, funcname = self.file_module_function_of(frame) + signature = Signature(filename, funcname) + if with_args: + signature.set_args(frame, recursive=True) + return signature + except: + pydev_log.exception() + + def file_module_function_of( + self, frame + ): # this code is take from trace module and fixed to work with new-style classes + code = frame.f_code + filename = code.co_filename + if filename: + modulename = _modname(filename) + else: + modulename = None + + funcname = code.co_name + clsname = None + if code in self._caller_cache: + if self._caller_cache[code] is not None: + clsname = self._caller_cache[code] + else: + self._caller_cache[code] = None + clsname = get_clsname_for_code(code, frame) + if clsname is not None: + # cache the result - assumption is that new.* is + # not called later to disturb this relationship + # _caller_cache could be flushed if functions in + # the new module get called. + self._caller_cache[code] = clsname + + if clsname is not None: + funcname = "%s.%s" % (clsname, funcname) + + return filename, modulename, funcname + + +def get_signature_info(signature): + return signature.file, signature.name, " ".join([arg[1] for arg in signature.args]) + + +def get_frame_info(frame): + co = frame.f_code + return co.co_name, frame.f_lineno, co.co_filename + + +class CallSignatureCache: + def __init__(self): + self.cache = {} + + def add(self, signature): + filename, name, args_type = get_signature_info(signature) + calls_from_file = self.cache.setdefault(filename, {}) + name_calls = calls_from_file.setdefault(name, {}) + name_calls[args_type] = None + + def is_in_cache(self, signature): + filename, name, args_type = get_signature_info(signature) + if args_type in self.cache.get(filename, {}).get(name, {}): + return True + return False + + +def create_signature_message(signature): + cmdTextList = [""] + + cmdTextList.append( + '' + % ( + pydevd_xml.make_valid_xml_value(signature.file), + pydevd_xml.make_valid_xml_value(signature.name), + ) + ) + + for arg in signature.args: + cmdTextList.append( + '' + % ( + pydevd_xml.make_valid_xml_value(arg[0]), + pydevd_xml.make_valid_xml_value(arg[1]), + ) + ) + + if signature.return_type is not None: + cmdTextList.append( + '' + % (pydevd_xml.make_valid_xml_value(signature.return_type)) + ) + + cmdTextList.append("") + cmdText = "".join(cmdTextList) + return NetCommand(CMD_SIGNATURE_CALL_TRACE, 0, cmdText) + + +def send_signature_call_trace(dbg, frame, filename): + if dbg.signature_factory and dbg.in_project_scope(frame): + signature = dbg.signature_factory.create_signature(frame, filename) + if signature is not None: + if dbg.signature_factory.cache is not None: + if not dbg.signature_factory.cache.is_in_cache(signature): + dbg.signature_factory.cache.add(signature) + dbg.writer.add_command(create_signature_message(signature)) + return True + else: + # we don't send signature if it is cached + return False + else: + dbg.writer.add_command(create_signature_message(signature)) + return True + return False + + +def send_signature_return_trace(dbg, frame, filename, return_value): + if dbg.signature_factory and dbg.in_project_scope(frame): + signature = dbg.signature_factory.create_signature( + frame, filename, with_args=False + ) + signature.return_type = get_type_of_value(return_value, recursive=True) + dbg.writer.add_command(create_signature_message(signature)) + return True + + return False diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_source_mapping.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_source_mapping.py new file mode 100644 index 000000000..a84356824 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_source_mapping.py @@ -0,0 +1,186 @@ +import bisect + +import pydevd_file_utils + +from _pydevd_bundle.pydevd_constants import NULL, KeyifyList + + +class SourceMappingEntry: + __slots__ = [ + "source_filename", + "line", + "end_line", + "runtime_line", + "runtime_source", + ] + + def __init__(self, line, end_line, runtime_line, runtime_source): + assert isinstance(runtime_source, str) + + self.line = int(line) + self.end_line = int(end_line) + self.runtime_line = int(runtime_line) + self.runtime_source = runtime_source # Something as + + # Should be set after translated to server (absolute_source_filename). + # This is what's sent to the client afterwards (so, its case should not be normalized). + self.source_filename = None + + def contains_line(self, i): + return self.line <= i <= self.end_line + + def contains_runtime_line(self, i): + line_count = self.end_line + self.line + runtime_end_line = self.runtime_line + line_count + return self.runtime_line <= i <= runtime_end_line + + def __str__(self): + return "SourceMappingEntry(%s)" % ( + ", ".join("%s=%r" % (attr, getattr(self, attr)) for attr in self.__slots__) + ) + + __repr__ = __str__ + + +class SourceMapping: + def __init__(self, on_source_mapping_changed=NULL): + self._mappings_to_server = {} # dict(normalized(file.py) to [SourceMappingEntry]) + self._mappings_to_client = {} # dict( to File.py) + self._cache = {} + self._on_source_mapping_changed = on_source_mapping_changed + + def set_source_mapping(self, absolute_filename, mapping): + """ + :param str absolute_filename: + The filename for the source mapping (bytes on py2 and str on py3). + + :param list(SourceMappingEntry) mapping: + A list with the source mapping entries to be applied to the given filename. + + :return str: + An error message if it was not possible to set the mapping or an empty string if + everything is ok. + """ + # Let's first validate if it's ok to apply that mapping. + # File mappings must be 1:N, not M:N (i.e.: if there's a mapping from file1.py to , + # there can be no other mapping from any other file to ). + # This is a limitation to make it easier to remove existing breakpoints when new breakpoints are + # set to a file (so, any file matching that breakpoint can be removed instead of needing to check + # which lines are corresponding to that file). + for map_entry in mapping: + existing_source_filename = self._mappings_to_client.get( + map_entry.runtime_source + ) + if ( + existing_source_filename + and existing_source_filename != absolute_filename + ): + return ( + "Cannot apply mapping from %s to %s (it conflicts with mapping: %s to %s)" + % ( + absolute_filename, + map_entry.runtime_source, + existing_source_filename, + map_entry.runtime_source, + ) + ) + + try: + absolute_normalized_filename = pydevd_file_utils.normcase(absolute_filename) + current_mapping = self._mappings_to_server.get( + absolute_normalized_filename, [] + ) + for map_entry in current_mapping: + del self._mappings_to_client[map_entry.runtime_source] + + self._mappings_to_server[absolute_normalized_filename] = sorted( + mapping, key=lambda entry: entry.line + ) + + for map_entry in mapping: + self._mappings_to_client[map_entry.runtime_source] = absolute_filename + finally: + self._cache.clear() + self._on_source_mapping_changed() + return "" + + def map_to_client(self, runtime_source_filename, lineno): + key = (lineno, "client", runtime_source_filename) + try: + return self._cache[key] + except KeyError: + for _, mapping in list(self._mappings_to_server.items()): + for map_entry in mapping: + if map_entry.runtime_source == runtime_source_filename: # + if map_entry.contains_runtime_line( + lineno + ): # matches line range + self._cache[key] = ( + map_entry.source_filename, + map_entry.line + (lineno - map_entry.runtime_line), + True, + ) + return self._cache[key] + + self._cache[key] = ( + runtime_source_filename, + lineno, + False, + ) # Mark that no translation happened in the cache. + return self._cache[key] + + def has_mapping_entry(self, runtime_source_filename): + """ + :param runtime_source_filename: + Something as + """ + # Note that we're not interested in the line here, just on knowing if a given filename + # (from the server) has a mapping for it. + key = ("has_entry", runtime_source_filename) + try: + return self._cache[key] + except KeyError: + for _absolute_normalized_filename, mapping in list( + self._mappings_to_server.items() + ): + for map_entry in mapping: + if map_entry.runtime_source == runtime_source_filename: + self._cache[key] = True + return self._cache[key] + + self._cache[key] = False + return self._cache[key] + + def map_to_server(self, absolute_filename, lineno): + """ + Convert something as 'file1.py' at line 10 to '' at line 2. + + Note that the name should be already normalized at this point. + """ + absolute_normalized_filename = pydevd_file_utils.normcase(absolute_filename) + + changed = False + mappings = self._mappings_to_server.get(absolute_normalized_filename) + if mappings: + i = bisect.bisect(KeyifyList(mappings, lambda entry: entry.line), lineno) + if i >= len(mappings): + i -= 1 + + if i == 0: + entry = mappings[i] + + else: + entry = mappings[i - 1] + + if not entry.contains_line(lineno): + entry = mappings[i] + if not entry.contains_line(lineno): + entry = None + + if entry is not None: + lineno = entry.runtime_line + (lineno - entry.line) + + absolute_filename = entry.runtime_source + changed = True + + return absolute_filename, lineno, changed diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_stackless.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_stackless.py new file mode 100644 index 000000000..308b5f39f --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_stackless.py @@ -0,0 +1,452 @@ +import sys +import weakref + +import stackless # @UnresolvedImport +from _pydev_bundle import pydev_log +from _pydev_bundle._pydev_saved_modules import threading + +from _pydevd_bundle.pydevd_comm import get_global_debugger +from _pydevd_bundle.pydevd_constants import call_only_once +from _pydevd_bundle.pydevd_custom_frames import ( + add_custom_frame, + remove_custom_frame, + update_custom_frame, +) + + +# Used so that we don't loose the id (because we'll remove when it's not alive and would generate a new id for the +# same tasklet). +class TaskletToLastId: + """ + So, why not a WeakKeyDictionary? + The problem is that removals from the WeakKeyDictionary will create a new tasklet (as it adds a callback to + remove the key when it's garbage-collected), so, we can get into a recursion. + """ + + def __init__(self): + self.tasklet_ref_to_last_id = {} + self._i = 0 + + def get(self, tasklet): + return self.tasklet_ref_to_last_id.get(weakref.ref(tasklet)) + + def __setitem__(self, tasklet, last_id): + self.tasklet_ref_to_last_id[weakref.ref(tasklet)] = last_id + self._i += 1 + if ( + self._i % 100 == 0 + ): # Collect at each 100 additions to the dict (no need to rush). + for tasklet_ref in list(self.tasklet_ref_to_last_id.keys()): + if tasklet_ref() is None: + del self.tasklet_ref_to_last_id[tasklet_ref] + + +_tasklet_to_last_id = TaskletToLastId() + + +# ======================================================================================================================= +# _TaskletInfo +# ======================================================================================================================= +class _TaskletInfo: + _last_id = 0 + + def __init__(self, tasklet_weakref, tasklet): + self.frame_id = None + self.tasklet_weakref = tasklet_weakref + + last_id = _tasklet_to_last_id.get(tasklet) + if last_id is None: + _TaskletInfo._last_id += 1 + last_id = _TaskletInfo._last_id + _tasklet_to_last_id[tasklet] = last_id + + self._tasklet_id = last_id + + self.update_name() + + def update_name(self): + tasklet = self.tasklet_weakref() + if tasklet: + if tasklet.blocked: + state = "blocked" + elif tasklet.paused: + state = "paused" + elif tasklet.scheduled: + state = "scheduled" + else: + state = "" + + try: + name = tasklet.name + except AttributeError: + if tasklet.is_main: + name = "MainTasklet" + else: + name = "Tasklet-%s" % (self._tasklet_id,) + + thread_id = tasklet.thread_id + if thread_id != -1: + for thread in threading.enumerate(): + if thread.ident == thread_id: + if thread.name: + thread_name = "of %s" % (thread.name,) + else: + thread_name = "of Thread-%s" % ( + thread.name or str(thread_id), + ) + break + else: + # should not happen. + thread_name = "of Thread-%s" % (str(thread_id),) + thread = None + else: + # tasklet is no longer bound to a thread, because its thread ended + thread_name = "without thread" + + tid = id(tasklet) + tasklet = None + else: + state = "dead" + name = "Tasklet-%s" % (self._tasklet_id,) + thread_name = "" + tid = "-" + self.tasklet_name = "%s %s %s (%s)" % (state, name, thread_name, tid) + + if not hasattr(stackless.tasklet, "trace_function"): + # bug https://bitbucket.org/stackless-dev/stackless/issue/42 + # is not fixed. Stackless releases before 2014 + def update_name(self): + tasklet = self.tasklet_weakref() + if tasklet: + try: + name = tasklet.name + except AttributeError: + if tasklet.is_main: + name = "MainTasklet" + else: + name = "Tasklet-%s" % (self._tasklet_id,) + + thread_id = tasklet.thread_id + for thread in threading.enumerate(): + if thread.ident == thread_id: + if thread.name: + thread_name = "of %s" % (thread.name,) + else: + thread_name = "of Thread-%s" % ( + thread.name or str(thread_id), + ) + break + else: + # should not happen. + thread_name = "of Thread-%s" % (str(thread_id),) + thread = None + + tid = id(tasklet) + tasklet = None + else: + name = "Tasklet-%s" % (self._tasklet_id,) + thread_name = "" + tid = "-" + self.tasklet_name = "%s %s (%s)" % (name, thread_name, tid) + + +_weak_tasklet_registered_to_info = {} + + +# ======================================================================================================================= +# get_tasklet_info +# ======================================================================================================================= +def get_tasklet_info(tasklet): + return register_tasklet_info(tasklet) + + +# ======================================================================================================================= +# register_tasklet_info +# ======================================================================================================================= +def register_tasklet_info(tasklet): + r = weakref.ref(tasklet) + info = _weak_tasklet_registered_to_info.get(r) + if info is None: + info = _weak_tasklet_registered_to_info[r] = _TaskletInfo(r, tasklet) + + return info + + +_application_set_schedule_callback = None + + +# ======================================================================================================================= +# _schedule_callback +# ======================================================================================================================= +def _schedule_callback(prev, next): + """ + Called when a context is stopped or a new context is made runnable. + """ + try: + if not prev and not next: + return + + current_frame = sys._getframe() + + if next: + register_tasklet_info(next) + + # Ok, making next runnable: set the tracing facility in it. + debugger = get_global_debugger() + if debugger is not None: + next.trace_function = debugger.get_thread_local_trace_func() + frame = next.frame + if frame is current_frame: + frame = frame.f_back + if hasattr( + frame, "f_trace" + ): # Note: can be None (but hasattr should cover for that too). + frame.f_trace = debugger.get_thread_local_trace_func() + + debugger = None + + if prev: + register_tasklet_info(prev) + + try: + for tasklet_ref, tasklet_info in list( + _weak_tasklet_registered_to_info.items() + ): # Make sure it's a copy! + tasklet = tasklet_ref() + if tasklet is None or not tasklet.alive: + # Garbage-collected already! + try: + del _weak_tasklet_registered_to_info[tasklet_ref] + except KeyError: + pass + if tasklet_info.frame_id is not None: + remove_custom_frame(tasklet_info.frame_id) + else: + is_running = ( + stackless.get_thread_info(tasklet.thread_id)[1] is tasklet + ) + if tasklet is prev or (tasklet is not next and not is_running): + # the tasklet won't run after this scheduler action: + # - the tasklet is the previous tasklet + # - it is not the next tasklet and it is not an already running tasklet + frame = tasklet.frame + if frame is current_frame: + frame = frame.f_back + if frame is not None: + # print >>sys.stderr, "SchedCB: %r, %d, '%s', '%s'" % (tasklet, frame.f_lineno, _filename, base) + debugger = get_global_debugger() + if ( + debugger is not None + and debugger.get_file_type(frame) is None + ): + tasklet_info.update_name() + if tasklet_info.frame_id is None: + tasklet_info.frame_id = add_custom_frame( + frame, + tasklet_info.tasklet_name, + tasklet.thread_id, + ) + else: + update_custom_frame( + tasklet_info.frame_id, + frame, + tasklet.thread_id, + name=tasklet_info.tasklet_name, + ) + debugger = None + + elif tasklet is next or is_running: + if tasklet_info.frame_id is not None: + # Remove info about stackless suspended when it starts to run. + remove_custom_frame(tasklet_info.frame_id) + tasklet_info.frame_id = None + + finally: + tasklet = None + tasklet_info = None + frame = None + + except: + pydev_log.exception() + + if _application_set_schedule_callback is not None: + return _application_set_schedule_callback(prev, next) + + +if not hasattr(stackless.tasklet, "trace_function"): + # Older versions of Stackless, released before 2014 + # This code does not work reliable! It is affected by several + # stackless bugs: Stackless issues #44, #42, #40 + def _schedule_callback(prev, next): + """ + Called when a context is stopped or a new context is made runnable. + """ + try: + if not prev and not next: + return + + if next: + register_tasklet_info(next) + + # Ok, making next runnable: set the tracing facility in it. + debugger = get_global_debugger() + if debugger is not None and next.frame: + if hasattr(next.frame, "f_trace"): + next.frame.f_trace = debugger.get_thread_local_trace_func() + debugger = None + + if prev: + register_tasklet_info(prev) + + try: + for tasklet_ref, tasklet_info in list( + _weak_tasklet_registered_to_info.items() + ): # Make sure it's a copy! + tasklet = tasklet_ref() + if tasklet is None or not tasklet.alive: + # Garbage-collected already! + try: + del _weak_tasklet_registered_to_info[tasklet_ref] + except KeyError: + pass + if tasklet_info.frame_id is not None: + remove_custom_frame(tasklet_info.frame_id) + else: + if tasklet.paused or tasklet.blocked or tasklet.scheduled: + if tasklet.frame and tasklet.frame.f_back: + f_back = tasklet.frame.f_back + debugger = get_global_debugger() + if ( + debugger is not None + and debugger.get_file_type(f_back) is None + ): + if tasklet_info.frame_id is None: + tasklet_info.frame_id = add_custom_frame( + f_back, + tasklet_info.tasklet_name, + tasklet.thread_id, + ) + else: + update_custom_frame( + tasklet_info.frame_id, + f_back, + tasklet.thread_id, + ) + debugger = None + + elif tasklet.is_current: + if tasklet_info.frame_id is not None: + # Remove info about stackless suspended when it starts to run. + remove_custom_frame(tasklet_info.frame_id) + tasklet_info.frame_id = None + + finally: + tasklet = None + tasklet_info = None + f_back = None + + except: + pydev_log.exception() + + if _application_set_schedule_callback is not None: + return _application_set_schedule_callback(prev, next) + + _original_setup = stackless.tasklet.setup + + # ======================================================================================================================= + # setup + # ======================================================================================================================= + def setup(self, *args, **kwargs): + """ + Called to run a new tasklet: rebind the creation so that we can trace it. + """ + f = self.tempval + + def new_f(old_f, args, kwargs): + debugger = get_global_debugger() + if debugger is not None: + debugger.enable_tracing() + + debugger = None + + # Remove our own traces :) + self.tempval = old_f + register_tasklet_info(self) + + # Hover old_f to see the stackless being created and *args and **kwargs to see its parameters. + return old_f(*args, **kwargs) + + # This is the way to tell stackless that the function it should execute is our function, not the original one. Note: + # setting tempval is the same as calling bind(new_f), but it seems that there's no other way to get the currently + # bound function, so, keeping on using tempval instead of calling bind (which is actually the same thing in a better + # API). + + self.tempval = new_f + + return _original_setup(self, f, args, kwargs) + + # ======================================================================================================================= + # __call__ + # ======================================================================================================================= + def __call__(self, *args, **kwargs): + """ + Called to run a new tasklet: rebind the creation so that we can trace it. + """ + return setup(self, *args, **kwargs) + + _original_run = stackless.run + + # ======================================================================================================================= + # run + # ======================================================================================================================= + def run(*args, **kwargs): + debugger = get_global_debugger() + if debugger is not None: + debugger.enable_tracing() + debugger = None + + return _original_run(*args, **kwargs) + + +# ======================================================================================================================= +# patch_stackless +# ======================================================================================================================= +def patch_stackless(): + """ + This function should be called to patch the stackless module so that new tasklets are properly tracked in the + debugger. + """ + global _application_set_schedule_callback + _application_set_schedule_callback = stackless.set_schedule_callback( + _schedule_callback + ) + + def set_schedule_callback(callable): + global _application_set_schedule_callback + old = _application_set_schedule_callback + _application_set_schedule_callback = callable + return old + + def get_schedule_callback(): + global _application_set_schedule_callback + return _application_set_schedule_callback + + set_schedule_callback.__doc__ = stackless.set_schedule_callback.__doc__ + if hasattr(stackless, "get_schedule_callback"): + get_schedule_callback.__doc__ = stackless.get_schedule_callback.__doc__ + stackless.set_schedule_callback = set_schedule_callback + stackless.get_schedule_callback = get_schedule_callback + + if not hasattr(stackless.tasklet, "trace_function"): + # Older versions of Stackless, released before 2014 + __call__.__doc__ = stackless.tasklet.__call__.__doc__ + stackless.tasklet.__call__ = __call__ + + setup.__doc__ = stackless.tasklet.setup.__doc__ + stackless.tasklet.setup = setup + + run.__doc__ = stackless.run.__doc__ + stackless.run = run + + +patch_stackless = call_only_once(patch_stackless) diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_suspended_frames.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_suspended_frames.py new file mode 100644 index 000000000..fb0da3ed6 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_suspended_frames.py @@ -0,0 +1,656 @@ +import sys +from contextlib import contextmanager +from typing import Optional + +from _pydev_bundle import pydev_log +from _pydev_bundle.pydev_imports import Exec +from _pydev_bundle.pydev_override import overrides + +from _pydevd_bundle import pydevd_vars +from _pydevd_bundle.pydevd_constants import ( + GENERATED_LEN_ATTR_NAME, + RETURN_VALUES_DICT, + ForkSafeLock, + get_frame, + silence_warnings_decorator, +) +from _pydevd_bundle.pydevd_frame_utils import FramesList +from _pydevd_bundle.pydevd_resolver import ( + TOO_LARGE_ATTR, + get_var_scope, + sorted_attributes_key, +) +from _pydevd_bundle.pydevd_safe_repr import SafeRepr +from _pydevd_bundle.pydevd_utils import DAPGrouper, ScopeRequest, Timer +from _pydevd_bundle.pydevd_xml import get_type, get_variable_details + + +class _AbstractVariable: + # Default attributes in class, set in instance. + + name = None + value = None + evaluate_name = None + + def __init__(self, py_db): + assert py_db is not None + self.py_db = py_db + + def get_name(self): + return self.name + + def get_value(self): + return self.value + + def get_variable_reference(self): + return id(self.value) + + def get_var_data( + self, + fmt: Optional[dict] = None, + context: Optional[str] = None, + **safe_repr_custom_attrs, + ): + """ + :param dict fmt: + Format expected by the DAP (keys: 'hex': bool, 'rawString': bool) + + :param context: + This is the context in which the variable is being requested. Valid values: + "watch", + "repl", + "hover", + "clipboard" + """ + timer = Timer() + safe_repr = SafeRepr() + if fmt is not None: + safe_repr.convert_to_hex = fmt.get("hex", False) + safe_repr.raw_value = fmt.get("rawString", False) + for key, val in safe_repr_custom_attrs.items(): + setattr(safe_repr, key, val) + + ( + type_name, + _type_qualifier, + _is_exception_on_eval, + resolver, + value, + ) = get_variable_details(self.value, to_string=safe_repr, context=context) + + is_raw_string = type_name in ("str", "bytes", "bytearray") + + attributes = [] + + if is_raw_string: + attributes.append("rawString") + + name = self.name + + if self._is_return_value: + attributes.append("readOnly") + name = "(return) %s" % (name,) + + elif name in (TOO_LARGE_ATTR, GENERATED_LEN_ATTR_NAME): + attributes.append("readOnly") + + try: + if self.value.__class__ == DAPGrouper: + type_name = "" + except: + pass # Ignore errors accessing __class__. + + var_data = { + "name": name, + "value": value, + "type": type_name, + } + + if self.evaluate_name is not None: + var_data["evaluateName"] = self.evaluate_name + + if resolver is not None: # I.e.: it's a container + var_data["variablesReference"] = self.get_variable_reference() + else: + var_data[ + "variablesReference" + ] = 0 # It's mandatory (although if == 0 it doesn't have children). + + if len(attributes) > 0: + var_data["presentationHint"] = {"attributes": attributes} + + timer.report_if_compute_repr_attr_slow("", name, type_name) + return var_data + + def get_children_variables(self, fmt=None, scope=None): + raise NotImplementedError() + + def get_child_variable_named(self, name, fmt=None, scope=None): + for child_var in self.get_children_variables(fmt=fmt, scope=scope): + if child_var.get_name() == name: + return child_var + return None + + def _group_entries(self, lst, handle_return_values): + scope_to_grouper = {} + + group_entries = [] + if isinstance(self.value, DAPGrouper): + new_lst = lst + else: + new_lst = [] + get_presentation = self.py_db.variable_presentation.get_presentation + # Now that we have the contents, group items. + for attr_name, attr_value, evaluate_name in lst: + scope = get_var_scope( + attr_name, attr_value, evaluate_name, handle_return_values + ) + + entry = (attr_name, attr_value, evaluate_name) + if scope: + presentation = get_presentation(scope) + if presentation == "hide": + continue + + elif presentation == "inline": + new_lst.append(entry) + + else: # group + if scope not in scope_to_grouper: + grouper = DAPGrouper(scope) + scope_to_grouper[scope] = grouper + else: + grouper = scope_to_grouper[scope] + + grouper.contents_debug_adapter_protocol.append(entry) + + else: + new_lst.append(entry) + + for scope in DAPGrouper.SCOPES_SORTED: + grouper = scope_to_grouper.get(scope) + if grouper is not None: + group_entries.append((scope, grouper, None)) + + return new_lst, group_entries + + +class _ObjectVariable(_AbstractVariable): + def __init__( + self, + py_db, + name, + value, + register_variable, + is_return_value=False, + evaluate_name=None, + frame=None, + ): + _AbstractVariable.__init__(self, py_db) + self.frame = frame + self.name = name + self.value = value + self._register_variable = register_variable + self._register_variable(self) + self._is_return_value = is_return_value + self.evaluate_name = evaluate_name + + @silence_warnings_decorator + @overrides(_AbstractVariable.get_children_variables) + def get_children_variables(self, fmt=None, scope=None): + _type, _type_name, resolver = get_type(self.value) + + children_variables = [] + if resolver is not None: # i.e.: it's a container. + if hasattr(resolver, "get_contents_debug_adapter_protocol"): + # The get_contents_debug_adapter_protocol needs to return sorted. + lst = resolver.get_contents_debug_adapter_protocol(self.value, fmt=fmt) + else: + # If there's no special implementation, the default is sorting the keys. + dct = resolver.get_dictionary(self.value) + lst = sorted(dct.items(), key=lambda tup: sorted_attributes_key(tup[0])) + # No evaluate name in this case. + lst = [(key, value, None) for (key, value) in lst] + + lst, group_entries = self._group_entries(lst, handle_return_values=False) + if group_entries: + lst = group_entries + lst + parent_evaluate_name = self.evaluate_name + if parent_evaluate_name: + for key, val, evaluate_name in lst: + if evaluate_name is not None: + if callable(evaluate_name): + evaluate_name = evaluate_name(parent_evaluate_name) + else: + evaluate_name = parent_evaluate_name + evaluate_name + variable = _ObjectVariable( + self.py_db, + key, + val, + self._register_variable, + evaluate_name=evaluate_name, + frame=self.frame, + ) + children_variables.append(variable) + else: + for key, val, evaluate_name in lst: + # No evaluate name + variable = _ObjectVariable( + self.py_db, key, val, self._register_variable, frame=self.frame + ) + children_variables.append(variable) + + return children_variables + + def change_variable(self, name, value, py_db, fmt=None): + children_variable = self.get_child_variable_named(name) + if children_variable is None: + return None + + var_data = children_variable.get_var_data() + evaluate_name = var_data.get("evaluateName") + + if not evaluate_name: + # Note: right now we only pass control to the resolver in the cases where + # there's no evaluate name (the idea being that if we can evaluate it, + # we can use that evaluation to set the value too -- if in the future + # a case where this isn't true is found this logic may need to be changed). + _type, _type_name, container_resolver = get_type(self.value) + if hasattr(container_resolver, "change_var_from_name"): + try: + new_value = eval(value) + except: + return None + new_key = container_resolver.change_var_from_name( + self.value, name, new_value + ) + if new_key is not None: + return _ObjectVariable( + self.py_db, + new_key, + new_value, + self._register_variable, + evaluate_name=None, + frame=self.frame, + ) + + return None + else: + return None + + frame = self.frame + if frame is None: + return None + + try: + # This handles the simple cases (such as dict, list, object) + Exec("%s=%s" % (evaluate_name, value), frame.f_globals, frame.f_locals) + except: + return None + + return self.get_child_variable_named(name, fmt=fmt) + + +def sorted_variables_key(obj): + return sorted_attributes_key(obj.name) + + +class _FrameVariable(_AbstractVariable): + def __init__(self, py_db, frame, register_variable): + _AbstractVariable.__init__(self, py_db) + self.frame = frame + + self.name = self.frame.f_code.co_name + self.value = frame + + self._register_variable = register_variable + self._register_variable(self) + + def change_variable(self, name, value, py_db, fmt=None): + frame = self.frame + + pydevd_vars.change_attr_expression(frame, name, value, py_db) + + return self.get_child_variable_named(name, fmt=fmt) + + @silence_warnings_decorator + @overrides(_AbstractVariable.get_children_variables) + def get_children_variables(self, fmt=None, scope=None): + children_variables = [] + if scope is not None: + assert isinstance(scope, ScopeRequest) + scope = scope.scope + + if scope in ("locals", None): + dct = self.frame.f_locals + elif scope == "globals": + dct = self.frame.f_globals + else: + raise AssertionError("Unexpected scope: %s" % (scope,)) + + lst, group_entries = self._group_entries( + [ + (x[0], x[1], None) + for x in list(dct.items()) + if x[0] != "_pydev_stop_at_break" + ], + handle_return_values=True, + ) + group_variables = [] + + for key, val, _ in group_entries: + # Make sure that the contents in the group are also sorted. + val.contents_debug_adapter_protocol.sort( + key=lambda v: sorted_attributes_key(v[0]) + ) + variable = _ObjectVariable( + self.py_db, + key, + val, + self._register_variable, + False, + key, + frame=self.frame, + ) + group_variables.append(variable) + + for key, val, _ in lst: + is_return_value = key == RETURN_VALUES_DICT + if is_return_value: + for return_key, return_value in val.items(): + variable = _ObjectVariable( + self.py_db, + return_key, + return_value, + self._register_variable, + is_return_value, + "%s[%r]" % (key, return_key), + frame=self.frame, + ) + children_variables.append(variable) + else: + variable = _ObjectVariable( + self.py_db, + key, + val, + self._register_variable, + is_return_value, + key, + frame=self.frame, + ) + children_variables.append(variable) + + # Frame variables always sorted. + children_variables.sort(key=sorted_variables_key) + if group_variables: + # Groups have priority over other variables. + children_variables = group_variables + children_variables + + return children_variables + + +class _FramesTracker: + """ + This is a helper class to be used to track frames when a thread becomes suspended. + """ + + def __init__(self, suspended_frames_manager, py_db): + self._suspended_frames_manager = suspended_frames_manager + self.py_db = py_db + self._frame_id_to_frame = {} + + # Note that a given frame may appear in multiple threads when we have custom + # frames added, but as those are coroutines, this map will point to the actual + # main thread (which is the one that needs to be suspended for us to get the + # variables). + self._frame_id_to_main_thread_id = {} + + # A map of the suspended thread id -> list(frames ids) -- note that + # frame ids are kept in order (the first one is the suspended frame). + self._thread_id_to_frame_ids = {} + + self._thread_id_to_frames_list = {} + + # The main suspended thread (if this is a coroutine this isn't the id of the + # coroutine thread, it's the id of the actual suspended thread). + self._main_thread_id = None + + # Helper to know if it was already untracked. + self._untracked = False + + # We need to be thread-safe! + self._lock = ForkSafeLock(rlock=True) + + self._variable_reference_to_variable = {} + + def _register_variable(self, variable): + variable_reference = variable.get_variable_reference() + self._variable_reference_to_variable[variable_reference] = variable + + def obtain_as_variable(self, name, value, evaluate_name=None, frame=None): + if evaluate_name is None: + evaluate_name = name + + variable_reference = id(value) + variable = self._variable_reference_to_variable.get(variable_reference) + if variable is not None: + return variable + + # Still not created, let's do it now. + return _ObjectVariable( + self.py_db, + name, + value, + self._register_variable, + is_return_value=False, + evaluate_name=evaluate_name, + frame=frame, + ) + + def get_main_thread_id(self): + return self._main_thread_id + + def get_variable(self, variable_reference): + return self._variable_reference_to_variable[variable_reference] + + def track(self, thread_id, frames_list, frame_custom_thread_id=None): + """ + :param thread_id: + The thread id to be used for this frame. + + :param FramesList frames_list: + A list of frames to be tracked (the first is the topmost frame which is suspended at the given thread). + + :param frame_custom_thread_id: + If None this this is the id of the thread id for the custom frame (i.e.: coroutine). + """ + assert frames_list.__class__ == FramesList + with self._lock: + coroutine_or_main_thread_id = frame_custom_thread_id or thread_id + + if ( + coroutine_or_main_thread_id + in self._suspended_frames_manager._thread_id_to_tracker + ): + sys.stderr.write( + "pydevd: Something is wrong. Tracker being added twice to the same thread id.\n" + ) + + self._suspended_frames_manager._thread_id_to_tracker[ + coroutine_or_main_thread_id + ] = self + self._main_thread_id = thread_id + + frame_ids_from_thread = self._thread_id_to_frame_ids.setdefault( + coroutine_or_main_thread_id, [] + ) + + self._thread_id_to_frames_list[coroutine_or_main_thread_id] = frames_list + for frame in frames_list: + frame_id = id(frame) + self._frame_id_to_frame[frame_id] = frame + _FrameVariable( + self.py_db, frame, self._register_variable + ) # Instancing is enough to register. + self._suspended_frames_manager._variable_reference_to_frames_tracker[ + frame_id + ] = self + frame_ids_from_thread.append(frame_id) + + self._frame_id_to_main_thread_id[frame_id] = thread_id + + frame = None + + def untrack_all(self): + with self._lock: + if self._untracked: + # Calling multiple times is expected for the set next statement. + return + self._untracked = True + for thread_id in self._thread_id_to_frame_ids: + self._suspended_frames_manager._thread_id_to_tracker.pop( + thread_id, None + ) + + for frame_id in self._frame_id_to_frame: + del self._suspended_frames_manager._variable_reference_to_frames_tracker[ + frame_id + ] + + self._frame_id_to_frame.clear() + self._frame_id_to_main_thread_id.clear() + self._thread_id_to_frame_ids.clear() + self._thread_id_to_frames_list.clear() + self._main_thread_id = None + self._suspended_frames_manager = None + self._variable_reference_to_variable.clear() + + def get_frames_list(self, thread_id): + with self._lock: + return self._thread_id_to_frames_list.get(thread_id) + + def find_frame(self, thread_id, frame_id): + with self._lock: + return self._frame_id_to_frame.get(frame_id) + + def create_thread_suspend_command( + self, + thread_id, + stop_reason, + message, + trace_suspend_type, + thread, + additional_info, + ): + with self._lock: + # First one is topmost frame suspended. + frames_list = self._thread_id_to_frames_list[thread_id] + + cmd = self.py_db.cmd_factory.make_thread_suspend_message( + self.py_db, + thread_id, + frames_list, + stop_reason, + message, + trace_suspend_type, + thread, + additional_info, + ) + + frames_list = None + return cmd + + +class SuspendedFramesManager: + def __init__(self): + self._thread_id_to_fake_frames = {} + self._thread_id_to_tracker = {} + + # Mappings + self._variable_reference_to_frames_tracker = {} + + def _get_tracker_for_variable_reference(self, variable_reference): + tracker = self._variable_reference_to_frames_tracker.get(variable_reference) + if tracker is not None: + return tracker + + for _thread_id, tracker in self._thread_id_to_tracker.items(): + try: + tracker.get_variable(variable_reference) + except KeyError: + pass + else: + return tracker + + return None + + def get_thread_id_for_variable_reference(self, variable_reference): + """ + We can't evaluate variable references values on any thread, only in the suspended + thread (the main reason for this is that in UI frameworks inspecting a UI object + from a different thread can potentially crash the application). + + :param int variable_reference: + The variable reference (can be either a frame id or a reference to a previously + gotten variable). + + :return str: + The thread id for the thread to be used to inspect the given variable reference or + None if the thread was already resumed. + """ + frames_tracker = self._get_tracker_for_variable_reference(variable_reference) + if frames_tracker is not None: + return frames_tracker.get_main_thread_id() + return None + + def get_frame_tracker(self, thread_id): + return self._thread_id_to_tracker.get(thread_id) + + def get_variable(self, variable_reference): + """ + :raises KeyError + """ + frames_tracker = self._get_tracker_for_variable_reference(variable_reference) + if frames_tracker is None: + raise KeyError() + return frames_tracker.get_variable(variable_reference) + + def get_frames_list(self, thread_id): + tracker = self._thread_id_to_tracker.get(thread_id) + if tracker is None: + return None + return tracker.get_frames_list(thread_id) + + @contextmanager + def track_frames(self, py_db): + tracker = _FramesTracker(self, py_db) + try: + yield tracker + finally: + tracker.untrack_all() + + def add_fake_frame(self, thread_id, frame_id, frame): + self._thread_id_to_fake_frames.setdefault(thread_id, {})[int(frame_id)] = frame + + def find_frame(self, thread_id, frame_id): + try: + if frame_id == "*": + return get_frame() # any frame is specified with "*" + frame_id = int(frame_id) + + fake_frames = self._thread_id_to_fake_frames.get(thread_id) + if fake_frames is not None: + frame = fake_frames.get(frame_id) + if frame is not None: + return frame + + frames_tracker = self._thread_id_to_tracker.get(thread_id) + if frames_tracker is not None: + frame = frames_tracker.find_frame(thread_id, frame_id) + if frame is not None: + return frame + + return None + except: + pydev_log.exception() + return None diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_thread_lifecycle.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_thread_lifecycle.py new file mode 100644 index 000000000..ed5e0c5d8 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_thread_lifecycle.py @@ -0,0 +1,112 @@ +from _pydev_bundle import pydev_log +from _pydev_bundle._pydev_saved_modules import threading +from _pydevd_sys_monitoring import pydevd_sys_monitoring + +from _pydevd_bundle import pydevd_utils +from _pydevd_bundle.pydevd_additional_thread_info import set_additional_thread_info +from _pydevd_bundle.pydevd_comm_constants import CMD_STEP_INTO, CMD_THREAD_SUSPEND +from _pydevd_bundle.pydevd_constants import ( + PYDEVD_USE_SYS_MONITORING, + PYTHON_SUSPEND, + STATE_RUN, + STATE_SUSPEND, + get_thread_id, +) + + +def pydevd_find_thread_by_id(thread_id): + try: + threads = threading.enumerate() + for i in threads: + tid = get_thread_id(i) + if thread_id == tid or thread_id.endswith("|" + tid): + return i + + # This can happen when a request comes for a thread which was previously removed. + pydev_log.info("Could not find thread %s.", thread_id) + pydev_log.info("Available: %s.", ([get_thread_id(t) for t in threads],)) + except: + pydev_log.exception() + + return None + + +def mark_thread_suspended(thread, stop_reason: int, original_step_cmd: int = -1): + info = set_additional_thread_info(thread) + info.suspend_type = PYTHON_SUSPEND + if original_step_cmd != -1: + stop_reason = original_step_cmd + thread.stop_reason = stop_reason + + # Note: don't set the 'pydev_original_step_cmd' here if unset. + + if info.pydev_step_cmd == -1: + # If the step command is not specified, set it to step into + # to make sure it'll break as soon as possible. + info.pydev_step_cmd = CMD_STEP_INTO + info.pydev_step_stop = None + + # Mark as suspended as the last thing. + info.pydev_state = STATE_SUSPEND + info.update_stepping_info() + return info + + +def internal_run_thread(thread, set_additional_thread_info): + info = set_additional_thread_info(thread) + info.pydev_original_step_cmd = -1 + info.pydev_step_cmd = -1 + info.pydev_step_stop = None + info.pydev_state = STATE_RUN + info.update_stepping_info() + + +def resume_threads(thread_id, except_thread=None): + pydev_log.info("Resuming threads: %s (except thread: %s)", thread_id, except_thread) + threads = [] + if thread_id == "*": + threads = pydevd_utils.get_non_pydevd_threads() + + elif thread_id.startswith("__frame__:"): + pydev_log.critical("Can't make tasklet run: %s", thread_id) + + else: + threads = [pydevd_find_thread_by_id(thread_id)] + + for t in threads: + if t is None or t is except_thread: + pydev_log.info("Skipped resuming thread: %s", t) + continue + + internal_run_thread(t, set_additional_thread_info=set_additional_thread_info) + + +def suspend_all_threads(py_db, except_thread): + """ + Suspend all except the one passed as a parameter. + :param except_thread: + """ + if PYDEVD_USE_SYS_MONITORING: + pydevd_sys_monitoring.update_monitor_events(suspend_requested=True) + + pydev_log.info("Suspending all threads except: %s", except_thread) + all_threads = pydevd_utils.get_non_pydevd_threads() + for t in all_threads: + if getattr(t, "pydev_do_not_trace", None): + pass # skip some other threads, i.e. ipython history saving thread from debug console + else: + if t is except_thread: + continue + info = mark_thread_suspended(t, CMD_THREAD_SUSPEND) + frame = info.get_topmost_frame(t) + + # Reset the tracing as in this case as it could've set scopes to be untraced. + if frame is not None: + try: + py_db.set_trace_for_frame_and_parents(t.ident, frame) + finally: + frame = None + + if PYDEVD_USE_SYS_MONITORING: + # After suspending the frames we need the monitoring to be reset. + pydevd_sys_monitoring.restart_events() diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_timeout.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_timeout.py new file mode 100644 index 000000000..35494a85c --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_timeout.py @@ -0,0 +1,259 @@ +import ctypes +import time +import weakref + +from _pydev_bundle import pydev_log +from _pydev_bundle._pydev_saved_modules import ( + ThreadingEvent, + ThreadingLock, + threading_current_thread, +) + +from _pydevd_bundle import pydevd_utils +from _pydevd_bundle.pydevd_constants import IS_CPYTHON, NULL, thread_get_ident +from _pydevd_bundle.pydevd_daemon_thread import PyDBDaemonThread +from _pydevd_bundle.pydevd_utils import is_current_thread_main_thread + +_DEBUG = False # Default should be False as this can be very verbose. + + +class _TimeoutThread(PyDBDaemonThread): + """ + The idea in this class is that it should be usually stopped waiting + for the next event to be called (paused in a threading.Event.wait). + + When a new handle is added it sets the event so that it processes the handles and + then keeps on waiting as needed again. + + This is done so that it's a bit more optimized than creating many Timer threads. + """ + + def __init__(self, py_db): + PyDBDaemonThread.__init__(self, py_db) + self._event = ThreadingEvent() + self._handles = [] + + # We could probably do things valid without this lock so that it's possible to add + # handles while processing, but the implementation would also be harder to follow, + # so, for now, we're either processing or adding handles, not both at the same time. + self._lock = ThreadingLock() + + def _on_run(self): + wait_time = None + while not self._kill_received: + if _DEBUG: + if wait_time is None: + pydev_log.critical( + "pydevd_timeout: Wait until a new handle is added." + ) + else: + pydev_log.critical("pydevd_timeout: Next wait time: %s.", wait_time) + self._event.wait(wait_time) + + if self._kill_received: + self._handles = [] + return + + wait_time = self.process_handles() + + def process_handles(self): + """ + :return int: + Returns the time we should be waiting for to process the next event properly. + """ + with self._lock: + if _DEBUG: + pydev_log.critical("pydevd_timeout: Processing handles") + self._event.clear() + handles = self._handles + new_handles = self._handles = [] + + # Do all the processing based on this time (we want to consider snapshots + # of processing time -- anything not processed now may be processed at the + # next snapshot). + curtime = time.time() + + min_handle_timeout = None + + for handle in handles: + if curtime < handle.abs_timeout and not handle.disposed: + # It still didn't time out. + if _DEBUG: + pydev_log.critical( + "pydevd_timeout: Handle NOT processed: %s", handle + ) + new_handles.append(handle) + if min_handle_timeout is None: + min_handle_timeout = handle.abs_timeout + + elif handle.abs_timeout < min_handle_timeout: + min_handle_timeout = handle.abs_timeout + + else: + if _DEBUG: + pydev_log.critical( + "pydevd_timeout: Handle processed: %s", handle + ) + # Timed out (or disposed), so, let's execute it (should be no-op if disposed). + handle.exec_on_timeout() + + if min_handle_timeout is None: + return None + else: + timeout = min_handle_timeout - curtime + if timeout <= 0: + pydev_log.critical( + "pydevd_timeout: Expected timeout to be > 0. Found: %s", timeout + ) + + return timeout + + def do_kill_pydev_thread(self): + PyDBDaemonThread.do_kill_pydev_thread(self) + with self._lock: + self._event.set() + + def add_on_timeout_handle(self, handle): + with self._lock: + self._handles.append(handle) + self._event.set() + + +class _OnTimeoutHandle: + def __init__(self, tracker, abs_timeout, on_timeout, kwargs): + self._str = "_OnTimeoutHandle(%s)" % (on_timeout,) + + self._tracker = weakref.ref(tracker) + self.abs_timeout = abs_timeout + self.on_timeout = on_timeout + if kwargs is None: + kwargs = {} + self.kwargs = kwargs + self.disposed = False + + def exec_on_timeout(self): + # Note: lock should already be obtained when executing this function. + kwargs = self.kwargs + on_timeout = self.on_timeout + + if not self.disposed: + self.disposed = True + self.kwargs = None + self.on_timeout = None + + try: + if _DEBUG: + pydev_log.critical( + "pydevd_timeout: Calling on timeout: %s with kwargs: %s", + on_timeout, + kwargs, + ) + + on_timeout(**kwargs) + except Exception: + pydev_log.exception("pydevd_timeout: Exception on callback timeout.") + + def __enter__(self): + pass + + def __exit__(self, exc_type, exc_val, exc_tb): + tracker = self._tracker() + + if tracker is None: + lock = NULL + else: + lock = tracker._lock + + with lock: + self.disposed = True + self.kwargs = None + self.on_timeout = None + + def __str__(self): + return self._str + + __repr__ = __str__ + + +class TimeoutTracker: + """ + This is a helper class to track the timeout of something. + """ + + def __init__(self, py_db): + self._thread = None + self._lock = ThreadingLock() + self._py_db = weakref.ref(py_db) + + def call_on_timeout(self, timeout, on_timeout, kwargs=None): + """ + This can be called regularly to always execute the given function after a given timeout: + + call_on_timeout(py_db, 10, on_timeout) + + + Or as a context manager to stop the method from being called if it finishes before the timeout + elapses: + + with call_on_timeout(py_db, 10, on_timeout): + ... + + Note: the callback will be called from a PyDBDaemonThread. + """ + with self._lock: + if self._thread is None: + if _DEBUG: + pydev_log.critical("pydevd_timeout: Created _TimeoutThread.") + + self._thread = _TimeoutThread(self._py_db()) + self._thread.start() + + curtime = time.time() + handle = _OnTimeoutHandle(self, curtime + timeout, on_timeout, kwargs) + if _DEBUG: + pydev_log.critical("pydevd_timeout: Added handle: %s.", handle) + self._thread.add_on_timeout_handle(handle) + return handle + + +def create_interrupt_this_thread_callback(): + """ + The idea here is returning a callback that when called will generate a KeyboardInterrupt + in the thread that called this function. + + If this is the main thread, this means that it'll emulate a Ctrl+C (which may stop I/O + and sleep operations). + + For other threads, this will call PyThreadState_SetAsyncExc to raise + a KeyboardInterrupt before the next instruction (so, it won't really interrupt I/O or + sleep operations). + + :return callable: + Returns a callback that will interrupt the current thread (this may be called + from an auxiliary thread). + """ + tid = thread_get_ident() + + if is_current_thread_main_thread(): + main_thread = threading_current_thread() + + def raise_on_this_thread(): + pydev_log.debug("Callback to interrupt main thread.") + pydevd_utils.interrupt_main_thread(main_thread) + + else: + # Note: this works in the sense that it can stop some cpu-intensive slow operation, + # but we can't really interrupt the thread out of some sleep or I/O operation + # (this will only be raised when Python is about to execute the next instruction). + def raise_on_this_thread(): + if IS_CPYTHON: + pydev_log.debug("Interrupt thread: %s", tid) + ctypes.pythonapi.PyThreadState_SetAsyncExc( + ctypes.c_long(tid), ctypes.py_object(KeyboardInterrupt) + ) + else: + pydev_log.debug( + "It is only possible to interrupt non-main threads in CPython." + ) + + return raise_on_this_thread diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch.py new file mode 100644 index 000000000..884265a4b --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch.py @@ -0,0 +1,103 @@ +# Defines which version of the trace_dispatch we'll use. +# Should give warning only here if cython is not available but supported. + +import os + +from _pydev_bundle import pydev_log + +from _pydevd_bundle.pydevd_constants import ( + ENV_FALSE_LOWER_VALUES, + ENV_TRUE_LOWER_VALUES, + USE_CYTHON_FLAG, +) + +dirname = os.path.dirname(os.path.dirname(__file__)) +USING_CYTHON = False + + +def delete_old_compiled_extensions(): + import _pydevd_bundle + + cython_extensions_dir = os.path.dirname(os.path.dirname(_pydevd_bundle.__file__)) + _pydevd_bundle_ext_dir = os.path.dirname(_pydevd_bundle.__file__) + _pydevd_frame_eval_ext_dir = os.path.join( + cython_extensions_dir, "_pydevd_frame_eval_ext" + ) + try: + import shutil + + for file in os.listdir(_pydevd_bundle_ext_dir): + if file.startswith("pydevd") and file.endswith(".so"): + os.remove(os.path.join(_pydevd_bundle_ext_dir, file)) + for file in os.listdir(_pydevd_frame_eval_ext_dir): + if file.startswith("pydevd") and file.endswith(".so"): + os.remove(os.path.join(_pydevd_frame_eval_ext_dir, file)) + build_dir = os.path.join(cython_extensions_dir, "build") + if os.path.exists(build_dir): + shutil.rmtree(os.path.join(cython_extensions_dir, "build")) + except OSError: + pydev_log.error_once( + "warning: failed to delete old cython speedups. Please delete all *.so files from the directories " + '"%s" and "%s"' % (_pydevd_bundle_ext_dir, _pydevd_frame_eval_ext_dir) + ) + + +if USE_CYTHON_FLAG in ENV_TRUE_LOWER_VALUES: + # We must import the cython version if forcing cython + from _pydevd_bundle.pydevd_cython_wrapper import ( + fix_top_level_trace_and_get_trace_func, + global_cache_frame_skips, + global_cache_skips, + handle_exception, + is_unhandled_exception, + should_stop_on_exception, + trace_dispatch, + ) + + USING_CYTHON = True + +elif USE_CYTHON_FLAG in ENV_FALSE_LOWER_VALUES: + # Use the regular version if not forcing cython + from _pydevd_bundle.pydevd_trace_dispatch_regular import ( + fix_top_level_trace_and_get_trace_func, + global_cache_frame_skips, + global_cache_skips, + trace_dispatch, + ) + + # @UnusedImport + from .pydevd_frame import ( + handle_exception, + is_unhandled_exception, + should_stop_on_exception, + ) + +else: + # Regular: use fallback if not found and give message to user + try: + # This version number is always available + from _pydevd_bundle.pydevd_additional_thread_info_regular import ( + version as regular_version, + ) + from _pydevd_bundle.pydevd_cython_wrapper import ( + fix_top_level_trace_and_get_trace_func, + global_cache_frame_skips, + global_cache_skips, + handle_exception, + is_unhandled_exception, + should_stop_on_exception, + trace_dispatch, + ) + + # This version number from the already compiled cython extension + from _pydevd_bundle.pydevd_cython_wrapper import version as cython_version + + if cython_version != regular_version: + # delete_old_compiled_extensions() -- would be ok in dev mode but we don't want to erase + # files from other python versions on release, so, just raise import error here. + raise ImportError("Cython version of speedups does not match.") + else: + USING_CYTHON = True + + except ImportError: + pydev_log.show_compile_cython_command_line() diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch_regular.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch_regular.py new file mode 100644 index 000000000..aff69123b --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch_regular.py @@ -0,0 +1,570 @@ +from _pydev_bundle._pydev_saved_modules import threading +from _pydev_bundle.pydev_is_thread_alive import is_thread_alive +from _pydev_bundle.pydev_log import exception as pydev_log_exception +from pydevd_file_utils import ( + NORM_PATHS_AND_BASE_CONTAINER, + get_abs_path_real_path_and_base_from_frame, +) + +from _pydevd_bundle.pydevd_constants import ( + NO_FTRACE, + PYDEVD_USE_SYS_MONITORING, + USE_CUSTOM_SYS_CURRENT_FRAMES_MAP, + ForkSafeLock, + get_current_thread_id, +) + +# fmt: off +# IFDEF CYTHON +# from cpython.object cimport PyObject +# from cpython.ref cimport Py_INCREF, Py_XDECREF +# ELSE +from _pydevd_bundle.pydevd_frame import PyDBFrame, is_unhandled_exception + +# ENDIF +# fmt: on + +# fmt: off +# IFDEF CYTHON +# cdef dict _global_notify_skipped_step_in +# cython_inline_constant: CMD_STEP_INTO = 107 +# cython_inline_constant: CMD_STEP_INTO_MY_CODE = 144 +# cython_inline_constant: CMD_STEP_RETURN = 109 +# cython_inline_constant: CMD_STEP_RETURN_MY_CODE = 160 +# ELSE +# Note: those are now inlined on cython. +CMD_STEP_INTO = 107 +CMD_STEP_INTO_MY_CODE = 144 +CMD_STEP_RETURN = 109 +CMD_STEP_RETURN_MY_CODE = 160 +# ENDIF +# fmt: on + +# Cache where we should keep that we completely skipped entering some context. +# It needs to be invalidated when: +# - Breakpoints are changed +# It can be used when running regularly (without step over/step in/step return) +global_cache_skips = {} +global_cache_frame_skips = {} + +_global_notify_skipped_step_in = False +_global_notify_skipped_step_in_lock = ForkSafeLock() + + +def notify_skipped_step_in_because_of_filters(py_db, frame): + global _global_notify_skipped_step_in + + with _global_notify_skipped_step_in_lock: + if _global_notify_skipped_step_in: + # Check with lock in place (callers should actually have checked + # before without the lock in place due to performance). + return + _global_notify_skipped_step_in = True + py_db.notify_skipped_step_in_because_of_filters(frame) + + +# fmt: off +# IFDEF CYTHON +# cdef class SafeCallWrapper: +# cdef method_object +# def __init__(self, method_object): +# self.method_object = method_object +# def __call__(self, *args): +# #Cannot use 'self' once inside the delegate call since we are borrowing the self reference f_trace field +# #in the frame, and that reference might get destroyed by set trace on frame and parents +# cdef PyObject* method_obj = self.method_object +# Py_INCREF(method_obj) +# ret = (method_obj)(*args) +# Py_XDECREF (method_obj) +# return SafeCallWrapper(ret) if ret is not None else None +# def get_method_object(self): +# return self.method_object +# ELSE +# ENDIF +# fmt: on + + +def fix_top_level_trace_and_get_trace_func(py_db, frame): + # fmt: off + # IFDEF CYTHON + # cdef str filename; + # cdef str name; + # cdef tuple args; + # ENDIF + # fmt: on + + # Note: this is always the first entry-point in the tracing for any thread. + # After entering here we'll set a new tracing function for this thread + # where more information is cached (and will also setup the tracing for + # frames where we should deal with unhandled exceptions). + thread = None + # Cache the frame which should be traced to deal with unhandled exceptions. + # (i.e.: thread entry-points). + + f_unhandled = frame + # print('called at', f_unhandled.f_code.co_name, f_unhandled.f_code.co_filename, f_unhandled.f_code.co_firstlineno) + force_only_unhandled_tracer = False + while f_unhandled is not None: + # name = splitext(basename(f_unhandled.f_code.co_filename))[0] + + name = f_unhandled.f_code.co_filename + # basename + i = name.rfind("/") + j = name.rfind("\\") + if j > i: + i = j + if i >= 0: + name = name[i + 1 :] + # remove ext + i = name.rfind(".") + if i >= 0: + name = name[:i] + + if name == "threading": + if f_unhandled.f_code.co_name in ("__bootstrap", "_bootstrap"): + # We need __bootstrap_inner, not __bootstrap. + return None, False + + elif f_unhandled.f_code.co_name in ( + "__bootstrap_inner", + "_bootstrap_inner", + ): + # Note: be careful not to use threading.currentThread to avoid creating a dummy thread. + t = f_unhandled.f_locals.get("self") + force_only_unhandled_tracer = True + if t is not None and isinstance(t, threading.Thread): + thread = t + break + + elif name == "pydev_monkey": + if f_unhandled.f_code.co_name == "__call__": + force_only_unhandled_tracer = True + break + + elif name == "pydevd": + if f_unhandled.f_code.co_name in ("run", "main"): + # We need to get to _exec + return None, False + + if f_unhandled.f_code.co_name == "_exec": + force_only_unhandled_tracer = True + break + + elif name == "pydevd_tracing": + return None, False + + elif f_unhandled.f_back is None: + break + + f_unhandled = f_unhandled.f_back + + if thread is None: + # Important: don't call threadingCurrentThread if we're in the threading module + # to avoid creating dummy threads. + if py_db.threading_get_ident is not None: + thread = py_db.threading_active.get(py_db.threading_get_ident()) + if thread is None: + return None, False + else: + # Jython does not have threading.get_ident(). + thread = py_db.threading_current_thread() + + if getattr(thread, "pydev_do_not_trace", None): + py_db.disable_tracing() + return None, False + + try: + additional_info = thread.additional_info + if additional_info is None: + raise AttributeError() + except: + additional_info = py_db.set_additional_thread_info(thread) + + # print('enter thread tracer', thread, get_current_thread_id(thread)) + args = ( + py_db, + thread, + additional_info, + global_cache_skips, + global_cache_frame_skips, + ) + + if f_unhandled is not None: + if f_unhandled.f_back is None and not force_only_unhandled_tracer: + # Happens when we attach to a running program (cannot reuse instance because it's mutable). + top_level_thread_tracer = TopLevelThreadTracerNoBackFrame( + ThreadTracer(args), args + ) + additional_info.top_level_thread_tracer_no_back_frames.append( + top_level_thread_tracer + ) # Hack for cython to keep it alive while the thread is alive (just the method in the SetTrace is not enough). + else: + top_level_thread_tracer = additional_info.top_level_thread_tracer_unhandled + if top_level_thread_tracer is None: + # Stop in some internal place to report about unhandled exceptions + top_level_thread_tracer = TopLevelThreadTracerOnlyUnhandledExceptions( + args + ) + additional_info.top_level_thread_tracer_unhandled = top_level_thread_tracer # Hack for cython to keep it alive while the thread is alive (just the method in the SetTrace is not enough). + + # print(' --> found to trace unhandled', f_unhandled.f_code.co_name, f_unhandled.f_code.co_filename, f_unhandled.f_code.co_firstlineno) + f_trace = top_level_thread_tracer.get_trace_dispatch_func() + # fmt: off + # IFDEF CYTHON + # f_trace = SafeCallWrapper(f_trace) + # ENDIF + # fmt: on + f_unhandled.f_trace = f_trace + + if frame is f_unhandled: + return f_trace, False + + thread_tracer = additional_info.thread_tracer + if thread_tracer is None or thread_tracer._args[0] is not py_db: + thread_tracer = ThreadTracer(args) + additional_info.thread_tracer = thread_tracer + + # fmt: off + # IFDEF CYTHON + # return SafeCallWrapper(thread_tracer), True + # ELSE + return thread_tracer, True + # ENDIF + # fmt: on + + +def trace_dispatch(py_db, frame, event, arg): + thread_trace_func, apply_to_settrace = py_db.fix_top_level_trace_and_get_trace_func( + py_db, frame + ) + if thread_trace_func is None: + return None if event == "call" else NO_FTRACE + if apply_to_settrace: + py_db.enable_tracing(thread_trace_func) + return thread_trace_func(frame, event, arg) + + +# fmt: off +# IFDEF CYTHON +# cdef class TopLevelThreadTracerOnlyUnhandledExceptions: +# cdef public tuple _args; +# def __init__(self, tuple args): +# self._args = args +# ELSE +class TopLevelThreadTracerOnlyUnhandledExceptions: + def __init__(self, args): + self._args = args + +# ENDIF +# fmt: on + + def trace_unhandled_exceptions(self, frame, event, arg): + # Note that we ignore the frame as this tracing method should only be put in topmost frames already. + # print('trace_unhandled_exceptions', event, frame.f_code.co_name, frame.f_code.co_filename, frame.f_code.co_firstlineno) + if event == "exception" and arg is not None: + py_db, t, additional_info = self._args[0:3] + if arg is not None: + if not additional_info.suspended_at_unhandled: + additional_info.suspended_at_unhandled = True + + py_db.stop_on_unhandled_exception(py_db, t, additional_info, arg) + + # No need to reset frame.f_trace to keep the same trace function. + return self.trace_unhandled_exceptions + + def get_trace_dispatch_func(self): + return self.trace_unhandled_exceptions + +# fmt: off +# IFDEF CYTHON +# cdef class TopLevelThreadTracerNoBackFrame: +# +# cdef public object _frame_trace_dispatch; +# cdef public tuple _args; +# cdef public object try_except_infos; +# cdef public object _last_exc_arg; +# cdef public set _raise_lines; +# cdef public int _last_raise_line; +# +# def __init__(self, frame_trace_dispatch, tuple args): +# self._frame_trace_dispatch = frame_trace_dispatch +# self._args = args +# self.try_except_infos = None +# self._last_exc_arg = None +# self._raise_lines = set() +# self._last_raise_line = -1 +# ELSE +class TopLevelThreadTracerNoBackFrame: + """ + This tracer is pretty special in that it's dealing with a frame without f_back (i.e.: top frame + on remote attach or QThread). + + This means that we have to carefully inspect exceptions to discover whether the exception will + be unhandled or not (if we're dealing with an unhandled exception we need to stop as unhandled, + otherwise we need to use the regular tracer -- unfortunately the debugger has little info to + work with in the tracing -- see: https://bugs.python.org/issue34099, so, we inspect bytecode to + determine if some exception will be traced or not... note that if this is not available -- such + as on Jython -- we consider any top-level exception to be unnhandled). + """ + + def __init__(self, frame_trace_dispatch, args): + self._frame_trace_dispatch = frame_trace_dispatch + self._args = args + self.try_except_infos = None + self._last_exc_arg = None + self._raise_lines = set() + self._last_raise_line = -1 + +# ENDIF +# fmt: on + + def trace_dispatch_and_unhandled_exceptions(self, frame, event, arg): + # DEBUG = 'code_to_debug' in frame.f_code.co_filename + # if DEBUG: print('trace_dispatch_and_unhandled_exceptions: %s %s %s %s %s %s' % (event, frame.f_code.co_name, frame.f_code.co_filename, frame.f_code.co_firstlineno, self._frame_trace_dispatch, frame.f_lineno)) + frame_trace_dispatch = self._frame_trace_dispatch + if frame_trace_dispatch is not None: + self._frame_trace_dispatch = frame_trace_dispatch(frame, event, arg) + + if event == "exception": + self._last_exc_arg = arg + self._raise_lines.add(frame.f_lineno) + self._last_raise_line = frame.f_lineno + + elif event == "return" and self._last_exc_arg is not None: + # For unhandled exceptions we actually track the return when at the topmost level. + try: + py_db, t, additional_info = self._args[0:3] + if not additional_info.suspended_at_unhandled: # Note: only check it here, don't set. + if is_unhandled_exception(self, py_db, frame, self._last_raise_line, self._raise_lines): + py_db.stop_on_unhandled_exception(py_db, t, additional_info, self._last_exc_arg) + finally: + # Remove reference to exception after handling it. + self._last_exc_arg = None + + ret = self.trace_dispatch_and_unhandled_exceptions + + # Need to reset (the call to _frame_trace_dispatch may have changed it). + # fmt: off + # IFDEF CYTHON + # frame.f_trace = SafeCallWrapper(ret) + # ELSE + frame.f_trace = ret + # ENDIF + # fmt: on + return ret + + def get_trace_dispatch_func(self): + return self.trace_dispatch_and_unhandled_exceptions + + +# fmt: off +# IFDEF CYTHON +# cdef class ThreadTracer: +# cdef public tuple _args; +# def __init__(self, tuple args): +# self._args = args +# ELSE +class ThreadTracer: + def __init__(self, args): + self._args = args + +# ENDIF +# fmt: on + + def __call__(self, frame, event, arg): + """This is the callback used when we enter some context in the debugger. + + We also decorate the thread we are in with info about the debugging. + The attributes added are: + pydev_state + pydev_step_stop + pydev_step_cmd + pydev_notify_kill + + :param PyDB py_db: + This is the global debugger (this method should actually be added as a method to it). + """ + # fmt: off + # IFDEF CYTHON + # cdef str filename; + # cdef str base; + # cdef int pydev_step_cmd; + # cdef object frame_cache_key; + # cdef dict cache_skips; + # cdef bint is_stepping; + # cdef tuple abs_path_canonical_path_and_base; + # cdef PyDBAdditionalThreadInfo additional_info; + # ENDIF + # fmt: on + + # DEBUG = 'code_to_debug' in frame.f_code.co_filename + # if DEBUG: print('ENTER: trace_dispatch: %s %s %s %s' % (frame.f_code.co_filename, frame.f_lineno, event, frame.f_code.co_name)) + py_db, t, additional_info, cache_skips, frame_skips_cache = self._args + if additional_info.is_tracing: + return None if event == "call" else NO_FTRACE # we don't wan't to trace code invoked from pydevd_frame.trace_dispatch + + additional_info.is_tracing += 1 + try: + pydev_step_cmd = additional_info.pydev_step_cmd + is_stepping = pydev_step_cmd != -1 + if py_db.pydb_disposed: + return None if event == "call" else NO_FTRACE + + # if thread is not alive, cancel trace_dispatch processing + if not is_thread_alive(t): + py_db.notify_thread_not_alive(get_current_thread_id(t)) + return None if event == "call" else NO_FTRACE + + # Note: it's important that the context name is also given because we may hit something once + # in the global context and another in the local context. + frame_cache_key = frame.f_code + if frame_cache_key in cache_skips: + if not is_stepping: + # if DEBUG: print('skipped: trace_dispatch (cache hit)', frame_cache_key, frame.f_lineno, event, frame.f_code.co_name) + return None if event == "call" else NO_FTRACE + else: + # When stepping we can't take into account caching based on the breakpoints (only global filtering). + if cache_skips.get(frame_cache_key) == 1: + if ( + additional_info.pydev_original_step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE) + and not _global_notify_skipped_step_in + ): + notify_skipped_step_in_because_of_filters(py_db, frame) + + back_frame = frame.f_back + if back_frame is not None and pydev_step_cmd in ( + CMD_STEP_INTO, + CMD_STEP_INTO_MY_CODE, + CMD_STEP_RETURN, + CMD_STEP_RETURN_MY_CODE, + ): + back_frame_cache_key = back_frame.f_code + if cache_skips.get(back_frame_cache_key) == 1: + # if DEBUG: print('skipped: trace_dispatch (cache hit: 1)', frame_cache_key, frame.f_lineno, event, frame.f_code.co_name) + return None if event == "call" else NO_FTRACE + else: + # if DEBUG: print('skipped: trace_dispatch (cache hit: 2)', frame_cache_key, frame.f_lineno, event, frame.f_code.co_name) + return None if event == "call" else NO_FTRACE + + try: + # Make fast path faster! + abs_path_canonical_path_and_base = NORM_PATHS_AND_BASE_CONTAINER[frame.f_code.co_filename] + except: + abs_path_canonical_path_and_base = get_abs_path_real_path_and_base_from_frame(frame) + + file_type = py_db.get_file_type( + frame, abs_path_canonical_path_and_base + ) # we don't want to debug threading or anything related to pydevd + + if file_type is not None: + if file_type == 1: # inlining LIB_FILE = 1 + if not py_db.in_project_scope(frame, abs_path_canonical_path_and_base[0]): + # if DEBUG: print('skipped: trace_dispatch (not in scope)', abs_path_canonical_path_and_base[2], frame.f_lineno, event, frame.f_code.co_name, file_type) + cache_skips[frame_cache_key] = 1 + return None if event == "call" else NO_FTRACE + else: + # if DEBUG: print('skipped: trace_dispatch', abs_path_canonical_path_and_base[2], frame.f_lineno, event, frame.f_code.co_name, file_type) + cache_skips[frame_cache_key] = 1 + return None if event == "call" else NO_FTRACE + + if py_db.is_files_filter_enabled: + if py_db.apply_files_filter(frame, abs_path_canonical_path_and_base[0], False): + cache_skips[frame_cache_key] = 1 + + if ( + is_stepping + and additional_info.pydev_original_step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE) + and not _global_notify_skipped_step_in + ): + notify_skipped_step_in_because_of_filters(py_db, frame) + + # A little gotcha, sometimes when we're stepping in we have to stop in a + # return event showing the back frame as the current frame, so, we need + # to check not only the current frame but the back frame too. + back_frame = frame.f_back + if back_frame is not None and pydev_step_cmd in ( + CMD_STEP_INTO, + CMD_STEP_INTO_MY_CODE, + CMD_STEP_RETURN, + CMD_STEP_RETURN_MY_CODE, + ): + if py_db.apply_files_filter(back_frame, back_frame.f_code.co_filename, False): + back_frame_cache_key = back_frame.f_code + cache_skips[back_frame_cache_key] = 1 + # if DEBUG: print('skipped: trace_dispatch (filtered out: 1)', frame_cache_key, frame.f_lineno, event, frame.f_code.co_name) + return None if event == "call" else NO_FTRACE + else: + # if DEBUG: print('skipped: trace_dispatch (filtered out: 2)', frame_cache_key, frame.f_lineno, event, frame.f_code.co_name) + return None if event == "call" else NO_FTRACE + + # if DEBUG: print('trace_dispatch', filename, frame.f_lineno, event, frame.f_code.co_name, file_type) + + # Just create PyDBFrame directly (removed support for Python versions < 2.5, which required keeping a weak + # reference to the frame). + ret = PyDBFrame( + ( + py_db, + abs_path_canonical_path_and_base, + additional_info, + t, + frame_skips_cache, + frame_cache_key, + ) + ).trace_dispatch(frame, event, arg) + if ret is None: + # 1 means skipped because of filters. + # 2 means skipped because no breakpoints were hit. + cache_skips[frame_cache_key] = 2 + return None if event == "call" else NO_FTRACE + + # fmt: off + # IFDEF CYTHON + # frame.f_trace = SafeCallWrapper(ret) # Make sure we keep the returned tracer. + # ELSE + frame.f_trace = ret # Make sure we keep the returned tracer. + # ENDIF + # fmt: on + return ret + + except SystemExit: + return None if event == "call" else NO_FTRACE + + except Exception: + if py_db.pydb_disposed: + return None if event == "call" else NO_FTRACE # Don't log errors when we're shutting down. + # Log it + try: + if pydev_log_exception is not None: + # This can actually happen during the interpreter shutdown in Python 2.7 + pydev_log_exception() + except: + # Error logging? We're really in the interpreter shutdown... + # (https://github.com/fabioz/PyDev.Debugger/issues/8) + pass + return None if event == "call" else NO_FTRACE + finally: + additional_info.is_tracing -= 1 + + +if USE_CUSTOM_SYS_CURRENT_FRAMES_MAP: + # This is far from ideal, as we'll leak frames (we'll always have the last created frame, not really + # the last topmost frame saved -- this should be Ok for our usage, but it may leak frames and things + # may live longer... as IronPython is garbage-collected, things should live longer anyways, so, it + # shouldn't be an issue as big as it's in CPython -- it may still be annoying, but this should + # be a reasonable workaround until IronPython itself is able to provide that functionality). + # + # See: https://github.com/IronLanguages/main/issues/1630 + from _pydevd_bundle.pydevd_constants import constructed_tid_to_last_frame + + _original_call = ThreadTracer.__call__ + + def __call__(self, frame, event, arg): + constructed_tid_to_last_frame[self._args[1].ident] = frame + return _original_call(self, frame, event, arg) + + ThreadTracer.__call__ = __call__ + +if PYDEVD_USE_SYS_MONITORING: + + def fix_top_level_trace_and_get_trace_func(*args, **kwargs): + raise RuntimeError("Not used in sys.monitoring mode.") diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_traceproperty.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_traceproperty.py new file mode 100644 index 000000000..78717d386 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_traceproperty.py @@ -0,0 +1,99 @@ +"""For debug purpose we are replacing actual builtin property by the debug property +""" +from _pydev_bundle import pydev_log + +from _pydevd_bundle.pydevd_comm import get_global_debugger + + +# ======================================================================================================================= +# replace_builtin_property +# ======================================================================================================================= +def replace_builtin_property(new_property=None): + if new_property is None: + new_property = DebugProperty + original = property + try: + import builtins + + builtins.__dict__["property"] = new_property + except: + pydev_log.exception() # @Reimport + return original + + +# ======================================================================================================================= +# DebugProperty +# ======================================================================================================================= +class DebugProperty: + """A custom property which allows python property to get + controlled by the debugger and selectively disable/re-enable + the tracing. + """ + + def __init__(self, fget=None, fset=None, fdel=None, doc=None): + self.fget = fget + self.fset = fset + self.fdel = fdel + self.__doc__ = doc + + def __get__(self, obj, objtype=None): + if obj is None: + return self + global_debugger = get_global_debugger() + try: + if ( + global_debugger is not None + and global_debugger.disable_property_getter_trace + ): + global_debugger.disable_tracing() + if self.fget is None: + raise AttributeError("unreadable attribute") + return self.fget(obj) + finally: + if global_debugger is not None: + global_debugger.enable_tracing() + + def __set__(self, obj, value): + global_debugger = get_global_debugger() + try: + if ( + global_debugger is not None + and global_debugger.disable_property_setter_trace + ): + global_debugger.disable_tracing() + if self.fset is None: + raise AttributeError("can't set attribute") + self.fset(obj, value) + finally: + if global_debugger is not None: + global_debugger.enable_tracing() + + def __delete__(self, obj): + global_debugger = get_global_debugger() + try: + if ( + global_debugger is not None + and global_debugger.disable_property_deleter_trace + ): + global_debugger.disable_tracing() + if self.fdel is None: + raise AttributeError("can't delete attribute") + self.fdel(obj) + finally: + if global_debugger is not None: + global_debugger.enable_tracing() + + def getter(self, fget): + """Overriding getter decorator for the property""" + self.fget = fget + return self + + def setter(self, fset): + """Overriding setter decorator for the property""" + self.fset = fset + return self + + def deleter(self, fdel): + """Overriding deleter decorator for the property""" + self.fdel = fdel + return self diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_utils.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_utils.py new file mode 100644 index 000000000..5fe3b0cd8 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_utils.py @@ -0,0 +1,557 @@ +import ctypes +import inspect +import os +import signal +import sys +import time +import traceback +from importlib import import_module +from importlib.util import module_from_spec, spec_from_file_location +from urllib.parse import quote # @UnresolvedImport + +from _pydev_bundle import _pydev_saved_modules, pydev_log +from _pydev_bundle._pydev_saved_modules import thread, threading + +from _pydevd_bundle.pydevd_constants import ( + GENERATED_LEN_ATTR_NAME, + GEVENT_SUPPORT_NOT_SET_MSG, + IS_PYPY, + PYDEVD_WARN_SLOW_RESOLVE_TIMEOUT, + SUPPORT_GEVENT, + USE_CUSTOM_SYS_CURRENT_FRAMES, + get_global_debugger, +) + + +def save_main_module(file, module_name): + # patch provided by: Scott Schlesier - when script is run, it does not + # use globals from pydevd: + # This will prevent the pydevd script from contaminating the namespace for the script to be debugged + # pretend pydevd is not the main module, and + # convince the file to be debugged that it was loaded as main + m = sys.modules[module_name] = sys.modules["__main__"] + m.__name__ = module_name + loader = m.__loader__ if hasattr(m, "__loader__") else None + spec = spec_from_file_location("__main__", file, loader=loader) + m = module_from_spec(spec) + sys.modules["__main__"] = m + return m + + +def is_current_thread_main_thread(): + if hasattr(threading, "main_thread"): + return threading.current_thread() is threading.main_thread() + else: + return isinstance(threading.current_thread(), threading._MainThread) + + +def get_main_thread(): + if hasattr(threading, "main_thread"): + return threading.main_thread() + else: + for t in threading.enumerate(): + if isinstance(t, threading._MainThread): + return t + return None + + +def to_number(x): + if is_string(x): + try: + n = float(x) + return n + except ValueError: + pass + + l = x.find("(") + if l != -1: + y = x[0 : l - 1] + # print y + try: + n = float(y) + return n + except ValueError: + pass + return None + + +def compare_object_attrs_key(x): + if GENERATED_LEN_ATTR_NAME == x: + as_number = to_number(x) + if as_number is None: + as_number = 99999999 + # len() should appear after other attributes in a list. + return (1, as_number) + else: + return (-1, to_string(x)) + + +def is_string(x): + return isinstance(x, str) + + +def to_string(x): + if isinstance(x, str): + return x + else: + return str(x) + + +def print_exc(): + if traceback: + traceback.print_exc() + + +def quote_smart(s, safe="/"): + return quote(s, safe) + + +def get_clsname_for_code(code, frame): + clsname = None + if len(code.co_varnames) > 0: + # We are checking the first argument of the function + # (`self` or `cls` for methods). + first_arg_name = code.co_varnames[0] + if first_arg_name in frame.f_locals: + first_arg_obj = frame.f_locals[first_arg_name] + if inspect.isclass(first_arg_obj): # class method + first_arg_class = first_arg_obj + else: # instance method + if hasattr(first_arg_obj, "__class__"): + first_arg_class = first_arg_obj.__class__ + else: # old style class, fall back on type + first_arg_class = type(first_arg_obj) + func_name = code.co_name + if hasattr(first_arg_class, func_name): + method = getattr(first_arg_class, func_name) + func_code = None + if hasattr(method, "func_code"): # Python2 + func_code = method.func_code + elif hasattr(method, "__code__"): # Python3 + func_code = method.__code__ + if func_code and func_code == code: + clsname = first_arg_class.__name__ + + return clsname + + +def get_non_pydevd_threads(): + threads = threading.enumerate() + return [t for t in threads if t and not getattr(t, "is_pydev_daemon_thread", False)] + + +if USE_CUSTOM_SYS_CURRENT_FRAMES and IS_PYPY: + # On PyPy we can use its fake_frames to get the traceback + # (instead of the actual real frames that need the tracing to be correct). + _tid_to_frame_for_dump_threads = sys._current_frames +else: + from _pydevd_bundle.pydevd_constants import ( + _current_frames as _tid_to_frame_for_dump_threads, + ) + + +def dump_threads(stream=None, show_pydevd_threads=True): + """ + Helper to dump thread info. + """ + if stream is None: + stream = sys.stderr + thread_id_to_name_and_is_pydevd_thread = {} + try: + threading_enumerate = _pydev_saved_modules.pydevd_saved_threading_enumerate + if threading_enumerate is None: + threading_enumerate = threading.enumerate + + for t in threading_enumerate(): + is_pydevd_thread = getattr(t, "is_pydev_daemon_thread", False) + thread_id_to_name_and_is_pydevd_thread[t.ident] = ( + "%s (daemon: %s, pydevd thread: %s)" + % (t.name, t.daemon, is_pydevd_thread), + is_pydevd_thread, + ) + except: + pass + + stream.write( + "===============================================================================\n" + ) + stream.write("Threads running\n") + stream.write( + "================================= Thread Dump =================================\n" + ) + stream.flush() + + for thread_id, frame in _tid_to_frame_for_dump_threads().items(): + name, is_pydevd_thread = thread_id_to_name_and_is_pydevd_thread.get( + thread_id, (thread_id, False) + ) + if not show_pydevd_threads and is_pydevd_thread: + continue + + stream.write( + "\n-------------------------------------------------------------------------------\n" + ) + stream.write(" Thread %s" % (name,)) + stream.write("\n\n") + + for i, (filename, lineno, name, line) in enumerate( + traceback.extract_stack(frame) + ): + stream.write(' File "%s", line %d, in %s\n' % (filename, lineno, name)) + if line: + stream.write(" %s\n" % (line.strip())) + + if i == 0 and "self" in frame.f_locals: + stream.write(" self: ") + try: + stream.write(str(frame.f_locals["self"])) + except: + stream.write( + "Unable to get str of: %s" % (type(frame.f_locals["self"]),) + ) + stream.write("\n") + stream.flush() + + stream.write( + "\n=============================== END Thread Dump ===============================" + ) + stream.flush() + + +def _extract_variable_nested_braces(char_iter): + expression = [] + level = 0 + for c in char_iter: + if c == "{": + level += 1 + if c == "}": + level -= 1 + if level == -1: + return "".join(expression).strip() + expression.append(c) + raise SyntaxError("Unbalanced braces in expression.") + + +def _extract_expression_list(log_message): + # Note: not using re because of nested braces. + expression = [] + expression_vars = [] + char_iter = iter(log_message) + for c in char_iter: + if c == "{": + expression_var = _extract_variable_nested_braces(char_iter) + if expression_var: + expression.append("%s") + expression_vars.append(expression_var) + else: + expression.append(c) + + expression = "".join(expression) + return expression, expression_vars + + +def convert_dap_log_message_to_expression(log_message): + try: + expression, expression_vars = _extract_expression_list(log_message) + except SyntaxError: + return repr("Unbalanced braces in: %s" % (log_message)) + if not expression_vars: + return repr(expression) + # Note: use '%' to be compatible with Python 2.6. + return repr(expression) + " % (" + ", ".join(str(x) for x in expression_vars) + ",)" + + +def notify_about_gevent_if_needed(stream=None): + """ + When debugging with gevent check that the gevent flag is used if the user uses the gevent + monkey-patching. + + :return bool: + Returns True if a message had to be shown to the user and False otherwise. + """ + stream = stream if stream is not None else sys.stderr + if not SUPPORT_GEVENT: + gevent_monkey = sys.modules.get("gevent.monkey") + if gevent_monkey is not None: + try: + saved = gevent_monkey.saved + except AttributeError: + pydev_log.exception_once("Error checking for gevent monkey-patching.") + return False + + if saved: + # Note: print to stderr as it may deadlock the debugger. + sys.stderr.write("%s\n" % (GEVENT_SUPPORT_NOT_SET_MSG,)) + return True + + return False + + +def hasattr_checked(obj, name): + try: + getattr(obj, name) + except: + # i.e.: Handle any exception, not only AttributeError. + return False + else: + return True + + +def getattr_checked(obj, name): + try: + return getattr(obj, name) + except: + # i.e.: Handle any exception, not only AttributeError. + return None + + +def dir_checked(obj): + try: + return dir(obj) + except: + return [] + + +def isinstance_checked(obj, cls): + try: + return isinstance(obj, cls) + except: + return False + + +class ScopeRequest: + __slots__ = ["variable_reference", "scope"] + + def __init__(self, variable_reference, scope): + assert scope in ("globals", "locals") + self.variable_reference = variable_reference + self.scope = scope + + def __eq__(self, o): + if isinstance(o, ScopeRequest): + return ( + self.variable_reference == o.variable_reference + and self.scope == o.scope + ) + + return False + + def __ne__(self, o): + return not self == o + + def __hash__(self): + return hash((self.variable_reference, self.scope)) + + +class DAPGrouper: + """ + Note: this is a helper class to group variables on the debug adapter protocol (DAP). For + the xml protocol the type is just added to each variable and the UI can group/hide it as needed. + """ + + SCOPE_SPECIAL_VARS = "special variables" + SCOPE_PROTECTED_VARS = "protected variables" + SCOPE_FUNCTION_VARS = "function variables" + SCOPE_CLASS_VARS = "class variables" + + SCOPES_SORTED = [ + SCOPE_SPECIAL_VARS, + SCOPE_PROTECTED_VARS, + SCOPE_FUNCTION_VARS, + SCOPE_CLASS_VARS, + ] + + __slots__ = ["variable_reference", "scope", "contents_debug_adapter_protocol"] + + def __init__(self, scope): + self.variable_reference = id(self) + self.scope = scope + self.contents_debug_adapter_protocol = [] + + def get_contents_debug_adapter_protocol(self): + return self.contents_debug_adapter_protocol[:] + + def __eq__(self, o): + if isinstance(o, ScopeRequest): + return ( + self.variable_reference == o.variable_reference + and self.scope == o.scope + ) + + return False + + def __ne__(self, o): + return not self == o + + def __hash__(self): + return hash((self.variable_reference, self.scope)) + + def __repr__(self): + return "" + + def __str__(self): + return "" + + +def interrupt_main_thread(main_thread=None): + """ + Generates a KeyboardInterrupt in the main thread by sending a Ctrl+C + or by calling thread.interrupt_main(). + + :param main_thread: + Needed because Jython needs main_thread._thread.interrupt() to be called. + + Note: if unable to send a Ctrl+C, the KeyboardInterrupt will only be raised + when the next Python instruction is about to be executed (so, it won't interrupt + a sleep(1000)). + """ + if main_thread is None: + main_thread = threading.main_thread() + + pydev_log.debug("Interrupt main thread.") + called = False + try: + if os.name == "posix": + # On Linux we can't interrupt 0 as in Windows because it's + # actually owned by a process -- on the good side, signals + # work much better on Linux! + os.kill(os.getpid(), signal.SIGINT) + called = True + + elif os.name == "nt": + # This generates a Ctrl+C only for the current process and not + # to the process group! + # Note: there doesn't seem to be any public documentation for this + # function (although it seems to be present from Windows Server 2003 SP1 onwards + # according to: https://www.geoffchappell.com/studies/windows/win32/kernel32/api/index.htm) + ctypes.windll.kernel32.CtrlRoutine(0) + + # The code below is deprecated because it actually sends a Ctrl+C + # to the process group, so, if this was a process created without + # passing `CREATE_NEW_PROCESS_GROUP` the signal may be sent to the + # parent process and to sub-processes too (which is not ideal -- + # for instance, when using pytest-xdist, it'll actually stop the + # testing, even when called in the subprocess). + + # if hasattr_checked(signal, 'CTRL_C_EVENT'): + # os.kill(0, signal.CTRL_C_EVENT) + # else: + # # Python 2.6 + # ctypes.windll.kernel32.GenerateConsoleCtrlEvent(0, 0) + called = True + + except: + # If something went wrong, fallback to interrupting when the next + # Python instruction is being called. + pydev_log.exception("Error interrupting main thread (using fallback).") + + if not called: + try: + # In this case, we don't really interrupt a sleep() nor IO operations + # (this makes the KeyboardInterrupt be sent only when the next Python + # instruction is about to be executed). + if hasattr(thread, "interrupt_main"): + thread.interrupt_main() + else: + main_thread._thread.interrupt() # Jython + except: + pydev_log.exception("Error on interrupt main thread fallback.") + + +class Timer: + def __init__(self, min_diff=PYDEVD_WARN_SLOW_RESOLVE_TIMEOUT): + self.min_diff = min_diff + self._curr_time = time.time() + + def print_time(self, msg="Elapsed:"): + old = self._curr_time + new = self._curr_time = time.time() + diff = new - old + if diff >= self.min_diff: + print("%s: %.2fs" % (msg, diff)) + + def _report_slow(self, compute_msg, *args): + old = self._curr_time + new = self._curr_time = time.time() + diff = new - old + if diff >= self.min_diff: + py_db = get_global_debugger() + if py_db is not None: + msg = compute_msg(diff, *args) + py_db.writer.add_command(py_db.cmd_factory.make_warning_message(msg)) + + def report_if_compute_repr_attr_slow( + self, attrs_tab_separated, attr_name, attr_type + ): + self._report_slow( + self._compute_repr_slow, attrs_tab_separated, attr_name, attr_type + ) + + def _compute_repr_slow(self, diff, attrs_tab_separated, attr_name, attr_type): + try: + attr_type = attr_type.__name__ + except: + pass + if attrs_tab_separated: + return ( + "pydevd warning: Computing repr of %s.%s (%s) was slow (took %.2fs).\n" + "Customize report timeout by setting the `PYDEVD_WARN_SLOW_RESOLVE_TIMEOUT` environment variable to a higher timeout (default is: %ss)\n" + ) % ( + attrs_tab_separated.replace("\t", "."), + attr_name, + attr_type, + diff, + PYDEVD_WARN_SLOW_RESOLVE_TIMEOUT, + ) + else: + return ( + "pydevd warning: Computing repr of %s (%s) was slow (took %.2fs)\n" + "Customize report timeout by setting the `PYDEVD_WARN_SLOW_RESOLVE_TIMEOUT` environment variable to a higher timeout (default is: %ss)\n" + ) % (attr_name, attr_type, diff, PYDEVD_WARN_SLOW_RESOLVE_TIMEOUT) + + def report_if_getting_attr_slow(self, cls, attr_name): + self._report_slow(self._compute_get_attr_slow, cls, attr_name) + + def _compute_get_attr_slow(self, diff, cls, attr_name): + try: + cls = cls.__name__ + except: + pass + return ( + "pydevd warning: Getting attribute %s.%s was slow (took %.2fs)\n" + "Customize report timeout by setting the `PYDEVD_WARN_SLOW_RESOLVE_TIMEOUT` environment variable to a higher timeout (default is: %ss)\n" + ) % (cls, attr_name, diff, PYDEVD_WARN_SLOW_RESOLVE_TIMEOUT) + + +def import_attr_from_module(import_with_attr_access): + if "." not in import_with_attr_access: + # We need at least one '.' (we don't support just the module import, we need the attribute access too). + raise ImportError( + "Unable to import module with attr access: %s" % (import_with_attr_access,) + ) + + module_name, attr_name = import_with_attr_access.rsplit(".", 1) + + while True: + try: + mod = import_module(module_name) + except ImportError: + if "." not in module_name: + raise ImportError( + "Unable to import module with attr access: %s" + % (import_with_attr_access,) + ) + + module_name, new_attr_part = module_name.rsplit(".", 1) + attr_name = new_attr_part + "." + attr_name + else: + # Ok, we got the base module, now, get the attribute we need. + try: + for attr in attr_name.split("."): + mod = getattr(mod, attr) + return mod + except: + raise ImportError( + "Unable to import module with attr access: %s" + % (import_with_attr_access,) + ) diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vars.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vars.py new file mode 100644 index 000000000..cdb231624 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vars.py @@ -0,0 +1,928 @@ +"""pydevd_vars deals with variables: +resolution/conversion to XML. +""" +import functools +import inspect +import pickle +import sys # @Reimport +from functools import lru_cache + +from _pydev_bundle import pydev_log +from _pydev_bundle._pydev_saved_modules import threading +from _pydev_bundle.pydev_imports import Exec, execfile + +from _pydevd_bundle import pydevd_constants, pydevd_save_locals, pydevd_timeout +from _pydevd_bundle.pydevd_comm_constants import CMD_SET_BREAK +from _pydevd_bundle.pydevd_constants import ( + get_current_thread_id, + get_frame, + get_global_debugger, + iter_chars, + silence_warnings_decorator, +) +from _pydevd_bundle.pydevd_daemon_thread import PyDBDaemonThread +from _pydevd_bundle.pydevd_save_locals import update_globals_and_locals +from _pydevd_bundle.pydevd_thread_lifecycle import ( + mark_thread_suspended, + resume_threads, + suspend_all_threads, +) +from _pydevd_bundle.pydevd_utils import to_string +from _pydevd_bundle.pydevd_xml import ExceptionOnEvaluate, get_type, var_to_xml + +SENTINEL_VALUE = [] + + +class VariableError(RuntimeError): + pass + + +def iter_frames(frame): + while frame is not None: + yield frame + frame = frame.f_back + frame = None + + +def dump_frames(thread_id): + sys.stdout.write("dumping frames\n") + if thread_id != get_current_thread_id(threading.current_thread()): + raise VariableError("find_frame: must execute on same thread") + + frame = get_frame() + for frame in iter_frames(frame): + sys.stdout.write("%s\n" % pickle.dumps(frame)) + + +@silence_warnings_decorator +def getVariable(dbg, thread_id, frame_id, scope, locator): + """ + returns the value of a variable + + :scope: can be BY_ID, EXPRESSION, GLOBAL, LOCAL, FRAME + + BY_ID means we'll traverse the list of all objects alive to get the object. + + :locator: after reaching the proper scope, we have to get the attributes until we find + the proper location (i.e.: obj\tattr1\tattr2) + + :note: when BY_ID is used, the frame_id is considered the id of the object to find and + not the frame (as we don't care about the frame in this case). + """ + if scope == "BY_ID": + if thread_id != get_current_thread_id(threading.current_thread()): + raise VariableError("getVariable: must execute on same thread") + + try: + import gc + + objects = gc.get_objects() + except: + pass # Not all python variants have it. + else: + frame_id = int(frame_id) + for var in objects: + if id(var) == frame_id: + if locator is not None: + locator_parts = locator.split("\t") + for k in locator_parts: + _type, _type_name, resolver = get_type(var) + var = resolver.resolve(var, k) + + return var + + # If it didn't return previously, we coudn't find it by id (i.e.: already garbage collected). + sys.stderr.write("Unable to find object with id: %s\n" % (frame_id,)) + return None + + frame = dbg.find_frame(thread_id, frame_id) + if frame is None: + return {} + + if locator is not None: + locator_parts = locator.split("\t") + else: + locator_parts = [] + + for attr in locator_parts: + attr.replace("@_@TAB_CHAR@_@", "\t") + + if scope == "EXPRESSION": + for count in range(len(locator_parts)): + if count == 0: + # An Expression can be in any scope (globals/locals), therefore it needs to evaluated as an expression + var = evaluate_expression(dbg, frame, locator_parts[count], False) + else: + _type, _type_name, resolver = get_type(var) + var = resolver.resolve(var, locator_parts[count]) + else: + if scope == "GLOBAL": + var = frame.f_globals + del locator_parts[ + 0 + ] # globals are special, and they get a single dummy unused attribute + else: + # in a frame access both locals and globals as Python does + var = {} + var.update(frame.f_globals) + var.update(frame.f_locals) + + for k in locator_parts: + _type, _type_name, resolver = get_type(var) + var = resolver.resolve(var, k) + + return var + + +def resolve_compound_variable_fields(dbg, thread_id, frame_id, scope, attrs): + """ + Resolve compound variable in debugger scopes by its name and attributes + + :param thread_id: id of the variable's thread + :param frame_id: id of the variable's frame + :param scope: can be BY_ID, EXPRESSION, GLOBAL, LOCAL, FRAME + :param attrs: after reaching the proper scope, we have to get the attributes until we find + the proper location (i.e.: obj\tattr1\tattr2) + :return: a dictionary of variables's fields + """ + var = getVariable(dbg, thread_id, frame_id, scope, attrs) + + try: + _type, type_name, resolver = get_type(var) + return type_name, resolver.get_dictionary(var) + except: + pydev_log.exception( + "Error evaluating: thread_id: %s\nframe_id: %s\nscope: %s\nattrs: %s.", + thread_id, + frame_id, + scope, + attrs, + ) + + +def resolve_var_object(var, attrs): + """ + Resolve variable's attribute + + :param var: an object of variable + :param attrs: a sequence of variable's attributes separated by \t (i.e.: obj\tattr1\tattr2) + :return: a value of resolved variable's attribute + """ + if attrs is not None: + attr_list = attrs.split("\t") + else: + attr_list = [] + for k in attr_list: + type, _type_name, resolver = get_type(var) + var = resolver.resolve(var, k) + return var + + +def resolve_compound_var_object_fields(var, attrs): + """ + Resolve compound variable by its object and attributes + + :param var: an object of variable + :param attrs: a sequence of variable's attributes separated by \t (i.e.: obj\tattr1\tattr2) + :return: a dictionary of variables's fields + """ + attr_list = attrs.split("\t") + + for k in attr_list: + type, _type_name, resolver = get_type(var) + var = resolver.resolve(var, k) + + try: + type, _type_name, resolver = get_type(var) + return resolver.get_dictionary(var) + except: + pydev_log.exception() + + +def custom_operation( + dbg, thread_id, frame_id, scope, attrs, style, code_or_file, operation_fn_name +): + """ + We'll execute the code_or_file and then search in the namespace the operation_fn_name to execute with the given var. + + code_or_file: either some code (i.e.: from pprint import pprint) or a file to be executed. + operation_fn_name: the name of the operation to execute after the exec (i.e.: pprint) + """ + expressionValue = getVariable(dbg, thread_id, frame_id, scope, attrs) + + try: + namespace = {"__name__": ""} + if style == "EXECFILE": + namespace["__file__"] = code_or_file + execfile(code_or_file, namespace, namespace) + else: # style == EXEC + namespace["__file__"] = "" + Exec(code_or_file, namespace, namespace) + + return str(namespace[operation_fn_name](expressionValue)) + except: + pydev_log.exception() + + +@lru_cache(3) +def _expression_to_evaluate(expression): + keepends = True + lines = expression.splitlines(keepends) + # find first non-empty line + chars_to_strip = 0 + for line in lines: + if line.strip(): # i.e.: check first non-empty line + for c in iter_chars(line): + if c.isspace(): + chars_to_strip += 1 + else: + break + break + + if chars_to_strip: + # I.e.: check that the chars we'll remove are really only whitespaces. + proceed = True + new_lines = [] + for line in lines: + if not proceed: + break + for c in iter_chars(line[:chars_to_strip]): + if not c.isspace(): + proceed = False + break + + new_lines.append(line[chars_to_strip:]) + + if proceed: + if isinstance(expression, bytes): + expression = b"".join(new_lines) + else: + expression = "".join(new_lines) + + return expression + + +def eval_in_context(expression, global_vars, local_vars, py_db=None): + result = None + try: + compiled = compile_as_eval(expression) + is_async = inspect.CO_COROUTINE & compiled.co_flags == inspect.CO_COROUTINE + + if is_async: + if py_db is None: + py_db = get_global_debugger() + if py_db is None: + raise RuntimeError("Cannot evaluate async without py_db.") + t = _EvalAwaitInNewEventLoop(py_db, compiled, global_vars, local_vars) + t.start() + t.join() + + if t.exc: + raise t.exc[1].with_traceback(t.exc[2]) + else: + result = t.evaluated_value + else: + result = eval(compiled, global_vars, local_vars) + except (Exception, KeyboardInterrupt): + etype, result, tb = sys.exc_info() + result = ExceptionOnEvaluate(result, etype, tb) + + # Ok, we have the initial error message, but let's see if we're dealing with a name mangling error... + try: + if ".__" in expression: + # Try to handle '__' name mangling (for simple cases such as self.__variable.__another_var). + split = expression.split(".") + entry = split[0] + + if local_vars is None: + local_vars = global_vars + curr = local_vars[ + entry + ] # Note: we want the KeyError if it's not there. + for entry in split[1:]: + if entry.startswith("__") and not hasattr(curr, entry): + entry = "_%s%s" % (curr.__class__.__name__, entry) + curr = getattr(curr, entry) + + result = curr + except: + pass + return result + + +def _run_with_interrupt_thread( + original_func, py_db, curr_thread, frame, expression, is_exec +): + on_interrupt_threads = None + timeout_tracker = py_db.timeout_tracker # : :type timeout_tracker: TimeoutTracker + + interrupt_thread_timeout = pydevd_constants.PYDEVD_INTERRUPT_THREAD_TIMEOUT + + if interrupt_thread_timeout > 0: + on_interrupt_threads = pydevd_timeout.create_interrupt_this_thread_callback() + pydev_log.info( + "Doing evaluate with interrupt threads timeout: %s.", + interrupt_thread_timeout, + ) + + if on_interrupt_threads is None: + return original_func(py_db, frame, expression, is_exec) + else: + with timeout_tracker.call_on_timeout( + interrupt_thread_timeout, on_interrupt_threads + ): + return original_func(py_db, frame, expression, is_exec) + + +def _run_with_unblock_threads( + original_func, py_db, curr_thread, frame, expression, is_exec +): + on_timeout_unblock_threads = None + timeout_tracker = py_db.timeout_tracker # : :type timeout_tracker: TimeoutTracker + + if py_db.multi_threads_single_notification: + unblock_threads_timeout = pydevd_constants.PYDEVD_UNBLOCK_THREADS_TIMEOUT + else: + unblock_threads_timeout = ( + -1 + ) # Don't use this if threads are managed individually. + + if unblock_threads_timeout >= 0: + pydev_log.info( + "Doing evaluate with unblock threads timeout: %s.", unblock_threads_timeout + ) + tid = get_current_thread_id(curr_thread) + + def on_timeout_unblock_threads(): + on_timeout_unblock_threads.called = True + pydev_log.info("Resuming threads after evaluate timeout.") + resume_threads("*", except_thread=curr_thread) + py_db.threads_suspended_single_notification.on_thread_resume( + tid, curr_thread + ) + + on_timeout_unblock_threads.called = False + + try: + if on_timeout_unblock_threads is None: + return _run_with_interrupt_thread( + original_func, py_db, curr_thread, frame, expression, is_exec + ) + else: + with timeout_tracker.call_on_timeout( + unblock_threads_timeout, on_timeout_unblock_threads + ): + return _run_with_interrupt_thread( + original_func, py_db, curr_thread, frame, expression, is_exec + ) + + finally: + if on_timeout_unblock_threads is not None and on_timeout_unblock_threads.called: + mark_thread_suspended(curr_thread, CMD_SET_BREAK) + py_db.threads_suspended_single_notification.increment_suspend_time() + suspend_all_threads(py_db, except_thread=curr_thread) + py_db.threads_suspended_single_notification.on_thread_suspend( + tid, curr_thread, CMD_SET_BREAK + ) + + +def _evaluate_with_timeouts(original_func): + """ + Provides a decorator that wraps the original evaluate to deal with slow evaluates. + + If some evaluation is too slow, we may show a message, resume threads or interrupt them + as needed (based on the related configurations). + """ + + @functools.wraps(original_func) + def new_func(py_db, frame, expression, is_exec): + if py_db is None: + # Only for testing... + pydev_log.critical("_evaluate_with_timeouts called without py_db!") + return original_func(py_db, frame, expression, is_exec) + warn_evaluation_timeout = pydevd_constants.PYDEVD_WARN_EVALUATION_TIMEOUT + curr_thread = threading.current_thread() + + def on_warn_evaluation_timeout(): + py_db.writer.add_command( + py_db.cmd_factory.make_evaluation_timeout_msg( + py_db, expression, curr_thread + ) + ) + + timeout_tracker = ( + py_db.timeout_tracker + ) # : :type timeout_tracker: TimeoutTracker + with timeout_tracker.call_on_timeout( + warn_evaluation_timeout, on_warn_evaluation_timeout + ): + return _run_with_unblock_threads( + original_func, py_db, curr_thread, frame, expression, is_exec + ) + + return new_func + + +_ASYNC_COMPILE_FLAGS = None +try: + from ast import PyCF_ALLOW_TOP_LEVEL_AWAIT + + _ASYNC_COMPILE_FLAGS = PyCF_ALLOW_TOP_LEVEL_AWAIT +except: + pass + + +def compile_as_eval(expression): + """ + + :param expression: + The expression to be _compiled. + + :return: code object + + :raises Exception if the expression cannot be evaluated. + """ + expression_to_evaluate = _expression_to_evaluate(expression) + if _ASYNC_COMPILE_FLAGS is not None: + return compile(expression_to_evaluate, "", "eval", _ASYNC_COMPILE_FLAGS) + else: + return compile(expression_to_evaluate, "", "eval") + + +def _compile_as_exec(expression): + """ + + :param expression: + The expression to be _compiled. + + :return: code object + + :raises Exception if the expression cannot be evaluated. + """ + expression_to_evaluate = _expression_to_evaluate(expression) + if _ASYNC_COMPILE_FLAGS is not None: + return compile(expression_to_evaluate, "", "exec", _ASYNC_COMPILE_FLAGS) + else: + return compile(expression_to_evaluate, "", "exec") + + +class _EvalAwaitInNewEventLoop(PyDBDaemonThread): + def __init__(self, py_db, compiled, updated_globals, updated_locals): + PyDBDaemonThread.__init__(self, py_db) + self._compiled = compiled + self._updated_globals = updated_globals + self._updated_locals = updated_locals + + # Output + self.evaluated_value = None + self.exc = None + + async def _async_func(self): + return await eval(self._compiled, self._updated_locals, self._updated_globals) + + def _on_run(self): + try: + import asyncio + + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) + self.evaluated_value = asyncio.run(self._async_func()) + except: + self.exc = sys.exc_info() + + +@_evaluate_with_timeouts +def evaluate_expression(py_db, frame, expression, is_exec): + """ + :param str expression: + The expression to be evaluated. + + Note that if the expression is indented it's automatically dedented (based on the indentation + found on the first non-empty line). + + i.e.: something as: + + ` + def method(): + a = 1 + ` + + becomes: + + ` + def method(): + a = 1 + ` + + Also, it's possible to evaluate calls with a top-level await (currently this is done by + creating a new event loop in a new thread and making the evaluate at that thread -- note + that this is still done synchronously so the evaluation has to finish before this + function returns). + + :param is_exec: determines if we should do an exec or an eval. + There are some changes in this function depending on whether it's an exec or an eval. + + When it's an exec (i.e.: is_exec==True): + This function returns None. + Any exception that happens during the evaluation is reraised. + If the expression could actually be evaluated, the variable is printed to the console if not None. + + When it's an eval (i.e.: is_exec==False): + This function returns the result from the evaluation. + If some exception happens in this case, the exception is caught and a ExceptionOnEvaluate is returned. + Also, in this case we try to resolve name-mangling (i.e.: to be able to add a self.__my_var watch). + + :param py_db: + The debugger. Only needed if some top-level await is detected (for creating a + PyDBDaemonThread). + """ + if frame is None: + return + + # This is very tricky. Some statements can change locals and use them in the same + # call (see https://github.com/microsoft/debugpy/issues/815), also, if locals and globals are + # passed separately, it's possible that one gets updated but apparently Python will still + # try to load from the other, so, what's done is that we merge all in a single dict and + # then go on and update the frame with the results afterwards. + + # -- see tests in test_evaluate_expression.py + + # This doesn't work because the variables aren't updated in the locals in case the + # evaluation tries to set a variable and use it in the same expression. + # updated_globals = frame.f_globals + # updated_locals = frame.f_locals + + # This doesn't work because the variables aren't updated in the locals in case the + # evaluation tries to set a variable and use it in the same expression. + # updated_globals = {} + # updated_globals.update(frame.f_globals) + # updated_globals.update(frame.f_locals) + # + # updated_locals = frame.f_locals + + # This doesn't work either in the case where the evaluation tries to set a variable and use + # it in the same expression (I really don't know why as it seems like this *should* work + # in theory but doesn't in practice). + # updated_globals = {} + # updated_globals.update(frame.f_globals) + # + # updated_locals = {} + # updated_globals.update(frame.f_locals) + + # This is the only case that worked consistently to run the tests in test_evaluate_expression.py + # It's a bit unfortunate because although the exec works in this case, we have to manually + # put the updates in the frame locals afterwards. + updated_globals = {} + updated_globals.update(frame.f_globals) + updated_globals.update(frame.f_locals) + if "globals" not in updated_globals: + # If the user explicitly uses 'globals()' then we provide the + # frame globals (unless he has shadowed it already). + updated_globals["globals"] = lambda: frame.f_globals + + initial_globals = updated_globals.copy() + + updated_locals = None + + try: + expression = expression.replace("@LINE@", "\n") + + if is_exec: + try: + # Try to make it an eval (if it is an eval we can print it, otherwise we'll exec it and + # it will have whatever the user actually did) + compiled = compile_as_eval(expression) + except Exception: + compiled = None + + if compiled is None: + try: + compiled = _compile_as_exec(expression) + is_async = ( + inspect.CO_COROUTINE & compiled.co_flags == inspect.CO_COROUTINE + ) + if is_async: + t = _EvalAwaitInNewEventLoop( + py_db, compiled, updated_globals, updated_locals + ) + t.start() + t.join() + + if t.exc: + raise t.exc[1].with_traceback(t.exc[2]) + else: + Exec(compiled, updated_globals, updated_locals) + finally: + # Update the globals even if it errored as it may have partially worked. + update_globals_and_locals(updated_globals, initial_globals, frame) + else: + is_async = ( + inspect.CO_COROUTINE & compiled.co_flags == inspect.CO_COROUTINE + ) + if is_async: + t = _EvalAwaitInNewEventLoop( + py_db, compiled, updated_globals, updated_locals + ) + t.start() + t.join() + + if t.exc: + raise t.exc[1].with_traceback(t.exc[2]) + else: + result = t.evaluated_value + else: + result = eval(compiled, updated_globals, updated_locals) + if result is not None: # Only print if it's not None (as python does) + sys.stdout.write("%s\n" % (result,)) + return + + else: + ret = eval_in_context(expression, updated_globals, updated_locals, py_db) + try: + is_exception_returned = ret.__class__ == ExceptionOnEvaluate + except: + pass + else: + if not is_exception_returned: + # i.e.: by using a walrus assignment (:=), expressions can change the locals, + # so, make sure that we save the locals back to the frame. + update_globals_and_locals(updated_globals, initial_globals, frame) + return ret + finally: + # Should not be kept alive if an exception happens and this frame is kept in the stack. + del updated_globals + del updated_locals + del initial_globals + del frame + + +def change_attr_expression(frame, attr, expression, dbg, value=SENTINEL_VALUE): + """Changes some attribute in a given frame.""" + if frame is None: + return + + try: + expression = expression.replace("@LINE@", "\n") + + if dbg.plugin and value is SENTINEL_VALUE: + result = dbg.plugin.change_variable(frame, attr, expression) + if result is not dbg.plugin.EMPTY_SENTINEL: + return result + + if attr[:7] == "Globals": + attr = attr[8:] + if attr in frame.f_globals: + if value is SENTINEL_VALUE: + value = eval(expression, frame.f_globals, frame.f_locals) + frame.f_globals[attr] = value + return frame.f_globals[attr] + else: + if ( + "." not in attr + ): # i.e.: if we have a '.', we're changing some attribute of a local var. + if pydevd_save_locals.is_save_locals_available(): + if value is SENTINEL_VALUE: + value = eval(expression, frame.f_globals, frame.f_locals) + frame.f_locals[attr] = value + pydevd_save_locals.save_locals(frame) + return frame.f_locals[attr] + + # i.e.: case with '.' or save locals not available (just exec the assignment in the frame). + if value is SENTINEL_VALUE: + value = eval(expression, frame.f_globals, frame.f_locals) + result = value + Exec("%s=%s" % (attr, expression), frame.f_globals, frame.f_locals) + return result + + except Exception: + pydev_log.exception() + + +MAXIMUM_ARRAY_SIZE = 100 +MAX_SLICE_SIZE = 1000 + + +def table_like_struct_to_xml(array, name, roffset, coffset, rows, cols, format): + _, type_name, _ = get_type(array) + if type_name == "ndarray": + array, metaxml, r, c, f = array_to_meta_xml(array, name, format) + xml = metaxml + format = "%" + f + if rows == -1 and cols == -1: + rows = r + cols = c + xml += array_to_xml(array, roffset, coffset, rows, cols, format) + elif type_name == "DataFrame": + xml = dataframe_to_xml(array, name, roffset, coffset, rows, cols, format) + else: + raise VariableError("Do not know how to convert type %s to table" % (type_name)) + + return "%s" % xml + + +def array_to_xml(array, roffset, coffset, rows, cols, format): + xml = "" + rows = min(rows, MAXIMUM_ARRAY_SIZE) + cols = min(cols, MAXIMUM_ARRAY_SIZE) + + # there is no obvious rule for slicing (at least 5 choices) + if len(array) == 1 and (rows > 1 or cols > 1): + array = array[0] + if array.size > len(array): + array = array[roffset:, coffset:] + rows = min(rows, len(array)) + cols = min(cols, len(array[0])) + if len(array) == 1: + array = array[0] + elif array.size == len(array): + if roffset == 0 and rows == 1: + array = array[coffset:] + cols = min(cols, len(array)) + elif coffset == 0 and cols == 1: + array = array[roffset:] + rows = min(rows, len(array)) + + xml += '' % (rows, cols) + for row in range(rows): + xml += '' % to_string(row) + for col in range(cols): + value = array + if rows == 1 or cols == 1: + if rows == 1 and cols == 1: + value = array[0] + else: + if rows == 1: + dim = col + else: + dim = row + value = array[dim] + if "ndarray" in str(type(value)): + value = value[0] + else: + value = array[row][col] + value = format % value + xml += var_to_xml(value, "") + return xml + + +def array_to_meta_xml(array, name, format): + type = array.dtype.kind + slice = name + l = len(array.shape) + + # initial load, compute slice + if format == "%": + if l > 2: + slice += "[0]" * (l - 2) + for r in range(l - 2): + array = array[0] + if type == "f": + format = ".5f" + elif type == "i" or type == "u": + format = "d" + else: + format = "s" + else: + format = format.replace("%", "") + + l = len(array.shape) + reslice = "" + if l > 2: + raise Exception("%s has more than 2 dimensions." % slice) + elif l == 1: + # special case with 1D arrays arr[i, :] - row, but arr[:, i] - column with equal shape and ndim + # http://stackoverflow.com/questions/16837946/numpy-a-2-rows-1-column-file-loadtxt-returns-1row-2-columns + # explanation: http://stackoverflow.com/questions/15165170/how-do-i-maintain-row-column-orientation-of-vectors-in-numpy?rq=1 + # we use kind of a hack - get information about memory from C_CONTIGUOUS + is_row = array.flags["C_CONTIGUOUS"] + + if is_row: + rows = 1 + cols = min(len(array), MAX_SLICE_SIZE) + if cols < len(array): + reslice = "[0:%s]" % (cols) + array = array[0:cols] + else: + cols = 1 + rows = min(len(array), MAX_SLICE_SIZE) + if rows < len(array): + reslice = "[0:%s]" % (rows) + array = array[0:rows] + elif l == 2: + rows = min(array.shape[-2], MAX_SLICE_SIZE) + cols = min(array.shape[-1], MAX_SLICE_SIZE) + if cols < array.shape[-1] or rows < array.shape[-2]: + reslice = "[0:%s, 0:%s]" % (rows, cols) + array = array[0:rows, 0:cols] + + # avoid slice duplication + if not slice.endswith(reslice): + slice += reslice + + bounds = (0, 0) + if type in "biufc": + bounds = (array.min(), array.max()) + xml = ( + '' + % ( + slice, + rows, + cols, + format, + type, + bounds[1], + bounds[0], + ) + ) + return array, xml, rows, cols, format + + +def dataframe_to_xml(df, name, roffset, coffset, rows, cols, format): + """ + :type df: pandas.core.frame.DataFrame + :type name: str + :type coffset: int + :type roffset: int + :type rows: int + :type cols: int + :type format: str + + + """ + num_rows = min(df.shape[0], MAX_SLICE_SIZE) + num_cols = min(df.shape[1], MAX_SLICE_SIZE) + if (num_rows, num_cols) != df.shape: + df = df.iloc[0:num_rows, 0:num_cols] + slice = ".iloc[0:%s, 0:%s]" % (num_rows, num_cols) + else: + slice = "" + slice = name + slice + xml = ( + '\n' + % (slice, num_rows, num_cols) + ) + + if (rows, cols) == (-1, -1): + rows, cols = num_rows, num_cols + + rows = min(rows, MAXIMUM_ARRAY_SIZE) + cols = min(min(cols, MAXIMUM_ARRAY_SIZE), num_cols) + # need to precompute column bounds here before slicing! + col_bounds = [None] * cols + for col in range(cols): + dtype = df.dtypes.iloc[coffset + col].kind + if dtype in "biufc": + cvalues = df.iloc[:, coffset + col] + bounds = (cvalues.min(), cvalues.max()) + else: + bounds = (0, 0) + col_bounds[col] = bounds + + df = df.iloc[roffset : roffset + rows, coffset : coffset + cols] + rows, cols = df.shape + + xml += '\n' % (rows, cols) + format = format.replace("%", "") + col_formats = [] + + get_label = ( + lambda label: str(label) + if not isinstance(label, tuple) + else "/".join(map(str, label)) + ) + + for col in range(cols): + dtype = df.dtypes.iloc[col].kind + if dtype == "f" and format: + fmt = format + elif dtype == "f": + fmt = ".5f" + elif dtype == "i" or dtype == "u": + fmt = "d" + else: + fmt = "s" + col_formats.append("%" + fmt) + bounds = col_bounds[col] + + xml += ( + '\n' + % ( + str(col), + get_label(df.axes[1].values[col]), + dtype, + fmt, + bounds[1], + bounds[0], + ) + ) + for row, label in enumerate(iter(df.axes[0])): + xml += '\n' % (str(row), get_label(label)) + xml += "\n" + xml += '\n' % (rows, cols) + for row in range(rows): + xml += '\n' % str(row) + for col in range(cols): + value = df.iat[row, col] + value = col_formats[col] % value + xml += var_to_xml(value, "") + return xml diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vm_type.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vm_type.py new file mode 100644 index 000000000..aaca38e41 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vm_type.py @@ -0,0 +1,40 @@ +import sys + + +# ======================================================================================================================= +# PydevdVmType +# ======================================================================================================================= +class PydevdVmType: + PYTHON = "python" + JYTHON = "jython" + vm_type = None + + +# ======================================================================================================================= +# set_vm_type +# ======================================================================================================================= +def set_vm_type(vm_type): + PydevdVmType.vm_type = vm_type + + +# ======================================================================================================================= +# get_vm_type +# ======================================================================================================================= +def get_vm_type(): + if PydevdVmType.vm_type is None: + setup_type() + return PydevdVmType.vm_type + + +# ======================================================================================================================= +# setup_type +# ======================================================================================================================= +def setup_type(str=None): + if str is not None: + PydevdVmType.vm_type = str + return + + if sys.platform.startswith("java"): + PydevdVmType.vm_type = PydevdVmType.JYTHON + else: + PydevdVmType.vm_type = PydevdVmType.PYTHON diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_xml.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_xml.py new file mode 100644 index 000000000..32ff10e1b --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_xml.py @@ -0,0 +1,505 @@ +import sys +from typing import Optional + +from _pydev_bundle import pydev_log +from _pydev_bundle.pydev_imports import quote + +from _pydevd_bundle import pydevd_extension_utils, pydevd_resolver +from _pydevd_bundle.pydevd_constants import ( + BUILTINS_MODULE_NAME, + DEFAULT_VALUE, + LOAD_VALUES_ASYNC, + MAXIMUM_VARIABLE_REPRESENTATION_SIZE, + RETURN_VALUES_DICT, +) +from _pydevd_bundle.pydevd_extension_api import ( + StrPresentationProvider, + TypeResolveProvider, +) +from _pydevd_bundle.pydevd_resolver import MoreItems, MoreItemsRange, get_var_scope +from _pydevd_bundle.pydevd_utils import DAPGrouper, hasattr_checked, isinstance_checked + +try: + import types + + frame_type = types.FrameType +except: + frame_type = None + + +def make_valid_xml_value(s): + # Same thing as xml.sax.saxutils.escape but also escaping double quotes. + return ( + s.replace("&", "&") + .replace("<", "<") + .replace(">", ">") + .replace('"', """) + ) + + +class ExceptionOnEvaluate: + def __init__(self, result, etype, tb): + self.result = result + self.etype = etype + self.tb = tb + + +_IS_JYTHON = sys.platform.startswith("java") + + +def _create_default_type_map(): + default_type_map = [ + # None means that it should not be treated as a compound variable + # isintance does not accept a tuple on some versions of python, so, we must declare it expanded + ( + type(None), + None, + ), + (int, None), + (float, None), + (complex, None), + (str, None), + (tuple, pydevd_resolver.tupleResolver), + (list, pydevd_resolver.tupleResolver), + (dict, pydevd_resolver.dictResolver), + ] + try: + from collections import OrderedDict + + default_type_map.insert(0, (OrderedDict, pydevd_resolver.orderedDictResolver)) + # we should put it before dict + except: + pass + + try: + default_type_map.append((long, None)) # @UndefinedVariable + except: + pass # not available on all python versions + + default_type_map.append((DAPGrouper, pydevd_resolver.dapGrouperResolver)) + default_type_map.append( + (MoreItems, pydevd_resolver.forwardInternalResolverToObject) + ) + default_type_map.append( + (MoreItemsRange, pydevd_resolver.forwardInternalResolverToObject) + ) + + try: + default_type_map.append((set, pydevd_resolver.setResolver)) + except: + pass # not available on all python versions + + try: + default_type_map.append((frozenset, pydevd_resolver.setResolver)) + except: + pass # not available on all python versions + + try: + from django.utils.datastructures import MultiValueDict + + default_type_map.insert( + 0, (MultiValueDict, pydevd_resolver.multiValueDictResolver) + ) + # we should put it before dict + except: + pass # django may not be installed + + try: + from django.forms import BaseForm + + default_type_map.insert(0, (BaseForm, pydevd_resolver.djangoFormResolver)) + # we should put it before instance resolver + except: + pass # django may not be installed + + try: + from collections import deque + + default_type_map.append((deque, pydevd_resolver.dequeResolver)) + except: + pass + + try: + from ctypes import Array + + default_type_map.append((Array, pydevd_resolver.tupleResolver)) + except: + pass + + if frame_type is not None: + default_type_map.append((frame_type, pydevd_resolver.frameResolver)) + + if _IS_JYTHON: + from org.python import core # @UnresolvedImport + + default_type_map.append((core.PyNone, None)) + default_type_map.append((core.PyInteger, None)) + default_type_map.append((core.PyLong, None)) + default_type_map.append((core.PyFloat, None)) + default_type_map.append((core.PyComplex, None)) + default_type_map.append((core.PyString, None)) + default_type_map.append((core.PyTuple, pydevd_resolver.tupleResolver)) + default_type_map.append((core.PyList, pydevd_resolver.tupleResolver)) + default_type_map.append((core.PyDictionary, pydevd_resolver.dictResolver)) + default_type_map.append((core.PyStringMap, pydevd_resolver.dictResolver)) + + if hasattr(core, "PyJavaInstance"): + # Jython 2.5b3 removed it. + default_type_map.append( + (core.PyJavaInstance, pydevd_resolver.instanceResolver) + ) + + return default_type_map + + +class TypeResolveHandler: + NO_PROVIDER = [] # Sentinel value (any mutable object to be used as a constant would be valid). + + def __init__(self): + # Note: don't initialize with the types we already know about so that the extensions can override + # the default resolvers that are already available if they want. + self._type_to_resolver_cache = {} + self._type_to_str_provider_cache = {} + self._initialized = False + + def _initialize(self): + self._default_type_map = _create_default_type_map() + self._resolve_providers = pydevd_extension_utils.extensions_of_type( + TypeResolveProvider + ) + self._str_providers = pydevd_extension_utils.extensions_of_type( + StrPresentationProvider + ) + self._initialized = True + + def get_type(self, o): + try: + try: + # Faster than type(o) as we don't need the function call. + type_object = o.__class__ # could fail here + type_name = type_object.__name__ + return self._get_type(o, type_object, type_name) # could fail here + except: + # Not all objects have __class__ (i.e.: there are bad bindings around). + type_object = type(o) + type_name = type_object.__name__ + + try: + return self._get_type(o, type_object, type_name) + except: + if isinstance(type_object, type): + # If it's still something manageable, use the default resolver, otherwise + # fallback to saying that it wasn't possible to get any info on it. + return ( + type_object, + str(type_name), + pydevd_resolver.defaultResolver, + ) + + return "Unable to get Type", "Unable to get Type", None + except: + # This happens for org.python.core.InitModule + return "Unable to get Type", "Unable to get Type", None + + def _get_type(self, o, type_object, type_name): + # Note: we could have an exception here if the type_object is not hashable... + resolver = self._type_to_resolver_cache.get(type_object) + if resolver is not None: + return type_object, type_name, resolver + + if not self._initialized: + self._initialize() + + try: + for resolver in self._resolve_providers: + if resolver.can_provide(type_object, type_name): + # Cache it + self._type_to_resolver_cache[type_object] = resolver + return type_object, type_name, resolver + + for t in self._default_type_map: + if isinstance_checked(o, t[0]): + # Cache it + resolver = t[1] + self._type_to_resolver_cache[type_object] = resolver + return (type_object, type_name, resolver) + except: + pydev_log.exception() + + # No match return default (and cache it). + resolver = pydevd_resolver.defaultResolver + self._type_to_resolver_cache[type_object] = resolver + return type_object, type_name, resolver + + if _IS_JYTHON: + _base_get_type = _get_type + + def _get_type(self, o, type_object, type_name): + if type_name == "org.python.core.PyJavaInstance": + return type_object, type_name, pydevd_resolver.instanceResolver + + if type_name == "org.python.core.PyArray": + return type_object, type_name, pydevd_resolver.jyArrayResolver + + return self._base_get_type(o, type_object, type_name) + + def _get_str_from_provider(self, provider, o, context: Optional[str] = None): + if context is not None: + get_str_in_context = getattr(provider, "get_str_in_context", None) + if get_str_in_context is not None: + return get_str_in_context(o, context) + + return provider.get_str(o) + + def str_from_providers( + self, o, type_object, type_name, context: Optional[str] = None + ): + provider = self._type_to_str_provider_cache.get(type_object) + + if provider is self.NO_PROVIDER: + return None + + if provider is not None: + return self._get_str_from_provider(provider, o, context) + + if not self._initialized: + self._initialize() + + for provider in self._str_providers: + if provider.can_provide(type_object, type_name): + self._type_to_str_provider_cache[type_object] = provider + try: + return self._get_str_from_provider(provider, o, context) + except: + pydev_log.exception( + "Error when getting str with custom provider: %s." % (provider,) + ) + + self._type_to_str_provider_cache[type_object] = self.NO_PROVIDER + return None + + +_TYPE_RESOLVE_HANDLER = TypeResolveHandler() + +""" +def get_type(o): + Receives object and returns a triple (type_object, type_string, resolver). + + resolver != None means that variable is a container, and should be displayed as a hierarchy. + + Use the resolver to get its attributes. + + All container objects (i.e.: dict, list, tuple, object, etc) should have a resolver. +""" +get_type = _TYPE_RESOLVE_HANDLER.get_type + +_str_from_providers = _TYPE_RESOLVE_HANDLER.str_from_providers + + +def is_builtin(x): + return getattr(x, "__module__", None) == BUILTINS_MODULE_NAME + + +def should_evaluate_full_value(val): + return not LOAD_VALUES_ASYNC or ( + is_builtin(type(val)) and not isinstance_checked(val, (list, tuple, dict)) + ) + + +def return_values_from_dict_to_xml(return_dict): + res = [] + for name, val in return_dict.items(): + res.append(var_to_xml(val, name, additional_in_xml=' isRetVal="True"')) + return "".join(res) + + +def frame_vars_to_xml(frame_f_locals, hidden_ns=None): + """Dumps frame variables to XML + + """ + xml = [] + + keys = sorted(frame_f_locals) + + return_values_xml = [] + + for k in keys: + try: + v = frame_f_locals[k] + eval_full_val = should_evaluate_full_value(v) + + if k == "_pydev_stop_at_break": + continue + + if k == RETURN_VALUES_DICT: + for name, val in v.items(): + return_values_xml.append( + var_to_xml(val, name, additional_in_xml=' isRetVal="True"') + ) + + else: + if hidden_ns is not None and k in hidden_ns: + xml.append( + var_to_xml( + v, + str(k), + additional_in_xml=' isIPythonHidden="True"', + evaluate_full_value=eval_full_val, + ) + ) + else: + xml.append(var_to_xml(v, str(k), evaluate_full_value=eval_full_val)) + except Exception: + pydev_log.exception("Unexpected error, recovered safely.") + + # Show return values as the first entry. + return_values_xml.extend(xml) + return "".join(return_values_xml) + + +def get_variable_details( + val, evaluate_full_value=True, to_string=None, context: Optional[str] = None +): + """ + :param context: + This is the context in which the variable is being requested. Valid values: + "watch", + "repl", + "hover", + "clipboard" + """ + try: + # This should be faster than isinstance (but we have to protect against not having a '__class__' attribute). + is_exception_on_eval = val.__class__ == ExceptionOnEvaluate + except: + is_exception_on_eval = False + + if is_exception_on_eval: + v = val.result + else: + v = val + + _type, type_name, resolver = get_type(v) + type_qualifier = getattr(_type, "__module__", "") + if not evaluate_full_value: + value = DEFAULT_VALUE + else: + try: + str_from_provider = _str_from_providers(v, _type, type_name, context) + if str_from_provider is not None: + value = str_from_provider + + elif to_string is not None: + value = to_string(v) + + elif hasattr_checked(v, "__class__"): + if v.__class__ == frame_type: + value = pydevd_resolver.frameResolver.get_frame_name(v) + + elif v.__class__ in (list, tuple): + if len(v) > 300: + value = "%s: %s" % ( + str(v.__class__), + "" % (len(v),), + ) + else: + value = "%s: %s" % (str(v.__class__), v) + else: + try: + cName = str(v.__class__) + if cName.find(".") != -1: + cName = cName.split(".")[-1] + + elif ( + cName.find("'") != -1 + ): # does not have '.' (could be something like ) + cName = cName[cName.index("'") + 1 :] + + if cName.endswith("'>"): + cName = cName[:-2] + except: + cName = str(v.__class__) + + value = "%s: %s" % (cName, v) + else: + value = str(v) + except: + try: + value = repr(v) + except: + value = "Unable to get repr for %s" % v.__class__ + + # fix to work with unicode values + try: + if value.__class__ == bytes: + value = value.decode("utf-8", "replace") + except TypeError: + pass + + return type_name, type_qualifier, is_exception_on_eval, resolver, value + + +def var_to_xml( + val, name, trim_if_too_big=True, additional_in_xml="", evaluate_full_value=True +): + """Single variable or dictionary to xml representation""" + ( + type_name, + type_qualifier, + is_exception_on_eval, + resolver, + value, + ) = get_variable_details(val, evaluate_full_value) + + scope = get_var_scope(name, val, "", True) + try: + name = quote(name, "/>_= ") # TODO: Fix PY-5834 without using quote + except: + pass + + xml = ' MAXIMUM_VARIABLE_REPRESENTATION_SIZE and trim_if_too_big: + value = value[0:MAXIMUM_VARIABLE_REPRESENTATION_SIZE] + value += "..." + + xml_value = ' value="%s"' % (make_valid_xml_value(quote(value, "/>_= "))) + else: + xml_value = "" + + if is_exception_on_eval: + xml_container = ' isErrorOnEval="True"' + else: + if resolver is not None: + xml_container = ' isContainer="True"' + else: + xml_container = "" + + if scope: + return "".join( + ( + xml, + xml_qualifier, + xml_value, + xml_container, + additional_in_xml, + ' scope="', + scope, + '"', + " />\n", + ) + ) + else: + return "".join( + (xml, xml_qualifier, xml_value, xml_container, additional_in_xml, " />\n") + ) diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/.gitignore b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/.gitignore new file mode 100644 index 000000000..b1a671803 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/.gitignore @@ -0,0 +1,3 @@ +/pydevd_frame_evaluator.*.so +/pydevd_frame_evaluator.*.pyd +/pydevd_frame_evaluator.pyx diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/__init__.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_cython_wrapper.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_cython_wrapper.py new file mode 100644 index 000000000..93125287b --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_cython_wrapper.py @@ -0,0 +1,48 @@ +try: + try: + from _pydevd_frame_eval_ext import pydevd_frame_evaluator as mod + except ImportError: + from _pydevd_frame_eval import pydevd_frame_evaluator as mod + +except ImportError: + try: + import sys + + try: + is_64bits = sys.maxsize > 2**32 + except: + # In Jython this call fails, but this is Ok, we don't support Jython for speedups anyways. + raise ImportError + plat = "32" + if is_64bits: + plat = "64" + + # We also accept things as: + # + # _pydevd_frame_eval.pydevd_frame_evaluator_win32_27_32 + # _pydevd_frame_eval.pydevd_frame_evaluator_win32_34_64 + # + # to have multiple pre-compiled pyds distributed along the IDE + # (generated by build_tools/build_binaries_windows.py). + + mod_name = "pydevd_frame_evaluator_%s_%s%s_%s" % ( + sys.platform, + sys.version_info[0], + sys.version_info[1], + plat, + ) + check_name = "_pydevd_frame_eval.%s" % (mod_name,) + mod = __import__(check_name) + mod = getattr(mod, mod_name) + except ImportError: + raise + +frame_eval_func = mod.frame_eval_func + +stop_frame_eval = mod.stop_frame_eval + +dummy_trace_dispatch = mod.dummy_trace_dispatch + +get_thread_info_py = mod.get_thread_info_py + +clear_thread_local_info = mod.clear_thread_local_info diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_main.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_main.py new file mode 100644 index 000000000..f395e4a8e --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_main.py @@ -0,0 +1,69 @@ +from _pydev_bundle import pydev_log +from _pydevd_bundle.pydevd_constants import ( + ENV_FALSE_LOWER_VALUES, + ENV_TRUE_LOWER_VALUES, + IS_PY36_OR_GREATER, + IS_PY38_OR_GREATER, + IS_PY311_OR_GREATER, + IS_PYTHON_STACKLESS, + PYDEVD_IPYTHON_COMPATIBLE_DEBUGGING, + PYDEVD_USE_FRAME_EVAL, + SUPPORT_GEVENT, + USE_CYTHON_FLAG, +) +from _pydevd_bundle.pydevd_trace_dispatch import USING_CYTHON + +frame_eval_func = None +stop_frame_eval = None +dummy_trace_dispatch = None +clear_thread_local_info = None + +# "NO" means we should not use frame evaluation, 'YES' we should use it (and fail if not there) and unspecified uses if possible. +if ( + PYDEVD_USE_FRAME_EVAL in ENV_FALSE_LOWER_VALUES + or USE_CYTHON_FLAG in ENV_FALSE_LOWER_VALUES + or not USING_CYTHON + or + # Frame eval mode does not work with ipython compatible debugging (this happens because the + # way that frame eval works is run untraced and set tracing only for the frames with + # breakpoints, but ipython compatible debugging creates separate frames for what's logically + # the same frame). + PYDEVD_IPYTHON_COMPATIBLE_DEBUGGING +): + USING_FRAME_EVAL = False + +elif SUPPORT_GEVENT or (IS_PYTHON_STACKLESS and not IS_PY38_OR_GREATER): + USING_FRAME_EVAL = False + # i.e gevent and frame eval mode don't get along very well. + # https://github.com/microsoft/debugpy/issues/189 + # Same problem with Stackless. + # https://github.com/stackless-dev/stackless/issues/240 + +elif PYDEVD_USE_FRAME_EVAL in ENV_TRUE_LOWER_VALUES and not IS_PY311_OR_GREATER: + # Python 3.11 onwards doesn't have frame eval mode implemented + # Fail if unable to use + from _pydevd_frame_eval.pydevd_frame_eval_cython_wrapper import ( + clear_thread_local_info, + dummy_trace_dispatch, + frame_eval_func, + stop_frame_eval, + ) + + USING_FRAME_EVAL = True + +else: + USING_FRAME_EVAL = False + # Try to use if possible + if IS_PY36_OR_GREATER and not IS_PY311_OR_GREATER: + # Python 3.11 onwards doesn't have frame eval mode implemented + try: + from _pydevd_frame_eval.pydevd_frame_eval_cython_wrapper import ( + clear_thread_local_info, + dummy_trace_dispatch, + frame_eval_func, + stop_frame_eval, + ) + + USING_FRAME_EVAL = True + except ImportError: + pydev_log.show_compile_cython_command_line() diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.c b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.c new file mode 100644 index 000000000..aebeeab01 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.c @@ -0,0 +1,26454 @@ +/* Generated by Cython 3.0.11 */ + +/* BEGIN: Cython Metadata +{ + "distutils": { + "depends": [ + "_pydevd_frame_eval/release_mem.h" + ], + "include_dirs": [ + "_pydevd_frame_eval" + ], + "name": "_pydevd_frame_eval.pydevd_frame_evaluator", + "sources": [ + "_pydevd_frame_eval/pydevd_frame_evaluator.pyx" + ] + }, + "module_name": "_pydevd_frame_eval.pydevd_frame_evaluator" +} +END: Cython Metadata */ + +#ifndef PY_SSIZE_T_CLEAN +#define PY_SSIZE_T_CLEAN +#endif /* PY_SSIZE_T_CLEAN */ +#if defined(CYTHON_LIMITED_API) && 0 + #ifndef Py_LIMITED_API + #if CYTHON_LIMITED_API+0 > 0x03030000 + #define Py_LIMITED_API CYTHON_LIMITED_API + #else + #define Py_LIMITED_API 0x03030000 + #endif + #endif +#endif + +#include "Python.h" +#if PY_VERSION_HEX >= 0x03090000 +#include "internal/pycore_gc.h" +#include "internal/pycore_interp.h" +#endif + +#ifndef Py_PYTHON_H + #error Python headers needed to compile C extensions, please install development version of Python. +#elif PY_VERSION_HEX < 0x02070000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) + #error Cython requires Python 2.7+ or Python 3.3+. +#else +#if defined(CYTHON_LIMITED_API) && CYTHON_LIMITED_API +#define __PYX_EXTRA_ABI_MODULE_NAME "limited" +#else +#define __PYX_EXTRA_ABI_MODULE_NAME "" +#endif +#define CYTHON_ABI "3_0_11" __PYX_EXTRA_ABI_MODULE_NAME +#define __PYX_ABI_MODULE_NAME "_cython_" CYTHON_ABI +#define __PYX_TYPE_MODULE_PREFIX __PYX_ABI_MODULE_NAME "." +#define CYTHON_HEX_VERSION 0x03000BF0 +#define CYTHON_FUTURE_DIVISION 1 +#include +#ifndef offsetof + #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) +#endif +#if !defined(_WIN32) && !defined(WIN32) && !defined(MS_WINDOWS) + #ifndef __stdcall + #define __stdcall + #endif + #ifndef __cdecl + #define __cdecl + #endif + #ifndef __fastcall + #define __fastcall + #endif +#endif +#ifndef DL_IMPORT + #define DL_IMPORT(t) t +#endif +#ifndef DL_EXPORT + #define DL_EXPORT(t) t +#endif +#define __PYX_COMMA , +#ifndef HAVE_LONG_LONG + #define HAVE_LONG_LONG +#endif +#ifndef PY_LONG_LONG + #define PY_LONG_LONG LONG_LONG +#endif +#ifndef Py_HUGE_VAL + #define Py_HUGE_VAL HUGE_VAL +#endif +#define __PYX_LIMITED_VERSION_HEX PY_VERSION_HEX +#if defined(GRAALVM_PYTHON) + /* For very preliminary testing purposes. Most variables are set the same as PyPy. + The existence of this section does not imply that anything works or is even tested */ + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 1 + #define CYTHON_COMPILING_IN_NOGIL 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #undef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #if PY_VERSION_HEX < 0x03050000 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #undef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 1 + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3) + #endif + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #undef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 + #endif + #undef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 +#elif defined(PYPY_VERSION) + #define CYTHON_COMPILING_IN_PYPY 1 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #ifndef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #endif + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #if PY_VERSION_HEX < 0x03050000 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #undef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 1 + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3) + #endif + #if PY_VERSION_HEX < 0x03090000 + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT) + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #undef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1 && PYPY_VERSION_NUM >= 0x07030C00) + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 + #endif + #undef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 +#elif defined(CYTHON_LIMITED_API) + #ifdef Py_LIMITED_API + #undef __PYX_LIMITED_VERSION_HEX + #define __PYX_LIMITED_VERSION_HEX Py_LIMITED_API + #endif + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 1 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 0 + #undef CYTHON_CLINE_IN_TRACEBACK + #define CYTHON_CLINE_IN_TRACEBACK 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #undef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 1 + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #ifndef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #endif + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #undef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 1 + #ifndef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #endif + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 + #endif + #undef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 +#elif defined(Py_GIL_DISABLED) || defined(Py_NOGIL) + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 1 + #ifndef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #endif + #ifndef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #endif + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #ifndef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #ifndef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #endif + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #ifndef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 1 + #endif + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #ifndef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 1 + #endif + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #ifndef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #ifndef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #endif + #ifndef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 1 + #endif + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 1 + #endif + #ifndef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 + #endif +#else + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 1 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 0 + #ifndef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #endif + #ifndef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #endif + #ifndef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 1 + #endif + #if PY_MAJOR_VERSION < 3 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #ifndef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 1 + #endif + #ifndef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 1 + #endif + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif + #if PY_VERSION_HEX < 0x030300F0 || PY_VERSION_HEX >= 0x030B00A2 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #elif !defined(CYTHON_USE_UNICODE_WRITER) + #define CYTHON_USE_UNICODE_WRITER 1 + #endif + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #ifndef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 1 + #endif + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif + #ifndef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 1 + #endif + #ifndef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL (PY_MAJOR_VERSION < 3 || PY_VERSION_HEX >= 0x03060000 && PY_VERSION_HEX < 0x030C00A6) + #endif + #ifndef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL (PY_VERSION_HEX >= 0x030700A1) + #endif + #ifndef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 1 + #endif + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #if PY_VERSION_HEX < 0x03050000 + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT) + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #ifndef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #endif + #if PY_VERSION_HEX < 0x030400a1 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #elif !defined(CYTHON_USE_TP_FINALIZE) + #define CYTHON_USE_TP_FINALIZE 1 + #endif + #if PY_VERSION_HEX < 0x030600B1 + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #elif !defined(CYTHON_USE_DICT_VERSIONS) + #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX < 0x030C00A5) + #endif + #if PY_VERSION_HEX < 0x030700A3 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #elif !defined(CYTHON_USE_EXC_INFO_STACK) + #define CYTHON_USE_EXC_INFO_STACK 1 + #endif + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 1 + #endif + #ifndef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 1 + #endif +#endif +#if !defined(CYTHON_FAST_PYCCALL) +#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) +#endif +#if !defined(CYTHON_VECTORCALL) +#define CYTHON_VECTORCALL (CYTHON_FAST_PYCCALL && PY_VERSION_HEX >= 0x030800B1) +#endif +#define CYTHON_BACKPORT_VECTORCALL (CYTHON_METH_FASTCALL && PY_VERSION_HEX < 0x030800B1) +#if CYTHON_USE_PYLONG_INTERNALS + #if PY_MAJOR_VERSION < 3 + #include "longintrepr.h" + #endif + #undef SHIFT + #undef BASE + #undef MASK + #ifdef SIZEOF_VOID_P + enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) }; + #endif +#endif +#ifndef __has_attribute + #define __has_attribute(x) 0 +#endif +#ifndef __has_cpp_attribute + #define __has_cpp_attribute(x) 0 +#endif +#ifndef CYTHON_RESTRICT + #if defined(__GNUC__) + #define CYTHON_RESTRICT __restrict__ + #elif defined(_MSC_VER) && _MSC_VER >= 1400 + #define CYTHON_RESTRICT __restrict + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_RESTRICT restrict + #else + #define CYTHON_RESTRICT + #endif +#endif +#ifndef CYTHON_UNUSED + #if defined(__cplusplus) + /* for clang __has_cpp_attribute(maybe_unused) is true even before C++17 + * but leads to warnings with -pedantic, since it is a C++17 feature */ + #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L) + #if __has_cpp_attribute(maybe_unused) + #define CYTHON_UNUSED [[maybe_unused]] + #endif + #endif + #endif +#endif +#ifndef CYTHON_UNUSED +# if defined(__GNUC__) +# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +#endif +#ifndef CYTHON_UNUSED_VAR +# if defined(__cplusplus) + template void CYTHON_UNUSED_VAR( const T& ) { } +# else +# define CYTHON_UNUSED_VAR(x) (void)(x) +# endif +#endif +#ifndef CYTHON_MAYBE_UNUSED_VAR + #define CYTHON_MAYBE_UNUSED_VAR(x) CYTHON_UNUSED_VAR(x) +#endif +#ifndef CYTHON_NCP_UNUSED +# if CYTHON_COMPILING_IN_CPYTHON +# define CYTHON_NCP_UNUSED +# else +# define CYTHON_NCP_UNUSED CYTHON_UNUSED +# endif +#endif +#ifndef CYTHON_USE_CPP_STD_MOVE + #if defined(__cplusplus) && (\ + __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1600)) + #define CYTHON_USE_CPP_STD_MOVE 1 + #else + #define CYTHON_USE_CPP_STD_MOVE 0 + #endif +#endif +#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) +#ifdef _MSC_VER + #ifndef _MSC_STDINT_H_ + #if _MSC_VER < 1300 + typedef unsigned char uint8_t; + typedef unsigned short uint16_t; + typedef unsigned int uint32_t; + #else + typedef unsigned __int8 uint8_t; + typedef unsigned __int16 uint16_t; + typedef unsigned __int32 uint32_t; + #endif + #endif + #if _MSC_VER < 1300 + #ifdef _WIN64 + typedef unsigned long long __pyx_uintptr_t; + #else + typedef unsigned int __pyx_uintptr_t; + #endif + #else + #ifdef _WIN64 + typedef unsigned __int64 __pyx_uintptr_t; + #else + typedef unsigned __int32 __pyx_uintptr_t; + #endif + #endif +#else + #include + typedef uintptr_t __pyx_uintptr_t; +#endif +#ifndef CYTHON_FALLTHROUGH + #if defined(__cplusplus) + /* for clang __has_cpp_attribute(fallthrough) is true even before C++17 + * but leads to warnings with -pedantic, since it is a C++17 feature */ + #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L) + #if __has_cpp_attribute(fallthrough) + #define CYTHON_FALLTHROUGH [[fallthrough]] + #endif + #endif + #ifndef CYTHON_FALLTHROUGH + #if __has_cpp_attribute(clang::fallthrough) + #define CYTHON_FALLTHROUGH [[clang::fallthrough]] + #elif __has_cpp_attribute(gnu::fallthrough) + #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] + #endif + #endif + #endif + #ifndef CYTHON_FALLTHROUGH + #if __has_attribute(fallthrough) + #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) + #else + #define CYTHON_FALLTHROUGH + #endif + #endif + #if defined(__clang__) && defined(__apple_build_version__) + #if __apple_build_version__ < 7000000 + #undef CYTHON_FALLTHROUGH + #define CYTHON_FALLTHROUGH + #endif + #endif +#endif +#ifdef __cplusplus + template + struct __PYX_IS_UNSIGNED_IMPL {static const bool value = T(0) < T(-1);}; + #define __PYX_IS_UNSIGNED(type) (__PYX_IS_UNSIGNED_IMPL::value) +#else + #define __PYX_IS_UNSIGNED(type) (((type)-1) > 0) +#endif +#if CYTHON_COMPILING_IN_PYPY == 1 + #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x030A0000) +#else + #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000) +#endif +#define __PYX_REINTERPRET_FUNCION(func_pointer, other_pointer) ((func_pointer)(void(*)(void))(other_pointer)) + +#ifndef CYTHON_INLINE + #if defined(__clang__) + #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) + #elif defined(__GNUC__) + #define CYTHON_INLINE __inline__ + #elif defined(_MSC_VER) + #define CYTHON_INLINE __inline + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_INLINE inline + #else + #define CYTHON_INLINE + #endif +#endif + +#define __PYX_BUILD_PY_SSIZE_T "n" +#define CYTHON_FORMAT_SSIZE_T "z" +#if PY_MAJOR_VERSION < 3 + #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" + #define __Pyx_DefaultClassType PyClass_Type + #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#else + #define __Pyx_BUILTIN_MODULE_NAME "builtins" + #define __Pyx_DefaultClassType PyType_Type +#if CYTHON_COMPILING_IN_LIMITED_API + static CYTHON_INLINE PyObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f, + PyObject *code, PyObject *c, PyObject* n, PyObject *v, + PyObject *fv, PyObject *cell, PyObject* fn, + PyObject *name, int fline, PyObject *lnos) { + PyObject *exception_table = NULL; + PyObject *types_module=NULL, *code_type=NULL, *result=NULL; + #if __PYX_LIMITED_VERSION_HEX < 0x030B0000 + PyObject *version_info; + PyObject *py_minor_version = NULL; + #endif + long minor_version = 0; + PyObject *type, *value, *traceback; + PyErr_Fetch(&type, &value, &traceback); + #if __PYX_LIMITED_VERSION_HEX >= 0x030B0000 + minor_version = 11; + #else + if (!(version_info = PySys_GetObject("version_info"))) goto end; + if (!(py_minor_version = PySequence_GetItem(version_info, 1))) goto end; + minor_version = PyLong_AsLong(py_minor_version); + Py_DECREF(py_minor_version); + if (minor_version == -1 && PyErr_Occurred()) goto end; + #endif + if (!(types_module = PyImport_ImportModule("types"))) goto end; + if (!(code_type = PyObject_GetAttrString(types_module, "CodeType"))) goto end; + if (minor_version <= 7) { + (void)p; + result = PyObject_CallFunction(code_type, "iiiiiOOOOOOiOO", a, k, l, s, f, code, + c, n, v, fn, name, fline, lnos, fv, cell); + } else if (minor_version <= 10) { + result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOiOO", a,p, k, l, s, f, code, + c, n, v, fn, name, fline, lnos, fv, cell); + } else { + if (!(exception_table = PyBytes_FromStringAndSize(NULL, 0))) goto end; + result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOOiOO", a,p, k, l, s, f, code, + c, n, v, fn, name, name, fline, lnos, exception_table, fv, cell); + } + end: + Py_XDECREF(code_type); + Py_XDECREF(exception_table); + Py_XDECREF(types_module); + if (type) { + PyErr_Restore(type, value, traceback); + } + return result; + } + #ifndef CO_OPTIMIZED + #define CO_OPTIMIZED 0x0001 + #endif + #ifndef CO_NEWLOCALS + #define CO_NEWLOCALS 0x0002 + #endif + #ifndef CO_VARARGS + #define CO_VARARGS 0x0004 + #endif + #ifndef CO_VARKEYWORDS + #define CO_VARKEYWORDS 0x0008 + #endif + #ifndef CO_ASYNC_GENERATOR + #define CO_ASYNC_GENERATOR 0x0200 + #endif + #ifndef CO_GENERATOR + #define CO_GENERATOR 0x0020 + #endif + #ifndef CO_COROUTINE + #define CO_COROUTINE 0x0080 + #endif +#elif PY_VERSION_HEX >= 0x030B0000 + static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f, + PyObject *code, PyObject *c, PyObject* n, PyObject *v, + PyObject *fv, PyObject *cell, PyObject* fn, + PyObject *name, int fline, PyObject *lnos) { + PyCodeObject *result; + PyObject *empty_bytes = PyBytes_FromStringAndSize("", 0); + if (!empty_bytes) return NULL; + result = + #if PY_VERSION_HEX >= 0x030C0000 + PyUnstable_Code_NewWithPosOnlyArgs + #else + PyCode_NewWithPosOnlyArgs + #endif + (a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, name, fline, lnos, empty_bytes); + Py_DECREF(empty_bytes); + return result; + } +#elif PY_VERSION_HEX >= 0x030800B2 && !CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_NewWithPosOnlyArgs(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#else + #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#endif +#endif +#if PY_VERSION_HEX >= 0x030900A4 || defined(Py_IS_TYPE) + #define __Pyx_IS_TYPE(ob, type) Py_IS_TYPE(ob, type) +#else + #define __Pyx_IS_TYPE(ob, type) (((const PyObject*)ob)->ob_type == (type)) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_Is) + #define __Pyx_Py_Is(x, y) Py_Is(x, y) +#else + #define __Pyx_Py_Is(x, y) ((x) == (y)) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsNone) + #define __Pyx_Py_IsNone(ob) Py_IsNone(ob) +#else + #define __Pyx_Py_IsNone(ob) __Pyx_Py_Is((ob), Py_None) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsTrue) + #define __Pyx_Py_IsTrue(ob) Py_IsTrue(ob) +#else + #define __Pyx_Py_IsTrue(ob) __Pyx_Py_Is((ob), Py_True) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsFalse) + #define __Pyx_Py_IsFalse(ob) Py_IsFalse(ob) +#else + #define __Pyx_Py_IsFalse(ob) __Pyx_Py_Is((ob), Py_False) +#endif +#define __Pyx_NoneAsNull(obj) (__Pyx_Py_IsNone(obj) ? NULL : (obj)) +#if PY_VERSION_HEX >= 0x030900F0 && !CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyObject_GC_IsFinalized(o) PyObject_GC_IsFinalized(o) +#else + #define __Pyx_PyObject_GC_IsFinalized(o) _PyGC_FINALIZED(o) +#endif +#ifndef CO_COROUTINE + #define CO_COROUTINE 0x80 +#endif +#ifndef CO_ASYNC_GENERATOR + #define CO_ASYNC_GENERATOR 0x200 +#endif +#ifndef Py_TPFLAGS_CHECKTYPES + #define Py_TPFLAGS_CHECKTYPES 0 +#endif +#ifndef Py_TPFLAGS_HAVE_INDEX + #define Py_TPFLAGS_HAVE_INDEX 0 +#endif +#ifndef Py_TPFLAGS_HAVE_NEWBUFFER + #define Py_TPFLAGS_HAVE_NEWBUFFER 0 +#endif +#ifndef Py_TPFLAGS_HAVE_FINALIZE + #define Py_TPFLAGS_HAVE_FINALIZE 0 +#endif +#ifndef Py_TPFLAGS_SEQUENCE + #define Py_TPFLAGS_SEQUENCE 0 +#endif +#ifndef Py_TPFLAGS_MAPPING + #define Py_TPFLAGS_MAPPING 0 +#endif +#ifndef METH_STACKLESS + #define METH_STACKLESS 0 +#endif +#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL) + #ifndef METH_FASTCALL + #define METH_FASTCALL 0x80 + #endif + typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); + typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, + Py_ssize_t nargs, PyObject *kwnames); +#else + #if PY_VERSION_HEX >= 0x030d00A4 + # define __Pyx_PyCFunctionFast PyCFunctionFast + # define __Pyx_PyCFunctionFastWithKeywords PyCFunctionFastWithKeywords + #else + # define __Pyx_PyCFunctionFast _PyCFunctionFast + # define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords + #endif +#endif +#if CYTHON_METH_FASTCALL + #define __Pyx_METH_FASTCALL METH_FASTCALL + #define __Pyx_PyCFunction_FastCall __Pyx_PyCFunctionFast + #define __Pyx_PyCFunction_FastCallWithKeywords __Pyx_PyCFunctionFastWithKeywords +#else + #define __Pyx_METH_FASTCALL METH_VARARGS + #define __Pyx_PyCFunction_FastCall PyCFunction + #define __Pyx_PyCFunction_FastCallWithKeywords PyCFunctionWithKeywords +#endif +#if CYTHON_VECTORCALL + #define __pyx_vectorcallfunc vectorcallfunc + #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET PY_VECTORCALL_ARGUMENTS_OFFSET + #define __Pyx_PyVectorcall_NARGS(n) PyVectorcall_NARGS((size_t)(n)) +#elif CYTHON_BACKPORT_VECTORCALL + typedef PyObject *(*__pyx_vectorcallfunc)(PyObject *callable, PyObject *const *args, + size_t nargsf, PyObject *kwnames); + #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET ((size_t)1 << (8 * sizeof(size_t) - 1)) + #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(((size_t)(n)) & ~__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)) +#else + #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET 0 + #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(n)) +#endif +#if PY_MAJOR_VERSION >= 0x030900B1 +#define __Pyx_PyCFunction_CheckExact(func) PyCFunction_CheckExact(func) +#else +#define __Pyx_PyCFunction_CheckExact(func) PyCFunction_Check(func) +#endif +#define __Pyx_CyOrPyCFunction_Check(func) PyCFunction_Check(func) +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) (((PyCFunctionObject*)(func))->m_ml->ml_meth) +#elif !CYTHON_COMPILING_IN_LIMITED_API +#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) PyCFunction_GET_FUNCTION(func) +#endif +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_CyOrPyCFunction_GET_FLAGS(func) (((PyCFunctionObject*)(func))->m_ml->ml_flags) +static CYTHON_INLINE PyObject* __Pyx_CyOrPyCFunction_GET_SELF(PyObject *func) { + return (__Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_STATIC) ? NULL : ((PyCFunctionObject*)func)->m_self; +} +#endif +static CYTHON_INLINE int __Pyx__IsSameCFunction(PyObject *func, void *cfunc) { +#if CYTHON_COMPILING_IN_LIMITED_API + return PyCFunction_Check(func) && PyCFunction_GetFunction(func) == (PyCFunction) cfunc; +#else + return PyCFunction_Check(func) && PyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc; +#endif +} +#define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCFunction(func, cfunc) +#if __PYX_LIMITED_VERSION_HEX < 0x030900B1 + #define __Pyx_PyType_FromModuleAndSpec(m, s, b) ((void)m, PyType_FromSpecWithBases(s, b)) + typedef PyObject *(*__Pyx_PyCMethod)(PyObject *, PyTypeObject *, PyObject *const *, size_t, PyObject *); +#else + #define __Pyx_PyType_FromModuleAndSpec(m, s, b) PyType_FromModuleAndSpec(m, s, b) + #define __Pyx_PyCMethod PyCMethod +#endif +#ifndef METH_METHOD + #define METH_METHOD 0x200 +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) + #define PyObject_Malloc(s) PyMem_Malloc(s) + #define PyObject_Free(p) PyMem_Free(p) + #define PyObject_Realloc(p) PyMem_Realloc(p) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) +#else + #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyThreadState_Current PyThreadState_Get() +#elif !CYTHON_FAST_THREAD_STATE + #define __Pyx_PyThreadState_Current PyThreadState_GET() +#elif PY_VERSION_HEX >= 0x030d00A1 + #define __Pyx_PyThreadState_Current PyThreadState_GetUnchecked() +#elif PY_VERSION_HEX >= 0x03060000 + #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() +#elif PY_VERSION_HEX >= 0x03000000 + #define __Pyx_PyThreadState_Current PyThreadState_GET() +#else + #define __Pyx_PyThreadState_Current _PyThreadState_Current +#endif +#if CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_INLINE void *__Pyx_PyModule_GetState(PyObject *op) +{ + void *result; + result = PyModule_GetState(op); + if (!result) + Py_FatalError("Couldn't find the module state"); + return result; +} +#endif +#define __Pyx_PyObject_GetSlot(obj, name, func_ctype) __Pyx_PyType_GetSlot(Py_TYPE(obj), name, func_ctype) +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((func_ctype) PyType_GetSlot((type), Py_##name)) +#else + #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((type)->name) +#endif +#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT) +#include "pythread.h" +#define Py_tss_NEEDS_INIT 0 +typedef int Py_tss_t; +static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { + *key = PyThread_create_key(); + return 0; +} +static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) { + Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t)); + *key = Py_tss_NEEDS_INIT; + return key; +} +static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) { + PyObject_Free(key); +} +static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) { + return *key != Py_tss_NEEDS_INIT; +} +static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) { + PyThread_delete_key(*key); + *key = Py_tss_NEEDS_INIT; +} +static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { + return PyThread_set_key_value(*key, value); +} +static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { + return PyThread_get_key_value(*key); +} +#endif +#if PY_MAJOR_VERSION < 3 + #if CYTHON_COMPILING_IN_PYPY + #if PYPY_VERSION_NUM < 0x07030600 + #if defined(__cplusplus) && __cplusplus >= 201402L + [[deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")]] + #elif defined(__GNUC__) || defined(__clang__) + __attribute__ ((__deprecated__("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6"))) + #elif defined(_MSC_VER) + __declspec(deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")) + #endif + static CYTHON_INLINE int PyGILState_Check(void) { + return 0; + } + #else // PYPY_VERSION_NUM < 0x07030600 + #endif // PYPY_VERSION_NUM < 0x07030600 + #else + static CYTHON_INLINE int PyGILState_Check(void) { + PyThreadState * tstate = _PyThreadState_Current; + return tstate && (tstate == PyGILState_GetThisThreadState()); + } + #endif +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030d0000 || defined(_PyDict_NewPresized) +#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) +#else +#define __Pyx_PyDict_NewPresized(n) PyDict_New() +#endif +#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION + #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) + #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) +#else + #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) + #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX > 0x030600B4 && PY_VERSION_HEX < 0x030d0000 && CYTHON_USE_UNICODE_INTERNALS +#define __Pyx_PyDict_GetItemStrWithError(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) +static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStr(PyObject *dict, PyObject *name) { + PyObject *res = __Pyx_PyDict_GetItemStrWithError(dict, name); + if (res == NULL) PyErr_Clear(); + return res; +} +#elif PY_MAJOR_VERSION >= 3 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07020000) +#define __Pyx_PyDict_GetItemStrWithError PyDict_GetItemWithError +#define __Pyx_PyDict_GetItemStr PyDict_GetItem +#else +static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStrWithError(PyObject *dict, PyObject *name) { +#if CYTHON_COMPILING_IN_PYPY + return PyDict_GetItem(dict, name); +#else + PyDictEntry *ep; + PyDictObject *mp = (PyDictObject*) dict; + long hash = ((PyStringObject *) name)->ob_shash; + assert(hash != -1); + ep = (mp->ma_lookup)(mp, name, hash); + if (ep == NULL) { + return NULL; + } + return ep->me_value; +#endif +} +#define __Pyx_PyDict_GetItemStr PyDict_GetItem +#endif +#if CYTHON_USE_TYPE_SLOTS + #define __Pyx_PyType_GetFlags(tp) (((PyTypeObject *)tp)->tp_flags) + #define __Pyx_PyType_HasFeature(type, feature) ((__Pyx_PyType_GetFlags(type) & (feature)) != 0) + #define __Pyx_PyObject_GetIterNextFunc(obj) (Py_TYPE(obj)->tp_iternext) +#else + #define __Pyx_PyType_GetFlags(tp) (PyType_GetFlags((PyTypeObject *)tp)) + #define __Pyx_PyType_HasFeature(type, feature) PyType_HasFeature(type, feature) + #define __Pyx_PyObject_GetIterNextFunc(obj) PyIter_Next +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_SetItemOnTypeDict(tp, k, v) PyObject_GenericSetAttr((PyObject*)tp, k, v) +#else + #define __Pyx_SetItemOnTypeDict(tp, k, v) PyDict_SetItem(tp->tp_dict, k, v) +#endif +#if CYTHON_USE_TYPE_SPECS && PY_VERSION_HEX >= 0x03080000 +#define __Pyx_PyHeapTypeObject_GC_Del(obj) {\ + PyTypeObject *type = Py_TYPE((PyObject*)obj);\ + assert(__Pyx_PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE));\ + PyObject_GC_Del(obj);\ + Py_DECREF(type);\ +} +#else +#define __Pyx_PyHeapTypeObject_GC_Del(obj) PyObject_GC_Del(obj) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define CYTHON_PEP393_ENABLED 1 + #define __Pyx_PyUnicode_READY(op) (0) + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GetLength(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_ReadChar(u, i) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((void)u, 1114111U) + #define __Pyx_PyUnicode_KIND(u) ((void)u, (0)) + #define __Pyx_PyUnicode_DATA(u) ((void*)u) + #define __Pyx_PyUnicode_READ(k, d, i) ((void)k, PyUnicode_ReadChar((PyObject*)(d), i)) + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GetLength(u)) +#elif PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) + #define CYTHON_PEP393_ENABLED 1 + #if PY_VERSION_HEX >= 0x030C0000 + #define __Pyx_PyUnicode_READY(op) (0) + #else + #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ + 0 : _PyUnicode_Ready((PyObject *)(op))) + #endif + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) + #define __Pyx_PyUnicode_KIND(u) ((int)PyUnicode_KIND(u)) + #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) + #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) + #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, (Py_UCS4) ch) + #if PY_VERSION_HEX >= 0x030C0000 + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u)) + #else + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000 + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length)) + #else + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) + #endif + #endif +#else + #define CYTHON_PEP393_ENABLED 0 + #define PyUnicode_1BYTE_KIND 1 + #define PyUnicode_2BYTE_KIND 2 + #define PyUnicode_4BYTE_KIND 4 + #define __Pyx_PyUnicode_READY(op) (0) + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535U : 1114111U) + #define __Pyx_PyUnicode_KIND(u) ((int)sizeof(Py_UNICODE)) + #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) + #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) + #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = (Py_UNICODE) ch) + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) +#endif +#if CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) +#else + #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ + PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) +#endif +#if CYTHON_COMPILING_IN_PYPY + #if !defined(PyUnicode_DecodeUnicodeEscape) + #define PyUnicode_DecodeUnicodeEscape(s, size, errors) PyUnicode_Decode(s, size, "unicode_escape", errors) + #endif + #if !defined(PyUnicode_Contains) || (PY_MAJOR_VERSION == 2 && PYPY_VERSION_NUM < 0x07030500) + #undef PyUnicode_Contains + #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) + #endif + #if !defined(PyByteArray_Check) + #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) + #endif + #if !defined(PyObject_Format) + #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) + #endif +#endif +#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) +#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) +#else + #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) +#endif +#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) + #define PyObject_ASCII(o) PyObject_Repr(o) +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyBaseString_Type PyUnicode_Type + #define PyStringObject PyUnicodeObject + #define PyString_Type PyUnicode_Type + #define PyString_Check PyUnicode_Check + #define PyString_CheckExact PyUnicode_CheckExact +#ifndef PyObject_Unicode + #define PyObject_Unicode PyObject_Str +#endif +#endif +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) + #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) +#else + #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) + #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) +#endif +#if CYTHON_COMPILING_IN_CPYTHON + #define __Pyx_PySequence_ListKeepNew(obj)\ + (likely(PyList_CheckExact(obj) && Py_REFCNT(obj) == 1) ? __Pyx_NewRef(obj) : PySequence_List(obj)) +#else + #define __Pyx_PySequence_ListKeepNew(obj) PySequence_List(obj) +#endif +#ifndef PySet_CheckExact + #define PySet_CheckExact(obj) __Pyx_IS_TYPE(obj, &PySet_Type) +#endif +#if PY_VERSION_HEX >= 0x030900A4 + #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt) + #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size) +#else + #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt) + #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size) +#endif +#if CYTHON_ASSUME_SAFE_MACROS + #define __Pyx_PySequence_ITEM(o, i) PySequence_ITEM(o, i) + #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) + #define __Pyx_PyTuple_SET_ITEM(o, i, v) (PyTuple_SET_ITEM(o, i, v), (0)) + #define __Pyx_PyList_SET_ITEM(o, i, v) (PyList_SET_ITEM(o, i, v), (0)) + #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_GET_SIZE(o) + #define __Pyx_PyList_GET_SIZE(o) PyList_GET_SIZE(o) + #define __Pyx_PySet_GET_SIZE(o) PySet_GET_SIZE(o) + #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_GET_SIZE(o) + #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_GET_SIZE(o) +#else + #define __Pyx_PySequence_ITEM(o, i) PySequence_GetItem(o, i) + #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) + #define __Pyx_PyTuple_SET_ITEM(o, i, v) PyTuple_SetItem(o, i, v) + #define __Pyx_PyList_SET_ITEM(o, i, v) PyList_SetItem(o, i, v) + #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_Size(o) + #define __Pyx_PyList_GET_SIZE(o) PyList_Size(o) + #define __Pyx_PySet_GET_SIZE(o) PySet_Size(o) + #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_Size(o) + #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_Size(o) +#endif +#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1 + #define __Pyx_PyImport_AddModuleRef(name) PyImport_AddModuleRef(name) +#else + static CYTHON_INLINE PyObject *__Pyx_PyImport_AddModuleRef(const char *name) { + PyObject *module = PyImport_AddModule(name); + Py_XINCREF(module); + return module; + } +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyIntObject PyLongObject + #define PyInt_Type PyLong_Type + #define PyInt_Check(op) PyLong_Check(op) + #define PyInt_CheckExact(op) PyLong_CheckExact(op) + #define __Pyx_Py3Int_Check(op) PyLong_Check(op) + #define __Pyx_Py3Int_CheckExact(op) PyLong_CheckExact(op) + #define PyInt_FromString PyLong_FromString + #define PyInt_FromUnicode PyLong_FromUnicode + #define PyInt_FromLong PyLong_FromLong + #define PyInt_FromSize_t PyLong_FromSize_t + #define PyInt_FromSsize_t PyLong_FromSsize_t + #define PyInt_AsLong PyLong_AsLong + #define PyInt_AS_LONG PyLong_AS_LONG + #define PyInt_AsSsize_t PyLong_AsSsize_t + #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask + #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask + #define PyNumber_Int PyNumber_Long +#else + #define __Pyx_Py3Int_Check(op) (PyLong_Check(op) || PyInt_Check(op)) + #define __Pyx_Py3Int_CheckExact(op) (PyLong_CheckExact(op) || PyInt_CheckExact(op)) +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyBoolObject PyLongObject +#endif +#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY + #ifndef PyUnicode_InternFromString + #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) + #endif +#endif +#if PY_VERSION_HEX < 0x030200A4 + typedef long Py_hash_t; + #define __Pyx_PyInt_FromHash_t PyInt_FromLong + #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsHash_t +#else + #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t + #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsSsize_t +#endif +#if CYTHON_USE_ASYNC_SLOTS + #if PY_VERSION_HEX >= 0x030500B1 + #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods + #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) + #else + #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) + #endif +#else + #define __Pyx_PyType_AsAsync(obj) NULL +#endif +#ifndef __Pyx_PyAsyncMethodsStruct + typedef struct { + unaryfunc am_await; + unaryfunc am_aiter; + unaryfunc am_anext; + } __Pyx_PyAsyncMethodsStruct; +#endif + +#if defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS) + #if !defined(_USE_MATH_DEFINES) + #define _USE_MATH_DEFINES + #endif +#endif +#include +#ifdef NAN +#define __PYX_NAN() ((float) NAN) +#else +static CYTHON_INLINE float __PYX_NAN() { + float value; + memset(&value, 0xFF, sizeof(value)); + return value; +} +#endif +#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) +#define __Pyx_truncl trunc +#else +#define __Pyx_truncl truncl +#endif + +#define __PYX_MARK_ERR_POS(f_index, lineno) \ + { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; } +#define __PYX_ERR(f_index, lineno, Ln_error) \ + { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; } + +#ifdef CYTHON_EXTERN_C + #undef __PYX_EXTERN_C + #define __PYX_EXTERN_C CYTHON_EXTERN_C +#elif defined(__PYX_EXTERN_C) + #ifdef _MSC_VER + #pragma message ("Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.") + #else + #warning Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead. + #endif +#else + #ifdef __cplusplus + #define __PYX_EXTERN_C extern "C" + #else + #define __PYX_EXTERN_C extern + #endif +#endif + +#define __PYX_HAVE___pydevd_frame_eval__pydevd_frame_evaluator +#define __PYX_HAVE_API___pydevd_frame_eval__pydevd_frame_evaluator +/* Early includes */ +#include "frameobject.h" +#include "release_mem.h" +#include "code.h" +#include "pystate.h" +#if PY_VERSION_HEX >= 0x03080000 +#include "internal/pycore_pystate.h" +#endif + +#include "ceval.h" + +#if PY_VERSION_HEX >= 0x03090000 +PyObject * noop(PyFrameObject *frame, int exc) { + return NULL; +} +#define CALL_EvalFrameDefault_38(a, b) noop(a, b) +#define CALL_EvalFrameDefault_39(a, b, c) _PyEval_EvalFrameDefault(a, b, c) +#else +PyObject * noop(PyThreadState* tstate, PyFrameObject *frame, int exc) { + return NULL; +} +#define CALL_EvalFrameDefault_39(a, b, c) noop(a, b, c) +#define CALL_EvalFrameDefault_38(a, b) _PyEval_EvalFrameDefault(a, b) +#endif + +#ifdef _OPENMP +#include +#endif /* _OPENMP */ + +#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) +#define CYTHON_WITHOUT_ASSERTIONS +#endif + +typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; + const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; + +#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 +#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0 +#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8) +#define __PYX_DEFAULT_STRING_ENCODING "" +#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString +#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +#define __Pyx_uchar_cast(c) ((unsigned char)c) +#define __Pyx_long_cast(x) ((long)x) +#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ + (sizeof(type) < sizeof(Py_ssize_t)) ||\ + (sizeof(type) > sizeof(Py_ssize_t) &&\ + likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX) &&\ + (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ + v == (type)PY_SSIZE_T_MIN))) ||\ + (sizeof(type) == sizeof(Py_ssize_t) &&\ + (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX))) ) +static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) { + return (size_t) i < (size_t) limit; +} +#if defined (__cplusplus) && __cplusplus >= 201103L + #include + #define __Pyx_sst_abs(value) std::abs(value) +#elif SIZEOF_INT >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) abs(value) +#elif SIZEOF_LONG >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) labs(value) +#elif defined (_MSC_VER) + #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) +#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define __Pyx_sst_abs(value) llabs(value) +#elif defined (__GNUC__) + #define __Pyx_sst_abs(value) __builtin_llabs(value) +#else + #define __Pyx_sst_abs(value) ((value<0) ? -value : value) +#endif +static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s); +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); +static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char*); +#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) +#define __Pyx_PyBytes_FromString PyBytes_FromString +#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); +#if PY_MAJOR_VERSION < 3 + #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString + #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +#else + #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString + #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize +#endif +#define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyObject_AsWritableString(s) ((char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableSString(s) ((signed char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) +#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) +#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) +#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) +#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) +#define __Pyx_PyUnicode_FromOrdinal(o) PyUnicode_FromOrdinal((int)o) +#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode +#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) +#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) +static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); +static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); +static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*); +static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); +#define __Pyx_PySequence_Tuple(obj)\ + (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) +static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); +static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); +static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*); +#if CYTHON_ASSUME_SAFE_MACROS +#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) +#else +#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) +#endif +#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) +#if PY_MAJOR_VERSION >= 3 +#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) +#else +#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) +#endif +#if CYTHON_USE_PYLONG_INTERNALS + #if PY_VERSION_HEX >= 0x030C00A7 + #ifndef _PyLong_SIGN_MASK + #define _PyLong_SIGN_MASK 3 + #endif + #ifndef _PyLong_NON_SIZE_BITS + #define _PyLong_NON_SIZE_BITS 3 + #endif + #define __Pyx_PyLong_Sign(x) (((PyLongObject*)x)->long_value.lv_tag & _PyLong_SIGN_MASK) + #define __Pyx_PyLong_IsNeg(x) ((__Pyx_PyLong_Sign(x) & 2) != 0) + #define __Pyx_PyLong_IsNonNeg(x) (!__Pyx_PyLong_IsNeg(x)) + #define __Pyx_PyLong_IsZero(x) (__Pyx_PyLong_Sign(x) & 1) + #define __Pyx_PyLong_IsPos(x) (__Pyx_PyLong_Sign(x) == 0) + #define __Pyx_PyLong_CompactValueUnsigned(x) (__Pyx_PyLong_Digits(x)[0]) + #define __Pyx_PyLong_DigitCount(x) ((Py_ssize_t) (((PyLongObject*)x)->long_value.lv_tag >> _PyLong_NON_SIZE_BITS)) + #define __Pyx_PyLong_SignedDigitCount(x)\ + ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * __Pyx_PyLong_DigitCount(x)) + #if defined(PyUnstable_Long_IsCompact) && defined(PyUnstable_Long_CompactValue) + #define __Pyx_PyLong_IsCompact(x) PyUnstable_Long_IsCompact((PyLongObject*) x) + #define __Pyx_PyLong_CompactValue(x) PyUnstable_Long_CompactValue((PyLongObject*) x) + #else + #define __Pyx_PyLong_IsCompact(x) (((PyLongObject*)x)->long_value.lv_tag < (2 << _PyLong_NON_SIZE_BITS)) + #define __Pyx_PyLong_CompactValue(x) ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * (Py_ssize_t) __Pyx_PyLong_Digits(x)[0]) + #endif + typedef Py_ssize_t __Pyx_compact_pylong; + typedef size_t __Pyx_compact_upylong; + #else + #define __Pyx_PyLong_IsNeg(x) (Py_SIZE(x) < 0) + #define __Pyx_PyLong_IsNonNeg(x) (Py_SIZE(x) >= 0) + #define __Pyx_PyLong_IsZero(x) (Py_SIZE(x) == 0) + #define __Pyx_PyLong_IsPos(x) (Py_SIZE(x) > 0) + #define __Pyx_PyLong_CompactValueUnsigned(x) ((Py_SIZE(x) == 0) ? 0 : __Pyx_PyLong_Digits(x)[0]) + #define __Pyx_PyLong_DigitCount(x) __Pyx_sst_abs(Py_SIZE(x)) + #define __Pyx_PyLong_SignedDigitCount(x) Py_SIZE(x) + #define __Pyx_PyLong_IsCompact(x) (Py_SIZE(x) == 0 || Py_SIZE(x) == 1 || Py_SIZE(x) == -1) + #define __Pyx_PyLong_CompactValue(x)\ + ((Py_SIZE(x) == 0) ? (sdigit) 0 : ((Py_SIZE(x) < 0) ? -(sdigit)__Pyx_PyLong_Digits(x)[0] : (sdigit)__Pyx_PyLong_Digits(x)[0])) + typedef sdigit __Pyx_compact_pylong; + typedef digit __Pyx_compact_upylong; + #endif + #if PY_VERSION_HEX >= 0x030C00A5 + #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->long_value.ob_digit) + #else + #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->ob_digit) + #endif +#endif +#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII +#include +static int __Pyx_sys_getdefaultencoding_not_ascii; +static int __Pyx_init_sys_getdefaultencoding_params(void) { + PyObject* sys; + PyObject* default_encoding = NULL; + PyObject* ascii_chars_u = NULL; + PyObject* ascii_chars_b = NULL; + const char* default_encoding_c; + sys = PyImport_ImportModule("sys"); + if (!sys) goto bad; + default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); + Py_DECREF(sys); + if (!default_encoding) goto bad; + default_encoding_c = PyBytes_AsString(default_encoding); + if (!default_encoding_c) goto bad; + if (strcmp(default_encoding_c, "ascii") == 0) { + __Pyx_sys_getdefaultencoding_not_ascii = 0; + } else { + char ascii_chars[128]; + int c; + for (c = 0; c < 128; c++) { + ascii_chars[c] = (char) c; + } + __Pyx_sys_getdefaultencoding_not_ascii = 1; + ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); + if (!ascii_chars_u) goto bad; + ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); + if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { + PyErr_Format( + PyExc_ValueError, + "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", + default_encoding_c); + goto bad; + } + Py_DECREF(ascii_chars_u); + Py_DECREF(ascii_chars_b); + } + Py_DECREF(default_encoding); + return 0; +bad: + Py_XDECREF(default_encoding); + Py_XDECREF(ascii_chars_u); + Py_XDECREF(ascii_chars_b); + return -1; +} +#endif +#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 +#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) +#else +#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) +#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT +#include +static char* __PYX_DEFAULT_STRING_ENCODING; +static int __Pyx_init_sys_getdefaultencoding_params(void) { + PyObject* sys; + PyObject* default_encoding = NULL; + char* default_encoding_c; + sys = PyImport_ImportModule("sys"); + if (!sys) goto bad; + default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); + Py_DECREF(sys); + if (!default_encoding) goto bad; + default_encoding_c = PyBytes_AsString(default_encoding); + if (!default_encoding_c) goto bad; + __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1); + if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; + strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); + Py_DECREF(default_encoding); + return 0; +bad: + Py_XDECREF(default_encoding); + return -1; +} +#endif +#endif + + +/* Test for GCC > 2.95 */ +#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) + #define likely(x) __builtin_expect(!!(x), 1) + #define unlikely(x) __builtin_expect(!!(x), 0) +#else /* !__GNUC__ or GCC < 2.95 */ + #define likely(x) (x) + #define unlikely(x) (x) +#endif /* __GNUC__ */ +static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } + +#if !CYTHON_USE_MODULE_STATE +static PyObject *__pyx_m = NULL; +#endif +static int __pyx_lineno; +static int __pyx_clineno = 0; +static const char * __pyx_cfilenm = __FILE__; +static const char *__pyx_filename; + +/* #### Code section: filename_table ### */ + +static const char *__pyx_f[] = { + "_pydevd_frame_eval\\\\pydevd_frame_evaluator.pyx", + "", + "_pydevd_bundle\\\\pydevd_cython.pxd", +}; +/* #### Code section: utility_code_proto_before_types ### */ +/* ForceInitThreads.proto */ +#ifndef __PYX_FORCE_INIT_THREADS + #define __PYX_FORCE_INIT_THREADS 0 +#endif + +/* #### Code section: numeric_typedefs ### */ +/* #### Code section: complex_type_declarations ### */ +/* #### Code section: type_declarations ### */ + +/*--- Type declarations ---*/ +struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo; +struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo; +struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo; +struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo; +struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue; + +/* "_pydevd_bundle/pydevd_cython.pxd":1 + * cdef class PyDBAdditionalThreadInfo: # <<<<<<<<<<<<<< + * cdef public int pydev_state + * cdef public object pydev_step_stop # Actually, it's a frame or None + */ +struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo { + PyObject_HEAD + struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_vtab; + int pydev_state; + PyObject *pydev_step_stop; + int pydev_original_step_cmd; + int pydev_step_cmd; + int pydev_notify_kill; + PyObject *pydev_smart_step_stop; + int pydev_django_resolve_frame; + PyObject *pydev_call_from_jinja2; + PyObject *pydev_call_inside_jinja2; + int is_tracing; + PyObject *conditional_breakpoint_exception; + PyObject *pydev_message; + int suspend_type; + int pydev_next_line; + PyObject *pydev_func_name; + int suspended_at_unhandled; + PyObject *trace_suspend_type; + PyObject *top_level_thread_tracer_no_back_frames; + PyObject *top_level_thread_tracer_unhandled; + PyObject *thread_tracer; + PyObject *step_in_initial_location; + int pydev_smart_parent_offset; + int pydev_smart_child_offset; + PyObject *pydev_smart_step_into_variants; + PyObject *target_id_to_smart_step_into_variant; + int pydev_use_scoped_step_frame; + PyObject *weak_thread; + int is_in_wait_loop; +}; + + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":24 + * + * + * cdef class ThreadInfo: # <<<<<<<<<<<<<< + * + * cdef public PyDBAdditionalThreadInfo additional_info + */ +struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo { + PyObject_HEAD + struct __pyx_vtabstruct_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_vtab; + struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *additional_info; + int is_pydevd_thread; + int inside_frame_eval; + int fully_initialized; + PyObject *thread_trace_func; + int _can_create_dummy_thread; + int force_stay_in_untraced_mode; +}; + + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":125 + * + * + * cdef class FuncCodeInfo: # <<<<<<<<<<<<<< + * + * cdef public str co_filename + */ +struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo { + PyObject_HEAD + PyObject *co_filename; + PyObject *co_name; + PyObject *canonical_normalized_filename; + int always_skip_code; + int breakpoint_found; + PyObject *new_code; + int breakpoints_mtime; +}; + + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":316 + * + * + * cdef class _CodeLineInfo: # <<<<<<<<<<<<<< + * + * cdef public dict line_to_offset + */ +struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo { + PyObject_HEAD + PyObject *line_to_offset; + int first_line; + int last_line; +}; + + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":361 + * + * + * cdef class _CacheValue(object): # <<<<<<<<<<<<<< + * + * cdef public object code_obj_py + */ +struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue { + PyObject_HEAD + struct __pyx_vtabstruct_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_vtab; + PyObject *code_obj_py; + struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *code_line_info; + PyObject *breakpoints_hit_at_lines; + PyObject *code_lines_as_set; +}; + + + +/* "_pydevd_bundle/pydevd_cython.pxd":1 + * cdef class PyDBAdditionalThreadInfo: # <<<<<<<<<<<<<< + * cdef public int pydev_state + * cdef public object pydev_step_stop # Actually, it's a frame or None + */ + +struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo { + PyObject *(*get_topmost_frame)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *, PyObject *, int __pyx_skip_dispatch); + PyObject *(*update_stepping_info)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *, int __pyx_skip_dispatch); + PyObject *(*_get_related_thread)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *, int __pyx_skip_dispatch); + int (*_is_stepping)(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *, int __pyx_skip_dispatch); +}; +static struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_vtabptr_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo; + + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":24 + * + * + * cdef class ThreadInfo: # <<<<<<<<<<<<<< + * + * cdef public PyDBAdditionalThreadInfo additional_info + */ + +struct __pyx_vtabstruct_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo { + PyObject *(*initialize)(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *, PyFrameObject *); + PyObject *(*initialize_if_possible)(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *); +}; +static struct __pyx_vtabstruct_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_vtabptr_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo; + + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":361 + * + * + * cdef class _CacheValue(object): # <<<<<<<<<<<<<< + * + * cdef public object code_obj_py + */ + +struct __pyx_vtabstruct_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue { + PyObject *(*compute_force_stay_in_untraced_mode)(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *, PyObject *, int __pyx_skip_dispatch); +}; +static struct __pyx_vtabstruct_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_vtabptr_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue; +/* #### Code section: utility_code_proto ### */ + +/* --- Runtime support code (head) --- */ +/* Refnanny.proto */ +#ifndef CYTHON_REFNANNY + #define CYTHON_REFNANNY 0 +#endif +#if CYTHON_REFNANNY + typedef struct { + void (*INCREF)(void*, PyObject*, Py_ssize_t); + void (*DECREF)(void*, PyObject*, Py_ssize_t); + void (*GOTREF)(void*, PyObject*, Py_ssize_t); + void (*GIVEREF)(void*, PyObject*, Py_ssize_t); + void* (*SetupContext)(const char*, Py_ssize_t, const char*); + void (*FinishContext)(void**); + } __Pyx_RefNannyAPIStruct; + static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; + static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); + #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; +#ifdef WITH_THREAD + #define __Pyx_RefNannySetupContext(name, acquire_gil)\ + if (acquire_gil) {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\ + PyGILState_Release(__pyx_gilstate_save);\ + } else {\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\ + } + #define __Pyx_RefNannyFinishContextNogil() {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __Pyx_RefNannyFinishContext();\ + PyGILState_Release(__pyx_gilstate_save);\ + } +#else + #define __Pyx_RefNannySetupContext(name, acquire_gil)\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__)) + #define __Pyx_RefNannyFinishContextNogil() __Pyx_RefNannyFinishContext() +#endif + #define __Pyx_RefNannyFinishContextNogil() {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __Pyx_RefNannyFinishContext();\ + PyGILState_Release(__pyx_gilstate_save);\ + } + #define __Pyx_RefNannyFinishContext()\ + __Pyx_RefNanny->FinishContext(&__pyx_refnanny) + #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_XINCREF(r) do { if((r) == NULL); else {__Pyx_INCREF(r); }} while(0) + #define __Pyx_XDECREF(r) do { if((r) == NULL); else {__Pyx_DECREF(r); }} while(0) + #define __Pyx_XGOTREF(r) do { if((r) == NULL); else {__Pyx_GOTREF(r); }} while(0) + #define __Pyx_XGIVEREF(r) do { if((r) == NULL); else {__Pyx_GIVEREF(r);}} while(0) +#else + #define __Pyx_RefNannyDeclarations + #define __Pyx_RefNannySetupContext(name, acquire_gil) + #define __Pyx_RefNannyFinishContextNogil() + #define __Pyx_RefNannyFinishContext() + #define __Pyx_INCREF(r) Py_INCREF(r) + #define __Pyx_DECREF(r) Py_DECREF(r) + #define __Pyx_GOTREF(r) + #define __Pyx_GIVEREF(r) + #define __Pyx_XINCREF(r) Py_XINCREF(r) + #define __Pyx_XDECREF(r) Py_XDECREF(r) + #define __Pyx_XGOTREF(r) + #define __Pyx_XGIVEREF(r) +#endif +#define __Pyx_Py_XDECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; Py_XDECREF(tmp);\ + } while (0) +#define __Pyx_XDECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_XDECREF(tmp);\ + } while (0) +#define __Pyx_DECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_DECREF(tmp);\ + } while (0) +#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) +#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) + +/* PyErrExceptionMatches.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) +static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); +#else +#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) +#endif + +/* PyThreadStateGet.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; +#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; +#if PY_VERSION_HEX >= 0x030C00A6 +#define __Pyx_PyErr_Occurred() (__pyx_tstate->current_exception != NULL) +#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->current_exception ? (PyObject*) Py_TYPE(__pyx_tstate->current_exception) : (PyObject*) NULL) +#else +#define __Pyx_PyErr_Occurred() (__pyx_tstate->curexc_type != NULL) +#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->curexc_type) +#endif +#else +#define __Pyx_PyThreadState_declare +#define __Pyx_PyThreadState_assign +#define __Pyx_PyErr_Occurred() (PyErr_Occurred() != NULL) +#define __Pyx_PyErr_CurrentExceptionType() PyErr_Occurred() +#endif + +/* PyErrFetchRestore.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) +#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A6 +#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) +#else +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#endif +#else +#define __Pyx_PyErr_Clear() PyErr_Clear() +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) +#endif + +/* PyObjectGetAttrStr.proto */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); +#else +#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) +#endif + +/* PyObjectGetAttrStrNoError.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name); + +/* GetBuiltinName.proto */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name); + +/* TupleAndListFromArray.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n); +static CYTHON_INLINE PyObject* __Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n); +#endif + +/* IncludeStringH.proto */ +#include + +/* BytesEquals.proto */ +static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals); + +/* UnicodeEquals.proto */ +static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals); + +/* fastcall.proto */ +#if CYTHON_AVOID_BORROWED_REFS + #define __Pyx_Arg_VARARGS(args, i) PySequence_GetItem(args, i) +#elif CYTHON_ASSUME_SAFE_MACROS + #define __Pyx_Arg_VARARGS(args, i) PyTuple_GET_ITEM(args, i) +#else + #define __Pyx_Arg_VARARGS(args, i) PyTuple_GetItem(args, i) +#endif +#if CYTHON_AVOID_BORROWED_REFS + #define __Pyx_Arg_NewRef_VARARGS(arg) __Pyx_NewRef(arg) + #define __Pyx_Arg_XDECREF_VARARGS(arg) Py_XDECREF(arg) +#else + #define __Pyx_Arg_NewRef_VARARGS(arg) arg + #define __Pyx_Arg_XDECREF_VARARGS(arg) +#endif +#define __Pyx_NumKwargs_VARARGS(kwds) PyDict_Size(kwds) +#define __Pyx_KwValues_VARARGS(args, nargs) NULL +#define __Pyx_GetKwValue_VARARGS(kw, kwvalues, s) __Pyx_PyDict_GetItemStrWithError(kw, s) +#define __Pyx_KwargsAsDict_VARARGS(kw, kwvalues) PyDict_Copy(kw) +#if CYTHON_METH_FASTCALL + #define __Pyx_Arg_FASTCALL(args, i) args[i] + #define __Pyx_NumKwargs_FASTCALL(kwds) PyTuple_GET_SIZE(kwds) + #define __Pyx_KwValues_FASTCALL(args, nargs) ((args) + (nargs)) + static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s); +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 + CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues); + #else + #define __Pyx_KwargsAsDict_FASTCALL(kw, kwvalues) _PyStack_AsDict(kwvalues, kw) + #endif + #define __Pyx_Arg_NewRef_FASTCALL(arg) arg /* no-op, __Pyx_Arg_FASTCALL is direct and this needs + to have the same reference counting */ + #define __Pyx_Arg_XDECREF_FASTCALL(arg) +#else + #define __Pyx_Arg_FASTCALL __Pyx_Arg_VARARGS + #define __Pyx_NumKwargs_FASTCALL __Pyx_NumKwargs_VARARGS + #define __Pyx_KwValues_FASTCALL __Pyx_KwValues_VARARGS + #define __Pyx_GetKwValue_FASTCALL __Pyx_GetKwValue_VARARGS + #define __Pyx_KwargsAsDict_FASTCALL __Pyx_KwargsAsDict_VARARGS + #define __Pyx_Arg_NewRef_FASTCALL(arg) __Pyx_Arg_NewRef_VARARGS(arg) + #define __Pyx_Arg_XDECREF_FASTCALL(arg) __Pyx_Arg_XDECREF_VARARGS(arg) +#endif +#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS +#define __Pyx_ArgsSlice_VARARGS(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_VARARGS(args, start), stop - start) +#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_FASTCALL(args, start), stop - start) +#else +#define __Pyx_ArgsSlice_VARARGS(args, start, stop) PyTuple_GetSlice(args, start, stop) +#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) PyTuple_GetSlice(args, start, stop) +#endif + +/* PyDictVersioning.proto */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +#define __PYX_DICT_VERSION_INIT ((PY_UINT64_T) -1) +#define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag) +#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\ + (version_var) = __PYX_GET_DICT_VERSION(dict);\ + (cache_var) = (value); +#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\ + static PY_UINT64_T __pyx_dict_version = 0;\ + static PyObject *__pyx_dict_cached_value = NULL;\ + if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\ + (VAR) = __pyx_dict_cached_value;\ + } else {\ + (VAR) = __pyx_dict_cached_value = (LOOKUP);\ + __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\ + }\ +} +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj); +static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj); +static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version); +#else +#define __PYX_GET_DICT_VERSION(dict) (0) +#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var) +#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP); +#endif + +/* GetModuleGlobalName.proto */ +#if CYTHON_USE_DICT_VERSIONS +#define __Pyx_GetModuleGlobalName(var, name) do {\ + static PY_UINT64_T __pyx_dict_version = 0;\ + static PyObject *__pyx_dict_cached_value = NULL;\ + (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\ + (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\ + __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ +} while(0) +#define __Pyx_GetModuleGlobalNameUncached(var, name) do {\ + PY_UINT64_T __pyx_dict_version;\ + PyObject *__pyx_dict_cached_value;\ + (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ +} while(0) +static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value); +#else +#define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name) +#define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name) +static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name); +#endif + +/* PyFunctionFastCall.proto */ +#if CYTHON_FAST_PYCALL +#if !CYTHON_VECTORCALL +#define __Pyx_PyFunction_FastCall(func, args, nargs)\ + __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs); +#endif +#define __Pyx_BUILD_ASSERT_EXPR(cond)\ + (sizeof(char [1 - 2*!(cond)]) - 1) +#ifndef Py_MEMBER_SIZE +#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member) +#endif +#if !CYTHON_VECTORCALL +#if PY_VERSION_HEX >= 0x03080000 + #include "frameobject.h" +#if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API + #ifndef Py_BUILD_CORE + #define Py_BUILD_CORE 1 + #endif + #include "internal/pycore_frame.h" +#endif + #define __Pxy_PyFrame_Initialize_Offsets() + #define __Pyx_PyFrame_GetLocalsplus(frame) ((frame)->f_localsplus) +#else + static size_t __pyx_pyframe_localsplus_offset = 0; + #include "frameobject.h" + #define __Pxy_PyFrame_Initialize_Offsets()\ + ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\ + (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus))) + #define __Pyx_PyFrame_GetLocalsplus(frame)\ + (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset)) +#endif +#endif +#endif + +/* PyObjectCall.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); +#else +#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) +#endif + +/* PyObjectCallMethO.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); +#endif + +/* PyObjectFastCall.proto */ +#define __Pyx_PyObject_FastCall(func, args, nargs) __Pyx_PyObject_FastCallDict(func, args, (size_t)(nargs), NULL) +static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs); + +/* AssertionsEnabled.proto */ +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) + #define __Pyx_init_assertions_enabled() (0) + #define __pyx_assertions_enabled() (1) +#elif CYTHON_COMPILING_IN_LIMITED_API || (CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030C0000) + static int __pyx_assertions_enabled_flag; + #define __pyx_assertions_enabled() (__pyx_assertions_enabled_flag) + static int __Pyx_init_assertions_enabled(void) { + PyObject *builtins, *debug, *debug_str; + int flag; + builtins = PyEval_GetBuiltins(); + if (!builtins) goto bad; + debug_str = PyUnicode_FromStringAndSize("__debug__", 9); + if (!debug_str) goto bad; + debug = PyObject_GetItem(builtins, debug_str); + Py_DECREF(debug_str); + if (!debug) goto bad; + flag = PyObject_IsTrue(debug); + Py_DECREF(debug); + if (flag == -1) goto bad; + __pyx_assertions_enabled_flag = flag; + return 0; + bad: + __pyx_assertions_enabled_flag = 1; + return -1; + } +#else + #define __Pyx_init_assertions_enabled() (0) + #define __pyx_assertions_enabled() (!Py_OptimizeFlag) +#endif + +/* RaiseException.proto */ +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); + +/* PyIntBinop.proto */ +#if !CYTHON_COMPILING_IN_PYPY +static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check); +#else +#define __Pyx_PyInt_AddObjC(op1, op2, intval, inplace, zerodivision_check)\ + (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2)) +#endif + +/* SliceObject.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice( + PyObject* obj, Py_ssize_t cstart, Py_ssize_t cstop, + PyObject** py_start, PyObject** py_stop, PyObject** py_slice, + int has_cstart, int has_cstop, int wraparound); + +/* StrEquals.proto */ +#if PY_MAJOR_VERSION >= 3 +#define __Pyx_PyString_Equals __Pyx_PyUnicode_Equals +#else +#define __Pyx_PyString_Equals __Pyx_PyBytes_Equals +#endif + +/* GetAttr3.proto */ +static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *); + +/* PyObjectCallNoArg.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); + +/* GetTopmostException.proto */ +#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE +static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate); +#endif + +/* SaveResetException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +#else +#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) +#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) +#endif + +/* GetException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) +static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#else +static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); +#endif + +/* PyObjectLookupSpecial.proto */ +#if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS +#define __Pyx_PyObject_LookupSpecialNoError(obj, attr_name) __Pyx__PyObject_LookupSpecial(obj, attr_name, 0) +#define __Pyx_PyObject_LookupSpecial(obj, attr_name) __Pyx__PyObject_LookupSpecial(obj, attr_name, 1) +static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error); +#else +#define __Pyx_PyObject_LookupSpecialNoError(o,n) __Pyx_PyObject_GetAttrStrNoError(o,n) +#define __Pyx_PyObject_LookupSpecial(o,n) __Pyx_PyObject_GetAttrStr(o,n) +#endif + +/* PyObjectSetAttrStr.proto */ +#if CYTHON_USE_TYPE_SLOTS +#define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o, n, NULL) +static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value); +#else +#define __Pyx_PyObject_DelAttrStr(o,n) PyObject_DelAttr(o,n) +#define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v) +#endif + +/* RaiseUnboundLocalError.proto */ +static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname); + +/* ExtTypeTest.proto */ +static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); + +/* SwapException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_ExceptionSwap(type, value, tb) __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#else +static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb); +#endif + +/* RaiseArgTupleInvalid.proto */ +static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, + Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); + +/* KeywordStringCheck.proto */ +static int __Pyx_CheckKeywordStrings(PyObject *kw, const char* function_name, int kw_allowed); + +/* RaiseDoubleKeywords.proto */ +static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); + +/* ParseKeywords.proto */ +static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject *const *kwvalues, + PyObject **argnames[], + PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, + const char* function_name); + +/* RaiseUnexpectedTypeError.proto */ +static int __Pyx_RaiseUnexpectedTypeError(const char *expected, PyObject *obj); + +/* ArgTypeTest.proto */ +#define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\ + ((likely(__Pyx_IS_TYPE(obj, type) | (none_allowed && (obj == Py_None)))) ? 1 :\ + __Pyx__ArgTypeTest(obj, type, name, exact)) +static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact); + +/* DictGetItem.proto */ +#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY +static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key); +#define __Pyx_PyObject_Dict_GetItem(obj, name)\ + (likely(PyDict_CheckExact(obj)) ?\ + __Pyx_PyDict_GetItem(obj, name) : PyObject_GetItem(obj, name)) +#else +#define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key) +#define __Pyx_PyObject_Dict_GetItem(obj, name) PyObject_GetItem(obj, name) +#endif + +/* GetItemInt.proto */ +#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\ + (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ + __Pyx_GetItemInt_Generic(o, to_py_func(i)))) +#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ + (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck); +#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ + (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck); +static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, + int is_list, int wraparound, int boundscheck); + +/* RaiseTooManyValuesToUnpack.proto */ +static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected); + +/* RaiseNeedMoreValuesToUnpack.proto */ +static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index); + +/* IterFinish.proto */ +static CYTHON_INLINE int __Pyx_IterFinish(void); + +/* UnpackItemEndCheck.proto */ +static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected); + +/* PyObjectCallOneArg.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); + +/* PySequenceContains.proto */ +static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) { + int result = PySequence_Contains(seq, item); + return unlikely(result < 0) ? result : (result == (eq == Py_EQ)); +} + +/* PyObjectGetMethod.proto */ +static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method); + +/* PyObjectCallMethod0.proto */ +static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name); + +/* RaiseNoneIterError.proto */ +static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void); + +/* UnpackTupleError.proto */ +static void __Pyx_UnpackTupleError(PyObject *, Py_ssize_t index); + +/* UnpackTuple2.proto */ +#define __Pyx_unpack_tuple2(tuple, value1, value2, is_tuple, has_known_size, decref_tuple)\ + (likely(is_tuple || PyTuple_Check(tuple)) ?\ + (likely(has_known_size || PyTuple_GET_SIZE(tuple) == 2) ?\ + __Pyx_unpack_tuple2_exact(tuple, value1, value2, decref_tuple) :\ + (__Pyx_UnpackTupleError(tuple, 2), -1)) :\ + __Pyx_unpack_tuple2_generic(tuple, value1, value2, has_known_size, decref_tuple)) +static CYTHON_INLINE int __Pyx_unpack_tuple2_exact( + PyObject* tuple, PyObject** value1, PyObject** value2, int decref_tuple); +static int __Pyx_unpack_tuple2_generic( + PyObject* tuple, PyObject** value1, PyObject** value2, int has_known_size, int decref_tuple); + +/* dict_iter.proto */ +static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* dict, int is_dict, PyObject* method_name, + Py_ssize_t* p_orig_length, int* p_is_dict); +static CYTHON_INLINE int __Pyx_dict_iter_next(PyObject* dict_or_iter, Py_ssize_t orig_length, Py_ssize_t* ppos, + PyObject** pkey, PyObject** pvalue, PyObject** pitem, int is_dict); + +/* PyDictContains.proto */ +static CYTHON_INLINE int __Pyx_PyDict_ContainsTF(PyObject* item, PyObject* dict, int eq) { + int result = PyDict_Contains(dict, item); + return unlikely(result < 0) ? result : (result == (eq == Py_EQ)); +} + +/* Import.proto */ +static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); + +/* ImportFrom.proto */ +static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); + +/* GetAttr.proto */ +static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *); + +/* HasAttr.proto */ +static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *); + +/* IncludeStructmemberH.proto */ +#include + +/* FixUpExtensionType.proto */ +#if CYTHON_USE_TYPE_SPECS +static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type); +#endif + +/* ValidateBasesTuple.proto */ +#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS +static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases); +#endif + +/* PyType_Ready.proto */ +CYTHON_UNUSED static int __Pyx_PyType_Ready(PyTypeObject *t); + +/* PyObject_GenericGetAttrNoDict.proto */ +#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name); +#else +#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr +#endif + +/* PyObject_GenericGetAttr.proto */ +#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name); +#else +#define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr +#endif + +/* SetVTable.proto */ +static int __Pyx_SetVtable(PyTypeObject* typeptr , void* vtable); + +/* GetVTable.proto */ +static void* __Pyx_GetVtable(PyTypeObject *type); + +/* MergeVTables.proto */ +#if !CYTHON_COMPILING_IN_LIMITED_API +static int __Pyx_MergeVtables(PyTypeObject *type); +#endif + +/* SetupReduce.proto */ +#if !CYTHON_COMPILING_IN_LIMITED_API +static int __Pyx_setup_reduce(PyObject* type_obj); +#endif + +/* TypeImport.proto */ +#ifndef __PYX_HAVE_RT_ImportType_proto_3_0_11 +#define __PYX_HAVE_RT_ImportType_proto_3_0_11 +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L +#include +#endif +#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || __cplusplus >= 201103L +#define __PYX_GET_STRUCT_ALIGNMENT_3_0_11(s) alignof(s) +#else +#define __PYX_GET_STRUCT_ALIGNMENT_3_0_11(s) sizeof(void*) +#endif +enum __Pyx_ImportType_CheckSize_3_0_11 { + __Pyx_ImportType_CheckSize_Error_3_0_11 = 0, + __Pyx_ImportType_CheckSize_Warn_3_0_11 = 1, + __Pyx_ImportType_CheckSize_Ignore_3_0_11 = 2 +}; +static PyTypeObject *__Pyx_ImportType_3_0_11(PyObject* module, const char *module_name, const char *class_name, size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_0_11 check_size); +#endif + +/* ImportDottedModule.proto */ +static PyObject *__Pyx_ImportDottedModule(PyObject *name, PyObject *parts_tuple); +#if PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx_ImportDottedModule_WalkParts(PyObject *module, PyObject *name, PyObject *parts_tuple); +#endif + +/* FetchSharedCythonModule.proto */ +static PyObject *__Pyx_FetchSharedCythonABIModule(void); + +/* FetchCommonType.proto */ +#if !CYTHON_USE_TYPE_SPECS +static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); +#else +static PyTypeObject* __Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases); +#endif + +/* PyMethodNew.proto */ +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { + PyObject *typesModule=NULL, *methodType=NULL, *result=NULL; + CYTHON_UNUSED_VAR(typ); + if (!self) + return __Pyx_NewRef(func); + typesModule = PyImport_ImportModule("types"); + if (!typesModule) return NULL; + methodType = PyObject_GetAttrString(typesModule, "MethodType"); + Py_DECREF(typesModule); + if (!methodType) return NULL; + result = PyObject_CallFunctionObjArgs(methodType, func, self, NULL); + Py_DECREF(methodType); + return result; +} +#elif PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { + CYTHON_UNUSED_VAR(typ); + if (!self) + return __Pyx_NewRef(func); + return PyMethod_New(func, self); +} +#else + #define __Pyx_PyMethod_New PyMethod_New +#endif + +/* PyVectorcallFastCallDict.proto */ +#if CYTHON_METH_FASTCALL +static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw); +#endif + +/* CythonFunctionShared.proto */ +#define __Pyx_CyFunction_USED +#define __Pyx_CYFUNCTION_STATICMETHOD 0x01 +#define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 +#define __Pyx_CYFUNCTION_CCLASS 0x04 +#define __Pyx_CYFUNCTION_COROUTINE 0x08 +#define __Pyx_CyFunction_GetClosure(f)\ + (((__pyx_CyFunctionObject *) (f))->func_closure) +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_CyFunction_GetClassObj(f)\ + (((__pyx_CyFunctionObject *) (f))->func_classobj) +#else + #define __Pyx_CyFunction_GetClassObj(f)\ + ((PyObject*) ((PyCMethodObject *) (f))->mm_class) +#endif +#define __Pyx_CyFunction_SetClassObj(f, classobj)\ + __Pyx__CyFunction_SetClassObj((__pyx_CyFunctionObject *) (f), (classobj)) +#define __Pyx_CyFunction_Defaults(type, f)\ + ((type *)(((__pyx_CyFunctionObject *) (f))->defaults)) +#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\ + ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g) +typedef struct { +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject_HEAD + PyObject *func; +#elif PY_VERSION_HEX < 0x030900B1 + PyCFunctionObject func; +#else + PyCMethodObject func; +#endif +#if CYTHON_BACKPORT_VECTORCALL + __pyx_vectorcallfunc func_vectorcall; +#endif +#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API + PyObject *func_weakreflist; +#endif + PyObject *func_dict; + PyObject *func_name; + PyObject *func_qualname; + PyObject *func_doc; + PyObject *func_globals; + PyObject *func_code; + PyObject *func_closure; +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + PyObject *func_classobj; +#endif + void *defaults; + int defaults_pyobjects; + size_t defaults_size; + int flags; + PyObject *defaults_tuple; + PyObject *defaults_kwdict; + PyObject *(*defaults_getter)(PyObject *); + PyObject *func_annotations; + PyObject *func_is_coroutine; +} __pyx_CyFunctionObject; +#undef __Pyx_CyOrPyCFunction_Check +#define __Pyx_CyFunction_Check(obj) __Pyx_TypeCheck(obj, __pyx_CyFunctionType) +#define __Pyx_CyOrPyCFunction_Check(obj) __Pyx_TypeCheck2(obj, __pyx_CyFunctionType, &PyCFunction_Type) +#define __Pyx_CyFunction_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CyFunctionType) +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc); +#undef __Pyx_IsSameCFunction +#define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCyOrCFunction(func, cfunc) +static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject* op, PyMethodDef *ml, + int flags, PyObject* qualname, + PyObject *closure, + PyObject *module, PyObject *globals, + PyObject* code); +static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj); +static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m, + size_t size, + int pyobjects); +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m, + PyObject *tuple); +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, + PyObject *dict); +static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, + PyObject *dict); +static int __pyx_CyFunction_init(PyObject *module); +#if CYTHON_METH_FASTCALL +static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +#if CYTHON_BACKPORT_VECTORCALL +#define __Pyx_CyFunction_func_vectorcall(f) (((__pyx_CyFunctionObject*)f)->func_vectorcall) +#else +#define __Pyx_CyFunction_func_vectorcall(f) (((PyCFunctionObject*)f)->vectorcall) +#endif +#endif + +/* CythonFunction.proto */ +static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, + int flags, PyObject* qualname, + PyObject *closure, + PyObject *module, PyObject *globals, + PyObject* code); + +/* CLineInTraceback.proto */ +#ifdef CYTHON_CLINE_IN_TRACEBACK +#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) +#else +static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); +#endif + +/* CodeObjectCache.proto */ +#if !CYTHON_COMPILING_IN_LIMITED_API +typedef struct { + PyCodeObject* code_object; + int code_line; +} __Pyx_CodeObjectCacheEntry; +struct __Pyx_CodeObjectCache { + int count; + int max_count; + __Pyx_CodeObjectCacheEntry* entries; +}; +static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; +static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); +static PyCodeObject *__pyx_find_code_object(int code_line); +static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); +#endif + +/* AddTraceback.proto */ +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename); + +/* GCCDiagnostics.proto */ +#if !defined(__INTEL_COMPILER) && defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) +#define __Pyx_HAS_GCC_DIAGNOSTIC +#endif + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); + +/* CIntFromPy.proto */ +static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); + +/* CIntFromPy.proto */ +static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); + +/* FormatTypeName.proto */ +#if CYTHON_COMPILING_IN_LIMITED_API +typedef PyObject *__Pyx_TypeName; +#define __Pyx_FMT_TYPENAME "%U" +static __Pyx_TypeName __Pyx_PyType_GetName(PyTypeObject* tp); +#define __Pyx_DECREF_TypeName(obj) Py_XDECREF(obj) +#else +typedef const char *__Pyx_TypeName; +#define __Pyx_FMT_TYPENAME "%.200s" +#define __Pyx_PyType_GetName(tp) ((tp)->tp_name) +#define __Pyx_DECREF_TypeName(obj) +#endif + +/* FastTypeChecks.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) +#define __Pyx_TypeCheck2(obj, type1, type2) __Pyx_IsAnySubtype2(Py_TYPE(obj), (PyTypeObject *)type1, (PyTypeObject *)type2) +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); +static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); +#else +#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) +#define __Pyx_TypeCheck2(obj, type1, type2) (PyObject_TypeCheck(obj, (PyTypeObject *)type1) || PyObject_TypeCheck(obj, (PyTypeObject *)type2)) +#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) +#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) +#endif +#define __Pyx_PyErr_ExceptionMatches2(err1, err2) __Pyx_PyErr_GivenExceptionMatches2(__Pyx_PyErr_CurrentExceptionType(), err1, err2) +#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) + +/* CheckBinaryVersion.proto */ +static unsigned long __Pyx_get_runtime_version(void); +static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer); + +/* InitStrings.proto */ +static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); + +/* #### Code section: module_declarations ### */ +static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_initialize(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self, PyFrameObject *__pyx_v_frame_obj); /* proto*/ +static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_initialize_if_possible(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self); /* proto*/ +static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_compute_force_stay_in_untraced_mode(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self, PyObject *__pyx_v_breakpoints, int __pyx_skip_dispatch); /* proto*/ + +/* Module declarations from "cpython.mem" */ + +/* Module declarations from "_pydevd_bundle.pydevd_cython" */ + +/* Module declarations from "_pydevd_frame_eval.pydevd_frame_evaluator" */ +static int __pyx_v_18_pydevd_frame_eval_22pydevd_frame_evaluator__code_extra_index; +static int __pyx_v_18_pydevd_frame_eval_22pydevd_frame_evaluator_IS_PY_39_OWNARDS; +static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_thread_info(PyFrameObject *); /*proto*/ +static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_func_code_info(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *, PyFrameObject *, PyCodeObject *); /*proto*/ +static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_generate_code_with_breakpoints(PyObject *, PyObject *); /*proto*/ +static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytecode_while_frame_eval_38(PyFrameObject *, int); /*proto*/ +static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytecode_while_frame_eval_39(PyThreadState *, PyFrameObject *, int); /*proto*/ +static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unpickle_ThreadInfo__set_state(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *, PyObject *); /*proto*/ +static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unpickle_FuncCodeInfo__set_state(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *, PyObject *); /*proto*/ +static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unpickle__CodeLineInfo__set_state(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *, PyObject *); /*proto*/ +static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unpickle__CacheValue__set_state(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *, PyObject *); /*proto*/ +/* #### Code section: typeinfo ### */ +/* #### Code section: before_global_var ### */ +#define __Pyx_MODULE_NAME "_pydevd_frame_eval.pydevd_frame_evaluator" +extern int __pyx_module_is_main__pydevd_frame_eval__pydevd_frame_evaluator; +int __pyx_module_is_main__pydevd_frame_eval__pydevd_frame_evaluator = 0; + +/* Implementation of "_pydevd_frame_eval.pydevd_frame_evaluator" */ +/* #### Code section: global_var ### */ +static PyObject *__pyx_builtin_AssertionError; +static PyObject *__pyx_builtin_AttributeError; +static PyObject *__pyx_builtin_min; +static PyObject *__pyx_builtin_max; +/* #### Code section: string_decls ### */ +static const char __pyx_k_[] = "/"; +static const char __pyx_k__2[] = "\\"; +static const char __pyx_k__3[] = "."; +static const char __pyx_k__5[] = ""; +static const char __pyx_k_gc[] = "gc"; +static const char __pyx_k__10[] = "*"; +static const char __pyx_k__47[] = "?"; +static const char __pyx_k_arg[] = "arg"; +static const char __pyx_k_dis[] = "dis"; +static const char __pyx_k_get[] = "get"; +static const char __pyx_k_max[] = "max"; +static const char __pyx_k_min[] = "min"; +static const char __pyx_k_new[] = "__new__"; +static const char __pyx_k_obj[] = "obj"; +static const char __pyx_k_run[] = "run"; +static const char __pyx_k_sys[] = "sys"; +static const char __pyx_k_call[] = "__call__"; +static const char __pyx_k_dict[] = "__dict__"; +static const char __pyx_k_exec[] = "_exec"; +static const char __pyx_k_exit[] = "__exit__"; +static const char __pyx_k_line[] = "line"; +static const char __pyx_k_main[] = "main"; +static const char __pyx_k_name[] = "__name__"; +static const char __pyx_k_self[] = "self"; +static const char __pyx_k_spec[] = "__spec__"; +static const char __pyx_k_test[] = "__test__"; +static const char __pyx_k_cache[] = "_cache"; +static const char __pyx_k_enter[] = "__enter__"; +static const char __pyx_k_event[] = "event"; +static const char __pyx_k_frame[] = "frame"; +static const char __pyx_k_local[] = "local"; +static const char __pyx_k_mtime[] = "mtime"; +static const char __pyx_k_rfind[] = "rfind"; +static const char __pyx_k_state[] = "state"; +static const char __pyx_k_active[] = "_active"; +static const char __pyx_k_call_2[] = "call"; +static const char __pyx_k_dict_2[] = "_dict"; +static const char __pyx_k_enable[] = "enable"; +static const char __pyx_k_f_back[] = "f_back"; +static const char __pyx_k_import[] = "__import__"; +static const char __pyx_k_main_2[] = "__main__"; +static const char __pyx_k_offset[] = "offset"; +static const char __pyx_k_pickle[] = "pickle"; +static const char __pyx_k_plugin[] = "plugin"; +static const char __pyx_k_pydevd[] = "pydevd"; +static const char __pyx_k_reduce[] = "__reduce__"; +static const char __pyx_k_return[] = "return"; +static const char __pyx_k_thread[] = "thread"; +static const char __pyx_k_update[] = "update"; +static const char __pyx_k_disable[] = "disable"; +static const char __pyx_k_f_trace[] = "f_trace"; +static const char __pyx_k_SetTrace[] = "SetTrace"; +static const char __pyx_k_can_skip[] = "can_skip"; +static const char __pyx_k_code_obj[] = "code_obj"; +static const char __pyx_k_getstate[] = "__getstate__"; +static const char __pyx_k_pyx_type[] = "__pyx_type"; +static const char __pyx_k_setstate[] = "__setstate__"; +static const char __pyx_k_bootstrap[] = "__bootstrap"; +static const char __pyx_k_decref_py[] = "decref_py"; +static const char __pyx_k_get_ident[] = "_get_ident"; +static const char __pyx_k_isenabled[] = "isenabled"; +static const char __pyx_k_last_line[] = "last_line"; +static const char __pyx_k_pyx_state[] = "__pyx_state"; +static const char __pyx_k_reduce_ex[] = "__reduce_ex__"; +static const char __pyx_k_threading[] = "threading"; +static const char __pyx_k_CacheValue[] = "_CacheValue"; +static const char __pyx_k_ThreadInfo[] = "ThreadInfo"; +static const char __pyx_k_first_line[] = "first_line"; +static const char __pyx_k_global_dbg[] = "global_dbg"; +static const char __pyx_k_issuperset[] = "issuperset"; +static const char __pyx_k_pyx_result[] = "__pyx_result"; +static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__"; +static const char __pyx_k_DebugHelper[] = "DebugHelper"; +static const char __pyx_k_PickleError[] = "PickleError"; +static const char __pyx_k_bootstrap_2[] = "_bootstrap"; +static const char __pyx_k_breakpoints[] = "breakpoints"; +static const char __pyx_k_code_obj_py[] = "code_obj_py"; +static const char __pyx_k_get_ident_2[] = "get_ident"; +static const char __pyx_k_thread_info[] = "thread_info"; +static const char __pyx_k_CodeLineInfo[] = "_CodeLineInfo"; +static const char __pyx_k_FuncCodeInfo[] = "FuncCodeInfo"; +static const char __pyx_k_initializing[] = "_initializing"; +static const char __pyx_k_intersection[] = "intersection"; +static const char __pyx_k_is_coroutine[] = "_is_coroutine"; +static const char __pyx_k_pydev_monkey[] = "pydev_monkey"; +static const char __pyx_k_pyx_checksum[] = "__pyx_checksum"; +static const char __pyx_k_stringsource[] = ""; +static const char __pyx_k_use_setstate[] = "use_setstate"; +static const char __pyx_k_version_info[] = "version_info"; +static const char __pyx_k_get_file_type[] = "get_file_type"; +static const char __pyx_k_reduce_cython[] = "__reduce_cython__"; +static const char __pyx_k_thread_active[] = "_thread_active"; +static const char __pyx_k_AssertionError[] = "AssertionError"; +static const char __pyx_k_AttributeError[] = "AttributeError"; +static const char __pyx_k_code_line_info[] = "code_line_info"; +static const char __pyx_k_current_thread[] = "current_thread"; +static const char __pyx_k_findlinestarts[] = "findlinestarts"; +static const char __pyx_k_line_to_offset[] = "line_to_offset"; +static const char __pyx_k_pydevd_tracing[] = "pydevd_tracing"; +static const char __pyx_k_set_trace_func[] = "set_trace_func"; +static const char __pyx_k_trace_dispatch[] = "trace_dispatch"; +static const char __pyx_k_additional_info[] = "additional_info"; +static const char __pyx_k_bootstrap_inner[] = "__bootstrap_inner"; +static const char __pyx_k_frame_eval_func[] = "frame_eval_func"; +static const char __pyx_k_pyx_PickleError[] = "__pyx_PickleError"; +static const char __pyx_k_setstate_cython[] = "__setstate_cython__"; +static const char __pyx_k_stop_frame_eval[] = "stop_frame_eval"; +static const char __pyx_k_bootstrap_inner_2[] = "_bootstrap_inner"; +static const char __pyx_k_pydevd_file_utils[] = "pydevd_file_utils"; +static const char __pyx_k_signature_factory[] = "signature_factory"; +static const char __pyx_k_thread_local_info[] = "_thread_local_info"; +static const char __pyx_k_asyncio_coroutines[] = "asyncio.coroutines"; +static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; +static const char __pyx_k_get_code_line_info[] = "_get_code_line_info"; +static const char __pyx_k_get_thread_info_py[] = "get_thread_info_py"; +static const char __pyx_k_show_return_values[] = "show_return_values"; +static const char __pyx_k_get_cache_file_type[] = "get_cache_file_type"; +static const char __pyx_k_update_globals_dict[] = "update_globals_dict"; +static const char __pyx_k_GlobalDebuggerHolder[] = "GlobalDebuggerHolder"; +static const char __pyx_k_dummy_trace_dispatch[] = "dummy_trace_dispatch"; +static const char __pyx_k_dummy_tracing_holder[] = "dummy_tracing_holder"; +static const char __pyx_k_insert_pydevd_breaks[] = "insert_pydevd_breaks"; +static const char __pyx_k_get_func_code_info_py[] = "get_func_code_info_py"; +static const char __pyx_k_has_plugin_line_breaks[] = "has_plugin_line_breaks"; +static const char __pyx_k_is_pydev_daemon_thread[] = "is_pydev_daemon_thread"; +static const char __pyx_k_clear_thread_local_info[] = "clear_thread_local_info"; +static const char __pyx_k_pyx_unpickle_ThreadInfo[] = "__pyx_unpickle_ThreadInfo"; +static const char __pyx_k_breakpoints_hit_at_lines[] = "breakpoints_hit_at_lines"; +static const char __pyx_k_pyx_unpickle__CacheValue[] = "__pyx_unpickle__CacheValue"; +static const char __pyx_k_pyx_unpickle_FuncCodeInfo[] = "__pyx_unpickle_FuncCodeInfo"; +static const char __pyx_k_CacheValue___reduce_cython[] = "_CacheValue.__reduce_cython__"; +static const char __pyx_k_ThreadInfo___reduce_cython[] = "ThreadInfo.__reduce_cython__"; +static const char __pyx_k_break_on_caught_exceptions[] = "break_on_caught_exceptions"; +static const char __pyx_k_pyx_unpickle__CodeLineInfo[] = "__pyx_unpickle__CodeLineInfo"; +static const char __pyx_k_get_cached_code_obj_info_py[] = "get_cached_code_obj_info_py"; +static const char __pyx_k_has_plugin_exception_breaks[] = "has_plugin_exception_breaks"; +static const char __pyx_k_CacheValue___setstate_cython[] = "_CacheValue.__setstate_cython__"; +static const char __pyx_k_CodeLineInfo___reduce_cython[] = "_CodeLineInfo.__reduce_cython__"; +static const char __pyx_k_FuncCodeInfo___reduce_cython[] = "FuncCodeInfo.__reduce_cython__"; +static const char __pyx_k_ThreadInfo___setstate_cython[] = "ThreadInfo.__setstate_cython__"; +static const char __pyx_k_NORM_PATHS_AND_BASE_CONTAINER[] = "NORM_PATHS_AND_BASE_CONTAINER"; +static const char __pyx_k_CodeLineInfo___setstate_cython[] = "_CodeLineInfo.__setstate_cython__"; +static const char __pyx_k_FuncCodeInfo___setstate_cython[] = "FuncCodeInfo.__setstate_cython__"; +static const char __pyx_k_pydevd_bundle_pydevd_constants[] = "_pydevd_bundle.pydevd_constants"; +static const char __pyx_k_pydevd_frame_eval_pydevd_frame[] = "_pydevd_frame_eval.pydevd_frame_tracing"; +static const char __pyx_k_CacheValue_compute_force_stay_i[] = "_CacheValue.compute_force_stay_in_untraced_mode"; +static const char __pyx_k_If_a_code_object_is_cached_that[] = "If a code object is cached, that same code object must be reused."; +static const char __pyx_k_get_abs_path_real_path_and_base[] = "get_abs_path_real_path_and_base_from_frame"; +static const char __pyx_k_pydev_bundle__pydev_saved_modul[] = "_pydev_bundle._pydev_saved_modules"; +static const char __pyx_k_pydevd_bundle_pydevd_additional[] = "_pydevd_bundle.pydevd_additional_thread_info"; +static const char __pyx_k_pydevd_bundle_pydevd_trace_disp[] = "_pydevd_bundle.pydevd_trace_dispatch"; +static const char __pyx_k_pydevd_frame_eval_pydevd_modify[] = "_pydevd_frame_eval.pydevd_modify_bytecode"; +static const char __pyx_k_set_additional_thread_info_lock[] = "_set_additional_thread_info_lock"; +static const char __pyx_k_Incompatible_checksums_0x_x_vs_0[] = "Incompatible checksums (0x%x vs (0xe535b68, 0xb8148ba, 0x0af4089) = (_can_create_dummy_thread, additional_info, force_stay_in_untraced_mode, fully_initialized, inside_frame_eval, is_pydevd_thread, thread_trace_func))"; +static const char __pyx_k_break_on_user_uncaught_exception[] = "break_on_user_uncaught_exceptions"; +static const char __pyx_k_compute_force_stay_in_untraced_m[] = "compute_force_stay_in_untraced_mode"; +static const char __pyx_k_fix_top_level_trace_and_get_trac[] = "fix_top_level_trace_and_get_trace_func"; +static const char __pyx_k_function_breakpoint_name_to_brea[] = "function_breakpoint_name_to_breakpoint"; +static const char __pyx_k_generate_code_with_breakpoints_p[] = "generate_code_with_breakpoints_py"; +static const char __pyx_k_pydevd_frame_eval_pydevd_frame_2[] = "_pydevd_frame_eval/pydevd_frame_evaluator.pyx"; +static const char __pyx_k_pydevd_frame_eval_pydevd_frame_3[] = "_pydevd_frame_eval.pydevd_frame_evaluator"; +static const char __pyx_k_Incompatible_checksums_0x_x_vs_0_2[] = "Incompatible checksums (0x%x vs (0x450d2d6, 0x956dcaa, 0xb3ee05d) = (always_skip_code, breakpoint_found, breakpoints_mtime, canonical_normalized_filename, co_filename, co_name, new_code))"; +static const char __pyx_k_Incompatible_checksums_0x_x_vs_0_3[] = "Incompatible checksums (0x%x vs (0x5a9bcd5, 0x0267473, 0x3fbbd02) = (first_line, last_line, line_to_offset))"; +static const char __pyx_k_Incompatible_checksums_0x_x_vs_0_4[] = "Incompatible checksums (0x%x vs (0xac42a46, 0xedff7c3, 0x3d481b9) = (breakpoints_hit_at_lines, code_line_info, code_lines_as_set, code_obj_py))"; +/* #### Code section: decls ### */ +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_clear_thread_local_info(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_15additional_info___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self); /* proto */ +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_15additional_info_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_15additional_info_4__del__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_16is_pydevd_thread___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self); /* proto */ +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_16is_pydevd_thread_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17inside_frame_eval___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self); /* proto */ +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17inside_frame_eval_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17fully_initialized___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self); /* proto */ +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17fully_initialized_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17thread_trace_func___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self); /* proto */ +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17thread_trace_func_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17thread_trace_func_4__del__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_27force_stay_in_untraced_mode___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self); /* proto */ +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_27force_stay_in_untraced_mode_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo___reduce_cython__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_2__setstate_cython__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */ +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo___init__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_11co_filename___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self); /* proto */ +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_11co_filename_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_11co_filename_4__del__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_7co_name___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self); /* proto */ +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_7co_name_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_7co_name_4__del__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_29canonical_normalized_filename___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self); /* proto */ +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_29canonical_normalized_filename_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_29canonical_normalized_filename_4__del__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_16breakpoint_found___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self); /* proto */ +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_16breakpoint_found_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_8new_code___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self); /* proto */ +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_8new_code_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_8new_code_4__del__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_17breakpoints_mtime___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self); /* proto */ +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_17breakpoints_mtime_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_2__reduce_cython__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_4__setstate_cython__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */ +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_2dummy_trace_dispatch(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_frame, PyObject *__pyx_v_event, PyObject *__pyx_v_arg); /* proto */ +static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_4get_thread_info_py(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_6decref_py(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */ +static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_8get_func_code_info_py(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_thread_info, PyObject *__pyx_v_frame, PyObject *__pyx_v_code_obj); /* proto */ +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo___init__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *__pyx_v_self, PyObject *__pyx_v_line_to_offset, int __pyx_v_first_line, int __pyx_v_last_line); /* proto */ +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_14line_to_offset___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *__pyx_v_self); /* proto */ +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_14line_to_offset_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_14line_to_offset_4__del__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_10first_line___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *__pyx_v_self); /* proto */ +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_10first_line_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_9last_line___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *__pyx_v_self); /* proto */ +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_9last_line_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_2__reduce_cython__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_4__setstate_cython__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */ +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10_get_code_line_info(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_code_obj); /* proto */ +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12get_cached_code_obj_info_py(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_code_obj_py); /* proto */ +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue___init__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self, PyObject *__pyx_v_code_obj_py, struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *__pyx_v_code_line_info, PyObject *__pyx_v_breakpoints_hit_at_lines); /* proto */ +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_2compute_force_stay_in_untraced_mode(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self, PyObject *__pyx_v_breakpoints); /* proto */ +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_11code_obj_py___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self); /* proto */ +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_11code_obj_py_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_11code_obj_py_4__del__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_14code_line_info___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self); /* proto */ +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_14code_line_info_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_14code_line_info_4__del__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_24breakpoints_hit_at_lines___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self); /* proto */ +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_24breakpoints_hit_at_lines_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_24breakpoints_hit_at_lines_4__del__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_17code_lines_as_set___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self); /* proto */ +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_17code_lines_as_set_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_17code_lines_as_set_4__del__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_4__reduce_cython__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_6__setstate_cython__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */ +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_14generate_code_with_breakpoints_py(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_code_obj_py, PyObject *__pyx_v_breakpoints); /* proto */ +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_16frame_eval_func(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_18stop_frame_eval(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_20__pyx_unpickle_ThreadInfo(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_22__pyx_unpickle_FuncCodeInfo(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_24__pyx_unpickle__CodeLineInfo(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_26__pyx_unpickle__CacheValue(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ +static PyObject *__pyx_tp_new_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +/* #### Code section: late_includes ### */ +/* #### Code section: module_state ### */ +typedef struct { + PyObject *__pyx_d; + PyObject *__pyx_b; + PyObject *__pyx_cython_runtime; + PyObject *__pyx_empty_tuple; + PyObject *__pyx_empty_bytes; + PyObject *__pyx_empty_unicode; + #ifdef __Pyx_CyFunction_USED + PyTypeObject *__pyx_CyFunctionType; + #endif + #ifdef __Pyx_FusedFunction_USED + PyTypeObject *__pyx_FusedFunctionType; + #endif + #ifdef __Pyx_Generator_USED + PyTypeObject *__pyx_GeneratorType; + #endif + #ifdef __Pyx_IterableCoroutine_USED + PyTypeObject *__pyx_IterableCoroutineType; + #endif + #ifdef __Pyx_Coroutine_USED + PyTypeObject *__pyx_CoroutineAwaitType; + #endif + #ifdef __Pyx_Coroutine_USED + PyTypeObject *__pyx_CoroutineType; + #endif + #if CYTHON_USE_MODULE_STATE + #endif + #if CYTHON_USE_MODULE_STATE + #endif + PyTypeObject *__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo; + #if CYTHON_USE_MODULE_STATE + PyObject *__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo; + PyObject *__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo; + PyObject *__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo; + PyObject *__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue; + #endif + PyTypeObject *__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo; + PyTypeObject *__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo; + PyTypeObject *__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo; + PyTypeObject *__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue; + PyObject *__pyx_kp_s_; + PyObject *__pyx_n_s_AssertionError; + PyObject *__pyx_n_s_AttributeError; + PyObject *__pyx_n_s_CacheValue; + PyObject *__pyx_n_s_CacheValue___reduce_cython; + PyObject *__pyx_n_s_CacheValue___setstate_cython; + PyObject *__pyx_n_s_CacheValue_compute_force_stay_i; + PyObject *__pyx_n_s_CodeLineInfo; + PyObject *__pyx_n_s_CodeLineInfo___reduce_cython; + PyObject *__pyx_n_s_CodeLineInfo___setstate_cython; + PyObject *__pyx_n_s_DebugHelper; + PyObject *__pyx_n_s_FuncCodeInfo; + PyObject *__pyx_n_s_FuncCodeInfo___reduce_cython; + PyObject *__pyx_n_s_FuncCodeInfo___setstate_cython; + PyObject *__pyx_n_s_GlobalDebuggerHolder; + PyObject *__pyx_kp_s_If_a_code_object_is_cached_that; + PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0; + PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2; + PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3; + PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_4; + PyObject *__pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER; + PyObject *__pyx_n_s_PickleError; + PyObject *__pyx_n_s_SetTrace; + PyObject *__pyx_n_s_ThreadInfo; + PyObject *__pyx_n_s_ThreadInfo___reduce_cython; + PyObject *__pyx_n_s_ThreadInfo___setstate_cython; + PyObject *__pyx_n_s__10; + PyObject *__pyx_kp_s__2; + PyObject *__pyx_kp_s__3; + PyObject *__pyx_kp_u__3; + PyObject *__pyx_n_s__47; + PyObject *__pyx_kp_s__5; + PyObject *__pyx_n_s_active; + PyObject *__pyx_n_s_additional_info; + PyObject *__pyx_n_s_arg; + PyObject *__pyx_n_s_asyncio_coroutines; + PyObject *__pyx_n_s_bootstrap; + PyObject *__pyx_n_s_bootstrap_2; + PyObject *__pyx_n_s_bootstrap_inner; + PyObject *__pyx_n_s_bootstrap_inner_2; + PyObject *__pyx_n_s_break_on_caught_exceptions; + PyObject *__pyx_n_s_break_on_user_uncaught_exception; + PyObject *__pyx_n_s_breakpoints; + PyObject *__pyx_n_s_breakpoints_hit_at_lines; + PyObject *__pyx_n_s_cache; + PyObject *__pyx_n_s_call; + PyObject *__pyx_n_s_call_2; + PyObject *__pyx_n_s_can_skip; + PyObject *__pyx_n_s_clear_thread_local_info; + PyObject *__pyx_n_s_cline_in_traceback; + PyObject *__pyx_n_s_code_line_info; + PyObject *__pyx_n_s_code_obj; + PyObject *__pyx_n_s_code_obj_py; + PyObject *__pyx_n_s_compute_force_stay_in_untraced_m; + PyObject *__pyx_n_s_current_thread; + PyObject *__pyx_n_s_decref_py; + PyObject *__pyx_n_s_dict; + PyObject *__pyx_n_s_dict_2; + PyObject *__pyx_n_s_dis; + PyObject *__pyx_kp_u_disable; + PyObject *__pyx_n_s_dummy_trace_dispatch; + PyObject *__pyx_n_s_dummy_tracing_holder; + PyObject *__pyx_kp_u_enable; + PyObject *__pyx_n_s_enter; + PyObject *__pyx_n_s_event; + PyObject *__pyx_n_s_exec; + PyObject *__pyx_n_s_exit; + PyObject *__pyx_n_s_f_back; + PyObject *__pyx_n_s_f_trace; + PyObject *__pyx_n_s_findlinestarts; + PyObject *__pyx_n_s_first_line; + PyObject *__pyx_n_s_fix_top_level_trace_and_get_trac; + PyObject *__pyx_n_s_frame; + PyObject *__pyx_n_s_frame_eval_func; + PyObject *__pyx_n_s_function_breakpoint_name_to_brea; + PyObject *__pyx_kp_u_gc; + PyObject *__pyx_n_s_generate_code_with_breakpoints_p; + PyObject *__pyx_n_s_get; + PyObject *__pyx_n_s_get_abs_path_real_path_and_base; + PyObject *__pyx_n_s_get_cache_file_type; + PyObject *__pyx_n_s_get_cached_code_obj_info_py; + PyObject *__pyx_n_s_get_code_line_info; + PyObject *__pyx_n_s_get_file_type; + PyObject *__pyx_n_s_get_func_code_info_py; + PyObject *__pyx_n_s_get_ident; + PyObject *__pyx_n_s_get_ident_2; + PyObject *__pyx_n_s_get_thread_info_py; + PyObject *__pyx_n_s_getstate; + PyObject *__pyx_n_s_global_dbg; + PyObject *__pyx_n_s_has_plugin_exception_breaks; + PyObject *__pyx_n_s_has_plugin_line_breaks; + PyObject *__pyx_n_s_import; + PyObject *__pyx_n_s_initializing; + PyObject *__pyx_n_s_insert_pydevd_breaks; + PyObject *__pyx_n_s_intersection; + PyObject *__pyx_n_s_is_coroutine; + PyObject *__pyx_n_s_is_pydev_daemon_thread; + PyObject *__pyx_kp_u_isenabled; + PyObject *__pyx_n_s_issuperset; + PyObject *__pyx_n_s_last_line; + PyObject *__pyx_n_s_line; + PyObject *__pyx_n_s_line_to_offset; + PyObject *__pyx_n_s_local; + PyObject *__pyx_n_s_main; + PyObject *__pyx_n_s_main_2; + PyObject *__pyx_n_s_max; + PyObject *__pyx_n_s_min; + PyObject *__pyx_n_s_mtime; + PyObject *__pyx_n_s_name; + PyObject *__pyx_n_s_new; + PyObject *__pyx_n_s_obj; + PyObject *__pyx_n_s_offset; + PyObject *__pyx_n_s_pickle; + PyObject *__pyx_n_s_plugin; + PyObject *__pyx_n_s_pydev_bundle__pydev_saved_modul; + PyObject *__pyx_n_s_pydev_monkey; + PyObject *__pyx_n_s_pydevd; + PyObject *__pyx_n_s_pydevd_bundle_pydevd_additional; + PyObject *__pyx_n_s_pydevd_bundle_pydevd_constants; + PyObject *__pyx_n_s_pydevd_bundle_pydevd_trace_disp; + PyObject *__pyx_n_s_pydevd_file_utils; + PyObject *__pyx_n_s_pydevd_frame_eval_pydevd_frame; + PyObject *__pyx_kp_s_pydevd_frame_eval_pydevd_frame_2; + PyObject *__pyx_n_s_pydevd_frame_eval_pydevd_frame_3; + PyObject *__pyx_n_s_pydevd_frame_eval_pydevd_modify; + PyObject *__pyx_n_s_pydevd_tracing; + PyObject *__pyx_n_s_pyx_PickleError; + PyObject *__pyx_n_s_pyx_checksum; + PyObject *__pyx_n_s_pyx_result; + PyObject *__pyx_n_s_pyx_state; + PyObject *__pyx_n_s_pyx_type; + PyObject *__pyx_n_s_pyx_unpickle_FuncCodeInfo; + PyObject *__pyx_n_s_pyx_unpickle_ThreadInfo; + PyObject *__pyx_n_s_pyx_unpickle__CacheValue; + PyObject *__pyx_n_s_pyx_unpickle__CodeLineInfo; + PyObject *__pyx_n_s_pyx_vtable; + PyObject *__pyx_n_s_reduce; + PyObject *__pyx_n_s_reduce_cython; + PyObject *__pyx_n_s_reduce_ex; + PyObject *__pyx_n_s_return; + PyObject *__pyx_n_s_rfind; + PyObject *__pyx_n_s_run; + PyObject *__pyx_n_s_self; + PyObject *__pyx_n_s_set_additional_thread_info_lock; + PyObject *__pyx_n_s_set_trace_func; + PyObject *__pyx_n_s_setstate; + PyObject *__pyx_n_s_setstate_cython; + PyObject *__pyx_n_s_show_return_values; + PyObject *__pyx_n_s_signature_factory; + PyObject *__pyx_n_s_spec; + PyObject *__pyx_n_s_state; + PyObject *__pyx_n_s_stop_frame_eval; + PyObject *__pyx_kp_s_stringsource; + PyObject *__pyx_n_s_sys; + PyObject *__pyx_n_s_test; + PyObject *__pyx_n_s_thread; + PyObject *__pyx_n_s_thread_active; + PyObject *__pyx_n_s_thread_info; + PyObject *__pyx_n_s_thread_local_info; + PyObject *__pyx_n_s_threading; + PyObject *__pyx_n_s_trace_dispatch; + PyObject *__pyx_n_s_update; + PyObject *__pyx_n_s_update_globals_dict; + PyObject *__pyx_n_s_use_setstate; + PyObject *__pyx_n_s_version_info; + PyObject *__pyx_int_0; + PyObject *__pyx_int_1; + PyObject *__pyx_int_2; + PyObject *__pyx_int_3; + PyObject *__pyx_int_9; + PyObject *__pyx_int_2520179; + PyObject *__pyx_int_11485321; + PyObject *__pyx_int_64258489; + PyObject *__pyx_int_66829570; + PyObject *__pyx_int_72405718; + PyObject *__pyx_int_95010005; + PyObject *__pyx_int_156687530; + PyObject *__pyx_int_180628038; + PyObject *__pyx_int_188670045; + PyObject *__pyx_int_193022138; + PyObject *__pyx_int_240343912; + PyObject *__pyx_int_249558979; + PyObject *__pyx_tuple__4; + PyObject *__pyx_tuple__6; + PyObject *__pyx_tuple__7; + PyObject *__pyx_tuple__8; + PyObject *__pyx_tuple__9; + PyObject *__pyx_slice__37; + PyObject *__pyx_tuple__12; + PyObject *__pyx_tuple__14; + PyObject *__pyx_tuple__18; + PyObject *__pyx_tuple__21; + PyObject *__pyx_tuple__23; + PyObject *__pyx_tuple__27; + PyObject *__pyx_tuple__29; + PyObject *__pyx_tuple__31; + PyObject *__pyx_tuple__35; + PyObject *__pyx_tuple__38; + PyObject *__pyx_tuple__39; + PyObject *__pyx_tuple__42; + PyObject *__pyx_codeobj__11; + PyObject *__pyx_codeobj__13; + PyObject *__pyx_codeobj__15; + PyObject *__pyx_codeobj__16; + PyObject *__pyx_codeobj__17; + PyObject *__pyx_codeobj__19; + PyObject *__pyx_codeobj__20; + PyObject *__pyx_codeobj__22; + PyObject *__pyx_codeobj__24; + PyObject *__pyx_codeobj__25; + PyObject *__pyx_codeobj__26; + PyObject *__pyx_codeobj__28; + PyObject *__pyx_codeobj__30; + PyObject *__pyx_codeobj__32; + PyObject *__pyx_codeobj__33; + PyObject *__pyx_codeobj__34; + PyObject *__pyx_codeobj__36; + PyObject *__pyx_codeobj__40; + PyObject *__pyx_codeobj__41; + PyObject *__pyx_codeobj__43; + PyObject *__pyx_codeobj__44; + PyObject *__pyx_codeobj__45; + PyObject *__pyx_codeobj__46; +} __pyx_mstate; + +#if CYTHON_USE_MODULE_STATE +#ifdef __cplusplus +namespace { + extern struct PyModuleDef __pyx_moduledef; +} /* anonymous namespace */ +#else +static struct PyModuleDef __pyx_moduledef; +#endif + +#define __pyx_mstate(o) ((__pyx_mstate *)__Pyx_PyModule_GetState(o)) + +#define __pyx_mstate_global (__pyx_mstate(PyState_FindModule(&__pyx_moduledef))) + +#define __pyx_m (PyState_FindModule(&__pyx_moduledef)) +#else +static __pyx_mstate __pyx_mstate_global_static = +#ifdef __cplusplus + {}; +#else + {0}; +#endif +static __pyx_mstate *__pyx_mstate_global = &__pyx_mstate_global_static; +#endif +/* #### Code section: module_state_clear ### */ +#if CYTHON_USE_MODULE_STATE +static int __pyx_m_clear(PyObject *m) { + __pyx_mstate *clear_module_state = __pyx_mstate(m); + if (!clear_module_state) return 0; + Py_CLEAR(clear_module_state->__pyx_d); + Py_CLEAR(clear_module_state->__pyx_b); + Py_CLEAR(clear_module_state->__pyx_cython_runtime); + Py_CLEAR(clear_module_state->__pyx_empty_tuple); + Py_CLEAR(clear_module_state->__pyx_empty_bytes); + Py_CLEAR(clear_module_state->__pyx_empty_unicode); + #ifdef __Pyx_CyFunction_USED + Py_CLEAR(clear_module_state->__pyx_CyFunctionType); + #endif + #ifdef __Pyx_FusedFunction_USED + Py_CLEAR(clear_module_state->__pyx_FusedFunctionType); + #endif + Py_CLEAR(clear_module_state->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo); + Py_CLEAR(clear_module_state->__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo); + Py_CLEAR(clear_module_state->__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo); + Py_CLEAR(clear_module_state->__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo); + Py_CLEAR(clear_module_state->__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo); + Py_CLEAR(clear_module_state->__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo); + Py_CLEAR(clear_module_state->__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo); + Py_CLEAR(clear_module_state->__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue); + Py_CLEAR(clear_module_state->__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue); + Py_CLEAR(clear_module_state->__pyx_kp_s_); + Py_CLEAR(clear_module_state->__pyx_n_s_AssertionError); + Py_CLEAR(clear_module_state->__pyx_n_s_AttributeError); + Py_CLEAR(clear_module_state->__pyx_n_s_CacheValue); + Py_CLEAR(clear_module_state->__pyx_n_s_CacheValue___reduce_cython); + Py_CLEAR(clear_module_state->__pyx_n_s_CacheValue___setstate_cython); + Py_CLEAR(clear_module_state->__pyx_n_s_CacheValue_compute_force_stay_i); + Py_CLEAR(clear_module_state->__pyx_n_s_CodeLineInfo); + Py_CLEAR(clear_module_state->__pyx_n_s_CodeLineInfo___reduce_cython); + Py_CLEAR(clear_module_state->__pyx_n_s_CodeLineInfo___setstate_cython); + Py_CLEAR(clear_module_state->__pyx_n_s_DebugHelper); + Py_CLEAR(clear_module_state->__pyx_n_s_FuncCodeInfo); + Py_CLEAR(clear_module_state->__pyx_n_s_FuncCodeInfo___reduce_cython); + Py_CLEAR(clear_module_state->__pyx_n_s_FuncCodeInfo___setstate_cython); + Py_CLEAR(clear_module_state->__pyx_n_s_GlobalDebuggerHolder); + Py_CLEAR(clear_module_state->__pyx_kp_s_If_a_code_object_is_cached_that); + Py_CLEAR(clear_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0); + Py_CLEAR(clear_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2); + Py_CLEAR(clear_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3); + Py_CLEAR(clear_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_4); + Py_CLEAR(clear_module_state->__pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER); + Py_CLEAR(clear_module_state->__pyx_n_s_PickleError); + Py_CLEAR(clear_module_state->__pyx_n_s_SetTrace); + Py_CLEAR(clear_module_state->__pyx_n_s_ThreadInfo); + Py_CLEAR(clear_module_state->__pyx_n_s_ThreadInfo___reduce_cython); + Py_CLEAR(clear_module_state->__pyx_n_s_ThreadInfo___setstate_cython); + Py_CLEAR(clear_module_state->__pyx_n_s__10); + Py_CLEAR(clear_module_state->__pyx_kp_s__2); + Py_CLEAR(clear_module_state->__pyx_kp_s__3); + Py_CLEAR(clear_module_state->__pyx_kp_u__3); + Py_CLEAR(clear_module_state->__pyx_n_s__47); + Py_CLEAR(clear_module_state->__pyx_kp_s__5); + Py_CLEAR(clear_module_state->__pyx_n_s_active); + Py_CLEAR(clear_module_state->__pyx_n_s_additional_info); + Py_CLEAR(clear_module_state->__pyx_n_s_arg); + Py_CLEAR(clear_module_state->__pyx_n_s_asyncio_coroutines); + Py_CLEAR(clear_module_state->__pyx_n_s_bootstrap); + Py_CLEAR(clear_module_state->__pyx_n_s_bootstrap_2); + Py_CLEAR(clear_module_state->__pyx_n_s_bootstrap_inner); + Py_CLEAR(clear_module_state->__pyx_n_s_bootstrap_inner_2); + Py_CLEAR(clear_module_state->__pyx_n_s_break_on_caught_exceptions); + Py_CLEAR(clear_module_state->__pyx_n_s_break_on_user_uncaught_exception); + Py_CLEAR(clear_module_state->__pyx_n_s_breakpoints); + Py_CLEAR(clear_module_state->__pyx_n_s_breakpoints_hit_at_lines); + Py_CLEAR(clear_module_state->__pyx_n_s_cache); + Py_CLEAR(clear_module_state->__pyx_n_s_call); + Py_CLEAR(clear_module_state->__pyx_n_s_call_2); + Py_CLEAR(clear_module_state->__pyx_n_s_can_skip); + Py_CLEAR(clear_module_state->__pyx_n_s_clear_thread_local_info); + Py_CLEAR(clear_module_state->__pyx_n_s_cline_in_traceback); + Py_CLEAR(clear_module_state->__pyx_n_s_code_line_info); + Py_CLEAR(clear_module_state->__pyx_n_s_code_obj); + Py_CLEAR(clear_module_state->__pyx_n_s_code_obj_py); + Py_CLEAR(clear_module_state->__pyx_n_s_compute_force_stay_in_untraced_m); + Py_CLEAR(clear_module_state->__pyx_n_s_current_thread); + Py_CLEAR(clear_module_state->__pyx_n_s_decref_py); + Py_CLEAR(clear_module_state->__pyx_n_s_dict); + Py_CLEAR(clear_module_state->__pyx_n_s_dict_2); + Py_CLEAR(clear_module_state->__pyx_n_s_dis); + Py_CLEAR(clear_module_state->__pyx_kp_u_disable); + Py_CLEAR(clear_module_state->__pyx_n_s_dummy_trace_dispatch); + Py_CLEAR(clear_module_state->__pyx_n_s_dummy_tracing_holder); + Py_CLEAR(clear_module_state->__pyx_kp_u_enable); + Py_CLEAR(clear_module_state->__pyx_n_s_enter); + Py_CLEAR(clear_module_state->__pyx_n_s_event); + Py_CLEAR(clear_module_state->__pyx_n_s_exec); + Py_CLEAR(clear_module_state->__pyx_n_s_exit); + Py_CLEAR(clear_module_state->__pyx_n_s_f_back); + Py_CLEAR(clear_module_state->__pyx_n_s_f_trace); + Py_CLEAR(clear_module_state->__pyx_n_s_findlinestarts); + Py_CLEAR(clear_module_state->__pyx_n_s_first_line); + Py_CLEAR(clear_module_state->__pyx_n_s_fix_top_level_trace_and_get_trac); + Py_CLEAR(clear_module_state->__pyx_n_s_frame); + Py_CLEAR(clear_module_state->__pyx_n_s_frame_eval_func); + Py_CLEAR(clear_module_state->__pyx_n_s_function_breakpoint_name_to_brea); + Py_CLEAR(clear_module_state->__pyx_kp_u_gc); + Py_CLEAR(clear_module_state->__pyx_n_s_generate_code_with_breakpoints_p); + Py_CLEAR(clear_module_state->__pyx_n_s_get); + Py_CLEAR(clear_module_state->__pyx_n_s_get_abs_path_real_path_and_base); + Py_CLEAR(clear_module_state->__pyx_n_s_get_cache_file_type); + Py_CLEAR(clear_module_state->__pyx_n_s_get_cached_code_obj_info_py); + Py_CLEAR(clear_module_state->__pyx_n_s_get_code_line_info); + Py_CLEAR(clear_module_state->__pyx_n_s_get_file_type); + Py_CLEAR(clear_module_state->__pyx_n_s_get_func_code_info_py); + Py_CLEAR(clear_module_state->__pyx_n_s_get_ident); + Py_CLEAR(clear_module_state->__pyx_n_s_get_ident_2); + Py_CLEAR(clear_module_state->__pyx_n_s_get_thread_info_py); + Py_CLEAR(clear_module_state->__pyx_n_s_getstate); + Py_CLEAR(clear_module_state->__pyx_n_s_global_dbg); + Py_CLEAR(clear_module_state->__pyx_n_s_has_plugin_exception_breaks); + Py_CLEAR(clear_module_state->__pyx_n_s_has_plugin_line_breaks); + Py_CLEAR(clear_module_state->__pyx_n_s_import); + Py_CLEAR(clear_module_state->__pyx_n_s_initializing); + Py_CLEAR(clear_module_state->__pyx_n_s_insert_pydevd_breaks); + Py_CLEAR(clear_module_state->__pyx_n_s_intersection); + Py_CLEAR(clear_module_state->__pyx_n_s_is_coroutine); + Py_CLEAR(clear_module_state->__pyx_n_s_is_pydev_daemon_thread); + Py_CLEAR(clear_module_state->__pyx_kp_u_isenabled); + Py_CLEAR(clear_module_state->__pyx_n_s_issuperset); + Py_CLEAR(clear_module_state->__pyx_n_s_last_line); + Py_CLEAR(clear_module_state->__pyx_n_s_line); + Py_CLEAR(clear_module_state->__pyx_n_s_line_to_offset); + Py_CLEAR(clear_module_state->__pyx_n_s_local); + Py_CLEAR(clear_module_state->__pyx_n_s_main); + Py_CLEAR(clear_module_state->__pyx_n_s_main_2); + Py_CLEAR(clear_module_state->__pyx_n_s_max); + Py_CLEAR(clear_module_state->__pyx_n_s_min); + Py_CLEAR(clear_module_state->__pyx_n_s_mtime); + Py_CLEAR(clear_module_state->__pyx_n_s_name); + Py_CLEAR(clear_module_state->__pyx_n_s_new); + Py_CLEAR(clear_module_state->__pyx_n_s_obj); + Py_CLEAR(clear_module_state->__pyx_n_s_offset); + Py_CLEAR(clear_module_state->__pyx_n_s_pickle); + Py_CLEAR(clear_module_state->__pyx_n_s_plugin); + Py_CLEAR(clear_module_state->__pyx_n_s_pydev_bundle__pydev_saved_modul); + Py_CLEAR(clear_module_state->__pyx_n_s_pydev_monkey); + Py_CLEAR(clear_module_state->__pyx_n_s_pydevd); + Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_bundle_pydevd_additional); + Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_bundle_pydevd_constants); + Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_bundle_pydevd_trace_disp); + Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_file_utils); + Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_frame_eval_pydevd_frame); + Py_CLEAR(clear_module_state->__pyx_kp_s_pydevd_frame_eval_pydevd_frame_2); + Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_frame_eval_pydevd_frame_3); + Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_frame_eval_pydevd_modify); + Py_CLEAR(clear_module_state->__pyx_n_s_pydevd_tracing); + Py_CLEAR(clear_module_state->__pyx_n_s_pyx_PickleError); + Py_CLEAR(clear_module_state->__pyx_n_s_pyx_checksum); + Py_CLEAR(clear_module_state->__pyx_n_s_pyx_result); + Py_CLEAR(clear_module_state->__pyx_n_s_pyx_state); + Py_CLEAR(clear_module_state->__pyx_n_s_pyx_type); + Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle_FuncCodeInfo); + Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle_ThreadInfo); + Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle__CacheValue); + Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle__CodeLineInfo); + Py_CLEAR(clear_module_state->__pyx_n_s_pyx_vtable); + Py_CLEAR(clear_module_state->__pyx_n_s_reduce); + Py_CLEAR(clear_module_state->__pyx_n_s_reduce_cython); + Py_CLEAR(clear_module_state->__pyx_n_s_reduce_ex); + Py_CLEAR(clear_module_state->__pyx_n_s_return); + Py_CLEAR(clear_module_state->__pyx_n_s_rfind); + Py_CLEAR(clear_module_state->__pyx_n_s_run); + Py_CLEAR(clear_module_state->__pyx_n_s_self); + Py_CLEAR(clear_module_state->__pyx_n_s_set_additional_thread_info_lock); + Py_CLEAR(clear_module_state->__pyx_n_s_set_trace_func); + Py_CLEAR(clear_module_state->__pyx_n_s_setstate); + Py_CLEAR(clear_module_state->__pyx_n_s_setstate_cython); + Py_CLEAR(clear_module_state->__pyx_n_s_show_return_values); + Py_CLEAR(clear_module_state->__pyx_n_s_signature_factory); + Py_CLEAR(clear_module_state->__pyx_n_s_spec); + Py_CLEAR(clear_module_state->__pyx_n_s_state); + Py_CLEAR(clear_module_state->__pyx_n_s_stop_frame_eval); + Py_CLEAR(clear_module_state->__pyx_kp_s_stringsource); + Py_CLEAR(clear_module_state->__pyx_n_s_sys); + Py_CLEAR(clear_module_state->__pyx_n_s_test); + Py_CLEAR(clear_module_state->__pyx_n_s_thread); + Py_CLEAR(clear_module_state->__pyx_n_s_thread_active); + Py_CLEAR(clear_module_state->__pyx_n_s_thread_info); + Py_CLEAR(clear_module_state->__pyx_n_s_thread_local_info); + Py_CLEAR(clear_module_state->__pyx_n_s_threading); + Py_CLEAR(clear_module_state->__pyx_n_s_trace_dispatch); + Py_CLEAR(clear_module_state->__pyx_n_s_update); + Py_CLEAR(clear_module_state->__pyx_n_s_update_globals_dict); + Py_CLEAR(clear_module_state->__pyx_n_s_use_setstate); + Py_CLEAR(clear_module_state->__pyx_n_s_version_info); + Py_CLEAR(clear_module_state->__pyx_int_0); + Py_CLEAR(clear_module_state->__pyx_int_1); + Py_CLEAR(clear_module_state->__pyx_int_2); + Py_CLEAR(clear_module_state->__pyx_int_3); + Py_CLEAR(clear_module_state->__pyx_int_9); + Py_CLEAR(clear_module_state->__pyx_int_2520179); + Py_CLEAR(clear_module_state->__pyx_int_11485321); + Py_CLEAR(clear_module_state->__pyx_int_64258489); + Py_CLEAR(clear_module_state->__pyx_int_66829570); + Py_CLEAR(clear_module_state->__pyx_int_72405718); + Py_CLEAR(clear_module_state->__pyx_int_95010005); + Py_CLEAR(clear_module_state->__pyx_int_156687530); + Py_CLEAR(clear_module_state->__pyx_int_180628038); + Py_CLEAR(clear_module_state->__pyx_int_188670045); + Py_CLEAR(clear_module_state->__pyx_int_193022138); + Py_CLEAR(clear_module_state->__pyx_int_240343912); + Py_CLEAR(clear_module_state->__pyx_int_249558979); + Py_CLEAR(clear_module_state->__pyx_tuple__4); + Py_CLEAR(clear_module_state->__pyx_tuple__6); + Py_CLEAR(clear_module_state->__pyx_tuple__7); + Py_CLEAR(clear_module_state->__pyx_tuple__8); + Py_CLEAR(clear_module_state->__pyx_tuple__9); + Py_CLEAR(clear_module_state->__pyx_slice__37); + Py_CLEAR(clear_module_state->__pyx_tuple__12); + Py_CLEAR(clear_module_state->__pyx_tuple__14); + Py_CLEAR(clear_module_state->__pyx_tuple__18); + Py_CLEAR(clear_module_state->__pyx_tuple__21); + Py_CLEAR(clear_module_state->__pyx_tuple__23); + Py_CLEAR(clear_module_state->__pyx_tuple__27); + Py_CLEAR(clear_module_state->__pyx_tuple__29); + Py_CLEAR(clear_module_state->__pyx_tuple__31); + Py_CLEAR(clear_module_state->__pyx_tuple__35); + Py_CLEAR(clear_module_state->__pyx_tuple__38); + Py_CLEAR(clear_module_state->__pyx_tuple__39); + Py_CLEAR(clear_module_state->__pyx_tuple__42); + Py_CLEAR(clear_module_state->__pyx_codeobj__11); + Py_CLEAR(clear_module_state->__pyx_codeobj__13); + Py_CLEAR(clear_module_state->__pyx_codeobj__15); + Py_CLEAR(clear_module_state->__pyx_codeobj__16); + Py_CLEAR(clear_module_state->__pyx_codeobj__17); + Py_CLEAR(clear_module_state->__pyx_codeobj__19); + Py_CLEAR(clear_module_state->__pyx_codeobj__20); + Py_CLEAR(clear_module_state->__pyx_codeobj__22); + Py_CLEAR(clear_module_state->__pyx_codeobj__24); + Py_CLEAR(clear_module_state->__pyx_codeobj__25); + Py_CLEAR(clear_module_state->__pyx_codeobj__26); + Py_CLEAR(clear_module_state->__pyx_codeobj__28); + Py_CLEAR(clear_module_state->__pyx_codeobj__30); + Py_CLEAR(clear_module_state->__pyx_codeobj__32); + Py_CLEAR(clear_module_state->__pyx_codeobj__33); + Py_CLEAR(clear_module_state->__pyx_codeobj__34); + Py_CLEAR(clear_module_state->__pyx_codeobj__36); + Py_CLEAR(clear_module_state->__pyx_codeobj__40); + Py_CLEAR(clear_module_state->__pyx_codeobj__41); + Py_CLEAR(clear_module_state->__pyx_codeobj__43); + Py_CLEAR(clear_module_state->__pyx_codeobj__44); + Py_CLEAR(clear_module_state->__pyx_codeobj__45); + Py_CLEAR(clear_module_state->__pyx_codeobj__46); + return 0; +} +#endif +/* #### Code section: module_state_traverse ### */ +#if CYTHON_USE_MODULE_STATE +static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) { + __pyx_mstate *traverse_module_state = __pyx_mstate(m); + if (!traverse_module_state) return 0; + Py_VISIT(traverse_module_state->__pyx_d); + Py_VISIT(traverse_module_state->__pyx_b); + Py_VISIT(traverse_module_state->__pyx_cython_runtime); + Py_VISIT(traverse_module_state->__pyx_empty_tuple); + Py_VISIT(traverse_module_state->__pyx_empty_bytes); + Py_VISIT(traverse_module_state->__pyx_empty_unicode); + #ifdef __Pyx_CyFunction_USED + Py_VISIT(traverse_module_state->__pyx_CyFunctionType); + #endif + #ifdef __Pyx_FusedFunction_USED + Py_VISIT(traverse_module_state->__pyx_FusedFunctionType); + #endif + Py_VISIT(traverse_module_state->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo); + Py_VISIT(traverse_module_state->__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo); + Py_VISIT(traverse_module_state->__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo); + Py_VISIT(traverse_module_state->__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo); + Py_VISIT(traverse_module_state->__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo); + Py_VISIT(traverse_module_state->__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo); + Py_VISIT(traverse_module_state->__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo); + Py_VISIT(traverse_module_state->__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue); + Py_VISIT(traverse_module_state->__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue); + Py_VISIT(traverse_module_state->__pyx_kp_s_); + Py_VISIT(traverse_module_state->__pyx_n_s_AssertionError); + Py_VISIT(traverse_module_state->__pyx_n_s_AttributeError); + Py_VISIT(traverse_module_state->__pyx_n_s_CacheValue); + Py_VISIT(traverse_module_state->__pyx_n_s_CacheValue___reduce_cython); + Py_VISIT(traverse_module_state->__pyx_n_s_CacheValue___setstate_cython); + Py_VISIT(traverse_module_state->__pyx_n_s_CacheValue_compute_force_stay_i); + Py_VISIT(traverse_module_state->__pyx_n_s_CodeLineInfo); + Py_VISIT(traverse_module_state->__pyx_n_s_CodeLineInfo___reduce_cython); + Py_VISIT(traverse_module_state->__pyx_n_s_CodeLineInfo___setstate_cython); + Py_VISIT(traverse_module_state->__pyx_n_s_DebugHelper); + Py_VISIT(traverse_module_state->__pyx_n_s_FuncCodeInfo); + Py_VISIT(traverse_module_state->__pyx_n_s_FuncCodeInfo___reduce_cython); + Py_VISIT(traverse_module_state->__pyx_n_s_FuncCodeInfo___setstate_cython); + Py_VISIT(traverse_module_state->__pyx_n_s_GlobalDebuggerHolder); + Py_VISIT(traverse_module_state->__pyx_kp_s_If_a_code_object_is_cached_that); + Py_VISIT(traverse_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0); + Py_VISIT(traverse_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2); + Py_VISIT(traverse_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3); + Py_VISIT(traverse_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_4); + Py_VISIT(traverse_module_state->__pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER); + Py_VISIT(traverse_module_state->__pyx_n_s_PickleError); + Py_VISIT(traverse_module_state->__pyx_n_s_SetTrace); + Py_VISIT(traverse_module_state->__pyx_n_s_ThreadInfo); + Py_VISIT(traverse_module_state->__pyx_n_s_ThreadInfo___reduce_cython); + Py_VISIT(traverse_module_state->__pyx_n_s_ThreadInfo___setstate_cython); + Py_VISIT(traverse_module_state->__pyx_n_s__10); + Py_VISIT(traverse_module_state->__pyx_kp_s__2); + Py_VISIT(traverse_module_state->__pyx_kp_s__3); + Py_VISIT(traverse_module_state->__pyx_kp_u__3); + Py_VISIT(traverse_module_state->__pyx_n_s__47); + Py_VISIT(traverse_module_state->__pyx_kp_s__5); + Py_VISIT(traverse_module_state->__pyx_n_s_active); + Py_VISIT(traverse_module_state->__pyx_n_s_additional_info); + Py_VISIT(traverse_module_state->__pyx_n_s_arg); + Py_VISIT(traverse_module_state->__pyx_n_s_asyncio_coroutines); + Py_VISIT(traverse_module_state->__pyx_n_s_bootstrap); + Py_VISIT(traverse_module_state->__pyx_n_s_bootstrap_2); + Py_VISIT(traverse_module_state->__pyx_n_s_bootstrap_inner); + Py_VISIT(traverse_module_state->__pyx_n_s_bootstrap_inner_2); + Py_VISIT(traverse_module_state->__pyx_n_s_break_on_caught_exceptions); + Py_VISIT(traverse_module_state->__pyx_n_s_break_on_user_uncaught_exception); + Py_VISIT(traverse_module_state->__pyx_n_s_breakpoints); + Py_VISIT(traverse_module_state->__pyx_n_s_breakpoints_hit_at_lines); + Py_VISIT(traverse_module_state->__pyx_n_s_cache); + Py_VISIT(traverse_module_state->__pyx_n_s_call); + Py_VISIT(traverse_module_state->__pyx_n_s_call_2); + Py_VISIT(traverse_module_state->__pyx_n_s_can_skip); + Py_VISIT(traverse_module_state->__pyx_n_s_clear_thread_local_info); + Py_VISIT(traverse_module_state->__pyx_n_s_cline_in_traceback); + Py_VISIT(traverse_module_state->__pyx_n_s_code_line_info); + Py_VISIT(traverse_module_state->__pyx_n_s_code_obj); + Py_VISIT(traverse_module_state->__pyx_n_s_code_obj_py); + Py_VISIT(traverse_module_state->__pyx_n_s_compute_force_stay_in_untraced_m); + Py_VISIT(traverse_module_state->__pyx_n_s_current_thread); + Py_VISIT(traverse_module_state->__pyx_n_s_decref_py); + Py_VISIT(traverse_module_state->__pyx_n_s_dict); + Py_VISIT(traverse_module_state->__pyx_n_s_dict_2); + Py_VISIT(traverse_module_state->__pyx_n_s_dis); + Py_VISIT(traverse_module_state->__pyx_kp_u_disable); + Py_VISIT(traverse_module_state->__pyx_n_s_dummy_trace_dispatch); + Py_VISIT(traverse_module_state->__pyx_n_s_dummy_tracing_holder); + Py_VISIT(traverse_module_state->__pyx_kp_u_enable); + Py_VISIT(traverse_module_state->__pyx_n_s_enter); + Py_VISIT(traverse_module_state->__pyx_n_s_event); + Py_VISIT(traverse_module_state->__pyx_n_s_exec); + Py_VISIT(traverse_module_state->__pyx_n_s_exit); + Py_VISIT(traverse_module_state->__pyx_n_s_f_back); + Py_VISIT(traverse_module_state->__pyx_n_s_f_trace); + Py_VISIT(traverse_module_state->__pyx_n_s_findlinestarts); + Py_VISIT(traverse_module_state->__pyx_n_s_first_line); + Py_VISIT(traverse_module_state->__pyx_n_s_fix_top_level_trace_and_get_trac); + Py_VISIT(traverse_module_state->__pyx_n_s_frame); + Py_VISIT(traverse_module_state->__pyx_n_s_frame_eval_func); + Py_VISIT(traverse_module_state->__pyx_n_s_function_breakpoint_name_to_brea); + Py_VISIT(traverse_module_state->__pyx_kp_u_gc); + Py_VISIT(traverse_module_state->__pyx_n_s_generate_code_with_breakpoints_p); + Py_VISIT(traverse_module_state->__pyx_n_s_get); + Py_VISIT(traverse_module_state->__pyx_n_s_get_abs_path_real_path_and_base); + Py_VISIT(traverse_module_state->__pyx_n_s_get_cache_file_type); + Py_VISIT(traverse_module_state->__pyx_n_s_get_cached_code_obj_info_py); + Py_VISIT(traverse_module_state->__pyx_n_s_get_code_line_info); + Py_VISIT(traverse_module_state->__pyx_n_s_get_file_type); + Py_VISIT(traverse_module_state->__pyx_n_s_get_func_code_info_py); + Py_VISIT(traverse_module_state->__pyx_n_s_get_ident); + Py_VISIT(traverse_module_state->__pyx_n_s_get_ident_2); + Py_VISIT(traverse_module_state->__pyx_n_s_get_thread_info_py); + Py_VISIT(traverse_module_state->__pyx_n_s_getstate); + Py_VISIT(traverse_module_state->__pyx_n_s_global_dbg); + Py_VISIT(traverse_module_state->__pyx_n_s_has_plugin_exception_breaks); + Py_VISIT(traverse_module_state->__pyx_n_s_has_plugin_line_breaks); + Py_VISIT(traverse_module_state->__pyx_n_s_import); + Py_VISIT(traverse_module_state->__pyx_n_s_initializing); + Py_VISIT(traverse_module_state->__pyx_n_s_insert_pydevd_breaks); + Py_VISIT(traverse_module_state->__pyx_n_s_intersection); + Py_VISIT(traverse_module_state->__pyx_n_s_is_coroutine); + Py_VISIT(traverse_module_state->__pyx_n_s_is_pydev_daemon_thread); + Py_VISIT(traverse_module_state->__pyx_kp_u_isenabled); + Py_VISIT(traverse_module_state->__pyx_n_s_issuperset); + Py_VISIT(traverse_module_state->__pyx_n_s_last_line); + Py_VISIT(traverse_module_state->__pyx_n_s_line); + Py_VISIT(traverse_module_state->__pyx_n_s_line_to_offset); + Py_VISIT(traverse_module_state->__pyx_n_s_local); + Py_VISIT(traverse_module_state->__pyx_n_s_main); + Py_VISIT(traverse_module_state->__pyx_n_s_main_2); + Py_VISIT(traverse_module_state->__pyx_n_s_max); + Py_VISIT(traverse_module_state->__pyx_n_s_min); + Py_VISIT(traverse_module_state->__pyx_n_s_mtime); + Py_VISIT(traverse_module_state->__pyx_n_s_name); + Py_VISIT(traverse_module_state->__pyx_n_s_new); + Py_VISIT(traverse_module_state->__pyx_n_s_obj); + Py_VISIT(traverse_module_state->__pyx_n_s_offset); + Py_VISIT(traverse_module_state->__pyx_n_s_pickle); + Py_VISIT(traverse_module_state->__pyx_n_s_plugin); + Py_VISIT(traverse_module_state->__pyx_n_s_pydev_bundle__pydev_saved_modul); + Py_VISIT(traverse_module_state->__pyx_n_s_pydev_monkey); + Py_VISIT(traverse_module_state->__pyx_n_s_pydevd); + Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_bundle_pydevd_additional); + Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_bundle_pydevd_constants); + Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_bundle_pydevd_trace_disp); + Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_file_utils); + Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_frame_eval_pydevd_frame); + Py_VISIT(traverse_module_state->__pyx_kp_s_pydevd_frame_eval_pydevd_frame_2); + Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_frame_eval_pydevd_frame_3); + Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_frame_eval_pydevd_modify); + Py_VISIT(traverse_module_state->__pyx_n_s_pydevd_tracing); + Py_VISIT(traverse_module_state->__pyx_n_s_pyx_PickleError); + Py_VISIT(traverse_module_state->__pyx_n_s_pyx_checksum); + Py_VISIT(traverse_module_state->__pyx_n_s_pyx_result); + Py_VISIT(traverse_module_state->__pyx_n_s_pyx_state); + Py_VISIT(traverse_module_state->__pyx_n_s_pyx_type); + Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle_FuncCodeInfo); + Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle_ThreadInfo); + Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle__CacheValue); + Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle__CodeLineInfo); + Py_VISIT(traverse_module_state->__pyx_n_s_pyx_vtable); + Py_VISIT(traverse_module_state->__pyx_n_s_reduce); + Py_VISIT(traverse_module_state->__pyx_n_s_reduce_cython); + Py_VISIT(traverse_module_state->__pyx_n_s_reduce_ex); + Py_VISIT(traverse_module_state->__pyx_n_s_return); + Py_VISIT(traverse_module_state->__pyx_n_s_rfind); + Py_VISIT(traverse_module_state->__pyx_n_s_run); + Py_VISIT(traverse_module_state->__pyx_n_s_self); + Py_VISIT(traverse_module_state->__pyx_n_s_set_additional_thread_info_lock); + Py_VISIT(traverse_module_state->__pyx_n_s_set_trace_func); + Py_VISIT(traverse_module_state->__pyx_n_s_setstate); + Py_VISIT(traverse_module_state->__pyx_n_s_setstate_cython); + Py_VISIT(traverse_module_state->__pyx_n_s_show_return_values); + Py_VISIT(traverse_module_state->__pyx_n_s_signature_factory); + Py_VISIT(traverse_module_state->__pyx_n_s_spec); + Py_VISIT(traverse_module_state->__pyx_n_s_state); + Py_VISIT(traverse_module_state->__pyx_n_s_stop_frame_eval); + Py_VISIT(traverse_module_state->__pyx_kp_s_stringsource); + Py_VISIT(traverse_module_state->__pyx_n_s_sys); + Py_VISIT(traverse_module_state->__pyx_n_s_test); + Py_VISIT(traverse_module_state->__pyx_n_s_thread); + Py_VISIT(traverse_module_state->__pyx_n_s_thread_active); + Py_VISIT(traverse_module_state->__pyx_n_s_thread_info); + Py_VISIT(traverse_module_state->__pyx_n_s_thread_local_info); + Py_VISIT(traverse_module_state->__pyx_n_s_threading); + Py_VISIT(traverse_module_state->__pyx_n_s_trace_dispatch); + Py_VISIT(traverse_module_state->__pyx_n_s_update); + Py_VISIT(traverse_module_state->__pyx_n_s_update_globals_dict); + Py_VISIT(traverse_module_state->__pyx_n_s_use_setstate); + Py_VISIT(traverse_module_state->__pyx_n_s_version_info); + Py_VISIT(traverse_module_state->__pyx_int_0); + Py_VISIT(traverse_module_state->__pyx_int_1); + Py_VISIT(traverse_module_state->__pyx_int_2); + Py_VISIT(traverse_module_state->__pyx_int_3); + Py_VISIT(traverse_module_state->__pyx_int_9); + Py_VISIT(traverse_module_state->__pyx_int_2520179); + Py_VISIT(traverse_module_state->__pyx_int_11485321); + Py_VISIT(traverse_module_state->__pyx_int_64258489); + Py_VISIT(traverse_module_state->__pyx_int_66829570); + Py_VISIT(traverse_module_state->__pyx_int_72405718); + Py_VISIT(traverse_module_state->__pyx_int_95010005); + Py_VISIT(traverse_module_state->__pyx_int_156687530); + Py_VISIT(traverse_module_state->__pyx_int_180628038); + Py_VISIT(traverse_module_state->__pyx_int_188670045); + Py_VISIT(traverse_module_state->__pyx_int_193022138); + Py_VISIT(traverse_module_state->__pyx_int_240343912); + Py_VISIT(traverse_module_state->__pyx_int_249558979); + Py_VISIT(traverse_module_state->__pyx_tuple__4); + Py_VISIT(traverse_module_state->__pyx_tuple__6); + Py_VISIT(traverse_module_state->__pyx_tuple__7); + Py_VISIT(traverse_module_state->__pyx_tuple__8); + Py_VISIT(traverse_module_state->__pyx_tuple__9); + Py_VISIT(traverse_module_state->__pyx_slice__37); + Py_VISIT(traverse_module_state->__pyx_tuple__12); + Py_VISIT(traverse_module_state->__pyx_tuple__14); + Py_VISIT(traverse_module_state->__pyx_tuple__18); + Py_VISIT(traverse_module_state->__pyx_tuple__21); + Py_VISIT(traverse_module_state->__pyx_tuple__23); + Py_VISIT(traverse_module_state->__pyx_tuple__27); + Py_VISIT(traverse_module_state->__pyx_tuple__29); + Py_VISIT(traverse_module_state->__pyx_tuple__31); + Py_VISIT(traverse_module_state->__pyx_tuple__35); + Py_VISIT(traverse_module_state->__pyx_tuple__38); + Py_VISIT(traverse_module_state->__pyx_tuple__39); + Py_VISIT(traverse_module_state->__pyx_tuple__42); + Py_VISIT(traverse_module_state->__pyx_codeobj__11); + Py_VISIT(traverse_module_state->__pyx_codeobj__13); + Py_VISIT(traverse_module_state->__pyx_codeobj__15); + Py_VISIT(traverse_module_state->__pyx_codeobj__16); + Py_VISIT(traverse_module_state->__pyx_codeobj__17); + Py_VISIT(traverse_module_state->__pyx_codeobj__19); + Py_VISIT(traverse_module_state->__pyx_codeobj__20); + Py_VISIT(traverse_module_state->__pyx_codeobj__22); + Py_VISIT(traverse_module_state->__pyx_codeobj__24); + Py_VISIT(traverse_module_state->__pyx_codeobj__25); + Py_VISIT(traverse_module_state->__pyx_codeobj__26); + Py_VISIT(traverse_module_state->__pyx_codeobj__28); + Py_VISIT(traverse_module_state->__pyx_codeobj__30); + Py_VISIT(traverse_module_state->__pyx_codeobj__32); + Py_VISIT(traverse_module_state->__pyx_codeobj__33); + Py_VISIT(traverse_module_state->__pyx_codeobj__34); + Py_VISIT(traverse_module_state->__pyx_codeobj__36); + Py_VISIT(traverse_module_state->__pyx_codeobj__40); + Py_VISIT(traverse_module_state->__pyx_codeobj__41); + Py_VISIT(traverse_module_state->__pyx_codeobj__43); + Py_VISIT(traverse_module_state->__pyx_codeobj__44); + Py_VISIT(traverse_module_state->__pyx_codeobj__45); + Py_VISIT(traverse_module_state->__pyx_codeobj__46); + return 0; +} +#endif +/* #### Code section: module_state_defines ### */ +#define __pyx_d __pyx_mstate_global->__pyx_d +#define __pyx_b __pyx_mstate_global->__pyx_b +#define __pyx_cython_runtime __pyx_mstate_global->__pyx_cython_runtime +#define __pyx_empty_tuple __pyx_mstate_global->__pyx_empty_tuple +#define __pyx_empty_bytes __pyx_mstate_global->__pyx_empty_bytes +#define __pyx_empty_unicode __pyx_mstate_global->__pyx_empty_unicode +#ifdef __Pyx_CyFunction_USED +#define __pyx_CyFunctionType __pyx_mstate_global->__pyx_CyFunctionType +#endif +#ifdef __Pyx_FusedFunction_USED +#define __pyx_FusedFunctionType __pyx_mstate_global->__pyx_FusedFunctionType +#endif +#ifdef __Pyx_Generator_USED +#define __pyx_GeneratorType __pyx_mstate_global->__pyx_GeneratorType +#endif +#ifdef __Pyx_IterableCoroutine_USED +#define __pyx_IterableCoroutineType __pyx_mstate_global->__pyx_IterableCoroutineType +#endif +#ifdef __Pyx_Coroutine_USED +#define __pyx_CoroutineAwaitType __pyx_mstate_global->__pyx_CoroutineAwaitType +#endif +#ifdef __Pyx_Coroutine_USED +#define __pyx_CoroutineType __pyx_mstate_global->__pyx_CoroutineType +#endif +#if CYTHON_USE_MODULE_STATE +#endif +#if CYTHON_USE_MODULE_STATE +#endif +#define __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo __pyx_mstate_global->__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo +#if CYTHON_USE_MODULE_STATE +#define __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo __pyx_mstate_global->__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo +#define __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo __pyx_mstate_global->__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo +#define __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo __pyx_mstate_global->__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo +#define __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue __pyx_mstate_global->__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue +#endif +#define __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo __pyx_mstate_global->__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo +#define __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo __pyx_mstate_global->__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo +#define __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo __pyx_mstate_global->__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo +#define __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue __pyx_mstate_global->__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue +#define __pyx_kp_s_ __pyx_mstate_global->__pyx_kp_s_ +#define __pyx_n_s_AssertionError __pyx_mstate_global->__pyx_n_s_AssertionError +#define __pyx_n_s_AttributeError __pyx_mstate_global->__pyx_n_s_AttributeError +#define __pyx_n_s_CacheValue __pyx_mstate_global->__pyx_n_s_CacheValue +#define __pyx_n_s_CacheValue___reduce_cython __pyx_mstate_global->__pyx_n_s_CacheValue___reduce_cython +#define __pyx_n_s_CacheValue___setstate_cython __pyx_mstate_global->__pyx_n_s_CacheValue___setstate_cython +#define __pyx_n_s_CacheValue_compute_force_stay_i __pyx_mstate_global->__pyx_n_s_CacheValue_compute_force_stay_i +#define __pyx_n_s_CodeLineInfo __pyx_mstate_global->__pyx_n_s_CodeLineInfo +#define __pyx_n_s_CodeLineInfo___reduce_cython __pyx_mstate_global->__pyx_n_s_CodeLineInfo___reduce_cython +#define __pyx_n_s_CodeLineInfo___setstate_cython __pyx_mstate_global->__pyx_n_s_CodeLineInfo___setstate_cython +#define __pyx_n_s_DebugHelper __pyx_mstate_global->__pyx_n_s_DebugHelper +#define __pyx_n_s_FuncCodeInfo __pyx_mstate_global->__pyx_n_s_FuncCodeInfo +#define __pyx_n_s_FuncCodeInfo___reduce_cython __pyx_mstate_global->__pyx_n_s_FuncCodeInfo___reduce_cython +#define __pyx_n_s_FuncCodeInfo___setstate_cython __pyx_mstate_global->__pyx_n_s_FuncCodeInfo___setstate_cython +#define __pyx_n_s_GlobalDebuggerHolder __pyx_mstate_global->__pyx_n_s_GlobalDebuggerHolder +#define __pyx_kp_s_If_a_code_object_is_cached_that __pyx_mstate_global->__pyx_kp_s_If_a_code_object_is_cached_that +#define __pyx_kp_s_Incompatible_checksums_0x_x_vs_0 __pyx_mstate_global->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0 +#define __pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2 __pyx_mstate_global->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2 +#define __pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3 __pyx_mstate_global->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3 +#define __pyx_kp_s_Incompatible_checksums_0x_x_vs_0_4 __pyx_mstate_global->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_4 +#define __pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER __pyx_mstate_global->__pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER +#define __pyx_n_s_PickleError __pyx_mstate_global->__pyx_n_s_PickleError +#define __pyx_n_s_SetTrace __pyx_mstate_global->__pyx_n_s_SetTrace +#define __pyx_n_s_ThreadInfo __pyx_mstate_global->__pyx_n_s_ThreadInfo +#define __pyx_n_s_ThreadInfo___reduce_cython __pyx_mstate_global->__pyx_n_s_ThreadInfo___reduce_cython +#define __pyx_n_s_ThreadInfo___setstate_cython __pyx_mstate_global->__pyx_n_s_ThreadInfo___setstate_cython +#define __pyx_n_s__10 __pyx_mstate_global->__pyx_n_s__10 +#define __pyx_kp_s__2 __pyx_mstate_global->__pyx_kp_s__2 +#define __pyx_kp_s__3 __pyx_mstate_global->__pyx_kp_s__3 +#define __pyx_kp_u__3 __pyx_mstate_global->__pyx_kp_u__3 +#define __pyx_n_s__47 __pyx_mstate_global->__pyx_n_s__47 +#define __pyx_kp_s__5 __pyx_mstate_global->__pyx_kp_s__5 +#define __pyx_n_s_active __pyx_mstate_global->__pyx_n_s_active +#define __pyx_n_s_additional_info __pyx_mstate_global->__pyx_n_s_additional_info +#define __pyx_n_s_arg __pyx_mstate_global->__pyx_n_s_arg +#define __pyx_n_s_asyncio_coroutines __pyx_mstate_global->__pyx_n_s_asyncio_coroutines +#define __pyx_n_s_bootstrap __pyx_mstate_global->__pyx_n_s_bootstrap +#define __pyx_n_s_bootstrap_2 __pyx_mstate_global->__pyx_n_s_bootstrap_2 +#define __pyx_n_s_bootstrap_inner __pyx_mstate_global->__pyx_n_s_bootstrap_inner +#define __pyx_n_s_bootstrap_inner_2 __pyx_mstate_global->__pyx_n_s_bootstrap_inner_2 +#define __pyx_n_s_break_on_caught_exceptions __pyx_mstate_global->__pyx_n_s_break_on_caught_exceptions +#define __pyx_n_s_break_on_user_uncaught_exception __pyx_mstate_global->__pyx_n_s_break_on_user_uncaught_exception +#define __pyx_n_s_breakpoints __pyx_mstate_global->__pyx_n_s_breakpoints +#define __pyx_n_s_breakpoints_hit_at_lines __pyx_mstate_global->__pyx_n_s_breakpoints_hit_at_lines +#define __pyx_n_s_cache __pyx_mstate_global->__pyx_n_s_cache +#define __pyx_n_s_call __pyx_mstate_global->__pyx_n_s_call +#define __pyx_n_s_call_2 __pyx_mstate_global->__pyx_n_s_call_2 +#define __pyx_n_s_can_skip __pyx_mstate_global->__pyx_n_s_can_skip +#define __pyx_n_s_clear_thread_local_info __pyx_mstate_global->__pyx_n_s_clear_thread_local_info +#define __pyx_n_s_cline_in_traceback __pyx_mstate_global->__pyx_n_s_cline_in_traceback +#define __pyx_n_s_code_line_info __pyx_mstate_global->__pyx_n_s_code_line_info +#define __pyx_n_s_code_obj __pyx_mstate_global->__pyx_n_s_code_obj +#define __pyx_n_s_code_obj_py __pyx_mstate_global->__pyx_n_s_code_obj_py +#define __pyx_n_s_compute_force_stay_in_untraced_m __pyx_mstate_global->__pyx_n_s_compute_force_stay_in_untraced_m +#define __pyx_n_s_current_thread __pyx_mstate_global->__pyx_n_s_current_thread +#define __pyx_n_s_decref_py __pyx_mstate_global->__pyx_n_s_decref_py +#define __pyx_n_s_dict __pyx_mstate_global->__pyx_n_s_dict +#define __pyx_n_s_dict_2 __pyx_mstate_global->__pyx_n_s_dict_2 +#define __pyx_n_s_dis __pyx_mstate_global->__pyx_n_s_dis +#define __pyx_kp_u_disable __pyx_mstate_global->__pyx_kp_u_disable +#define __pyx_n_s_dummy_trace_dispatch __pyx_mstate_global->__pyx_n_s_dummy_trace_dispatch +#define __pyx_n_s_dummy_tracing_holder __pyx_mstate_global->__pyx_n_s_dummy_tracing_holder +#define __pyx_kp_u_enable __pyx_mstate_global->__pyx_kp_u_enable +#define __pyx_n_s_enter __pyx_mstate_global->__pyx_n_s_enter +#define __pyx_n_s_event __pyx_mstate_global->__pyx_n_s_event +#define __pyx_n_s_exec __pyx_mstate_global->__pyx_n_s_exec +#define __pyx_n_s_exit __pyx_mstate_global->__pyx_n_s_exit +#define __pyx_n_s_f_back __pyx_mstate_global->__pyx_n_s_f_back +#define __pyx_n_s_f_trace __pyx_mstate_global->__pyx_n_s_f_trace +#define __pyx_n_s_findlinestarts __pyx_mstate_global->__pyx_n_s_findlinestarts +#define __pyx_n_s_first_line __pyx_mstate_global->__pyx_n_s_first_line +#define __pyx_n_s_fix_top_level_trace_and_get_trac __pyx_mstate_global->__pyx_n_s_fix_top_level_trace_and_get_trac +#define __pyx_n_s_frame __pyx_mstate_global->__pyx_n_s_frame +#define __pyx_n_s_frame_eval_func __pyx_mstate_global->__pyx_n_s_frame_eval_func +#define __pyx_n_s_function_breakpoint_name_to_brea __pyx_mstate_global->__pyx_n_s_function_breakpoint_name_to_brea +#define __pyx_kp_u_gc __pyx_mstate_global->__pyx_kp_u_gc +#define __pyx_n_s_generate_code_with_breakpoints_p __pyx_mstate_global->__pyx_n_s_generate_code_with_breakpoints_p +#define __pyx_n_s_get __pyx_mstate_global->__pyx_n_s_get +#define __pyx_n_s_get_abs_path_real_path_and_base __pyx_mstate_global->__pyx_n_s_get_abs_path_real_path_and_base +#define __pyx_n_s_get_cache_file_type __pyx_mstate_global->__pyx_n_s_get_cache_file_type +#define __pyx_n_s_get_cached_code_obj_info_py __pyx_mstate_global->__pyx_n_s_get_cached_code_obj_info_py +#define __pyx_n_s_get_code_line_info __pyx_mstate_global->__pyx_n_s_get_code_line_info +#define __pyx_n_s_get_file_type __pyx_mstate_global->__pyx_n_s_get_file_type +#define __pyx_n_s_get_func_code_info_py __pyx_mstate_global->__pyx_n_s_get_func_code_info_py +#define __pyx_n_s_get_ident __pyx_mstate_global->__pyx_n_s_get_ident +#define __pyx_n_s_get_ident_2 __pyx_mstate_global->__pyx_n_s_get_ident_2 +#define __pyx_n_s_get_thread_info_py __pyx_mstate_global->__pyx_n_s_get_thread_info_py +#define __pyx_n_s_getstate __pyx_mstate_global->__pyx_n_s_getstate +#define __pyx_n_s_global_dbg __pyx_mstate_global->__pyx_n_s_global_dbg +#define __pyx_n_s_has_plugin_exception_breaks __pyx_mstate_global->__pyx_n_s_has_plugin_exception_breaks +#define __pyx_n_s_has_plugin_line_breaks __pyx_mstate_global->__pyx_n_s_has_plugin_line_breaks +#define __pyx_n_s_import __pyx_mstate_global->__pyx_n_s_import +#define __pyx_n_s_initializing __pyx_mstate_global->__pyx_n_s_initializing +#define __pyx_n_s_insert_pydevd_breaks __pyx_mstate_global->__pyx_n_s_insert_pydevd_breaks +#define __pyx_n_s_intersection __pyx_mstate_global->__pyx_n_s_intersection +#define __pyx_n_s_is_coroutine __pyx_mstate_global->__pyx_n_s_is_coroutine +#define __pyx_n_s_is_pydev_daemon_thread __pyx_mstate_global->__pyx_n_s_is_pydev_daemon_thread +#define __pyx_kp_u_isenabled __pyx_mstate_global->__pyx_kp_u_isenabled +#define __pyx_n_s_issuperset __pyx_mstate_global->__pyx_n_s_issuperset +#define __pyx_n_s_last_line __pyx_mstate_global->__pyx_n_s_last_line +#define __pyx_n_s_line __pyx_mstate_global->__pyx_n_s_line +#define __pyx_n_s_line_to_offset __pyx_mstate_global->__pyx_n_s_line_to_offset +#define __pyx_n_s_local __pyx_mstate_global->__pyx_n_s_local +#define __pyx_n_s_main __pyx_mstate_global->__pyx_n_s_main +#define __pyx_n_s_main_2 __pyx_mstate_global->__pyx_n_s_main_2 +#define __pyx_n_s_max __pyx_mstate_global->__pyx_n_s_max +#define __pyx_n_s_min __pyx_mstate_global->__pyx_n_s_min +#define __pyx_n_s_mtime __pyx_mstate_global->__pyx_n_s_mtime +#define __pyx_n_s_name __pyx_mstate_global->__pyx_n_s_name +#define __pyx_n_s_new __pyx_mstate_global->__pyx_n_s_new +#define __pyx_n_s_obj __pyx_mstate_global->__pyx_n_s_obj +#define __pyx_n_s_offset __pyx_mstate_global->__pyx_n_s_offset +#define __pyx_n_s_pickle __pyx_mstate_global->__pyx_n_s_pickle +#define __pyx_n_s_plugin __pyx_mstate_global->__pyx_n_s_plugin +#define __pyx_n_s_pydev_bundle__pydev_saved_modul __pyx_mstate_global->__pyx_n_s_pydev_bundle__pydev_saved_modul +#define __pyx_n_s_pydev_monkey __pyx_mstate_global->__pyx_n_s_pydev_monkey +#define __pyx_n_s_pydevd __pyx_mstate_global->__pyx_n_s_pydevd +#define __pyx_n_s_pydevd_bundle_pydevd_additional __pyx_mstate_global->__pyx_n_s_pydevd_bundle_pydevd_additional +#define __pyx_n_s_pydevd_bundle_pydevd_constants __pyx_mstate_global->__pyx_n_s_pydevd_bundle_pydevd_constants +#define __pyx_n_s_pydevd_bundle_pydevd_trace_disp __pyx_mstate_global->__pyx_n_s_pydevd_bundle_pydevd_trace_disp +#define __pyx_n_s_pydevd_file_utils __pyx_mstate_global->__pyx_n_s_pydevd_file_utils +#define __pyx_n_s_pydevd_frame_eval_pydevd_frame __pyx_mstate_global->__pyx_n_s_pydevd_frame_eval_pydevd_frame +#define __pyx_kp_s_pydevd_frame_eval_pydevd_frame_2 __pyx_mstate_global->__pyx_kp_s_pydevd_frame_eval_pydevd_frame_2 +#define __pyx_n_s_pydevd_frame_eval_pydevd_frame_3 __pyx_mstate_global->__pyx_n_s_pydevd_frame_eval_pydevd_frame_3 +#define __pyx_n_s_pydevd_frame_eval_pydevd_modify __pyx_mstate_global->__pyx_n_s_pydevd_frame_eval_pydevd_modify +#define __pyx_n_s_pydevd_tracing __pyx_mstate_global->__pyx_n_s_pydevd_tracing +#define __pyx_n_s_pyx_PickleError __pyx_mstate_global->__pyx_n_s_pyx_PickleError +#define __pyx_n_s_pyx_checksum __pyx_mstate_global->__pyx_n_s_pyx_checksum +#define __pyx_n_s_pyx_result __pyx_mstate_global->__pyx_n_s_pyx_result +#define __pyx_n_s_pyx_state __pyx_mstate_global->__pyx_n_s_pyx_state +#define __pyx_n_s_pyx_type __pyx_mstate_global->__pyx_n_s_pyx_type +#define __pyx_n_s_pyx_unpickle_FuncCodeInfo __pyx_mstate_global->__pyx_n_s_pyx_unpickle_FuncCodeInfo +#define __pyx_n_s_pyx_unpickle_ThreadInfo __pyx_mstate_global->__pyx_n_s_pyx_unpickle_ThreadInfo +#define __pyx_n_s_pyx_unpickle__CacheValue __pyx_mstate_global->__pyx_n_s_pyx_unpickle__CacheValue +#define __pyx_n_s_pyx_unpickle__CodeLineInfo __pyx_mstate_global->__pyx_n_s_pyx_unpickle__CodeLineInfo +#define __pyx_n_s_pyx_vtable __pyx_mstate_global->__pyx_n_s_pyx_vtable +#define __pyx_n_s_reduce __pyx_mstate_global->__pyx_n_s_reduce +#define __pyx_n_s_reduce_cython __pyx_mstate_global->__pyx_n_s_reduce_cython +#define __pyx_n_s_reduce_ex __pyx_mstate_global->__pyx_n_s_reduce_ex +#define __pyx_n_s_return __pyx_mstate_global->__pyx_n_s_return +#define __pyx_n_s_rfind __pyx_mstate_global->__pyx_n_s_rfind +#define __pyx_n_s_run __pyx_mstate_global->__pyx_n_s_run +#define __pyx_n_s_self __pyx_mstate_global->__pyx_n_s_self +#define __pyx_n_s_set_additional_thread_info_lock __pyx_mstate_global->__pyx_n_s_set_additional_thread_info_lock +#define __pyx_n_s_set_trace_func __pyx_mstate_global->__pyx_n_s_set_trace_func +#define __pyx_n_s_setstate __pyx_mstate_global->__pyx_n_s_setstate +#define __pyx_n_s_setstate_cython __pyx_mstate_global->__pyx_n_s_setstate_cython +#define __pyx_n_s_show_return_values __pyx_mstate_global->__pyx_n_s_show_return_values +#define __pyx_n_s_signature_factory __pyx_mstate_global->__pyx_n_s_signature_factory +#define __pyx_n_s_spec __pyx_mstate_global->__pyx_n_s_spec +#define __pyx_n_s_state __pyx_mstate_global->__pyx_n_s_state +#define __pyx_n_s_stop_frame_eval __pyx_mstate_global->__pyx_n_s_stop_frame_eval +#define __pyx_kp_s_stringsource __pyx_mstate_global->__pyx_kp_s_stringsource +#define __pyx_n_s_sys __pyx_mstate_global->__pyx_n_s_sys +#define __pyx_n_s_test __pyx_mstate_global->__pyx_n_s_test +#define __pyx_n_s_thread __pyx_mstate_global->__pyx_n_s_thread +#define __pyx_n_s_thread_active __pyx_mstate_global->__pyx_n_s_thread_active +#define __pyx_n_s_thread_info __pyx_mstate_global->__pyx_n_s_thread_info +#define __pyx_n_s_thread_local_info __pyx_mstate_global->__pyx_n_s_thread_local_info +#define __pyx_n_s_threading __pyx_mstate_global->__pyx_n_s_threading +#define __pyx_n_s_trace_dispatch __pyx_mstate_global->__pyx_n_s_trace_dispatch +#define __pyx_n_s_update __pyx_mstate_global->__pyx_n_s_update +#define __pyx_n_s_update_globals_dict __pyx_mstate_global->__pyx_n_s_update_globals_dict +#define __pyx_n_s_use_setstate __pyx_mstate_global->__pyx_n_s_use_setstate +#define __pyx_n_s_version_info __pyx_mstate_global->__pyx_n_s_version_info +#define __pyx_int_0 __pyx_mstate_global->__pyx_int_0 +#define __pyx_int_1 __pyx_mstate_global->__pyx_int_1 +#define __pyx_int_2 __pyx_mstate_global->__pyx_int_2 +#define __pyx_int_3 __pyx_mstate_global->__pyx_int_3 +#define __pyx_int_9 __pyx_mstate_global->__pyx_int_9 +#define __pyx_int_2520179 __pyx_mstate_global->__pyx_int_2520179 +#define __pyx_int_11485321 __pyx_mstate_global->__pyx_int_11485321 +#define __pyx_int_64258489 __pyx_mstate_global->__pyx_int_64258489 +#define __pyx_int_66829570 __pyx_mstate_global->__pyx_int_66829570 +#define __pyx_int_72405718 __pyx_mstate_global->__pyx_int_72405718 +#define __pyx_int_95010005 __pyx_mstate_global->__pyx_int_95010005 +#define __pyx_int_156687530 __pyx_mstate_global->__pyx_int_156687530 +#define __pyx_int_180628038 __pyx_mstate_global->__pyx_int_180628038 +#define __pyx_int_188670045 __pyx_mstate_global->__pyx_int_188670045 +#define __pyx_int_193022138 __pyx_mstate_global->__pyx_int_193022138 +#define __pyx_int_240343912 __pyx_mstate_global->__pyx_int_240343912 +#define __pyx_int_249558979 __pyx_mstate_global->__pyx_int_249558979 +#define __pyx_tuple__4 __pyx_mstate_global->__pyx_tuple__4 +#define __pyx_tuple__6 __pyx_mstate_global->__pyx_tuple__6 +#define __pyx_tuple__7 __pyx_mstate_global->__pyx_tuple__7 +#define __pyx_tuple__8 __pyx_mstate_global->__pyx_tuple__8 +#define __pyx_tuple__9 __pyx_mstate_global->__pyx_tuple__9 +#define __pyx_slice__37 __pyx_mstate_global->__pyx_slice__37 +#define __pyx_tuple__12 __pyx_mstate_global->__pyx_tuple__12 +#define __pyx_tuple__14 __pyx_mstate_global->__pyx_tuple__14 +#define __pyx_tuple__18 __pyx_mstate_global->__pyx_tuple__18 +#define __pyx_tuple__21 __pyx_mstate_global->__pyx_tuple__21 +#define __pyx_tuple__23 __pyx_mstate_global->__pyx_tuple__23 +#define __pyx_tuple__27 __pyx_mstate_global->__pyx_tuple__27 +#define __pyx_tuple__29 __pyx_mstate_global->__pyx_tuple__29 +#define __pyx_tuple__31 __pyx_mstate_global->__pyx_tuple__31 +#define __pyx_tuple__35 __pyx_mstate_global->__pyx_tuple__35 +#define __pyx_tuple__38 __pyx_mstate_global->__pyx_tuple__38 +#define __pyx_tuple__39 __pyx_mstate_global->__pyx_tuple__39 +#define __pyx_tuple__42 __pyx_mstate_global->__pyx_tuple__42 +#define __pyx_codeobj__11 __pyx_mstate_global->__pyx_codeobj__11 +#define __pyx_codeobj__13 __pyx_mstate_global->__pyx_codeobj__13 +#define __pyx_codeobj__15 __pyx_mstate_global->__pyx_codeobj__15 +#define __pyx_codeobj__16 __pyx_mstate_global->__pyx_codeobj__16 +#define __pyx_codeobj__17 __pyx_mstate_global->__pyx_codeobj__17 +#define __pyx_codeobj__19 __pyx_mstate_global->__pyx_codeobj__19 +#define __pyx_codeobj__20 __pyx_mstate_global->__pyx_codeobj__20 +#define __pyx_codeobj__22 __pyx_mstate_global->__pyx_codeobj__22 +#define __pyx_codeobj__24 __pyx_mstate_global->__pyx_codeobj__24 +#define __pyx_codeobj__25 __pyx_mstate_global->__pyx_codeobj__25 +#define __pyx_codeobj__26 __pyx_mstate_global->__pyx_codeobj__26 +#define __pyx_codeobj__28 __pyx_mstate_global->__pyx_codeobj__28 +#define __pyx_codeobj__30 __pyx_mstate_global->__pyx_codeobj__30 +#define __pyx_codeobj__32 __pyx_mstate_global->__pyx_codeobj__32 +#define __pyx_codeobj__33 __pyx_mstate_global->__pyx_codeobj__33 +#define __pyx_codeobj__34 __pyx_mstate_global->__pyx_codeobj__34 +#define __pyx_codeobj__36 __pyx_mstate_global->__pyx_codeobj__36 +#define __pyx_codeobj__40 __pyx_mstate_global->__pyx_codeobj__40 +#define __pyx_codeobj__41 __pyx_mstate_global->__pyx_codeobj__41 +#define __pyx_codeobj__43 __pyx_mstate_global->__pyx_codeobj__43 +#define __pyx_codeobj__44 __pyx_mstate_global->__pyx_codeobj__44 +#define __pyx_codeobj__45 __pyx_mstate_global->__pyx_codeobj__45 +#define __pyx_codeobj__46 __pyx_mstate_global->__pyx_codeobj__46 +/* #### Code section: module_code ### */ + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":19 + * _thread_active = threading._active + * + * def clear_thread_local_info(): # <<<<<<<<<<<<<< + * global _thread_local_info + * _thread_local_info = threading.local() + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_1clear_thread_local_info(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_1clear_thread_local_info = {"clear_thread_local_info", (PyCFunction)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_1clear_thread_local_info, METH_NOARGS, 0}; +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_1clear_thread_local_info(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("clear_thread_local_info (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_clear_thread_local_info(__pyx_self); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_clear_thread_local_info(CYTHON_UNUSED PyObject *__pyx_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + unsigned int __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("clear_thread_local_info", 1); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":21 + * def clear_thread_local_info(): + * global _thread_local_info + * _thread_local_info = threading.local() # <<<<<<<<<<<<<< + * + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_threading); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 21, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_local); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 21, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 21, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + if (PyDict_SetItem(__pyx_d, __pyx_n_s_thread_local_info, __pyx_t_1) < 0) __PYX_ERR(0, 21, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":19 + * _thread_active = threading._active + * + * def clear_thread_local_info(): # <<<<<<<<<<<<<< + * global _thread_local_info + * _thread_local_info = threading.local() + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.clear_thread_local_info", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":39 + * cdef public bint force_stay_in_untraced_mode + * + * cdef initialize(self, PyFrameObject * frame_obj): # <<<<<<<<<<<<<< + * # Places that create a ThreadInfo should verify that + * # a current Python frame is being executed! + */ + +static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_initialize(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self, PyFrameObject *__pyx_v_frame_obj) { + PyObject *__pyx_v_basename = NULL; + PyObject *__pyx_v_i = NULL; + PyObject *__pyx_v_j = NULL; + PyObject *__pyx_v_co_name = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyFrameObject *__pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + unsigned int __pyx_t_6; + int __pyx_t_7; + int __pyx_t_8; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("initialize", 1); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":42 + * # Places that create a ThreadInfo should verify that + * # a current Python frame is being executed! + * assert frame_obj != NULL # <<<<<<<<<<<<<< + * + * self.additional_info = None + */ + #ifndef CYTHON_WITHOUT_ASSERTIONS + if (unlikely(__pyx_assertions_enabled())) { + __pyx_t_1 = (__pyx_v_frame_obj != NULL); + if (unlikely(!__pyx_t_1)) { + __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0); + __PYX_ERR(0, 42, __pyx_L1_error) + } + } + #else + if ((1)); else __PYX_ERR(0, 42, __pyx_L1_error) + #endif + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":44 + * assert frame_obj != NULL + * + * self.additional_info = None # <<<<<<<<<<<<<< + * self.is_pydevd_thread = False + * self.inside_frame_eval = 0 + */ + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF((PyObject *)__pyx_v_self->additional_info); + __Pyx_DECREF((PyObject *)__pyx_v_self->additional_info); + __pyx_v_self->additional_info = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)Py_None); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":45 + * + * self.additional_info = None + * self.is_pydevd_thread = False # <<<<<<<<<<<<<< + * self.inside_frame_eval = 0 + * self.fully_initialized = False + */ + __pyx_v_self->is_pydevd_thread = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":46 + * self.additional_info = None + * self.is_pydevd_thread = False + * self.inside_frame_eval = 0 # <<<<<<<<<<<<<< + * self.fully_initialized = False + * self.thread_trace_func = None + */ + __pyx_v_self->inside_frame_eval = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":47 + * self.is_pydevd_thread = False + * self.inside_frame_eval = 0 + * self.fully_initialized = False # <<<<<<<<<<<<<< + * self.thread_trace_func = None + * + */ + __pyx_v_self->fully_initialized = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":48 + * self.inside_frame_eval = 0 + * self.fully_initialized = False + * self.thread_trace_func = None # <<<<<<<<<<<<<< + * + * # Get the root (if it's not a Thread initialized from the threading + */ + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->thread_trace_func); + __Pyx_DECREF(__pyx_v_self->thread_trace_func); + __pyx_v_self->thread_trace_func = Py_None; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":54 + * # otherwise, we have to wait for the threading module itself to + * # create the Thread entry). + * while frame_obj.f_back != NULL: # <<<<<<<<<<<<<< + * frame_obj = frame_obj.f_back + * + */ + while (1) { + __pyx_t_1 = (__pyx_v_frame_obj->f_back != NULL); + if (!__pyx_t_1) break; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":55 + * # create the Thread entry). + * while frame_obj.f_back != NULL: + * frame_obj = frame_obj.f_back # <<<<<<<<<<<<<< + * + * basename = frame_obj.f_code.co_filename + */ + __pyx_t_2 = __pyx_v_frame_obj->f_back; + __pyx_v_frame_obj = __pyx_t_2; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":57 + * frame_obj = frame_obj.f_back + * + * basename = frame_obj.f_code.co_filename # <<<<<<<<<<<<<< + * i = basename.rfind('/') + * j = basename.rfind('\\') + */ + __pyx_t_3 = ((PyObject *)__pyx_v_frame_obj->f_code->co_filename); + __Pyx_INCREF(__pyx_t_3); + __pyx_v_basename = __pyx_t_3; + __pyx_t_3 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":58 + * + * basename = frame_obj.f_code.co_filename + * i = basename.rfind('/') # <<<<<<<<<<<<<< + * j = basename.rfind('\\') + * if j > i: + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_basename, __pyx_n_s_rfind); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 58, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = NULL; + __pyx_t_6 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_6 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_kp_s_}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 58, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __pyx_v_i = __pyx_t_3; + __pyx_t_3 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":59 + * basename = frame_obj.f_code.co_filename + * i = basename.rfind('/') + * j = basename.rfind('\\') # <<<<<<<<<<<<<< + * if j > i: + * i = j + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_basename, __pyx_n_s_rfind); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 59, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = NULL; + __pyx_t_6 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_6 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_kp_s__2}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 59, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __pyx_v_j = __pyx_t_3; + __pyx_t_3 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":60 + * i = basename.rfind('/') + * j = basename.rfind('\\') + * if j > i: # <<<<<<<<<<<<<< + * i = j + * if i >= 0: + */ + __pyx_t_3 = PyObject_RichCompare(__pyx_v_j, __pyx_v_i, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 60, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 60, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":61 + * j = basename.rfind('\\') + * if j > i: + * i = j # <<<<<<<<<<<<<< + * if i >= 0: + * basename = basename[i + 1:] + */ + __Pyx_INCREF(__pyx_v_j); + __Pyx_DECREF_SET(__pyx_v_i, __pyx_v_j); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":60 + * i = basename.rfind('/') + * j = basename.rfind('\\') + * if j > i: # <<<<<<<<<<<<<< + * i = j + * if i >= 0: + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":62 + * if j > i: + * i = j + * if i >= 0: # <<<<<<<<<<<<<< + * basename = basename[i + 1:] + * # remove ext + */ + __pyx_t_3 = PyObject_RichCompare(__pyx_v_i, __pyx_int_0, Py_GE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 62, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 62, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":63 + * i = j + * if i >= 0: + * basename = basename[i + 1:] # <<<<<<<<<<<<<< + * # remove ext + * i = basename.rfind('.') + */ + __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_v_i, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 63, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_v_basename, 0, 0, &__pyx_t_3, NULL, NULL, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 63, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF_SET(__pyx_v_basename, __pyx_t_4); + __pyx_t_4 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":62 + * if j > i: + * i = j + * if i >= 0: # <<<<<<<<<<<<<< + * basename = basename[i + 1:] + * # remove ext + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":65 + * basename = basename[i + 1:] + * # remove ext + * i = basename.rfind('.') # <<<<<<<<<<<<<< + * if i >= 0: + * basename = basename[:i] + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_basename, __pyx_n_s_rfind); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 65, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = NULL; + __pyx_t_6 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_6 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_kp_s__3}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 65, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_DECREF_SET(__pyx_v_i, __pyx_t_4); + __pyx_t_4 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":66 + * # remove ext + * i = basename.rfind('.') + * if i >= 0: # <<<<<<<<<<<<<< + * basename = basename[:i] + * + */ + __pyx_t_4 = PyObject_RichCompare(__pyx_v_i, __pyx_int_0, Py_GE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 66, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 66, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":67 + * i = basename.rfind('.') + * if i >= 0: + * basename = basename[:i] # <<<<<<<<<<<<<< + * + * co_name = frame_obj.f_code.co_name + */ + __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_v_basename, 0, 0, NULL, &__pyx_v_i, NULL, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 67, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF_SET(__pyx_v_basename, __pyx_t_4); + __pyx_t_4 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":66 + * # remove ext + * i = basename.rfind('.') + * if i >= 0: # <<<<<<<<<<<<<< + * basename = basename[:i] + * + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":69 + * basename = basename[:i] + * + * co_name = frame_obj.f_code.co_name # <<<<<<<<<<<<<< + * + * # In these cases we cannot create a dummy thread (an actual + */ + __pyx_t_4 = ((PyObject *)__pyx_v_frame_obj->f_code->co_name); + __Pyx_INCREF(__pyx_t_4); + __pyx_v_co_name = __pyx_t_4; + __pyx_t_4 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":73 + * # In these cases we cannot create a dummy thread (an actual + * # thread will be created later or tracing will already be set). + * if basename == 'threading' and co_name in ('__bootstrap', '_bootstrap', '__bootstrap_inner', '_bootstrap_inner'): # <<<<<<<<<<<<<< + * self._can_create_dummy_thread = False + * elif basename == 'pydev_monkey' and co_name == '__call__': + */ + __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_basename, __pyx_n_s_threading, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 73, __pyx_L1_error) + if (__pyx_t_7) { + } else { + __pyx_t_1 = __pyx_t_7; + goto __pyx_L9_bool_binop_done; + } + __Pyx_INCREF(__pyx_v_co_name); + __pyx_t_4 = __pyx_v_co_name; + __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_bootstrap, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 73, __pyx_L1_error) + if (!__pyx_t_8) { + } else { + __pyx_t_7 = __pyx_t_8; + goto __pyx_L11_bool_binop_done; + } + __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_bootstrap_2, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 73, __pyx_L1_error) + if (!__pyx_t_8) { + } else { + __pyx_t_7 = __pyx_t_8; + goto __pyx_L11_bool_binop_done; + } + __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_bootstrap_inner, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 73, __pyx_L1_error) + if (!__pyx_t_8) { + } else { + __pyx_t_7 = __pyx_t_8; + goto __pyx_L11_bool_binop_done; + } + __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_bootstrap_inner_2, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 73, __pyx_L1_error) + __pyx_t_7 = __pyx_t_8; + __pyx_L11_bool_binop_done:; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_8 = __pyx_t_7; + __pyx_t_1 = __pyx_t_8; + __pyx_L9_bool_binop_done:; + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":74 + * # thread will be created later or tracing will already be set). + * if basename == 'threading' and co_name in ('__bootstrap', '_bootstrap', '__bootstrap_inner', '_bootstrap_inner'): + * self._can_create_dummy_thread = False # <<<<<<<<<<<<<< + * elif basename == 'pydev_monkey' and co_name == '__call__': + * self._can_create_dummy_thread = False + */ + __pyx_v_self->_can_create_dummy_thread = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":73 + * # In these cases we cannot create a dummy thread (an actual + * # thread will be created later or tracing will already be set). + * if basename == 'threading' and co_name in ('__bootstrap', '_bootstrap', '__bootstrap_inner', '_bootstrap_inner'): # <<<<<<<<<<<<<< + * self._can_create_dummy_thread = False + * elif basename == 'pydev_monkey' and co_name == '__call__': + */ + goto __pyx_L8; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":75 + * if basename == 'threading' and co_name in ('__bootstrap', '_bootstrap', '__bootstrap_inner', '_bootstrap_inner'): + * self._can_create_dummy_thread = False + * elif basename == 'pydev_monkey' and co_name == '__call__': # <<<<<<<<<<<<<< + * self._can_create_dummy_thread = False + * elif basename == 'pydevd' and co_name in ('run', 'main', '_exec'): + */ + __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_v_basename, __pyx_n_s_pydev_monkey, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 75, __pyx_L1_error) + if (__pyx_t_8) { + } else { + __pyx_t_1 = __pyx_t_8; + goto __pyx_L15_bool_binop_done; + } + __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_v_co_name, __pyx_n_s_call, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 75, __pyx_L1_error) + __pyx_t_1 = __pyx_t_8; + __pyx_L15_bool_binop_done:; + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":76 + * self._can_create_dummy_thread = False + * elif basename == 'pydev_monkey' and co_name == '__call__': + * self._can_create_dummy_thread = False # <<<<<<<<<<<<<< + * elif basename == 'pydevd' and co_name in ('run', 'main', '_exec'): + * self._can_create_dummy_thread = False + */ + __pyx_v_self->_can_create_dummy_thread = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":75 + * if basename == 'threading' and co_name in ('__bootstrap', '_bootstrap', '__bootstrap_inner', '_bootstrap_inner'): + * self._can_create_dummy_thread = False + * elif basename == 'pydev_monkey' and co_name == '__call__': # <<<<<<<<<<<<<< + * self._can_create_dummy_thread = False + * elif basename == 'pydevd' and co_name in ('run', 'main', '_exec'): + */ + goto __pyx_L8; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":77 + * elif basename == 'pydev_monkey' and co_name == '__call__': + * self._can_create_dummy_thread = False + * elif basename == 'pydevd' and co_name in ('run', 'main', '_exec'): # <<<<<<<<<<<<<< + * self._can_create_dummy_thread = False + * elif basename == 'pydevd_tracing': + */ + __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_v_basename, __pyx_n_s_pydevd, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 77, __pyx_L1_error) + if (__pyx_t_8) { + } else { + __pyx_t_1 = __pyx_t_8; + goto __pyx_L17_bool_binop_done; + } + __Pyx_INCREF(__pyx_v_co_name); + __pyx_t_4 = __pyx_v_co_name; + __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_run, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 77, __pyx_L1_error) + if (!__pyx_t_7) { + } else { + __pyx_t_8 = __pyx_t_7; + goto __pyx_L19_bool_binop_done; + } + __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_main, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 77, __pyx_L1_error) + if (!__pyx_t_7) { + } else { + __pyx_t_8 = __pyx_t_7; + goto __pyx_L19_bool_binop_done; + } + __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_exec, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 77, __pyx_L1_error) + __pyx_t_8 = __pyx_t_7; + __pyx_L19_bool_binop_done:; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_7 = __pyx_t_8; + __pyx_t_1 = __pyx_t_7; + __pyx_L17_bool_binop_done:; + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":78 + * self._can_create_dummy_thread = False + * elif basename == 'pydevd' and co_name in ('run', 'main', '_exec'): + * self._can_create_dummy_thread = False # <<<<<<<<<<<<<< + * elif basename == 'pydevd_tracing': + * self._can_create_dummy_thread = False + */ + __pyx_v_self->_can_create_dummy_thread = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":77 + * elif basename == 'pydev_monkey' and co_name == '__call__': + * self._can_create_dummy_thread = False + * elif basename == 'pydevd' and co_name in ('run', 'main', '_exec'): # <<<<<<<<<<<<<< + * self._can_create_dummy_thread = False + * elif basename == 'pydevd_tracing': + */ + goto __pyx_L8; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":79 + * elif basename == 'pydevd' and co_name in ('run', 'main', '_exec'): + * self._can_create_dummy_thread = False + * elif basename == 'pydevd_tracing': # <<<<<<<<<<<<<< + * self._can_create_dummy_thread = False + * else: + */ + __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_basename, __pyx_n_s_pydevd_tracing, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 79, __pyx_L1_error) + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":80 + * self._can_create_dummy_thread = False + * elif basename == 'pydevd_tracing': + * self._can_create_dummy_thread = False # <<<<<<<<<<<<<< + * else: + * self._can_create_dummy_thread = True + */ + __pyx_v_self->_can_create_dummy_thread = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":79 + * elif basename == 'pydevd' and co_name in ('run', 'main', '_exec'): + * self._can_create_dummy_thread = False + * elif basename == 'pydevd_tracing': # <<<<<<<<<<<<<< + * self._can_create_dummy_thread = False + * else: + */ + goto __pyx_L8; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":82 + * self._can_create_dummy_thread = False + * else: + * self._can_create_dummy_thread = True # <<<<<<<<<<<<<< + * + * # print('Can create dummy thread for thread started in: %s %s' % (basename, co_name)) + */ + /*else*/ { + __pyx_v_self->_can_create_dummy_thread = 1; + } + __pyx_L8:; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":39 + * cdef public bint force_stay_in_untraced_mode + * + * cdef initialize(self, PyFrameObject * frame_obj): # <<<<<<<<<<<<<< + * # Places that create a ThreadInfo should verify that + * # a current Python frame is being executed! + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.ThreadInfo.initialize", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_basename); + __Pyx_XDECREF(__pyx_v_i); + __Pyx_XDECREF(__pyx_v_j); + __Pyx_XDECREF(__pyx_v_co_name); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":86 + * # print('Can create dummy thread for thread started in: %s %s' % (basename, co_name)) + * + * cdef initialize_if_possible(self): # <<<<<<<<<<<<<< + * # Don't call threading.currentThread because if we're too early in the process + * # we may create a dummy thread. + */ + +static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_initialize_if_possible(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self) { + PyObject *__pyx_v_thread_ident = NULL; + PyObject *__pyx_v_t = NULL; + PyObject *__pyx_v_additional_info = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + unsigned int __pyx_t_4; + int __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + PyObject *__pyx_t_11 = NULL; + PyObject *__pyx_t_12 = NULL; + PyObject *__pyx_t_13 = NULL; + PyObject *__pyx_t_14 = NULL; + PyObject *__pyx_t_15 = NULL; + PyObject *__pyx_t_16 = NULL; + PyObject *__pyx_t_17 = NULL; + int __pyx_t_18; + int __pyx_t_19; + int __pyx_t_20; + char const *__pyx_t_21; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("initialize_if_possible", 1); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":89 + * # Don't call threading.currentThread because if we're too early in the process + * # we may create a dummy thread. + * self.inside_frame_eval += 1 # <<<<<<<<<<<<<< + * + * try: + */ + __pyx_v_self->inside_frame_eval = (__pyx_v_self->inside_frame_eval + 1); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":91 + * self.inside_frame_eval += 1 + * + * try: # <<<<<<<<<<<<<< + * thread_ident = _get_ident() + * t = _thread_active.get(thread_ident) + */ + /*try:*/ { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":92 + * + * try: + * thread_ident = _get_ident() # <<<<<<<<<<<<<< + * t = _thread_active.get(thread_ident) + * if t is None: + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_get_ident); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 92, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 92, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_v_thread_ident = __pyx_t_1; + __pyx_t_1 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":93 + * try: + * thread_ident = _get_ident() + * t = _thread_active.get(thread_ident) # <<<<<<<<<<<<<< + * if t is None: + * if self._can_create_dummy_thread: + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_thread_active); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 93, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 93, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_thread_ident}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 93, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_v_t = __pyx_t_1; + __pyx_t_1 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":94 + * thread_ident = _get_ident() + * t = _thread_active.get(thread_ident) + * if t is None: # <<<<<<<<<<<<<< + * if self._can_create_dummy_thread: + * # Initialize the dummy thread and set the tracing (both are needed to + */ + __pyx_t_5 = (__pyx_v_t == Py_None); + if (__pyx_t_5) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":95 + * t = _thread_active.get(thread_ident) + * if t is None: + * if self._can_create_dummy_thread: # <<<<<<<<<<<<<< + * # Initialize the dummy thread and set the tracing (both are needed to + * # actually stop on breakpoints). + */ + if (__pyx_v_self->_can_create_dummy_thread) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":98 + * # Initialize the dummy thread and set the tracing (both are needed to + * # actually stop on breakpoints). + * t = threading.current_thread() # <<<<<<<<<<<<<< + * SetTrace(dummy_trace_dispatch) + * else: + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_threading); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 98, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_current_thread); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 98, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 98, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_DECREF_SET(__pyx_v_t, __pyx_t_1); + __pyx_t_1 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":99 + * # actually stop on breakpoints). + * t = threading.current_thread() + * SetTrace(dummy_trace_dispatch) # <<<<<<<<<<<<<< + * else: + * return # Cannot initialize until thread becomes active. + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_SetTrace); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 99, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_dummy_trace_dispatch); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 99, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_3}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 99, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":95 + * t = _thread_active.get(thread_ident) + * if t is None: + * if self._can_create_dummy_thread: # <<<<<<<<<<<<<< + * # Initialize the dummy thread and set the tracing (both are needed to + * # actually stop on breakpoints). + */ + goto __pyx_L7; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":101 + * SetTrace(dummy_trace_dispatch) + * else: + * return # Cannot initialize until thread becomes active. # <<<<<<<<<<<<<< + * + * if getattr(t, 'is_pydev_daemon_thread', False): + */ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L3_return; + } + __pyx_L7:; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":94 + * thread_ident = _get_ident() + * t = _thread_active.get(thread_ident) + * if t is None: # <<<<<<<<<<<<<< + * if self._can_create_dummy_thread: + * # Initialize the dummy thread and set the tracing (both are needed to + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":103 + * return # Cannot initialize until thread becomes active. + * + * if getattr(t, 'is_pydev_daemon_thread', False): # <<<<<<<<<<<<<< + * self.is_pydevd_thread = True + * self.fully_initialized = True + */ + __pyx_t_1 = __Pyx_GetAttr3(__pyx_v_t, __pyx_n_s_is_pydev_daemon_thread, Py_False); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 103, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 103, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_5) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":104 + * + * if getattr(t, 'is_pydev_daemon_thread', False): + * self.is_pydevd_thread = True # <<<<<<<<<<<<<< + * self.fully_initialized = True + * else: + */ + __pyx_v_self->is_pydevd_thread = 1; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":105 + * if getattr(t, 'is_pydev_daemon_thread', False): + * self.is_pydevd_thread = True + * self.fully_initialized = True # <<<<<<<<<<<<<< + * else: + * try: + */ + __pyx_v_self->fully_initialized = 1; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":103 + * return # Cannot initialize until thread becomes active. + * + * if getattr(t, 'is_pydev_daemon_thread', False): # <<<<<<<<<<<<<< + * self.is_pydevd_thread = True + * self.fully_initialized = True + */ + goto __pyx_L8; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":107 + * self.fully_initialized = True + * else: + * try: # <<<<<<<<<<<<<< + * additional_info = t.additional_info + * if additional_info is None: + */ + /*else*/ { + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9); + __Pyx_XGOTREF(__pyx_t_7); + __Pyx_XGOTREF(__pyx_t_8); + __Pyx_XGOTREF(__pyx_t_9); + /*try:*/ { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":108 + * else: + * try: + * additional_info = t.additional_info # <<<<<<<<<<<<<< + * if additional_info is None: + * raise AttributeError() + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_t, __pyx_n_s_additional_info); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 108, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_additional_info = __pyx_t_1; + __pyx_t_1 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":109 + * try: + * additional_info = t.additional_info + * if additional_info is None: # <<<<<<<<<<<<<< + * raise AttributeError() + * except: + */ + __pyx_t_5 = (__pyx_v_additional_info == Py_None); + if (unlikely(__pyx_t_5)) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":110 + * additional_info = t.additional_info + * if additional_info is None: + * raise AttributeError() # <<<<<<<<<<<<<< + * except: + * with _set_additional_thread_info_lock: + */ + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_builtin_AttributeError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 110, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(0, 110, __pyx_L9_error) + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":109 + * try: + * additional_info = t.additional_info + * if additional_info is None: # <<<<<<<<<<<<<< + * raise AttributeError() + * except: + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":107 + * self.fully_initialized = True + * else: + * try: # <<<<<<<<<<<<<< + * additional_info = t.additional_info + * if additional_info is None: + */ + } + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + goto __pyx_L14_try_end; + __pyx_L9_error:; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":111 + * if additional_info is None: + * raise AttributeError() + * except: # <<<<<<<<<<<<<< + * with _set_additional_thread_info_lock: + * # If it's not there, set it within a lock to avoid any racing + */ + /*except:*/ { + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.ThreadInfo.initialize_if_possible", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3) < 0) __PYX_ERR(0, 111, __pyx_L11_except_error) + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":112 + * raise AttributeError() + * except: + * with _set_additional_thread_info_lock: # <<<<<<<<<<<<<< + * # If it's not there, set it within a lock to avoid any racing + * # conditions. + */ + /*with:*/ { + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_set_additional_thread_info_lock); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 112, __pyx_L11_except_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_10 = __Pyx_PyObject_LookupSpecial(__pyx_t_6, __pyx_n_s_exit); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 112, __pyx_L11_except_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_12 = __Pyx_PyObject_LookupSpecial(__pyx_t_6, __pyx_n_s_enter); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 112, __pyx_L18_error) + __Pyx_GOTREF(__pyx_t_12); + __pyx_t_13 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_12))) { + __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_12); + if (likely(__pyx_t_13)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); + __Pyx_INCREF(__pyx_t_13); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_12, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_13, NULL}; + __pyx_t_11 = __Pyx_PyObject_FastCall(__pyx_t_12, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 112, __pyx_L18_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + } + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + /*try:*/ { + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16); + __Pyx_XGOTREF(__pyx_t_14); + __Pyx_XGOTREF(__pyx_t_15); + __Pyx_XGOTREF(__pyx_t_16); + /*try:*/ { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":115 + * # If it's not there, set it within a lock to avoid any racing + * # conditions. + * additional_info = getattr(thread, 'additional_info', None) # <<<<<<<<<<<<<< + * if additional_info is None: + * additional_info = PyDBAdditionalThreadInfo() + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_thread); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 115, __pyx_L24_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_11 = __Pyx_GetAttr3(__pyx_t_6, __pyx_n_s_additional_info, Py_None); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 115, __pyx_L24_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF_SET(__pyx_v_additional_info, __pyx_t_11); + __pyx_t_11 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":116 + * # conditions. + * additional_info = getattr(thread, 'additional_info', None) + * if additional_info is None: # <<<<<<<<<<<<<< + * additional_info = PyDBAdditionalThreadInfo() + * t.additional_info = additional_info + */ + __pyx_t_5 = (__pyx_v_additional_info == Py_None); + if (__pyx_t_5) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":117 + * additional_info = getattr(thread, 'additional_info', None) + * if additional_info is None: + * additional_info = PyDBAdditionalThreadInfo() # <<<<<<<<<<<<<< + * t.additional_info = additional_info + * self.additional_info = additional_info + */ + __pyx_t_11 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 117, __pyx_L24_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF_SET(__pyx_v_additional_info, __pyx_t_11); + __pyx_t_11 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":116 + * # conditions. + * additional_info = getattr(thread, 'additional_info', None) + * if additional_info is None: # <<<<<<<<<<<<<< + * additional_info = PyDBAdditionalThreadInfo() + * t.additional_info = additional_info + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":118 + * if additional_info is None: + * additional_info = PyDBAdditionalThreadInfo() + * t.additional_info = additional_info # <<<<<<<<<<<<<< + * self.additional_info = additional_info + * self.fully_initialized = True + */ + if (__Pyx_PyObject_SetAttrStr(__pyx_v_t, __pyx_n_s_additional_info, __pyx_v_additional_info) < 0) __PYX_ERR(0, 118, __pyx_L24_error) + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":112 + * raise AttributeError() + * except: + * with _set_additional_thread_info_lock: # <<<<<<<<<<<<<< + * # If it's not there, set it within a lock to avoid any racing + * # conditions. + */ + } + __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; + __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; + goto __pyx_L31_try_end; + __pyx_L24_error:; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + /*except:*/ { + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.ThreadInfo.initialize_if_possible", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_6, &__pyx_t_12) < 0) __PYX_ERR(0, 112, __pyx_L26_except_error) + __Pyx_XGOTREF(__pyx_t_11); + __Pyx_XGOTREF(__pyx_t_6); + __Pyx_XGOTREF(__pyx_t_12); + __pyx_t_13 = PyTuple_Pack(3, __pyx_t_11, __pyx_t_6, __pyx_t_12); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 112, __pyx_L26_except_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_17 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_13, NULL); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 112, __pyx_L26_except_error) + __Pyx_GOTREF(__pyx_t_17); + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_17); + __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; + if (__pyx_t_5 < 0) __PYX_ERR(0, 112, __pyx_L26_except_error) + __pyx_t_18 = (!__pyx_t_5); + if (unlikely(__pyx_t_18)) { + __Pyx_GIVEREF(__pyx_t_11); + __Pyx_GIVEREF(__pyx_t_6); + __Pyx_XGIVEREF(__pyx_t_12); + __Pyx_ErrRestoreWithState(__pyx_t_11, __pyx_t_6, __pyx_t_12); + __pyx_t_11 = 0; __pyx_t_6 = 0; __pyx_t_12 = 0; + __PYX_ERR(0, 112, __pyx_L26_except_error) + } + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + goto __pyx_L25_exception_handled; + } + __pyx_L26_except_error:; + __Pyx_XGIVEREF(__pyx_t_14); + __Pyx_XGIVEREF(__pyx_t_15); + __Pyx_XGIVEREF(__pyx_t_16); + __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16); + goto __pyx_L11_except_error; + __pyx_L25_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_14); + __Pyx_XGIVEREF(__pyx_t_15); + __Pyx_XGIVEREF(__pyx_t_16); + __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16); + __pyx_L31_try_end:; + } + } + /*finally:*/ { + /*normal exit:*/{ + if (__pyx_t_10) { + __pyx_t_16 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_tuple__4, NULL); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 112, __pyx_L11_except_error) + __Pyx_GOTREF(__pyx_t_16); + __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; + } + goto __pyx_L23; + } + __pyx_L23:; + } + goto __pyx_L36; + __pyx_L18_error:; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + goto __pyx_L11_except_error; + __pyx_L36:; + } + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L10_exception_handled; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":107 + * self.fully_initialized = True + * else: + * try: # <<<<<<<<<<<<<< + * additional_info = t.additional_info + * if additional_info is None: + */ + __pyx_L11_except_error:; + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9); + goto __pyx_L4_error; + __pyx_L10_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9); + __pyx_L14_try_end:; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":119 + * additional_info = PyDBAdditionalThreadInfo() + * t.additional_info = additional_info + * self.additional_info = additional_info # <<<<<<<<<<<<<< + * self.fully_initialized = True + * finally: + */ + if (unlikely(!__pyx_v_additional_info)) { __Pyx_RaiseUnboundLocalError("additional_info"); __PYX_ERR(0, 119, __pyx_L4_error) } + if (!(likely(((__pyx_v_additional_info) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_additional_info, __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo))))) __PYX_ERR(0, 119, __pyx_L4_error) + __pyx_t_3 = __pyx_v_additional_info; + __Pyx_INCREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + __Pyx_GOTREF((PyObject *)__pyx_v_self->additional_info); + __Pyx_DECREF((PyObject *)__pyx_v_self->additional_info); + __pyx_v_self->additional_info = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_t_3); + __pyx_t_3 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":120 + * t.additional_info = additional_info + * self.additional_info = additional_info + * self.fully_initialized = True # <<<<<<<<<<<<<< + * finally: + * self.inside_frame_eval -= 1 + */ + __pyx_v_self->fully_initialized = 1; + } + __pyx_L8:; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":122 + * self.fully_initialized = True + * finally: + * self.inside_frame_eval -= 1 # <<<<<<<<<<<<<< + * + * + */ + /*finally:*/ { + /*normal exit:*/{ + __pyx_v_self->inside_frame_eval = (__pyx_v_self->inside_frame_eval - 1); + goto __pyx_L5; + } + __pyx_L4_error:; + /*exception exit:*/{ + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __pyx_t_9 = 0; __pyx_t_8 = 0; __pyx_t_7 = 0; __pyx_t_10 = 0; __pyx_t_16 = 0; __pyx_t_15 = 0; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_10, &__pyx_t_16, &__pyx_t_15); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_9, &__pyx_t_8, &__pyx_t_7) < 0)) __Pyx_ErrFetch(&__pyx_t_9, &__pyx_t_8, &__pyx_t_7); + __Pyx_XGOTREF(__pyx_t_9); + __Pyx_XGOTREF(__pyx_t_8); + __Pyx_XGOTREF(__pyx_t_7); + __Pyx_XGOTREF(__pyx_t_10); + __Pyx_XGOTREF(__pyx_t_16); + __Pyx_XGOTREF(__pyx_t_15); + __pyx_t_19 = __pyx_lineno; __pyx_t_20 = __pyx_clineno; __pyx_t_21 = __pyx_filename; + { + __pyx_v_self->inside_frame_eval = (__pyx_v_self->inside_frame_eval - 1); + } + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_10); + __Pyx_XGIVEREF(__pyx_t_16); + __Pyx_XGIVEREF(__pyx_t_15); + __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_16, __pyx_t_15); + } + __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_ErrRestore(__pyx_t_9, __pyx_t_8, __pyx_t_7); + __pyx_t_9 = 0; __pyx_t_8 = 0; __pyx_t_7 = 0; __pyx_t_10 = 0; __pyx_t_16 = 0; __pyx_t_15 = 0; + __pyx_lineno = __pyx_t_19; __pyx_clineno = __pyx_t_20; __pyx_filename = __pyx_t_21; + goto __pyx_L1_error; + } + __pyx_L3_return: { + __pyx_t_15 = __pyx_r; + __pyx_r = 0; + __pyx_v_self->inside_frame_eval = (__pyx_v_self->inside_frame_eval - 1); + __pyx_r = __pyx_t_15; + __pyx_t_15 = 0; + goto __pyx_L0; + } + __pyx_L5:; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":86 + * # print('Can create dummy thread for thread started in: %s %s' % (basename, co_name)) + * + * cdef initialize_if_possible(self): # <<<<<<<<<<<<<< + * # Don't call threading.currentThread because if we're too early in the process + * # we may create a dummy thread. + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_11); + __Pyx_XDECREF(__pyx_t_12); + __Pyx_XDECREF(__pyx_t_13); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.ThreadInfo.initialize_if_possible", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_thread_ident); + __Pyx_XDECREF(__pyx_v_t); + __Pyx_XDECREF(__pyx_v_additional_info); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":26 + * cdef class ThreadInfo: + * + * cdef public PyDBAdditionalThreadInfo additional_info # <<<<<<<<<<<<<< + * cdef public bint is_pydevd_thread + * cdef public int inside_frame_eval + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_15additional_info_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_15additional_info_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_15additional_info___get__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_15additional_info___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_self->additional_info); + __pyx_r = ((PyObject *)__pyx_v_self->additional_info); + goto __pyx_L0; + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_15additional_info_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_15additional_info_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_15additional_info_2__set__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_15additional_info_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__set__", 1); + if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo))))) __PYX_ERR(0, 26, __pyx_L1_error) + __pyx_t_1 = __pyx_v_value; + __Pyx_INCREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF((PyObject *)__pyx_v_self->additional_info); + __Pyx_DECREF((PyObject *)__pyx_v_self->additional_info); + __pyx_v_self->additional_info = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_t_1); + __pyx_t_1 = 0; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.ThreadInfo.additional_info.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_15additional_info_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_15additional_info_5__del__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_15additional_info_4__del__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_15additional_info_4__del__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 1); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF((PyObject *)__pyx_v_self->additional_info); + __Pyx_DECREF((PyObject *)__pyx_v_self->additional_info); + __pyx_v_self->additional_info = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)Py_None); + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":27 + * + * cdef public PyDBAdditionalThreadInfo additional_info + * cdef public bint is_pydevd_thread # <<<<<<<<<<<<<< + * cdef public int inside_frame_eval + * cdef public bint fully_initialized + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_16is_pydevd_thread_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_16is_pydevd_thread_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_16is_pydevd_thread___get__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_16is_pydevd_thread___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->is_pydevd_thread); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 27, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.ThreadInfo.is_pydevd_thread.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_16is_pydevd_thread_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_16is_pydevd_thread_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_16is_pydevd_thread_2__set__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_16is_pydevd_thread_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + int __pyx_t_1; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 27, __pyx_L1_error) + __pyx_v_self->is_pydevd_thread = __pyx_t_1; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.ThreadInfo.is_pydevd_thread.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + return __pyx_r; +} + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":28 + * cdef public PyDBAdditionalThreadInfo additional_info + * cdef public bint is_pydevd_thread + * cdef public int inside_frame_eval # <<<<<<<<<<<<<< + * cdef public bint fully_initialized + * cdef public object thread_trace_func + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17inside_frame_eval_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17inside_frame_eval_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17inside_frame_eval___get__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17inside_frame_eval___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->inside_frame_eval); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 28, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.ThreadInfo.inside_frame_eval.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17inside_frame_eval_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17inside_frame_eval_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17inside_frame_eval_2__set__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17inside_frame_eval_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + int __pyx_t_1; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 28, __pyx_L1_error) + __pyx_v_self->inside_frame_eval = __pyx_t_1; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.ThreadInfo.inside_frame_eval.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + return __pyx_r; +} + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":29 + * cdef public bint is_pydevd_thread + * cdef public int inside_frame_eval + * cdef public bint fully_initialized # <<<<<<<<<<<<<< + * cdef public object thread_trace_func + * cdef bint _can_create_dummy_thread + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17fully_initialized_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17fully_initialized_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17fully_initialized___get__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17fully_initialized___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->fully_initialized); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 29, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.ThreadInfo.fully_initialized.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17fully_initialized_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17fully_initialized_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17fully_initialized_2__set__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17fully_initialized_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + int __pyx_t_1; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 29, __pyx_L1_error) + __pyx_v_self->fully_initialized = __pyx_t_1; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.ThreadInfo.fully_initialized.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + return __pyx_r; +} + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":30 + * cdef public int inside_frame_eval + * cdef public bint fully_initialized + * cdef public object thread_trace_func # <<<<<<<<<<<<<< + * cdef bint _can_create_dummy_thread + * + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17thread_trace_func_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17thread_trace_func_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17thread_trace_func___get__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17thread_trace_func___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->thread_trace_func); + __pyx_r = __pyx_v_self->thread_trace_func; + goto __pyx_L0; + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17thread_trace_func_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17thread_trace_func_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17thread_trace_func_2__set__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17thread_trace_func_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__", 1); + __Pyx_INCREF(__pyx_v_value); + __Pyx_GIVEREF(__pyx_v_value); + __Pyx_GOTREF(__pyx_v_self->thread_trace_func); + __Pyx_DECREF(__pyx_v_self->thread_trace_func); + __pyx_v_self->thread_trace_func = __pyx_v_value; + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17thread_trace_func_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17thread_trace_func_5__del__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17thread_trace_func_4__del__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17thread_trace_func_4__del__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 1); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->thread_trace_func); + __Pyx_DECREF(__pyx_v_self->thread_trace_func); + __pyx_v_self->thread_trace_func = Py_None; + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":37 + * # If True the debugger should not go into trace mode even if the new + * # code for a function is None and there are breakpoints. + * cdef public bint force_stay_in_untraced_mode # <<<<<<<<<<<<<< + * + * cdef initialize(self, PyFrameObject * frame_obj): + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_27force_stay_in_untraced_mode_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_27force_stay_in_untraced_mode_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_27force_stay_in_untraced_mode___get__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_27force_stay_in_untraced_mode___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->force_stay_in_untraced_mode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 37, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.ThreadInfo.force_stay_in_untraced_mode.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_27force_stay_in_untraced_mode_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_27force_stay_in_untraced_mode_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_27force_stay_in_untraced_mode_2__set__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_27force_stay_in_untraced_mode_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + int __pyx_t_1; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 37, __pyx_L1_error) + __pyx_v_self->force_stay_in_untraced_mode = __pyx_t_1; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.ThreadInfo.force_stay_in_untraced_mode.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_1__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_1__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_1__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { + __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} + if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo___reduce_cython__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo___reduce_cython__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self) { + PyObject *__pyx_v_state = 0; + PyObject *__pyx_v__dict = 0; + int __pyx_v_use_setstate; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + int __pyx_t_7; + int __pyx_t_8; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__reduce_cython__", 1); + + /* "(tree fragment)":5 + * cdef object _dict + * cdef bint use_setstate + * state = (self._can_create_dummy_thread, self.additional_info, self.force_stay_in_untraced_mode, self.fully_initialized, self.inside_frame_eval, self.is_pydevd_thread, self.thread_trace_func) # <<<<<<<<<<<<<< + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: + */ + __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->_can_create_dummy_thread); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_self->force_stay_in_untraced_mode); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_v_self->fully_initialized); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_self->inside_frame_eval); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_v_self->is_pydevd_thread); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = PyTuple_New(7); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error); + __Pyx_INCREF((PyObject *)__pyx_v_self->additional_info); + __Pyx_GIVEREF((PyObject *)__pyx_v_self->additional_info); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, ((PyObject *)__pyx_v_self->additional_info))) __PYX_ERR(1, 5, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_3); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_4); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 4, __pyx_t_4)) __PYX_ERR(1, 5, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_5); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 5, __pyx_t_5)) __PYX_ERR(1, 5, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_self->thread_trace_func); + __Pyx_GIVEREF(__pyx_v_self->thread_trace_func); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 6, __pyx_v_self->thread_trace_func)) __PYX_ERR(1, 5, __pyx_L1_error); + __pyx_t_1 = 0; + __pyx_t_2 = 0; + __pyx_t_3 = 0; + __pyx_t_4 = 0; + __pyx_t_5 = 0; + __pyx_v_state = ((PyObject*)__pyx_t_6); + __pyx_t_6 = 0; + + /* "(tree fragment)":6 + * cdef bint use_setstate + * state = (self._can_create_dummy_thread, self.additional_info, self.force_stay_in_untraced_mode, self.fully_initialized, self.inside_frame_eval, self.is_pydevd_thread, self.thread_trace_func) + * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< + * if _dict is not None: + * state += (_dict,) + */ + __pyx_t_6 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_v__dict = __pyx_t_6; + __pyx_t_6 = 0; + + /* "(tree fragment)":7 + * state = (self._can_create_dummy_thread, self.additional_info, self.force_stay_in_untraced_mode, self.fully_initialized, self.inside_frame_eval, self.is_pydevd_thread, self.thread_trace_func) + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: # <<<<<<<<<<<<<< + * state += (_dict,) + * use_setstate = True + */ + __pyx_t_7 = (__pyx_v__dict != Py_None); + if (__pyx_t_7) { + + /* "(tree fragment)":8 + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: + * state += (_dict,) # <<<<<<<<<<<<<< + * use_setstate = True + * else: + */ + __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_INCREF(__pyx_v__dict); + __Pyx_GIVEREF(__pyx_v__dict); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v__dict)) __PYX_ERR(1, 8, __pyx_L1_error); + __pyx_t_5 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_5)); + __pyx_t_5 = 0; + + /* "(tree fragment)":9 + * if _dict is not None: + * state += (_dict,) + * use_setstate = True # <<<<<<<<<<<<<< + * else: + * use_setstate = self.additional_info is not None or self.thread_trace_func is not None + */ + __pyx_v_use_setstate = 1; + + /* "(tree fragment)":7 + * state = (self._can_create_dummy_thread, self.additional_info, self.force_stay_in_untraced_mode, self.fully_initialized, self.inside_frame_eval, self.is_pydevd_thread, self.thread_trace_func) + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: # <<<<<<<<<<<<<< + * state += (_dict,) + * use_setstate = True + */ + goto __pyx_L3; + } + + /* "(tree fragment)":11 + * use_setstate = True + * else: + * use_setstate = self.additional_info is not None or self.thread_trace_func is not None # <<<<<<<<<<<<<< + * if use_setstate: + * return __pyx_unpickle_ThreadInfo, (type(self), 0xe535b68, None), state + */ + /*else*/ { + __pyx_t_8 = (((PyObject *)__pyx_v_self->additional_info) != Py_None); + if (!__pyx_t_8) { + } else { + __pyx_t_7 = __pyx_t_8; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_8 = (__pyx_v_self->thread_trace_func != Py_None); + __pyx_t_7 = __pyx_t_8; + __pyx_L4_bool_binop_done:; + __pyx_v_use_setstate = __pyx_t_7; + } + __pyx_L3:; + + /* "(tree fragment)":12 + * else: + * use_setstate = self.additional_info is not None or self.thread_trace_func is not None + * if use_setstate: # <<<<<<<<<<<<<< + * return __pyx_unpickle_ThreadInfo, (type(self), 0xe535b68, None), state + * else: + */ + if (__pyx_v_use_setstate) { + + /* "(tree fragment)":13 + * use_setstate = self.additional_info is not None or self.thread_trace_func is not None + * if use_setstate: + * return __pyx_unpickle_ThreadInfo, (type(self), 0xe535b68, None), state # <<<<<<<<<<<<<< + * else: + * return __pyx_unpickle_ThreadInfo, (type(self), 0xe535b68, state) + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_ThreadInfo); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_int_240343912); + __Pyx_GIVEREF(__pyx_int_240343912); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_240343912)) __PYX_ERR(1, 13, __pyx_L1_error); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 2, Py_None)) __PYX_ERR(1, 13, __pyx_L1_error); + __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_5); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_6); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_state); + __Pyx_GIVEREF(__pyx_v_state); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_state)) __PYX_ERR(1, 13, __pyx_L1_error); + __pyx_t_5 = 0; + __pyx_t_6 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + + /* "(tree fragment)":12 + * else: + * use_setstate = self.additional_info is not None or self.thread_trace_func is not None + * if use_setstate: # <<<<<<<<<<<<<< + * return __pyx_unpickle_ThreadInfo, (type(self), 0xe535b68, None), state + * else: + */ + } + + /* "(tree fragment)":15 + * return __pyx_unpickle_ThreadInfo, (type(self), 0xe535b68, None), state + * else: + * return __pyx_unpickle_ThreadInfo, (type(self), 0xe535b68, state) # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * __pyx_unpickle_ThreadInfo__set_state(self, __pyx_state) + */ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_ThreadInfo); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 15, __pyx_L1_error); + __Pyx_INCREF(__pyx_int_240343912); + __Pyx_GIVEREF(__pyx_int_240343912); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_240343912)) __PYX_ERR(1, 15, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_state); + __Pyx_GIVEREF(__pyx_v_state); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_state)) __PYX_ERR(1, 15, __pyx_L1_error); + __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_4); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_6); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_6)) __PYX_ERR(1, 15, __pyx_L1_error); + __pyx_t_4 = 0; + __pyx_t_6 = 0; + __pyx_r = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L0; + } + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.ThreadInfo.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_state); + __Pyx_XDECREF(__pyx_v__dict); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":16 + * else: + * return __pyx_unpickle_ThreadInfo, (type(self), 0xe535b68, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_ThreadInfo__set_state(self, __pyx_state) + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_3__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_3__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_3__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 16, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(1, 16, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + } + __pyx_v___pyx_state = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 16, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.ThreadInfo.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_2__setstate_cython__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_self), __pyx_v___pyx_state); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_2__setstate_cython__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_self, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__setstate_cython__", 1); + + /* "(tree fragment)":17 + * return __pyx_unpickle_ThreadInfo, (type(self), 0xe535b68, state) + * def __setstate_cython__(self, __pyx_state): + * __pyx_unpickle_ThreadInfo__set_state(self, __pyx_state) # <<<<<<<<<<<<<< + */ + if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(1, 17, __pyx_L1_error) + __pyx_t_1 = __pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unpickle_ThreadInfo__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle_ThreadInfo, (type(self), 0xe535b68, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_ThreadInfo__set_state(self, __pyx_state) + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.ThreadInfo.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":139 + * cdef public int breakpoints_mtime + * + * def __init__(self): # <<<<<<<<<<<<<< + * self.co_filename = '' + * self.canonical_normalized_filename = '' + */ + +/* Python wrapper */ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { + __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1;} + if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1; + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo___init__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo___init__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__init__", 1); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":140 + * + * def __init__(self): + * self.co_filename = '' # <<<<<<<<<<<<<< + * self.canonical_normalized_filename = '' + * self.always_skip_code = False + */ + __Pyx_INCREF(__pyx_kp_s__5); + __Pyx_GIVEREF(__pyx_kp_s__5); + __Pyx_GOTREF(__pyx_v_self->co_filename); + __Pyx_DECREF(__pyx_v_self->co_filename); + __pyx_v_self->co_filename = __pyx_kp_s__5; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":141 + * def __init__(self): + * self.co_filename = '' + * self.canonical_normalized_filename = '' # <<<<<<<<<<<<<< + * self.always_skip_code = False + * + */ + __Pyx_INCREF(__pyx_kp_s__5); + __Pyx_GIVEREF(__pyx_kp_s__5); + __Pyx_GOTREF(__pyx_v_self->canonical_normalized_filename); + __Pyx_DECREF(__pyx_v_self->canonical_normalized_filename); + __pyx_v_self->canonical_normalized_filename = __pyx_kp_s__5; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":142 + * self.co_filename = '' + * self.canonical_normalized_filename = '' + * self.always_skip_code = False # <<<<<<<<<<<<<< + * + * # If breakpoints are found but new_code is None, + */ + __pyx_v_self->always_skip_code = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":147 + * # this means we weren't able to actually add the code + * # where needed, so, fallback to tracing. + * self.breakpoint_found = False # <<<<<<<<<<<<<< + * self.new_code = None + * self.breakpoints_mtime = -1 + */ + __pyx_v_self->breakpoint_found = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":148 + * # where needed, so, fallback to tracing. + * self.breakpoint_found = False + * self.new_code = None # <<<<<<<<<<<<<< + * self.breakpoints_mtime = -1 + * + */ + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->new_code); + __Pyx_DECREF(__pyx_v_self->new_code); + __pyx_v_self->new_code = Py_None; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":149 + * self.breakpoint_found = False + * self.new_code = None + * self.breakpoints_mtime = -1 # <<<<<<<<<<<<<< + * + * + */ + __pyx_v_self->breakpoints_mtime = -1; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":139 + * cdef public int breakpoints_mtime + * + * def __init__(self): # <<<<<<<<<<<<<< + * self.co_filename = '' + * self.canonical_normalized_filename = '' + */ + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":127 + * cdef class FuncCodeInfo: + * + * cdef public str co_filename # <<<<<<<<<<<<<< + * cdef public str co_name + * cdef public str canonical_normalized_filename + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_11co_filename_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_11co_filename_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_11co_filename___get__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_11co_filename___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->co_filename); + __pyx_r = __pyx_v_self->co_filename; + goto __pyx_L0; + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_11co_filename_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_11co_filename_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_11co_filename_2__set__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_11co_filename_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__set__", 1); + if (!(likely(PyString_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_v_value))) __PYX_ERR(0, 127, __pyx_L1_error) + __pyx_t_1 = __pyx_v_value; + __Pyx_INCREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v_self->co_filename); + __Pyx_DECREF(__pyx_v_self->co_filename); + __pyx_v_self->co_filename = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.FuncCodeInfo.co_filename.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_11co_filename_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_11co_filename_5__del__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_11co_filename_4__del__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_11co_filename_4__del__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 1); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->co_filename); + __Pyx_DECREF(__pyx_v_self->co_filename); + __pyx_v_self->co_filename = ((PyObject*)Py_None); + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":128 + * + * cdef public str co_filename + * cdef public str co_name # <<<<<<<<<<<<<< + * cdef public str canonical_normalized_filename + * cdef bint always_skip_code + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_7co_name_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_7co_name_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_7co_name___get__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_7co_name___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->co_name); + __pyx_r = __pyx_v_self->co_name; + goto __pyx_L0; + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_7co_name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_7co_name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_7co_name_2__set__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_7co_name_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__set__", 1); + if (!(likely(PyString_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_v_value))) __PYX_ERR(0, 128, __pyx_L1_error) + __pyx_t_1 = __pyx_v_value; + __Pyx_INCREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v_self->co_name); + __Pyx_DECREF(__pyx_v_self->co_name); + __pyx_v_self->co_name = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.FuncCodeInfo.co_name.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_7co_name_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_7co_name_5__del__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_7co_name_4__del__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_7co_name_4__del__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 1); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->co_name); + __Pyx_DECREF(__pyx_v_self->co_name); + __pyx_v_self->co_name = ((PyObject*)Py_None); + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":129 + * cdef public str co_filename + * cdef public str co_name + * cdef public str canonical_normalized_filename # <<<<<<<<<<<<<< + * cdef bint always_skip_code + * cdef public bint breakpoint_found + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_29canonical_normalized_filename_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_29canonical_normalized_filename_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_29canonical_normalized_filename___get__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_29canonical_normalized_filename___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->canonical_normalized_filename); + __pyx_r = __pyx_v_self->canonical_normalized_filename; + goto __pyx_L0; + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_29canonical_normalized_filename_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_29canonical_normalized_filename_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_29canonical_normalized_filename_2__set__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_29canonical_normalized_filename_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__set__", 1); + if (!(likely(PyString_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_v_value))) __PYX_ERR(0, 129, __pyx_L1_error) + __pyx_t_1 = __pyx_v_value; + __Pyx_INCREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v_self->canonical_normalized_filename); + __Pyx_DECREF(__pyx_v_self->canonical_normalized_filename); + __pyx_v_self->canonical_normalized_filename = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.FuncCodeInfo.canonical_normalized_filename.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_29canonical_normalized_filename_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_29canonical_normalized_filename_5__del__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_29canonical_normalized_filename_4__del__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_29canonical_normalized_filename_4__del__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 1); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->canonical_normalized_filename); + __Pyx_DECREF(__pyx_v_self->canonical_normalized_filename); + __pyx_v_self->canonical_normalized_filename = ((PyObject*)Py_None); + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":131 + * cdef public str canonical_normalized_filename + * cdef bint always_skip_code + * cdef public bint breakpoint_found # <<<<<<<<<<<<<< + * cdef public object new_code + * + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_16breakpoint_found_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_16breakpoint_found_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_16breakpoint_found___get__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_16breakpoint_found___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->breakpoint_found); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 131, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.FuncCodeInfo.breakpoint_found.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_16breakpoint_found_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_16breakpoint_found_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_16breakpoint_found_2__set__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_16breakpoint_found_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + int __pyx_t_1; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 131, __pyx_L1_error) + __pyx_v_self->breakpoint_found = __pyx_t_1; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.FuncCodeInfo.breakpoint_found.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + return __pyx_r; +} + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":132 + * cdef bint always_skip_code + * cdef public bint breakpoint_found + * cdef public object new_code # <<<<<<<<<<<<<< + * + * # When breakpoints_mtime != PyDb.mtime the validity of breakpoints have + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_8new_code_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_8new_code_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_8new_code___get__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_8new_code___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->new_code); + __pyx_r = __pyx_v_self->new_code; + goto __pyx_L0; + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_8new_code_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_8new_code_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_8new_code_2__set__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_8new_code_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__", 1); + __Pyx_INCREF(__pyx_v_value); + __Pyx_GIVEREF(__pyx_v_value); + __Pyx_GOTREF(__pyx_v_self->new_code); + __Pyx_DECREF(__pyx_v_self->new_code); + __pyx_v_self->new_code = __pyx_v_value; + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_8new_code_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_8new_code_5__del__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_8new_code_4__del__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_8new_code_4__del__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 1); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->new_code); + __Pyx_DECREF(__pyx_v_self->new_code); + __pyx_v_self->new_code = Py_None; + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":137 + * # to be re-evaluated (if invalid a new FuncCodeInfo must be created and + * # tracing can't be disabled for the related frames). + * cdef public int breakpoints_mtime # <<<<<<<<<<<<<< + * + * def __init__(self): + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_17breakpoints_mtime_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_17breakpoints_mtime_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_17breakpoints_mtime___get__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_17breakpoints_mtime___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->breakpoints_mtime); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 137, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.FuncCodeInfo.breakpoints_mtime.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_17breakpoints_mtime_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_17breakpoints_mtime_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_17breakpoints_mtime_2__set__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_17breakpoints_mtime_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + int __pyx_t_1; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 137, __pyx_L1_error) + __pyx_v_self->breakpoints_mtime = __pyx_t_1; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.FuncCodeInfo.breakpoints_mtime.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_3__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_3__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { + __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} + if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_2__reduce_cython__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_2__reduce_cython__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self) { + PyObject *__pyx_v_state = 0; + PyObject *__pyx_v__dict = 0; + int __pyx_v_use_setstate; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + int __pyx_t_5; + int __pyx_t_6; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__reduce_cython__", 1); + + /* "(tree fragment)":5 + * cdef object _dict + * cdef bint use_setstate + * state = (self.always_skip_code, self.breakpoint_found, self.breakpoints_mtime, self.canonical_normalized_filename, self.co_filename, self.co_name, self.new_code) # <<<<<<<<<<<<<< + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: + */ + __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->always_skip_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_self->breakpoint_found); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_self->breakpoints_mtime); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyTuple_New(7); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_3); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_self->canonical_normalized_filename); + __Pyx_GIVEREF(__pyx_v_self->canonical_normalized_filename); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_v_self->canonical_normalized_filename)) __PYX_ERR(1, 5, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_self->co_filename); + __Pyx_GIVEREF(__pyx_v_self->co_filename); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 4, __pyx_v_self->co_filename)) __PYX_ERR(1, 5, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_self->co_name); + __Pyx_GIVEREF(__pyx_v_self->co_name); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 5, __pyx_v_self->co_name)) __PYX_ERR(1, 5, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_self->new_code); + __Pyx_GIVEREF(__pyx_v_self->new_code); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 6, __pyx_v_self->new_code)) __PYX_ERR(1, 5, __pyx_L1_error); + __pyx_t_1 = 0; + __pyx_t_2 = 0; + __pyx_t_3 = 0; + __pyx_v_state = ((PyObject*)__pyx_t_4); + __pyx_t_4 = 0; + + /* "(tree fragment)":6 + * cdef bint use_setstate + * state = (self.always_skip_code, self.breakpoint_found, self.breakpoints_mtime, self.canonical_normalized_filename, self.co_filename, self.co_name, self.new_code) + * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< + * if _dict is not None: + * state += (_dict,) + */ + __pyx_t_4 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_v__dict = __pyx_t_4; + __pyx_t_4 = 0; + + /* "(tree fragment)":7 + * state = (self.always_skip_code, self.breakpoint_found, self.breakpoints_mtime, self.canonical_normalized_filename, self.co_filename, self.co_name, self.new_code) + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: # <<<<<<<<<<<<<< + * state += (_dict,) + * use_setstate = True + */ + __pyx_t_5 = (__pyx_v__dict != Py_None); + if (__pyx_t_5) { + + /* "(tree fragment)":8 + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: + * state += (_dict,) # <<<<<<<<<<<<<< + * use_setstate = True + * else: + */ + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_INCREF(__pyx_v__dict); + __Pyx_GIVEREF(__pyx_v__dict); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v__dict)) __PYX_ERR(1, 8, __pyx_L1_error); + __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_3)); + __pyx_t_3 = 0; + + /* "(tree fragment)":9 + * if _dict is not None: + * state += (_dict,) + * use_setstate = True # <<<<<<<<<<<<<< + * else: + * use_setstate = self.canonical_normalized_filename is not None or self.co_filename is not None or self.co_name is not None or self.new_code is not None + */ + __pyx_v_use_setstate = 1; + + /* "(tree fragment)":7 + * state = (self.always_skip_code, self.breakpoint_found, self.breakpoints_mtime, self.canonical_normalized_filename, self.co_filename, self.co_name, self.new_code) + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: # <<<<<<<<<<<<<< + * state += (_dict,) + * use_setstate = True + */ + goto __pyx_L3; + } + + /* "(tree fragment)":11 + * use_setstate = True + * else: + * use_setstate = self.canonical_normalized_filename is not None or self.co_filename is not None or self.co_name is not None or self.new_code is not None # <<<<<<<<<<<<<< + * if use_setstate: + * return __pyx_unpickle_FuncCodeInfo, (type(self), 0x450d2d6, None), state + */ + /*else*/ { + __pyx_t_6 = (__pyx_v_self->canonical_normalized_filename != ((PyObject*)Py_None)); + if (!__pyx_t_6) { + } else { + __pyx_t_5 = __pyx_t_6; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_6 = (__pyx_v_self->co_filename != ((PyObject*)Py_None)); + if (!__pyx_t_6) { + } else { + __pyx_t_5 = __pyx_t_6; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_6 = (__pyx_v_self->co_name != ((PyObject*)Py_None)); + if (!__pyx_t_6) { + } else { + __pyx_t_5 = __pyx_t_6; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_6 = (__pyx_v_self->new_code != Py_None); + __pyx_t_5 = __pyx_t_6; + __pyx_L4_bool_binop_done:; + __pyx_v_use_setstate = __pyx_t_5; + } + __pyx_L3:; + + /* "(tree fragment)":12 + * else: + * use_setstate = self.canonical_normalized_filename is not None or self.co_filename is not None or self.co_name is not None or self.new_code is not None + * if use_setstate: # <<<<<<<<<<<<<< + * return __pyx_unpickle_FuncCodeInfo, (type(self), 0x450d2d6, None), state + * else: + */ + if (__pyx_v_use_setstate) { + + /* "(tree fragment)":13 + * use_setstate = self.canonical_normalized_filename is not None or self.co_filename is not None or self.co_name is not None or self.new_code is not None + * if use_setstate: + * return __pyx_unpickle_FuncCodeInfo, (type(self), 0x450d2d6, None), state # <<<<<<<<<<<<<< + * else: + * return __pyx_unpickle_FuncCodeInfo, (type(self), 0x450d2d6, state) + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyx_unpickle_FuncCodeInfo); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_int_72405718); + __Pyx_GIVEREF(__pyx_int_72405718); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_int_72405718)) __PYX_ERR(1, 13, __pyx_L1_error); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, Py_None)) __PYX_ERR(1, 13, __pyx_L1_error); + __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_3); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_4); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_state); + __Pyx_GIVEREF(__pyx_v_state); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state)) __PYX_ERR(1, 13, __pyx_L1_error); + __pyx_t_3 = 0; + __pyx_t_4 = 0; + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "(tree fragment)":12 + * else: + * use_setstate = self.canonical_normalized_filename is not None or self.co_filename is not None or self.co_name is not None or self.new_code is not None + * if use_setstate: # <<<<<<<<<<<<<< + * return __pyx_unpickle_FuncCodeInfo, (type(self), 0x450d2d6, None), state + * else: + */ + } + + /* "(tree fragment)":15 + * return __pyx_unpickle_FuncCodeInfo, (type(self), 0x450d2d6, None), state + * else: + * return __pyx_unpickle_FuncCodeInfo, (type(self), 0x450d2d6, state) # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * __pyx_unpickle_FuncCodeInfo__set_state(self, __pyx_state) + */ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyx_unpickle_FuncCodeInfo); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 15, __pyx_L1_error); + __Pyx_INCREF(__pyx_int_72405718); + __Pyx_GIVEREF(__pyx_int_72405718); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_int_72405718)) __PYX_ERR(1, 15, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_state); + __Pyx_GIVEREF(__pyx_v_state); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_state)) __PYX_ERR(1, 15, __pyx_L1_error); + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_4); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error); + __pyx_t_2 = 0; + __pyx_t_4 = 0; + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + } + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.FuncCodeInfo.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_state); + __Pyx_XDECREF(__pyx_v__dict); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":16 + * else: + * return __pyx_unpickle_FuncCodeInfo, (type(self), 0x450d2d6, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_FuncCodeInfo__set_state(self, __pyx_state) + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_5__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_5__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 16, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(1, 16, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + } + __pyx_v___pyx_state = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 16, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.FuncCodeInfo.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_4__setstate_cython__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v_self), __pyx_v___pyx_state); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_4__setstate_cython__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_self, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__setstate_cython__", 1); + + /* "(tree fragment)":17 + * return __pyx_unpickle_FuncCodeInfo, (type(self), 0x450d2d6, state) + * def __setstate_cython__(self, __pyx_state): + * __pyx_unpickle_FuncCodeInfo__set_state(self, __pyx_state) # <<<<<<<<<<<<<< + */ + if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(1, 17, __pyx_L1_error) + __pyx_t_1 = __pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unpickle_FuncCodeInfo__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle_FuncCodeInfo, (type(self), 0x450d2d6, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_FuncCodeInfo__set_state(self, __pyx_state) + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.FuncCodeInfo.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":152 + * + * + * def dummy_trace_dispatch(frame, str event, arg): # <<<<<<<<<<<<<< + * if event == 'call': + * if frame.f_trace is not None: + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_3dummy_trace_dispatch(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_3dummy_trace_dispatch = {"dummy_trace_dispatch", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_3dummy_trace_dispatch, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_3dummy_trace_dispatch(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_frame = 0; + PyObject *__pyx_v_event = 0; + PyObject *__pyx_v_arg = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("dummy_trace_dispatch (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_frame,&__pyx_n_s_event,&__pyx_n_s_arg,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_frame)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 152, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_event)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 152, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("dummy_trace_dispatch", 1, 3, 3, 1); __PYX_ERR(0, 152, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_arg)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 152, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("dummy_trace_dispatch", 1, 3, 3, 2); __PYX_ERR(0, 152, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "dummy_trace_dispatch") < 0)) __PYX_ERR(0, 152, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 3)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + } + __pyx_v_frame = values[0]; + __pyx_v_event = ((PyObject*)values[1]); + __pyx_v_arg = values[2]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("dummy_trace_dispatch", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 152, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.dummy_trace_dispatch", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_event), (&PyString_Type), 1, "event", 1))) __PYX_ERR(0, 152, __pyx_L1_error) + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_2dummy_trace_dispatch(__pyx_self, __pyx_v_frame, __pyx_v_event, __pyx_v_arg); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + __pyx_L0:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_2dummy_trace_dispatch(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_frame, PyObject *__pyx_v_event, PyObject *__pyx_v_arg) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + unsigned int __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("dummy_trace_dispatch", 1); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":153 + * + * def dummy_trace_dispatch(frame, str event, arg): + * if event == 'call': # <<<<<<<<<<<<<< + * if frame.f_trace is not None: + * return frame.f_trace(frame, event, arg) + */ + __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_event, __pyx_n_s_call_2, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 153, __pyx_L1_error) + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":154 + * def dummy_trace_dispatch(frame, str event, arg): + * if event == 'call': + * if frame.f_trace is not None: # <<<<<<<<<<<<<< + * return frame.f_trace(frame, event, arg) + * return None + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_trace); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 154, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = (__pyx_t_2 != Py_None); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":155 + * if event == 'call': + * if frame.f_trace is not None: + * return frame.f_trace(frame, event, arg) # <<<<<<<<<<<<<< + * return None + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_trace); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 155, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[4] = {__pyx_t_4, __pyx_v_frame, __pyx_v_event, __pyx_v_arg}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 155, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":154 + * def dummy_trace_dispatch(frame, str event, arg): + * if event == 'call': + * if frame.f_trace is not None: # <<<<<<<<<<<<<< + * return frame.f_trace(frame, event, arg) + * return None + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":153 + * + * def dummy_trace_dispatch(frame, str event, arg): + * if event == 'call': # <<<<<<<<<<<<<< + * if frame.f_trace is not None: + * return frame.f_trace(frame, event, arg) + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":156 + * if frame.f_trace is not None: + * return frame.f_trace(frame, event, arg) + * return None # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":152 + * + * + * def dummy_trace_dispatch(frame, str event, arg): # <<<<<<<<<<<<<< + * if event == 'call': + * if frame.f_trace is not None: + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.dummy_trace_dispatch", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":159 + * + * + * def get_thread_info_py() -> ThreadInfo: # <<<<<<<<<<<<<< + * return get_thread_info(PyEval_GetFrame()) + * + */ + +/* Python wrapper */ +static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_5get_thread_info_py(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_5get_thread_info_py = {"get_thread_info_py", (PyCFunction)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_5get_thread_info_py, METH_NOARGS, 0}; +static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_5get_thread_info_py(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_thread_info_py (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_4get_thread_info_py(__pyx_self); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_4get_thread_info_py(CYTHON_UNUSED PyObject *__pyx_self) { + struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get_thread_info_py", 1); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":160 + * + * def get_thread_info_py() -> ThreadInfo: + * return get_thread_info(PyEval_GetFrame()) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF((PyObject *)__pyx_r); + __pyx_t_1 = ((PyObject *)__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_thread_info(PyEval_GetFrame())); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 160, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_t_1); + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":159 + * + * + * def get_thread_info_py() -> ThreadInfo: # <<<<<<<<<<<<<< + * return get_thread_info(PyEval_GetFrame()) + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.get_thread_info_py", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF((PyObject *)__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":163 + * + * + * cdef ThreadInfo get_thread_info(PyFrameObject * frame_obj): # <<<<<<<<<<<<<< + * ''' + * Provides thread-related info. + */ + +static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_thread_info(PyFrameObject *__pyx_v_frame_obj) { + struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_thread_info = 0; + struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + int __pyx_t_7; + PyObject *__pyx_t_8 = NULL; + int __pyx_t_9; + int __pyx_t_10; + char const *__pyx_t_11; + PyObject *__pyx_t_12 = NULL; + PyObject *__pyx_t_13 = NULL; + PyObject *__pyx_t_14 = NULL; + PyObject *__pyx_t_15 = NULL; + PyObject *__pyx_t_16 = NULL; + PyObject *__pyx_t_17 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get_thread_info", 1); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":170 + * ''' + * cdef ThreadInfo thread_info + * try: # <<<<<<<<<<<<<< + * # Note: changing to a `dict[thread.ident] = thread_info` had almost no + * # effect in the performance. + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":173 + * # Note: changing to a `dict[thread.ident] = thread_info` had almost no + * # effect in the performance. + * thread_info = _thread_local_info.thread_info # <<<<<<<<<<<<<< + * except: + * if frame_obj == NULL: + */ + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_thread_local_info); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 173, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_thread_info); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 173, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo))))) __PYX_ERR(0, 173, __pyx_L3_error) + __pyx_v_thread_info = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_t_5); + __pyx_t_5 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":170 + * ''' + * cdef ThreadInfo thread_info + * try: # <<<<<<<<<<<<<< + * # Note: changing to a `dict[thread.ident] = thread_info` had almost no + * # effect in the performance. + */ + } + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L8_try_end; + __pyx_L3_error:; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":174 + * # effect in the performance. + * thread_info = _thread_local_info.thread_info + * except: # <<<<<<<<<<<<<< + * if frame_obj == NULL: + * return None + */ + /*except:*/ { + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.get_thread_info", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_6) < 0) __PYX_ERR(0, 174, __pyx_L5_except_error) + __Pyx_XGOTREF(__pyx_t_5); + __Pyx_XGOTREF(__pyx_t_4); + __Pyx_XGOTREF(__pyx_t_6); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":175 + * thread_info = _thread_local_info.thread_info + * except: + * if frame_obj == NULL: # <<<<<<<<<<<<<< + * return None + * thread_info = ThreadInfo() + */ + __pyx_t_7 = (__pyx_v_frame_obj == NULL); + if (__pyx_t_7) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":176 + * except: + * if frame_obj == NULL: + * return None # <<<<<<<<<<<<<< + * thread_info = ThreadInfo() + * thread_info.initialize(frame_obj) + */ + __Pyx_XDECREF((PyObject *)__pyx_r); + __pyx_r = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)Py_None); __Pyx_INCREF(Py_None); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + goto __pyx_L6_except_return; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":175 + * thread_info = _thread_local_info.thread_info + * except: + * if frame_obj == NULL: # <<<<<<<<<<<<<< + * return None + * thread_info = ThreadInfo() + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":177 + * if frame_obj == NULL: + * return None + * thread_info = ThreadInfo() # <<<<<<<<<<<<<< + * thread_info.initialize(frame_obj) + * thread_info.inside_frame_eval += 1 + */ + __pyx_t_8 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 177, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_XDECREF_SET(__pyx_v_thread_info, ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_t_8)); + __pyx_t_8 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":178 + * return None + * thread_info = ThreadInfo() + * thread_info.initialize(frame_obj) # <<<<<<<<<<<<<< + * thread_info.inside_frame_eval += 1 + * try: + */ + __pyx_t_8 = ((struct __pyx_vtabstruct_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_thread_info->__pyx_vtab)->initialize(__pyx_v_thread_info, __pyx_v_frame_obj); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 178, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":179 + * thread_info = ThreadInfo() + * thread_info.initialize(frame_obj) + * thread_info.inside_frame_eval += 1 # <<<<<<<<<<<<<< + * try: + * _thread_local_info.thread_info = thread_info + */ + __pyx_v_thread_info->inside_frame_eval = (__pyx_v_thread_info->inside_frame_eval + 1); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":180 + * thread_info.initialize(frame_obj) + * thread_info.inside_frame_eval += 1 + * try: # <<<<<<<<<<<<<< + * _thread_local_info.thread_info = thread_info + * + */ + /*try:*/ { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":181 + * thread_info.inside_frame_eval += 1 + * try: + * _thread_local_info.thread_info = thread_info # <<<<<<<<<<<<<< + * + * # Note: _code_extra_index is not actually thread-related, + */ + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_thread_local_info); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 181, __pyx_L15_error) + __Pyx_GOTREF(__pyx_t_8); + if (__Pyx_PyObject_SetAttrStr(__pyx_t_8, __pyx_n_s_thread_info, ((PyObject *)__pyx_v_thread_info)) < 0) __PYX_ERR(0, 181, __pyx_L15_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":186 + * # but this is a good point to initialize it. + * global _code_extra_index + * if _code_extra_index == -1: # <<<<<<<<<<<<<< + * _code_extra_index = _PyEval_RequestCodeExtraIndex(release_co_extra) + * + */ + __pyx_t_7 = (__pyx_v_18_pydevd_frame_eval_22pydevd_frame_evaluator__code_extra_index == -1L); + if (__pyx_t_7) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":187 + * global _code_extra_index + * if _code_extra_index == -1: + * _code_extra_index = _PyEval_RequestCodeExtraIndex(release_co_extra) # <<<<<<<<<<<<<< + * + * thread_info.initialize_if_possible() + */ + __pyx_v_18_pydevd_frame_eval_22pydevd_frame_evaluator__code_extra_index = ((int)_PyEval_RequestCodeExtraIndex(release_co_extra)); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":186 + * # but this is a good point to initialize it. + * global _code_extra_index + * if _code_extra_index == -1: # <<<<<<<<<<<<<< + * _code_extra_index = _PyEval_RequestCodeExtraIndex(release_co_extra) + * + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":189 + * _code_extra_index = _PyEval_RequestCodeExtraIndex(release_co_extra) + * + * thread_info.initialize_if_possible() # <<<<<<<<<<<<<< + * finally: + * thread_info.inside_frame_eval -= 1 + */ + __pyx_t_8 = ((struct __pyx_vtabstruct_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_thread_info->__pyx_vtab)->initialize_if_possible(__pyx_v_thread_info); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 189, __pyx_L15_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":191 + * thread_info.initialize_if_possible() + * finally: + * thread_info.inside_frame_eval -= 1 # <<<<<<<<<<<<<< + * + * return thread_info + */ + /*finally:*/ { + /*normal exit:*/{ + __pyx_v_thread_info->inside_frame_eval = (__pyx_v_thread_info->inside_frame_eval - 1); + goto __pyx_L16; + } + __pyx_L15_error:; + /*exception exit:*/{ + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14) < 0)) __Pyx_ErrFetch(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14); + __Pyx_XGOTREF(__pyx_t_12); + __Pyx_XGOTREF(__pyx_t_13); + __Pyx_XGOTREF(__pyx_t_14); + __Pyx_XGOTREF(__pyx_t_15); + __Pyx_XGOTREF(__pyx_t_16); + __Pyx_XGOTREF(__pyx_t_17); + __pyx_t_9 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_11 = __pyx_filename; + { + __pyx_v_thread_info->inside_frame_eval = (__pyx_v_thread_info->inside_frame_eval - 1); + } + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_15); + __Pyx_XGIVEREF(__pyx_t_16); + __Pyx_XGIVEREF(__pyx_t_17); + __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17); + } + __Pyx_XGIVEREF(__pyx_t_12); + __Pyx_XGIVEREF(__pyx_t_13); + __Pyx_XGIVEREF(__pyx_t_14); + __Pyx_ErrRestore(__pyx_t_12, __pyx_t_13, __pyx_t_14); + __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; + __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_11; + goto __pyx_L5_except_error; + } + __pyx_L16:; + } + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + goto __pyx_L4_exception_handled; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":170 + * ''' + * cdef ThreadInfo thread_info + * try: # <<<<<<<<<<<<<< + * # Note: changing to a `dict[thread.ident] = thread_info` had almost no + * # effect in the performance. + */ + __pyx_L5_except_error:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L1_error; + __pyx_L6_except_return:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L0; + __pyx_L4_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + __pyx_L8_try_end:; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":193 + * thread_info.inside_frame_eval -= 1 + * + * return thread_info # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF((PyObject *)__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_thread_info); + __pyx_r = __pyx_v_thread_info; + goto __pyx_L0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":163 + * + * + * cdef ThreadInfo get_thread_info(PyFrameObject * frame_obj): # <<<<<<<<<<<<<< + * ''' + * Provides thread-related info. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.get_thread_info", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_thread_info); + __Pyx_XGIVEREF((PyObject *)__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":196 + * + * + * def decref_py(obj): # <<<<<<<<<<<<<< + * ''' + * Helper to be called from Python. + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_7decref_py(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_18_pydevd_frame_eval_22pydevd_frame_evaluator_6decref_py, "\n Helper to be called from Python.\n "); +static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_7decref_py = {"decref_py", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_7decref_py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_18_pydevd_frame_eval_22pydevd_frame_evaluator_6decref_py}; +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_7decref_py(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_obj = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("decref_py (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 196, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "decref_py") < 0)) __PYX_ERR(0, 196, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + } + __pyx_v_obj = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("decref_py", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 196, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.decref_py", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_6decref_py(__pyx_self, __pyx_v_obj); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_6decref_py(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("decref_py", 1); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":200 + * Helper to be called from Python. + * ''' + * Py_DECREF(obj) # <<<<<<<<<<<<<< + * + * + */ + Py_DECREF(__pyx_v_obj); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":196 + * + * + * def decref_py(obj): # <<<<<<<<<<<<<< + * ''' + * Helper to be called from Python. + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":203 + * + * + * def get_func_code_info_py(thread_info, frame, code_obj) -> FuncCodeInfo: # <<<<<<<<<<<<<< + * ''' + * Helper to be called from Python. + */ + +/* Python wrapper */ +static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_9get_func_code_info_py(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_18_pydevd_frame_eval_22pydevd_frame_evaluator_8get_func_code_info_py, "\n Helper to be called from Python.\n "); +static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_9get_func_code_info_py = {"get_func_code_info_py", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_9get_func_code_info_py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_18_pydevd_frame_eval_22pydevd_frame_evaluator_8get_func_code_info_py}; +static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_9get_func_code_info_py(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_thread_info = 0; + PyObject *__pyx_v_frame = 0; + PyObject *__pyx_v_code_obj = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_func_code_info_py (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_thread_info,&__pyx_n_s_frame,&__pyx_n_s_code_obj,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_thread_info)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 203, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_frame)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 203, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("get_func_code_info_py", 1, 3, 3, 1); __PYX_ERR(0, 203, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_code_obj)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 203, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("get_func_code_info_py", 1, 3, 3, 2); __PYX_ERR(0, 203, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "get_func_code_info_py") < 0)) __PYX_ERR(0, 203, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 3)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + } + __pyx_v_thread_info = values[0]; + __pyx_v_frame = values[1]; + __pyx_v_code_obj = values[2]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("get_func_code_info_py", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 203, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.get_func_code_info_py", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_8get_func_code_info_py(__pyx_self, __pyx_v_thread_info, __pyx_v_frame, __pyx_v_code_obj); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_8get_func_code_info_py(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_thread_info, PyObject *__pyx_v_frame, PyObject *__pyx_v_code_obj) { + struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get_func_code_info_py", 1); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":207 + * Helper to be called from Python. + * ''' + * return get_func_code_info( thread_info, frame, code_obj) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF((PyObject *)__pyx_r); + __pyx_t_1 = ((PyObject *)__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_func_code_info(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_thread_info), ((PyFrameObject *)__pyx_v_frame), ((PyCodeObject *)__pyx_v_code_obj))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 207, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_t_1); + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":203 + * + * + * def get_func_code_info_py(thread_info, frame, code_obj) -> FuncCodeInfo: # <<<<<<<<<<<<<< + * ''' + * Helper to be called from Python. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.get_func_code_info_py", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF((PyObject *)__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":212 + * cdef int _code_extra_index = -1 + * + * cdef FuncCodeInfo get_func_code_info(ThreadInfo thread_info, PyFrameObject * frame_obj, PyCodeObject * code_obj): # <<<<<<<<<<<<<< + * ''' + * Provides code-object related info. + */ + +static struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_func_code_info(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_thread_info, PyFrameObject *__pyx_v_frame_obj, PyCodeObject *__pyx_v_code_obj) { + PyObject *__pyx_v_main_debugger = 0; + PyObject *__pyx_v_extra; + PyObject *__pyx_v_extra_obj; + struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_func_code_info_obj = NULL; + PyObject *__pyx_v_co_filename = 0; + PyObject *__pyx_v_co_name = 0; + PyObject *__pyx_v_cache_file_type = 0; + PyObject *__pyx_v_cache_file_type_key = 0; + struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_func_code_info = NULL; + PyObject *__pyx_v_abs_path_real_path_and_base = NULL; + PyObject *__pyx_v_file_type = NULL; + PyObject *__pyx_v_breakpoints = 0; + PyObject *__pyx_v_function_breakpoint = 0; + PyObject *__pyx_v_code_obj_py = 0; + PyObject *__pyx_v_cached_code_obj_info = 0; + PyObject *__pyx_v_breakpoint_found = NULL; + struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + int __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + int __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + PyObject *__pyx_t_11 = NULL; + unsigned int __pyx_t_12; + PyObject *(*__pyx_t_13)(PyObject *); + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get_func_code_info", 1); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":228 + * # print('get_func_code_info', f_code.co_name, f_code.co_filename) + * + * cdef object main_debugger = GlobalDebuggerHolder.global_dbg # <<<<<<<<<<<<<< + * thread_info.force_stay_in_untraced_mode = False # This is an output value of the function. + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_GlobalDebuggerHolder); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 228, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_global_dbg); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 228, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_main_debugger = __pyx_t_2; + __pyx_t_2 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":229 + * + * cdef object main_debugger = GlobalDebuggerHolder.global_dbg + * thread_info.force_stay_in_untraced_mode = False # This is an output value of the function. # <<<<<<<<<<<<<< + * + * cdef PyObject * extra + */ + __pyx_v_thread_info->force_stay_in_untraced_mode = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":232 + * + * cdef PyObject * extra + * _PyCode_GetExtra( code_obj, _code_extra_index, & extra) # <<<<<<<<<<<<<< + * if extra is not NULL: + * extra_obj = extra + */ + (void)(_PyCode_GetExtra(((PyObject *)__pyx_v_code_obj), __pyx_v_18_pydevd_frame_eval_22pydevd_frame_evaluator__code_extra_index, (&__pyx_v_extra))); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":233 + * cdef PyObject * extra + * _PyCode_GetExtra( code_obj, _code_extra_index, & extra) + * if extra is not NULL: # <<<<<<<<<<<<<< + * extra_obj = extra + * if extra_obj is not NULL: + */ + __pyx_t_3 = (__pyx_v_extra != NULL); + if (__pyx_t_3) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":234 + * _PyCode_GetExtra( code_obj, _code_extra_index, & extra) + * if extra is not NULL: + * extra_obj = extra # <<<<<<<<<<<<<< + * if extra_obj is not NULL: + * func_code_info_obj = extra_obj + */ + __pyx_v_extra_obj = ((PyObject *)__pyx_v_extra); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":235 + * if extra is not NULL: + * extra_obj = extra + * if extra_obj is not NULL: # <<<<<<<<<<<<<< + * func_code_info_obj = extra_obj + * if func_code_info_obj.breakpoints_mtime == main_debugger.mtime: + */ + __pyx_t_3 = (__pyx_v_extra_obj != NULL); + if (__pyx_t_3) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":236 + * extra_obj = extra + * if extra_obj is not NULL: + * func_code_info_obj = extra_obj # <<<<<<<<<<<<<< + * if func_code_info_obj.breakpoints_mtime == main_debugger.mtime: + * # if DEBUG: + */ + __pyx_t_2 = ((PyObject *)__pyx_v_extra_obj); + __Pyx_INCREF(__pyx_t_2); + __pyx_v_func_code_info_obj = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_t_2); + __pyx_t_2 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":237 + * if extra_obj is not NULL: + * func_code_info_obj = extra_obj + * if func_code_info_obj.breakpoints_mtime == main_debugger.mtime: # <<<<<<<<<<<<<< + * # if DEBUG: + * # print('get_func_code_info: matched mtime', f_code.co_name, f_code.co_filename) + */ + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_func_code_info_obj->breakpoints_mtime); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 237, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_mtime); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 237, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 237, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 237, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__pyx_t_3) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":241 + * # print('get_func_code_info: matched mtime', f_code.co_name, f_code.co_filename) + * + * return func_code_info_obj # <<<<<<<<<<<<<< + * + * cdef str co_filename = code_obj.co_filename + */ + __Pyx_XDECREF((PyObject *)__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_func_code_info_obj); + __pyx_r = __pyx_v_func_code_info_obj; + goto __pyx_L0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":237 + * if extra_obj is not NULL: + * func_code_info_obj = extra_obj + * if func_code_info_obj.breakpoints_mtime == main_debugger.mtime: # <<<<<<<<<<<<<< + * # if DEBUG: + * # print('get_func_code_info: matched mtime', f_code.co_name, f_code.co_filename) + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":235 + * if extra is not NULL: + * extra_obj = extra + * if extra_obj is not NULL: # <<<<<<<<<<<<<< + * func_code_info_obj = extra_obj + * if func_code_info_obj.breakpoints_mtime == main_debugger.mtime: + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":233 + * cdef PyObject * extra + * _PyCode_GetExtra( code_obj, _code_extra_index, & extra) + * if extra is not NULL: # <<<<<<<<<<<<<< + * extra_obj = extra + * if extra_obj is not NULL: + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":243 + * return func_code_info_obj + * + * cdef str co_filename = code_obj.co_filename # <<<<<<<<<<<<<< + * cdef str co_name = code_obj.co_name + * cdef dict cache_file_type + */ + __pyx_t_4 = ((PyObject *)__pyx_v_code_obj->co_filename); + __Pyx_INCREF(__pyx_t_4); + __pyx_v_co_filename = ((PyObject*)__pyx_t_4); + __pyx_t_4 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":244 + * + * cdef str co_filename = code_obj.co_filename + * cdef str co_name = code_obj.co_name # <<<<<<<<<<<<<< + * cdef dict cache_file_type + * cdef tuple cache_file_type_key + */ + __pyx_t_4 = ((PyObject *)__pyx_v_code_obj->co_name); + __Pyx_INCREF(__pyx_t_4); + __pyx_v_co_name = ((PyObject*)__pyx_t_4); + __pyx_t_4 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":248 + * cdef tuple cache_file_type_key + * + * func_code_info = FuncCodeInfo() # <<<<<<<<<<<<<< + * func_code_info.breakpoints_mtime = main_debugger.mtime + * + */ + __pyx_t_4 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 248, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_v_func_code_info = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_t_4); + __pyx_t_4 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":249 + * + * func_code_info = FuncCodeInfo() + * func_code_info.breakpoints_mtime = main_debugger.mtime # <<<<<<<<<<<<<< + * + * func_code_info.co_filename = co_filename + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_mtime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 249, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 249, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_v_func_code_info->breakpoints_mtime = __pyx_t_5; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":251 + * func_code_info.breakpoints_mtime = main_debugger.mtime + * + * func_code_info.co_filename = co_filename # <<<<<<<<<<<<<< + * func_code_info.co_name = co_name + * + */ + __Pyx_INCREF(__pyx_v_co_filename); + __Pyx_GIVEREF(__pyx_v_co_filename); + __Pyx_GOTREF(__pyx_v_func_code_info->co_filename); + __Pyx_DECREF(__pyx_v_func_code_info->co_filename); + __pyx_v_func_code_info->co_filename = __pyx_v_co_filename; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":252 + * + * func_code_info.co_filename = co_filename + * func_code_info.co_name = co_name # <<<<<<<<<<<<<< + * + * if not func_code_info.always_skip_code: + */ + __Pyx_INCREF(__pyx_v_co_name); + __Pyx_GIVEREF(__pyx_v_co_name); + __Pyx_GOTREF(__pyx_v_func_code_info->co_name); + __Pyx_DECREF(__pyx_v_func_code_info->co_name); + __pyx_v_func_code_info->co_name = __pyx_v_co_name; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":254 + * func_code_info.co_name = co_name + * + * if not func_code_info.always_skip_code: # <<<<<<<<<<<<<< + * try: + * abs_path_real_path_and_base = NORM_PATHS_AND_BASE_CONTAINER[co_filename] + */ + __pyx_t_3 = (!__pyx_v_func_code_info->always_skip_code); + if (__pyx_t_3) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":255 + * + * if not func_code_info.always_skip_code: + * try: # <<<<<<<<<<<<<< + * abs_path_real_path_and_base = NORM_PATHS_AND_BASE_CONTAINER[co_filename] + * except: + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8); + __Pyx_XGOTREF(__pyx_t_6); + __Pyx_XGOTREF(__pyx_t_7); + __Pyx_XGOTREF(__pyx_t_8); + /*try:*/ { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":256 + * if not func_code_info.always_skip_code: + * try: + * abs_path_real_path_and_base = NORM_PATHS_AND_BASE_CONTAINER[co_filename] # <<<<<<<<<<<<<< + * except: + * abs_path_real_path_and_base = get_abs_path_real_path_and_base_from_frame(frame_obj) + */ + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_t_4, __pyx_v_co_filename); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 256, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_v_abs_path_real_path_and_base = __pyx_t_1; + __pyx_t_1 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":255 + * + * if not func_code_info.always_skip_code: + * try: # <<<<<<<<<<<<<< + * abs_path_real_path_and_base = NORM_PATHS_AND_BASE_CONTAINER[co_filename] + * except: + */ + } + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + goto __pyx_L12_try_end; + __pyx_L7_error:; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":257 + * try: + * abs_path_real_path_and_base = NORM_PATHS_AND_BASE_CONTAINER[co_filename] + * except: # <<<<<<<<<<<<<< + * abs_path_real_path_and_base = get_abs_path_real_path_and_base_from_frame(frame_obj) + * + */ + /*except:*/ { + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.get_func_code_info", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_2) < 0) __PYX_ERR(0, 257, __pyx_L9_except_error) + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_4); + __Pyx_XGOTREF(__pyx_t_2); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":258 + * abs_path_real_path_and_base = NORM_PATHS_AND_BASE_CONTAINER[co_filename] + * except: + * abs_path_real_path_and_base = get_abs_path_real_path_and_base_from_frame(frame_obj) # <<<<<<<<<<<<<< + * + * func_code_info.canonical_normalized_filename = abs_path_real_path_and_base[1] + */ + __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_get_abs_path_real_path_and_base); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 258, __pyx_L9_except_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_11 = NULL; + __pyx_t_12 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_10))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_10, function); + __pyx_t_12 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_11, ((PyObject *)__pyx_v_frame_obj)}; + __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12); + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 258, __pyx_L9_except_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + } + __Pyx_XDECREF_SET(__pyx_v_abs_path_real_path_and_base, __pyx_t_9); + __pyx_t_9 = 0; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + goto __pyx_L8_exception_handled; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":255 + * + * if not func_code_info.always_skip_code: + * try: # <<<<<<<<<<<<<< + * abs_path_real_path_and_base = NORM_PATHS_AND_BASE_CONTAINER[co_filename] + * except: + */ + __pyx_L9_except_error:; + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8); + goto __pyx_L1_error; + __pyx_L8_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8); + __pyx_L12_try_end:; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":260 + * abs_path_real_path_and_base = get_abs_path_real_path_and_base_from_frame(frame_obj) + * + * func_code_info.canonical_normalized_filename = abs_path_real_path_and_base[1] # <<<<<<<<<<<<<< + * + * cache_file_type = main_debugger.get_cache_file_type() + */ + __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_abs_path_real_path_and_base, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 260, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(0, 260, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_2); + __Pyx_GOTREF(__pyx_v_func_code_info->canonical_normalized_filename); + __Pyx_DECREF(__pyx_v_func_code_info->canonical_normalized_filename); + __pyx_v_func_code_info->canonical_normalized_filename = ((PyObject*)__pyx_t_2); + __pyx_t_2 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":262 + * func_code_info.canonical_normalized_filename = abs_path_real_path_and_base[1] + * + * cache_file_type = main_debugger.get_cache_file_type() # <<<<<<<<<<<<<< + * # Note: this cache key must be the same from PyDB.get_file_type() -- see it for comments + * # on the cache. + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_get_cache_file_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 262, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = NULL; + __pyx_t_12 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_12 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_12, 0+__pyx_t_12); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 262, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + if (!(likely(PyDict_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_2))) __PYX_ERR(0, 262, __pyx_L1_error) + __pyx_v_cache_file_type = ((PyObject*)__pyx_t_2); + __pyx_t_2 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":265 + * # Note: this cache key must be the same from PyDB.get_file_type() -- see it for comments + * # on the cache. + * cache_file_type_key = (frame_obj.f_code.co_firstlineno, abs_path_real_path_and_base[0], frame_obj.f_code) # <<<<<<<<<<<<<< + * try: + * file_type = cache_file_type[cache_file_type_key] # Make it faster + */ + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_frame_obj->f_code->co_firstlineno); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 265, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_abs_path_real_path_and_base, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 265, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 265, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2)) __PYX_ERR(0, 265, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_4); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_4)) __PYX_ERR(0, 265, __pyx_L1_error); + __Pyx_INCREF(((PyObject *)__pyx_v_frame_obj->f_code)); + __Pyx_GIVEREF(((PyObject *)__pyx_v_frame_obj->f_code)); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, ((PyObject *)__pyx_v_frame_obj->f_code))) __PYX_ERR(0, 265, __pyx_L1_error); + __pyx_t_2 = 0; + __pyx_t_4 = 0; + __pyx_v_cache_file_type_key = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":266 + * # on the cache. + * cache_file_type_key = (frame_obj.f_code.co_firstlineno, abs_path_real_path_and_base[0], frame_obj.f_code) + * try: # <<<<<<<<<<<<<< + * file_type = cache_file_type[cache_file_type_key] # Make it faster + * except: + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6); + __Pyx_XGOTREF(__pyx_t_8); + __Pyx_XGOTREF(__pyx_t_7); + __Pyx_XGOTREF(__pyx_t_6); + /*try:*/ { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":267 + * cache_file_type_key = (frame_obj.f_code.co_firstlineno, abs_path_real_path_and_base[0], frame_obj.f_code) + * try: + * file_type = cache_file_type[cache_file_type_key] # Make it faster # <<<<<<<<<<<<<< + * except: + * file_type = main_debugger.get_file_type(frame_obj, abs_path_real_path_and_base) # we don't want to debug anything related to pydevd + */ + if (unlikely(__pyx_v_cache_file_type == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 267, __pyx_L15_error) + } + __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_cache_file_type, __pyx_v_cache_file_type_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 267, __pyx_L15_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_file_type = __pyx_t_1; + __pyx_t_1 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":266 + * # on the cache. + * cache_file_type_key = (frame_obj.f_code.co_firstlineno, abs_path_real_path_and_base[0], frame_obj.f_code) + * try: # <<<<<<<<<<<<<< + * file_type = cache_file_type[cache_file_type_key] # Make it faster + * except: + */ + } + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + goto __pyx_L20_try_end; + __pyx_L15_error:; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":268 + * try: + * file_type = cache_file_type[cache_file_type_key] # Make it faster + * except: # <<<<<<<<<<<<<< + * file_type = main_debugger.get_file_type(frame_obj, abs_path_real_path_and_base) # we don't want to debug anything related to pydevd + * + */ + /*except:*/ { + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.get_func_code_info", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_2) < 0) __PYX_ERR(0, 268, __pyx_L17_except_error) + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_4); + __Pyx_XGOTREF(__pyx_t_2); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":269 + * file_type = cache_file_type[cache_file_type_key] # Make it faster + * except: + * file_type = main_debugger.get_file_type(frame_obj, abs_path_real_path_and_base) # we don't want to debug anything related to pydevd # <<<<<<<<<<<<<< + * + * if file_type is not None: + */ + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_get_file_type); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 269, __pyx_L17_except_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_11 = NULL; + __pyx_t_12 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_10))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_10, function); + __pyx_t_12 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_11, ((PyObject *)__pyx_v_frame_obj), __pyx_v_abs_path_real_path_and_base}; + __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_12, 2+__pyx_t_12); + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 269, __pyx_L17_except_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + } + __Pyx_XDECREF_SET(__pyx_v_file_type, __pyx_t_9); + __pyx_t_9 = 0; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + goto __pyx_L16_exception_handled; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":266 + * # on the cache. + * cache_file_type_key = (frame_obj.f_code.co_firstlineno, abs_path_real_path_and_base[0], frame_obj.f_code) + * try: # <<<<<<<<<<<<<< + * file_type = cache_file_type[cache_file_type_key] # Make it faster + * except: + */ + __pyx_L17_except_error:; + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6); + goto __pyx_L1_error; + __pyx_L16_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6); + __pyx_L20_try_end:; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":271 + * file_type = main_debugger.get_file_type(frame_obj, abs_path_real_path_and_base) # we don't want to debug anything related to pydevd + * + * if file_type is not None: # <<<<<<<<<<<<<< + * func_code_info.always_skip_code = True + * + */ + __pyx_t_3 = (__pyx_v_file_type != Py_None); + if (__pyx_t_3) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":272 + * + * if file_type is not None: + * func_code_info.always_skip_code = True # <<<<<<<<<<<<<< + * + * if not func_code_info.always_skip_code: + */ + __pyx_v_func_code_info->always_skip_code = 1; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":271 + * file_type = main_debugger.get_file_type(frame_obj, abs_path_real_path_and_base) # we don't want to debug anything related to pydevd + * + * if file_type is not None: # <<<<<<<<<<<<<< + * func_code_info.always_skip_code = True + * + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":254 + * func_code_info.co_name = co_name + * + * if not func_code_info.always_skip_code: # <<<<<<<<<<<<<< + * try: + * abs_path_real_path_and_base = NORM_PATHS_AND_BASE_CONTAINER[co_filename] + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":274 + * func_code_info.always_skip_code = True + * + * if not func_code_info.always_skip_code: # <<<<<<<<<<<<<< + * if main_debugger is not None: + * + */ + __pyx_t_3 = (!__pyx_v_func_code_info->always_skip_code); + if (__pyx_t_3) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":275 + * + * if not func_code_info.always_skip_code: + * if main_debugger is not None: # <<<<<<<<<<<<<< + * + * breakpoints: dict = main_debugger.breakpoints.get(func_code_info.canonical_normalized_filename) + */ + __pyx_t_3 = (__pyx_v_main_debugger != Py_None); + if (__pyx_t_3) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":277 + * if main_debugger is not None: + * + * breakpoints: dict = main_debugger.breakpoints.get(func_code_info.canonical_normalized_filename) # <<<<<<<<<<<<<< + * function_breakpoint: object = main_debugger.function_breakpoint_name_to_breakpoint.get(func_code_info.co_name) + * # print('\n---') + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_breakpoints); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 277, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = NULL; + __pyx_t_12 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_12 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_func_code_info->canonical_normalized_filename}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 277, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + if (!(likely(PyDict_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_2))) __PYX_ERR(0, 277, __pyx_L1_error) + __pyx_v_breakpoints = ((PyObject*)__pyx_t_2); + __pyx_t_2 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":278 + * + * breakpoints: dict = main_debugger.breakpoints.get(func_code_info.canonical_normalized_filename) + * function_breakpoint: object = main_debugger.function_breakpoint_name_to_breakpoint.get(func_code_info.co_name) # <<<<<<<<<<<<<< + * # print('\n---') + * # print(main_debugger.breakpoints) + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_function_breakpoint_name_to_brea); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 278, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_get); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 278, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = NULL; + __pyx_t_12 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_12 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_func_code_info->co_name}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 278, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __pyx_v_function_breakpoint = __pyx_t_2; + __pyx_t_2 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":283 + * # print(func_code_info.canonical_normalized_filename) + * # print(main_debugger.breakpoints.get(func_code_info.canonical_normalized_filename)) + * code_obj_py: object = code_obj # <<<<<<<<<<<<<< + * cached_code_obj_info: object = _cache.get(code_obj_py) + * if cached_code_obj_info: + */ + __pyx_t_2 = ((PyObject *)__pyx_v_code_obj); + __Pyx_INCREF(__pyx_t_2); + __pyx_v_code_obj_py = __pyx_t_2; + __pyx_t_2 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":284 + * # print(main_debugger.breakpoints.get(func_code_info.canonical_normalized_filename)) + * code_obj_py: object = code_obj + * cached_code_obj_info: object = _cache.get(code_obj_py) # <<<<<<<<<<<<<< + * if cached_code_obj_info: + * # The cache is for new code objects, so, in this case it's already + */ + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_cache); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 284, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 284, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = NULL; + __pyx_t_12 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_12 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_code_obj_py}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 284, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __pyx_v_cached_code_obj_info = __pyx_t_2; + __pyx_t_2 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":285 + * code_obj_py: object = code_obj + * cached_code_obj_info: object = _cache.get(code_obj_py) + * if cached_code_obj_info: # <<<<<<<<<<<<<< + * # The cache is for new code objects, so, in this case it's already + * # using the new code and we can't change it as this is a generator! + */ + __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_cached_code_obj_info); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 285, __pyx_L1_error) + if (__pyx_t_3) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":291 + * # we may not want to go into tracing mode (as would usually happen + * # when the new_code is None). + * func_code_info.new_code = None # <<<<<<<<<<<<<< + * breakpoint_found, thread_info.force_stay_in_untraced_mode = \ + * cached_code_obj_info.compute_force_stay_in_untraced_mode(breakpoints) + */ + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_func_code_info->new_code); + __Pyx_DECREF(__pyx_v_func_code_info->new_code); + __pyx_v_func_code_info->new_code = Py_None; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":293 + * func_code_info.new_code = None + * breakpoint_found, thread_info.force_stay_in_untraced_mode = \ + * cached_code_obj_info.compute_force_stay_in_untraced_mode(breakpoints) # <<<<<<<<<<<<<< + * func_code_info.breakpoint_found = breakpoint_found + * + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_cached_code_obj_info, __pyx_n_s_compute_force_stay_in_untraced_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 293, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = NULL; + __pyx_t_12 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_12 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_breakpoints}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 293, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { + PyObject* sequence = __pyx_t_2; + Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); + if (unlikely(size != 2)) { + if (size > 2) __Pyx_RaiseTooManyValuesError(2); + else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); + __PYX_ERR(0, 292, __pyx_L1_error) + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + if (likely(PyTuple_CheckExact(sequence))) { + __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); + __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); + } else { + __pyx_t_1 = PyList_GET_ITEM(sequence, 0); + __pyx_t_4 = PyList_GET_ITEM(sequence, 1); + } + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(__pyx_t_4); + #else + __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 292, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 292, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #endif + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else { + Py_ssize_t index = -1; + __pyx_t_9 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 292, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_13 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_9); + index = 0; __pyx_t_1 = __pyx_t_13(__pyx_t_9); if (unlikely(!__pyx_t_1)) goto __pyx_L27_unpacking_failed; + __Pyx_GOTREF(__pyx_t_1); + index = 1; __pyx_t_4 = __pyx_t_13(__pyx_t_9); if (unlikely(!__pyx_t_4)) goto __pyx_L27_unpacking_failed; + __Pyx_GOTREF(__pyx_t_4); + if (__Pyx_IternextUnpackEndCheck(__pyx_t_13(__pyx_t_9), 2) < 0) __PYX_ERR(0, 292, __pyx_L1_error) + __pyx_t_13 = NULL; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + goto __pyx_L28_unpacking_done; + __pyx_L27_unpacking_failed:; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_13 = NULL; + if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); + __PYX_ERR(0, 292, __pyx_L1_error) + __pyx_L28_unpacking_done:; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":292 + * # when the new_code is None). + * func_code_info.new_code = None + * breakpoint_found, thread_info.force_stay_in_untraced_mode = \ # <<<<<<<<<<<<<< + * cached_code_obj_info.compute_force_stay_in_untraced_mode(breakpoints) + * func_code_info.breakpoint_found = breakpoint_found + */ + __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 292, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_v_breakpoint_found = __pyx_t_1; + __pyx_t_1 = 0; + __pyx_v_thread_info->force_stay_in_untraced_mode = __pyx_t_3; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":294 + * breakpoint_found, thread_info.force_stay_in_untraced_mode = \ + * cached_code_obj_info.compute_force_stay_in_untraced_mode(breakpoints) + * func_code_info.breakpoint_found = breakpoint_found # <<<<<<<<<<<<<< + * + * elif function_breakpoint: + */ + __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_breakpoint_found); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 294, __pyx_L1_error) + __pyx_v_func_code_info->breakpoint_found = __pyx_t_3; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":285 + * code_obj_py: object = code_obj + * cached_code_obj_info: object = _cache.get(code_obj_py) + * if cached_code_obj_info: # <<<<<<<<<<<<<< + * # The cache is for new code objects, so, in this case it's already + * # using the new code and we can't change it as this is a generator! + */ + goto __pyx_L26; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":296 + * func_code_info.breakpoint_found = breakpoint_found + * + * elif function_breakpoint: # <<<<<<<<<<<<<< + * # Go directly into tracing mode + * func_code_info.breakpoint_found = True + */ + __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_function_breakpoint); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 296, __pyx_L1_error) + if (__pyx_t_3) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":298 + * elif function_breakpoint: + * # Go directly into tracing mode + * func_code_info.breakpoint_found = True # <<<<<<<<<<<<<< + * func_code_info.new_code = None + * + */ + __pyx_v_func_code_info->breakpoint_found = 1; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":299 + * # Go directly into tracing mode + * func_code_info.breakpoint_found = True + * func_code_info.new_code = None # <<<<<<<<<<<<<< + * + * elif breakpoints: + */ + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_func_code_info->new_code); + __Pyx_DECREF(__pyx_v_func_code_info->new_code); + __pyx_v_func_code_info->new_code = Py_None; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":296 + * func_code_info.breakpoint_found = breakpoint_found + * + * elif function_breakpoint: # <<<<<<<<<<<<<< + * # Go directly into tracing mode + * func_code_info.breakpoint_found = True + */ + goto __pyx_L26; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":301 + * func_code_info.new_code = None + * + * elif breakpoints: # <<<<<<<<<<<<<< + * # if DEBUG: + * # print('found breakpoints', code_obj_py.co_name, breakpoints) + */ + __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_breakpoints); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 301, __pyx_L1_error) + if (__pyx_t_3) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":307 + * # Note: new_code can be None if unable to generate. + * # It should automatically put the new code object in the cache. + * breakpoint_found, func_code_info.new_code = generate_code_with_breakpoints(code_obj_py, breakpoints) # <<<<<<<<<<<<<< + * func_code_info.breakpoint_found = breakpoint_found + * + */ + __pyx_t_2 = __pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_generate_code_with_breakpoints(__pyx_v_code_obj_py, __pyx_v_breakpoints); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 307, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { + PyObject* sequence = __pyx_t_2; + Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); + if (unlikely(size != 2)) { + if (size > 2) __Pyx_RaiseTooManyValuesError(2); + else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); + __PYX_ERR(0, 307, __pyx_L1_error) + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + if (likely(PyTuple_CheckExact(sequence))) { + __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); + __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); + } else { + __pyx_t_4 = PyList_GET_ITEM(sequence, 0); + __pyx_t_1 = PyList_GET_ITEM(sequence, 1); + } + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(__pyx_t_1); + #else + __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 307, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 307, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + #endif + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else { + Py_ssize_t index = -1; + __pyx_t_9 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 307, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_13 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_9); + index = 0; __pyx_t_4 = __pyx_t_13(__pyx_t_9); if (unlikely(!__pyx_t_4)) goto __pyx_L29_unpacking_failed; + __Pyx_GOTREF(__pyx_t_4); + index = 1; __pyx_t_1 = __pyx_t_13(__pyx_t_9); if (unlikely(!__pyx_t_1)) goto __pyx_L29_unpacking_failed; + __Pyx_GOTREF(__pyx_t_1); + if (__Pyx_IternextUnpackEndCheck(__pyx_t_13(__pyx_t_9), 2) < 0) __PYX_ERR(0, 307, __pyx_L1_error) + __pyx_t_13 = NULL; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + goto __pyx_L30_unpacking_done; + __pyx_L29_unpacking_failed:; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_13 = NULL; + if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); + __PYX_ERR(0, 307, __pyx_L1_error) + __pyx_L30_unpacking_done:; + } + __pyx_v_breakpoint_found = __pyx_t_4; + __pyx_t_4 = 0; + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v_func_code_info->new_code); + __Pyx_DECREF(__pyx_v_func_code_info->new_code); + __pyx_v_func_code_info->new_code = __pyx_t_1; + __pyx_t_1 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":308 + * # It should automatically put the new code object in the cache. + * breakpoint_found, func_code_info.new_code = generate_code_with_breakpoints(code_obj_py, breakpoints) + * func_code_info.breakpoint_found = breakpoint_found # <<<<<<<<<<<<<< + * + * Py_INCREF(func_code_info) + */ + __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_breakpoint_found); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 308, __pyx_L1_error) + __pyx_v_func_code_info->breakpoint_found = __pyx_t_3; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":301 + * func_code_info.new_code = None + * + * elif breakpoints: # <<<<<<<<<<<<<< + * # if DEBUG: + * # print('found breakpoints', code_obj_py.co_name, breakpoints) + */ + } + __pyx_L26:; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":275 + * + * if not func_code_info.always_skip_code: + * if main_debugger is not None: # <<<<<<<<<<<<<< + * + * breakpoints: dict = main_debugger.breakpoints.get(func_code_info.canonical_normalized_filename) + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":274 + * func_code_info.always_skip_code = True + * + * if not func_code_info.always_skip_code: # <<<<<<<<<<<<<< + * if main_debugger is not None: + * + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":310 + * func_code_info.breakpoint_found = breakpoint_found + * + * Py_INCREF(func_code_info) # <<<<<<<<<<<<<< + * _PyCode_SetExtra( code_obj, _code_extra_index, func_code_info) + * + */ + Py_INCREF(((PyObject *)__pyx_v_func_code_info)); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":311 + * + * Py_INCREF(func_code_info) + * _PyCode_SetExtra( code_obj, _code_extra_index, func_code_info) # <<<<<<<<<<<<<< + * + * return func_code_info + */ + (void)(_PyCode_SetExtra(((PyObject *)__pyx_v_code_obj), __pyx_v_18_pydevd_frame_eval_22pydevd_frame_evaluator__code_extra_index, ((PyObject *)__pyx_v_func_code_info))); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":313 + * _PyCode_SetExtra( code_obj, _code_extra_index, func_code_info) + * + * return func_code_info # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF((PyObject *)__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_func_code_info); + __pyx_r = __pyx_v_func_code_info; + goto __pyx_L0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":212 + * cdef int _code_extra_index = -1 + * + * cdef FuncCodeInfo get_func_code_info(ThreadInfo thread_info, PyFrameObject * frame_obj, PyCodeObject * code_obj): # <<<<<<<<<<<<<< + * ''' + * Provides code-object related info. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_XDECREF(__pyx_t_11); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.get_func_code_info", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_main_debugger); + __Pyx_XDECREF((PyObject *)__pyx_v_func_code_info_obj); + __Pyx_XDECREF(__pyx_v_co_filename); + __Pyx_XDECREF(__pyx_v_co_name); + __Pyx_XDECREF(__pyx_v_cache_file_type); + __Pyx_XDECREF(__pyx_v_cache_file_type_key); + __Pyx_XDECREF((PyObject *)__pyx_v_func_code_info); + __Pyx_XDECREF(__pyx_v_abs_path_real_path_and_base); + __Pyx_XDECREF(__pyx_v_file_type); + __Pyx_XDECREF(__pyx_v_breakpoints); + __Pyx_XDECREF(__pyx_v_function_breakpoint); + __Pyx_XDECREF(__pyx_v_code_obj_py); + __Pyx_XDECREF(__pyx_v_cached_code_obj_info); + __Pyx_XDECREF(__pyx_v_breakpoint_found); + __Pyx_XGIVEREF((PyObject *)__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":322 + * cdef public int last_line + * + * def __init__(self, dict line_to_offset, int first_line, int last_line): # <<<<<<<<<<<<<< + * self.line_to_offset = line_to_offset + * self.first_line = first_line + */ + +/* Python wrapper */ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_line_to_offset = 0; + int __pyx_v_first_line; + int __pyx_v_last_line; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_line_to_offset,&__pyx_n_s_first_line,&__pyx_n_s_last_line,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_line_to_offset)) != 0)) { + (void)__Pyx_Arg_NewRef_VARARGS(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 322, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_first_line)) != 0)) { + (void)__Pyx_Arg_NewRef_VARARGS(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 322, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 1); __PYX_ERR(0, 322, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_last_line)) != 0)) { + (void)__Pyx_Arg_NewRef_VARARGS(values[2]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 322, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 2); __PYX_ERR(0, 322, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(0, 322, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 3)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); + values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1); + values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2); + } + __pyx_v_line_to_offset = ((PyObject*)values[0]); + __pyx_v_first_line = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_first_line == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 322, __pyx_L3_error) + __pyx_v_last_line = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_last_line == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 322, __pyx_L3_error) + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 322, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator._CodeLineInfo.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return -1; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_line_to_offset), (&PyDict_Type), 1, "line_to_offset", 1))) __PYX_ERR(0, 322, __pyx_L1_error) + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo___init__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *)__pyx_v_self), __pyx_v_line_to_offset, __pyx_v_first_line, __pyx_v_last_line); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = -1; + __pyx_L0:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo___init__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *__pyx_v_self, PyObject *__pyx_v_line_to_offset, int __pyx_v_first_line, int __pyx_v_last_line) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__init__", 1); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":323 + * + * def __init__(self, dict line_to_offset, int first_line, int last_line): + * self.line_to_offset = line_to_offset # <<<<<<<<<<<<<< + * self.first_line = first_line + * self.last_line = last_line + */ + __Pyx_INCREF(__pyx_v_line_to_offset); + __Pyx_GIVEREF(__pyx_v_line_to_offset); + __Pyx_GOTREF(__pyx_v_self->line_to_offset); + __Pyx_DECREF(__pyx_v_self->line_to_offset); + __pyx_v_self->line_to_offset = __pyx_v_line_to_offset; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":324 + * def __init__(self, dict line_to_offset, int first_line, int last_line): + * self.line_to_offset = line_to_offset + * self.first_line = first_line # <<<<<<<<<<<<<< + * self.last_line = last_line + * + */ + __pyx_v_self->first_line = __pyx_v_first_line; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":325 + * self.line_to_offset = line_to_offset + * self.first_line = first_line + * self.last_line = last_line # <<<<<<<<<<<<<< + * + * + */ + __pyx_v_self->last_line = __pyx_v_last_line; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":322 + * cdef public int last_line + * + * def __init__(self, dict line_to_offset, int first_line, int last_line): # <<<<<<<<<<<<<< + * self.line_to_offset = line_to_offset + * self.first_line = first_line + */ + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":318 + * cdef class _CodeLineInfo: + * + * cdef public dict line_to_offset # <<<<<<<<<<<<<< + * cdef public int first_line + * cdef public int last_line + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_14line_to_offset_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_14line_to_offset_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_14line_to_offset___get__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_14line_to_offset___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->line_to_offset); + __pyx_r = __pyx_v_self->line_to_offset; + goto __pyx_L0; + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_14line_to_offset_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_14line_to_offset_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_14line_to_offset_2__set__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_14line_to_offset_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__set__", 1); + if (!(likely(PyDict_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_v_value))) __PYX_ERR(0, 318, __pyx_L1_error) + __pyx_t_1 = __pyx_v_value; + __Pyx_INCREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v_self->line_to_offset); + __Pyx_DECREF(__pyx_v_self->line_to_offset); + __pyx_v_self->line_to_offset = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator._CodeLineInfo.line_to_offset.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_14line_to_offset_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_14line_to_offset_5__del__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_14line_to_offset_4__del__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_14line_to_offset_4__del__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 1); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->line_to_offset); + __Pyx_DECREF(__pyx_v_self->line_to_offset); + __pyx_v_self->line_to_offset = ((PyObject*)Py_None); + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":319 + * + * cdef public dict line_to_offset + * cdef public int first_line # <<<<<<<<<<<<<< + * cdef public int last_line + * + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_10first_line_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_10first_line_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_10first_line___get__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_10first_line___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->first_line); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 319, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator._CodeLineInfo.first_line.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_10first_line_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_10first_line_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_10first_line_2__set__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_10first_line_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + int __pyx_t_1; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 319, __pyx_L1_error) + __pyx_v_self->first_line = __pyx_t_1; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator._CodeLineInfo.first_line.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + return __pyx_r; +} + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":320 + * cdef public dict line_to_offset + * cdef public int first_line + * cdef public int last_line # <<<<<<<<<<<<<< + * + * def __init__(self, dict line_to_offset, int first_line, int last_line): + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_9last_line_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_9last_line_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_9last_line___get__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_9last_line___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->last_line); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 320, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator._CodeLineInfo.last_line.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_9last_line_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_9last_line_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_9last_line_2__set__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_9last_line_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + int __pyx_t_1; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 320, __pyx_L1_error) + __pyx_v_self->last_line = __pyx_t_1; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator._CodeLineInfo.last_line.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_3__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_3__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { + __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} + if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_2__reduce_cython__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_2__reduce_cython__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *__pyx_v_self) { + PyObject *__pyx_v_state = 0; + PyObject *__pyx_v__dict = 0; + int __pyx_v_use_setstate; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__reduce_cython__", 1); + + /* "(tree fragment)":5 + * cdef object _dict + * cdef bint use_setstate + * state = (self.first_line, self.last_line, self.line_to_offset) # <<<<<<<<<<<<<< + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: + */ + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->first_line); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->last_line); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_self->line_to_offset); + __Pyx_GIVEREF(__pyx_v_self->line_to_offset); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_self->line_to_offset)) __PYX_ERR(1, 5, __pyx_L1_error); + __pyx_t_1 = 0; + __pyx_t_2 = 0; + __pyx_v_state = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "(tree fragment)":6 + * cdef bint use_setstate + * state = (self.first_line, self.last_line, self.line_to_offset) + * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< + * if _dict is not None: + * state += (_dict,) + */ + __pyx_t_3 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v__dict = __pyx_t_3; + __pyx_t_3 = 0; + + /* "(tree fragment)":7 + * state = (self.first_line, self.last_line, self.line_to_offset) + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: # <<<<<<<<<<<<<< + * state += (_dict,) + * use_setstate = True + */ + __pyx_t_4 = (__pyx_v__dict != Py_None); + if (__pyx_t_4) { + + /* "(tree fragment)":8 + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: + * state += (_dict,) # <<<<<<<<<<<<<< + * use_setstate = True + * else: + */ + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_v__dict); + __Pyx_GIVEREF(__pyx_v__dict); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v__dict)) __PYX_ERR(1, 8, __pyx_L1_error); + __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_2)); + __pyx_t_2 = 0; + + /* "(tree fragment)":9 + * if _dict is not None: + * state += (_dict,) + * use_setstate = True # <<<<<<<<<<<<<< + * else: + * use_setstate = self.line_to_offset is not None + */ + __pyx_v_use_setstate = 1; + + /* "(tree fragment)":7 + * state = (self.first_line, self.last_line, self.line_to_offset) + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: # <<<<<<<<<<<<<< + * state += (_dict,) + * use_setstate = True + */ + goto __pyx_L3; + } + + /* "(tree fragment)":11 + * use_setstate = True + * else: + * use_setstate = self.line_to_offset is not None # <<<<<<<<<<<<<< + * if use_setstate: + * return __pyx_unpickle__CodeLineInfo, (type(self), 0x5a9bcd5, None), state + */ + /*else*/ { + __pyx_t_4 = (__pyx_v_self->line_to_offset != ((PyObject*)Py_None)); + __pyx_v_use_setstate = __pyx_t_4; + } + __pyx_L3:; + + /* "(tree fragment)":12 + * else: + * use_setstate = self.line_to_offset is not None + * if use_setstate: # <<<<<<<<<<<<<< + * return __pyx_unpickle__CodeLineInfo, (type(self), 0x5a9bcd5, None), state + * else: + */ + if (__pyx_v_use_setstate) { + + /* "(tree fragment)":13 + * use_setstate = self.line_to_offset is not None + * if use_setstate: + * return __pyx_unpickle__CodeLineInfo, (type(self), 0x5a9bcd5, None), state # <<<<<<<<<<<<<< + * else: + * return __pyx_unpickle__CodeLineInfo, (type(self), 0x5a9bcd5, state) + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyx_unpickle__CodeLineInfo); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_int_95010005); + __Pyx_GIVEREF(__pyx_int_95010005); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_95010005)) __PYX_ERR(1, 13, __pyx_L1_error); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, Py_None)) __PYX_ERR(1, 13, __pyx_L1_error); + __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_3); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_state); + __Pyx_GIVEREF(__pyx_v_state); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state)) __PYX_ERR(1, 13, __pyx_L1_error); + __pyx_t_2 = 0; + __pyx_t_3 = 0; + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "(tree fragment)":12 + * else: + * use_setstate = self.line_to_offset is not None + * if use_setstate: # <<<<<<<<<<<<<< + * return __pyx_unpickle__CodeLineInfo, (type(self), 0x5a9bcd5, None), state + * else: + */ + } + + /* "(tree fragment)":15 + * return __pyx_unpickle__CodeLineInfo, (type(self), 0x5a9bcd5, None), state + * else: + * return __pyx_unpickle__CodeLineInfo, (type(self), 0x5a9bcd5, state) # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * __pyx_unpickle__CodeLineInfo__set_state(self, __pyx_state) + */ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle__CodeLineInfo); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 15, __pyx_L1_error); + __Pyx_INCREF(__pyx_int_95010005); + __Pyx_GIVEREF(__pyx_int_95010005); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_95010005)) __PYX_ERR(1, 15, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_state); + __Pyx_GIVEREF(__pyx_v_state); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_state)) __PYX_ERR(1, 15, __pyx_L1_error); + __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_3); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3)) __PYX_ERR(1, 15, __pyx_L1_error); + __pyx_t_1 = 0; + __pyx_t_3 = 0; + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + } + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator._CodeLineInfo.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_state); + __Pyx_XDECREF(__pyx_v__dict); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":16 + * else: + * return __pyx_unpickle__CodeLineInfo, (type(self), 0x5a9bcd5, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle__CodeLineInfo__set_state(self, __pyx_state) + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_5__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_5__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 16, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(1, 16, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + } + __pyx_v___pyx_state = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 16, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator._CodeLineInfo.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_4__setstate_cython__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *)__pyx_v_self), __pyx_v___pyx_state); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_4__setstate_cython__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *__pyx_v_self, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__setstate_cython__", 1); + + /* "(tree fragment)":17 + * return __pyx_unpickle__CodeLineInfo, (type(self), 0x5a9bcd5, state) + * def __setstate_cython__(self, __pyx_state): + * __pyx_unpickle__CodeLineInfo__set_state(self, __pyx_state) # <<<<<<<<<<<<<< + */ + if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(1, 17, __pyx_L1_error) + __pyx_t_1 = __pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unpickle__CodeLineInfo__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle__CodeLineInfo, (type(self), 0x5a9bcd5, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle__CodeLineInfo__set_state(self, __pyx_state) + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator._CodeLineInfo.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":329 + * + * # Note: this method has a version in pure-python too. + * def _get_code_line_info(code_obj): # <<<<<<<<<<<<<< + * line_to_offset: dict = {} + * first_line: int = None + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_get_code_line_info(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_get_code_line_info = {"_get_code_line_info", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_get_code_line_info, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_get_code_line_info(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_code_obj = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("_get_code_line_info (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_code_obj,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_code_obj)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 329, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_get_code_line_info") < 0)) __PYX_ERR(0, 329, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + } + __pyx_v_code_obj = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("_get_code_line_info", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 329, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator._get_code_line_info", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10_get_code_line_info(__pyx_self, __pyx_v_code_obj); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_10_get_code_line_info(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_code_obj) { + PyObject *__pyx_v_line_to_offset = 0; + PyObject *__pyx_v_first_line = 0; + PyObject *__pyx_v_last_line = 0; + int __pyx_v_offset; + int __pyx_v_line; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + unsigned int __pyx_t_4; + Py_ssize_t __pyx_t_5; + PyObject *(*__pyx_t_6)(PyObject *); + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *(*__pyx_t_9)(PyObject *); + int __pyx_t_10; + int __pyx_t_11; + int __pyx_t_12; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_get_code_line_info", 1); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":330 + * # Note: this method has a version in pure-python too. + * def _get_code_line_info(code_obj): + * line_to_offset: dict = {} # <<<<<<<<<<<<<< + * first_line: int = None + * last_line: int = None + */ + __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 330, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_line_to_offset = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":331 + * def _get_code_line_info(code_obj): + * line_to_offset: dict = {} + * first_line: int = None # <<<<<<<<<<<<<< + * last_line: int = None + * + */ + __Pyx_INCREF(Py_None); + __pyx_v_first_line = ((PyObject*)Py_None); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":332 + * line_to_offset: dict = {} + * first_line: int = None + * last_line: int = None # <<<<<<<<<<<<<< + * + * cdef int offset + */ + __Pyx_INCREF(Py_None); + __pyx_v_last_line = ((PyObject*)Py_None); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":337 + * cdef int line + * + * for offset, line in dis.findlinestarts(code_obj): # <<<<<<<<<<<<<< + * line_to_offset[line] = offset + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_dis); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 337, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_findlinestarts); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 337, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_code_obj}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 337, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { + __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); + __pyx_t_5 = 0; + __pyx_t_6 = NULL; + } else { + __pyx_t_5 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 337, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 337, __pyx_L1_error) + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + for (;;) { + if (likely(!__pyx_t_6)) { + if (likely(PyList_CheckExact(__pyx_t_3))) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3); + #if !CYTHON_ASSUME_SAFE_MACROS + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 337, __pyx_L1_error) + #endif + if (__pyx_t_5 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(0, 337, __pyx_L1_error) + #else + __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 337, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + #endif + } else { + { + Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3); + #if !CYTHON_ASSUME_SAFE_MACROS + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 337, __pyx_L1_error) + #endif + if (__pyx_t_5 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(0, 337, __pyx_L1_error) + #else + __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 337, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + #endif + } + } else { + __pyx_t_1 = __pyx_t_6(__pyx_t_3); + if (unlikely(!__pyx_t_1)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(0, 337, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_1); + } + if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { + PyObject* sequence = __pyx_t_1; + Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); + if (unlikely(size != 2)) { + if (size > 2) __Pyx_RaiseTooManyValuesError(2); + else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); + __PYX_ERR(0, 337, __pyx_L1_error) + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + if (likely(PyTuple_CheckExact(sequence))) { + __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); + __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); + } else { + __pyx_t_2 = PyList_GET_ITEM(sequence, 0); + __pyx_t_7 = PyList_GET_ITEM(sequence, 1); + } + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(__pyx_t_7); + #else + __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 337, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 337, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + #endif + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } else { + Py_ssize_t index = -1; + __pyx_t_8 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 337, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_8); + index = 0; __pyx_t_2 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_2)) goto __pyx_L5_unpacking_failed; + __Pyx_GOTREF(__pyx_t_2); + index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L5_unpacking_failed; + __Pyx_GOTREF(__pyx_t_7); + if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) __PYX_ERR(0, 337, __pyx_L1_error) + __pyx_t_9 = NULL; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + goto __pyx_L6_unpacking_done; + __pyx_L5_unpacking_failed:; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_9 = NULL; + if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); + __PYX_ERR(0, 337, __pyx_L1_error) + __pyx_L6_unpacking_done:; + } + __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 337, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 337, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_v_offset = __pyx_t_10; + __pyx_v_line = __pyx_t_11; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":338 + * + * for offset, line in dis.findlinestarts(code_obj): + * line_to_offset[line] = offset # <<<<<<<<<<<<<< + * + * if line_to_offset: + */ + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_offset); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 338, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_line); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 338, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + if (unlikely((PyDict_SetItem(__pyx_v_line_to_offset, __pyx_t_7, __pyx_t_1) < 0))) __PYX_ERR(0, 338, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":337 + * cdef int line + * + * for offset, line in dis.findlinestarts(code_obj): # <<<<<<<<<<<<<< + * line_to_offset[line] = offset + * + */ + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":340 + * line_to_offset[line] = offset + * + * if line_to_offset: # <<<<<<<<<<<<<< + * first_line = min(line_to_offset) + * last_line = max(line_to_offset) + */ + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_line_to_offset); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 340, __pyx_L1_error) + if (__pyx_t_12) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":341 + * + * if line_to_offset: + * first_line = min(line_to_offset) # <<<<<<<<<<<<<< + * last_line = max(line_to_offset) + * return _CodeLineInfo(line_to_offset, first_line, last_line) + */ + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_min, __pyx_v_line_to_offset); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 341, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (!(likely(__Pyx_Py3Int_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("int", __pyx_t_3))) __PYX_ERR(0, 341, __pyx_L1_error) + __Pyx_DECREF_SET(__pyx_v_first_line, ((PyObject*)__pyx_t_3)); + __pyx_t_3 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":342 + * if line_to_offset: + * first_line = min(line_to_offset) + * last_line = max(line_to_offset) # <<<<<<<<<<<<<< + * return _CodeLineInfo(line_to_offset, first_line, last_line) + * + */ + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_max, __pyx_v_line_to_offset); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 342, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (!(likely(__Pyx_Py3Int_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("int", __pyx_t_3))) __PYX_ERR(0, 342, __pyx_L1_error) + __Pyx_DECREF_SET(__pyx_v_last_line, ((PyObject*)__pyx_t_3)); + __pyx_t_3 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":340 + * line_to_offset[line] = offset + * + * if line_to_offset: # <<<<<<<<<<<<<< + * first_line = min(line_to_offset) + * last_line = max(line_to_offset) + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":343 + * first_line = min(line_to_offset) + * last_line = max(line_to_offset) + * return _CodeLineInfo(line_to_offset, first_line, last_line) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 343, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_v_line_to_offset); + __Pyx_GIVEREF(__pyx_v_line_to_offset); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_line_to_offset)) __PYX_ERR(0, 343, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_first_line); + __Pyx_GIVEREF(__pyx_v_first_line); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_first_line)) __PYX_ERR(0, 343, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_last_line); + __Pyx_GIVEREF(__pyx_v_last_line); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_last_line)) __PYX_ERR(0, 343, __pyx_L1_error); + __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo), __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 343, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":329 + * + * # Note: this method has a version in pure-python too. + * def _get_code_line_info(code_obj): # <<<<<<<<<<<<<< + * line_to_offset: dict = {} + * first_line: int = None + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator._get_code_line_info", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_line_to_offset); + __Pyx_XDECREF(__pyx_v_first_line); + __Pyx_XDECREF(__pyx_v_last_line); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":353 + * _cache: dict = {} + * + * def get_cached_code_obj_info_py(code_obj_py): # <<<<<<<<<<<<<< + * ''' + * :return _CacheValue: + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13get_cached_code_obj_info_py(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_18_pydevd_frame_eval_22pydevd_frame_evaluator_12get_cached_code_obj_info_py, "\n :return _CacheValue:\n :note: on cython use _cache.get(code_obj_py) directly.\n "); +static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_13get_cached_code_obj_info_py = {"get_cached_code_obj_info_py", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13get_cached_code_obj_info_py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_18_pydevd_frame_eval_22pydevd_frame_evaluator_12get_cached_code_obj_info_py}; +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13get_cached_code_obj_info_py(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_code_obj_py = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_cached_code_obj_info_py (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_code_obj_py,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_code_obj_py)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 353, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "get_cached_code_obj_info_py") < 0)) __PYX_ERR(0, 353, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + } + __pyx_v_code_obj_py = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("get_cached_code_obj_info_py", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 353, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.get_cached_code_obj_info_py", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12get_cached_code_obj_info_py(__pyx_self, __pyx_v_code_obj_py); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_12get_cached_code_obj_info_py(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_code_obj_py) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + unsigned int __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get_cached_code_obj_info_py", 1); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":358 + * :note: on cython use _cache.get(code_obj_py) directly. + * ''' + * return _cache.get(code_obj_py) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_cache); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 358, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 358, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_4 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_code_obj_py}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 358, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":353 + * _cache: dict = {} + * + * def get_cached_code_obj_info_py(code_obj_py): # <<<<<<<<<<<<<< + * ''' + * :return _CacheValue: + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.get_cached_code_obj_info_py", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":368 + * cdef public set code_lines_as_set + * + * def __init__(self, object code_obj_py, _CodeLineInfo code_line_info, set breakpoints_hit_at_lines): # <<<<<<<<<<<<<< + * ''' + * :param code_obj_py: + */ + +/* Python wrapper */ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +PyDoc_STRVAR(__pyx_doc_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue___init__, "\n :param code_obj_py:\n :param _CodeLineInfo code_line_info:\n :param set[int] breakpoints_hit_at_lines:\n "); +#if CYTHON_UPDATE_DESCRIPTOR_DOC +struct wrapperbase __pyx_wrapperbase_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue___init__; +#endif +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_code_obj_py = 0; + struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *__pyx_v_code_line_info = 0; + PyObject *__pyx_v_breakpoints_hit_at_lines = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; + #endif + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_code_obj_py,&__pyx_n_s_code_line_info,&__pyx_n_s_breakpoints_hit_at_lines,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_code_obj_py)) != 0)) { + (void)__Pyx_Arg_NewRef_VARARGS(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 368, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_code_line_info)) != 0)) { + (void)__Pyx_Arg_NewRef_VARARGS(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 368, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 1); __PYX_ERR(0, 368, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_breakpoints_hit_at_lines)) != 0)) { + (void)__Pyx_Arg_NewRef_VARARGS(values[2]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 368, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 2); __PYX_ERR(0, 368, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(0, 368, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 3)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); + values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1); + values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2); + } + __pyx_v_code_obj_py = values[0]; + __pyx_v_code_line_info = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *)values[1]); + __pyx_v_breakpoints_hit_at_lines = ((PyObject*)values[2]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 368, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator._CacheValue.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return -1; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_code_line_info), __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo, 1, "code_line_info", 0))) __PYX_ERR(0, 368, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_breakpoints_hit_at_lines), (&PySet_Type), 1, "breakpoints_hit_at_lines", 1))) __PYX_ERR(0, 368, __pyx_L1_error) + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue___init__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)__pyx_v_self), __pyx_v_code_obj_py, __pyx_v_code_line_info, __pyx_v_breakpoints_hit_at_lines); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = -1; + __pyx_L0:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue___init__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self, PyObject *__pyx_v_code_obj_py, struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *__pyx_v_code_line_info, PyObject *__pyx_v_breakpoints_hit_at_lines) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__init__", 1); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":374 + * :param set[int] breakpoints_hit_at_lines: + * ''' + * self.code_obj_py = code_obj_py # <<<<<<<<<<<<<< + * self.code_line_info = code_line_info + * self.breakpoints_hit_at_lines = breakpoints_hit_at_lines + */ + __Pyx_INCREF(__pyx_v_code_obj_py); + __Pyx_GIVEREF(__pyx_v_code_obj_py); + __Pyx_GOTREF(__pyx_v_self->code_obj_py); + __Pyx_DECREF(__pyx_v_self->code_obj_py); + __pyx_v_self->code_obj_py = __pyx_v_code_obj_py; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":375 + * ''' + * self.code_obj_py = code_obj_py + * self.code_line_info = code_line_info # <<<<<<<<<<<<<< + * self.breakpoints_hit_at_lines = breakpoints_hit_at_lines + * self.code_lines_as_set = set(code_line_info.line_to_offset) + */ + __Pyx_INCREF((PyObject *)__pyx_v_code_line_info); + __Pyx_GIVEREF((PyObject *)__pyx_v_code_line_info); + __Pyx_GOTREF((PyObject *)__pyx_v_self->code_line_info); + __Pyx_DECREF((PyObject *)__pyx_v_self->code_line_info); + __pyx_v_self->code_line_info = __pyx_v_code_line_info; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":376 + * self.code_obj_py = code_obj_py + * self.code_line_info = code_line_info + * self.breakpoints_hit_at_lines = breakpoints_hit_at_lines # <<<<<<<<<<<<<< + * self.code_lines_as_set = set(code_line_info.line_to_offset) + * + */ + __Pyx_INCREF(__pyx_v_breakpoints_hit_at_lines); + __Pyx_GIVEREF(__pyx_v_breakpoints_hit_at_lines); + __Pyx_GOTREF(__pyx_v_self->breakpoints_hit_at_lines); + __Pyx_DECREF(__pyx_v_self->breakpoints_hit_at_lines); + __pyx_v_self->breakpoints_hit_at_lines = __pyx_v_breakpoints_hit_at_lines; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":377 + * self.code_line_info = code_line_info + * self.breakpoints_hit_at_lines = breakpoints_hit_at_lines + * self.code_lines_as_set = set(code_line_info.line_to_offset) # <<<<<<<<<<<<<< + * + * cpdef compute_force_stay_in_untraced_mode(self, breakpoints): + */ + __pyx_t_1 = PySet_New(__pyx_v_code_line_info->line_to_offset); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 377, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v_self->code_lines_as_set); + __Pyx_DECREF(__pyx_v_self->code_lines_as_set); + __pyx_v_self->code_lines_as_set = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":368 + * cdef public set code_lines_as_set + * + * def __init__(self, object code_obj_py, _CodeLineInfo code_line_info, set breakpoints_hit_at_lines): # <<<<<<<<<<<<<< + * ''' + * :param code_obj_py: + */ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator._CacheValue.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":379 + * self.code_lines_as_set = set(code_line_info.line_to_offset) + * + * cpdef compute_force_stay_in_untraced_mode(self, breakpoints): # <<<<<<<<<<<<<< + * ''' + * :param breakpoints: + */ + +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_3compute_force_stay_in_untraced_mode(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_compute_force_stay_in_untraced_mode(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self, PyObject *__pyx_v_breakpoints, int __pyx_skip_dispatch) { + int __pyx_v_force_stay_in_untraced_mode; + int __pyx_v_breakpoint_found; + PyObject *__pyx_v_target_breakpoints = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + unsigned int __pyx_t_5; + int __pyx_t_6; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("compute_force_stay_in_untraced_mode", 1); + /* Check if called by wrapper */ + if (unlikely(__pyx_skip_dispatch)) ; + /* Check if overridden in Python */ + else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) { + #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS + static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT; + if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) { + PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self)); + #endif + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_compute_force_stay_in_untraced_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 379, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!__Pyx_IsSameCFunction(__pyx_t_1, (void*) __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_3compute_force_stay_in_untraced_mode)) { + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_t_1); + __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_breakpoints}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 379, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + goto __pyx_L0; + } + #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS + __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self)); + __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self)); + if (unlikely(__pyx_typedict_guard != __pyx_tp_dict_version)) { + __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT; + } + #endif + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS + } + #endif + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":389 + * cdef set target_breakpoints + * + * force_stay_in_untraced_mode = False # <<<<<<<<<<<<<< + * + * target_breakpoints = self.code_lines_as_set.intersection(breakpoints) + */ + __pyx_v_force_stay_in_untraced_mode = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":391 + * force_stay_in_untraced_mode = False + * + * target_breakpoints = self.code_lines_as_set.intersection(breakpoints) # <<<<<<<<<<<<<< + * breakpoint_found = bool(target_breakpoints) + * + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->code_lines_as_set, __pyx_n_s_intersection); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 391, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_breakpoints}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 391, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + if (!(likely(PySet_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("set", __pyx_t_1))) __PYX_ERR(0, 391, __pyx_L1_error) + __pyx_v_target_breakpoints = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":392 + * + * target_breakpoints = self.code_lines_as_set.intersection(breakpoints) + * breakpoint_found = bool(target_breakpoints) # <<<<<<<<<<<<<< + * + * if not breakpoint_found: + */ + __pyx_t_6 = (__pyx_v_target_breakpoints != Py_None)&&(PySet_GET_SIZE(__pyx_v_target_breakpoints) != 0); + __pyx_v_breakpoint_found = (!(!__pyx_t_6)); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":394 + * breakpoint_found = bool(target_breakpoints) + * + * if not breakpoint_found: # <<<<<<<<<<<<<< + * force_stay_in_untraced_mode = True + * else: + */ + __pyx_t_6 = (!__pyx_v_breakpoint_found); + if (__pyx_t_6) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":395 + * + * if not breakpoint_found: + * force_stay_in_untraced_mode = True # <<<<<<<<<<<<<< + * else: + * force_stay_in_untraced_mode = self.breakpoints_hit_at_lines.issuperset(set(breakpoints)) + */ + __pyx_v_force_stay_in_untraced_mode = 1; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":394 + * breakpoint_found = bool(target_breakpoints) + * + * if not breakpoint_found: # <<<<<<<<<<<<<< + * force_stay_in_untraced_mode = True + * else: + */ + goto __pyx_L3; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":397 + * force_stay_in_untraced_mode = True + * else: + * force_stay_in_untraced_mode = self.breakpoints_hit_at_lines.issuperset(set(breakpoints)) # <<<<<<<<<<<<<< + * + * return breakpoint_found, force_stay_in_untraced_mode + */ + /*else*/ { + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->breakpoints_hit_at_lines, __pyx_n_s_issuperset); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 397, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PySet_New(__pyx_v_breakpoints); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 397, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 397, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 397, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_force_stay_in_untraced_mode = __pyx_t_6; + } + __pyx_L3:; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":399 + * force_stay_in_untraced_mode = self.breakpoints_hit_at_lines.issuperset(set(breakpoints)) + * + * return breakpoint_found, force_stay_in_untraced_mode # <<<<<<<<<<<<<< + * + * def generate_code_with_breakpoints_py(object code_obj_py, dict breakpoints): + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_breakpoint_found); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 399, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_force_stay_in_untraced_mode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 399, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 399, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1)) __PYX_ERR(0, 399, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2)) __PYX_ERR(0, 399, __pyx_L1_error); + __pyx_t_1 = 0; + __pyx_t_2 = 0; + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":379 + * self.code_lines_as_set = set(code_line_info.line_to_offset) + * + * cpdef compute_force_stay_in_untraced_mode(self, breakpoints): # <<<<<<<<<<<<<< + * ''' + * :param breakpoints: + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator._CacheValue.compute_force_stay_in_untraced_mode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_target_breakpoints); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_3compute_force_stay_in_untraced_mode(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_2compute_force_stay_in_untraced_mode, "\n :param breakpoints:\n set(breakpoint_lines) or dict(breakpoint_line->breakpoint info)\n :return tuple(breakpoint_found, force_stay_in_untraced_mode)\n "); +static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_3compute_force_stay_in_untraced_mode = {"compute_force_stay_in_untraced_mode", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_3compute_force_stay_in_untraced_mode, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_2compute_force_stay_in_untraced_mode}; +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_3compute_force_stay_in_untraced_mode(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_breakpoints = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("compute_force_stay_in_untraced_mode (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_breakpoints,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_breakpoints)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 379, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "compute_force_stay_in_untraced_mode") < 0)) __PYX_ERR(0, 379, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + } + __pyx_v_breakpoints = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("compute_force_stay_in_untraced_mode", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 379, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator._CacheValue.compute_force_stay_in_untraced_mode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_2compute_force_stay_in_untraced_mode(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)__pyx_v_self), __pyx_v_breakpoints); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_2compute_force_stay_in_untraced_mode(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self, PyObject *__pyx_v_breakpoints) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("compute_force_stay_in_untraced_mode", 1); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_compute_force_stay_in_untraced_mode(__pyx_v_self, __pyx_v_breakpoints, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 379, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator._CacheValue.compute_force_stay_in_untraced_mode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":363 + * cdef class _CacheValue(object): + * + * cdef public object code_obj_py # <<<<<<<<<<<<<< + * cdef public _CodeLineInfo code_line_info + * cdef public set breakpoints_hit_at_lines + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_11code_obj_py_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_11code_obj_py_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_11code_obj_py___get__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_11code_obj_py___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->code_obj_py); + __pyx_r = __pyx_v_self->code_obj_py; + goto __pyx_L0; + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_11code_obj_py_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_11code_obj_py_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_11code_obj_py_2__set__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_11code_obj_py_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__", 1); + __Pyx_INCREF(__pyx_v_value); + __Pyx_GIVEREF(__pyx_v_value); + __Pyx_GOTREF(__pyx_v_self->code_obj_py); + __Pyx_DECREF(__pyx_v_self->code_obj_py); + __pyx_v_self->code_obj_py = __pyx_v_value; + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_11code_obj_py_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_11code_obj_py_5__del__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_11code_obj_py_4__del__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_11code_obj_py_4__del__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 1); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->code_obj_py); + __Pyx_DECREF(__pyx_v_self->code_obj_py); + __pyx_v_self->code_obj_py = Py_None; + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":364 + * + * cdef public object code_obj_py + * cdef public _CodeLineInfo code_line_info # <<<<<<<<<<<<<< + * cdef public set breakpoints_hit_at_lines + * cdef public set code_lines_as_set + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_14code_line_info_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_14code_line_info_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_14code_line_info___get__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_14code_line_info___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_self->code_line_info); + __pyx_r = ((PyObject *)__pyx_v_self->code_line_info); + goto __pyx_L0; + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_14code_line_info_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_14code_line_info_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_14code_line_info_2__set__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_14code_line_info_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__set__", 1); + if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo))))) __PYX_ERR(0, 364, __pyx_L1_error) + __pyx_t_1 = __pyx_v_value; + __Pyx_INCREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF((PyObject *)__pyx_v_self->code_line_info); + __Pyx_DECREF((PyObject *)__pyx_v_self->code_line_info); + __pyx_v_self->code_line_info = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *)__pyx_t_1); + __pyx_t_1 = 0; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator._CacheValue.code_line_info.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_14code_line_info_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_14code_line_info_5__del__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_14code_line_info_4__del__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_14code_line_info_4__del__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 1); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF((PyObject *)__pyx_v_self->code_line_info); + __Pyx_DECREF((PyObject *)__pyx_v_self->code_line_info); + __pyx_v_self->code_line_info = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *)Py_None); + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":365 + * cdef public object code_obj_py + * cdef public _CodeLineInfo code_line_info + * cdef public set breakpoints_hit_at_lines # <<<<<<<<<<<<<< + * cdef public set code_lines_as_set + * + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_24breakpoints_hit_at_lines_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_24breakpoints_hit_at_lines_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_24breakpoints_hit_at_lines___get__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_24breakpoints_hit_at_lines___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->breakpoints_hit_at_lines); + __pyx_r = __pyx_v_self->breakpoints_hit_at_lines; + goto __pyx_L0; + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_24breakpoints_hit_at_lines_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_24breakpoints_hit_at_lines_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_24breakpoints_hit_at_lines_2__set__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_24breakpoints_hit_at_lines_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__set__", 1); + if (!(likely(PySet_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("set", __pyx_v_value))) __PYX_ERR(0, 365, __pyx_L1_error) + __pyx_t_1 = __pyx_v_value; + __Pyx_INCREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v_self->breakpoints_hit_at_lines); + __Pyx_DECREF(__pyx_v_self->breakpoints_hit_at_lines); + __pyx_v_self->breakpoints_hit_at_lines = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator._CacheValue.breakpoints_hit_at_lines.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_24breakpoints_hit_at_lines_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_24breakpoints_hit_at_lines_5__del__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_24breakpoints_hit_at_lines_4__del__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_24breakpoints_hit_at_lines_4__del__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 1); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->breakpoints_hit_at_lines); + __Pyx_DECREF(__pyx_v_self->breakpoints_hit_at_lines); + __pyx_v_self->breakpoints_hit_at_lines = ((PyObject*)Py_None); + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":366 + * cdef public _CodeLineInfo code_line_info + * cdef public set breakpoints_hit_at_lines + * cdef public set code_lines_as_set # <<<<<<<<<<<<<< + * + * def __init__(self, object code_obj_py, _CodeLineInfo code_line_info, set breakpoints_hit_at_lines): + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_17code_lines_as_set_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_17code_lines_as_set_1__get__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_17code_lines_as_set___get__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_17code_lines_as_set___get__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 1); + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->code_lines_as_set); + __pyx_r = __pyx_v_self->code_lines_as_set; + goto __pyx_L0; + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_17code_lines_as_set_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_17code_lines_as_set_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_17code_lines_as_set_2__set__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_17code_lines_as_set_2__set__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__set__", 1); + if (!(likely(PySet_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("set", __pyx_v_value))) __PYX_ERR(0, 366, __pyx_L1_error) + __pyx_t_1 = __pyx_v_value; + __Pyx_INCREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v_self->code_lines_as_set); + __Pyx_DECREF(__pyx_v_self->code_lines_as_set); + __pyx_v_self->code_lines_as_set = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator._CacheValue.code_lines_as_set.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_17code_lines_as_set_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_17code_lines_as_set_5__del__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_17code_lines_as_set_4__del__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_17code_lines_as_set_4__del__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 1); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->code_lines_as_set); + __Pyx_DECREF(__pyx_v_self->code_lines_as_set); + __pyx_v_self->code_lines_as_set = ((PyObject*)Py_None); + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_5__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_5__reduce_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { + __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} + if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_4__reduce_cython__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_4__reduce_cython__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self) { + PyObject *__pyx_v_state = 0; + PyObject *__pyx_v__dict = 0; + int __pyx_v_use_setstate; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__reduce_cython__", 1); + + /* "(tree fragment)":5 + * cdef object _dict + * cdef bint use_setstate + * state = (self.breakpoints_hit_at_lines, self.code_line_info, self.code_lines_as_set, self.code_obj_py) # <<<<<<<<<<<<<< + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: + */ + __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_v_self->breakpoints_hit_at_lines); + __Pyx_GIVEREF(__pyx_v_self->breakpoints_hit_at_lines); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->breakpoints_hit_at_lines)) __PYX_ERR(1, 5, __pyx_L1_error); + __Pyx_INCREF((PyObject *)__pyx_v_self->code_line_info); + __Pyx_GIVEREF((PyObject *)__pyx_v_self->code_line_info); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self->code_line_info))) __PYX_ERR(1, 5, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_self->code_lines_as_set); + __Pyx_GIVEREF(__pyx_v_self->code_lines_as_set); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_self->code_lines_as_set)) __PYX_ERR(1, 5, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_self->code_obj_py); + __Pyx_GIVEREF(__pyx_v_self->code_obj_py); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_v_self->code_obj_py)) __PYX_ERR(1, 5, __pyx_L1_error); + __pyx_v_state = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "(tree fragment)":6 + * cdef bint use_setstate + * state = (self.breakpoints_hit_at_lines, self.code_line_info, self.code_lines_as_set, self.code_obj_py) + * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< + * if _dict is not None: + * state += (_dict,) + */ + __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v__dict = __pyx_t_1; + __pyx_t_1 = 0; + + /* "(tree fragment)":7 + * state = (self.breakpoints_hit_at_lines, self.code_line_info, self.code_lines_as_set, self.code_obj_py) + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: # <<<<<<<<<<<<<< + * state += (_dict,) + * use_setstate = True + */ + __pyx_t_2 = (__pyx_v__dict != Py_None); + if (__pyx_t_2) { + + /* "(tree fragment)":8 + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: + * state += (_dict,) # <<<<<<<<<<<<<< + * use_setstate = True + * else: + */ + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_v__dict); + __Pyx_GIVEREF(__pyx_v__dict); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict)) __PYX_ERR(1, 8, __pyx_L1_error); + __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_3)); + __pyx_t_3 = 0; + + /* "(tree fragment)":9 + * if _dict is not None: + * state += (_dict,) + * use_setstate = True # <<<<<<<<<<<<<< + * else: + * use_setstate = self.breakpoints_hit_at_lines is not None or self.code_line_info is not None or self.code_lines_as_set is not None or self.code_obj_py is not None + */ + __pyx_v_use_setstate = 1; + + /* "(tree fragment)":7 + * state = (self.breakpoints_hit_at_lines, self.code_line_info, self.code_lines_as_set, self.code_obj_py) + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: # <<<<<<<<<<<<<< + * state += (_dict,) + * use_setstate = True + */ + goto __pyx_L3; + } + + /* "(tree fragment)":11 + * use_setstate = True + * else: + * use_setstate = self.breakpoints_hit_at_lines is not None or self.code_line_info is not None or self.code_lines_as_set is not None or self.code_obj_py is not None # <<<<<<<<<<<<<< + * if use_setstate: + * return __pyx_unpickle__CacheValue, (type(self), 0xac42a46, None), state + */ + /*else*/ { + __pyx_t_4 = (__pyx_v_self->breakpoints_hit_at_lines != ((PyObject*)Py_None)); + if (!__pyx_t_4) { + } else { + __pyx_t_2 = __pyx_t_4; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_4 = (((PyObject *)__pyx_v_self->code_line_info) != Py_None); + if (!__pyx_t_4) { + } else { + __pyx_t_2 = __pyx_t_4; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_4 = (__pyx_v_self->code_lines_as_set != ((PyObject*)Py_None)); + if (!__pyx_t_4) { + } else { + __pyx_t_2 = __pyx_t_4; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_4 = (__pyx_v_self->code_obj_py != Py_None); + __pyx_t_2 = __pyx_t_4; + __pyx_L4_bool_binop_done:; + __pyx_v_use_setstate = __pyx_t_2; + } + __pyx_L3:; + + /* "(tree fragment)":12 + * else: + * use_setstate = self.breakpoints_hit_at_lines is not None or self.code_line_info is not None or self.code_lines_as_set is not None or self.code_obj_py is not None + * if use_setstate: # <<<<<<<<<<<<<< + * return __pyx_unpickle__CacheValue, (type(self), 0xac42a46, None), state + * else: + */ + if (__pyx_v_use_setstate) { + + /* "(tree fragment)":13 + * use_setstate = self.breakpoints_hit_at_lines is not None or self.code_line_info is not None or self.code_lines_as_set is not None or self.code_obj_py is not None + * if use_setstate: + * return __pyx_unpickle__CacheValue, (type(self), 0xac42a46, None), state # <<<<<<<<<<<<<< + * else: + * return __pyx_unpickle__CacheValue, (type(self), 0xac42a46, state) + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyx_unpickle__CacheValue); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_int_180628038); + __Pyx_GIVEREF(__pyx_int_180628038); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_180628038)) __PYX_ERR(1, 13, __pyx_L1_error); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None)) __PYX_ERR(1, 13, __pyx_L1_error); + __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_3); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_state); + __Pyx_GIVEREF(__pyx_v_state); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state)) __PYX_ERR(1, 13, __pyx_L1_error); + __pyx_t_3 = 0; + __pyx_t_1 = 0; + __pyx_r = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L0; + + /* "(tree fragment)":12 + * else: + * use_setstate = self.breakpoints_hit_at_lines is not None or self.code_line_info is not None or self.code_lines_as_set is not None or self.code_obj_py is not None + * if use_setstate: # <<<<<<<<<<<<<< + * return __pyx_unpickle__CacheValue, (type(self), 0xac42a46, None), state + * else: + */ + } + + /* "(tree fragment)":15 + * return __pyx_unpickle__CacheValue, (type(self), 0xac42a46, None), state + * else: + * return __pyx_unpickle__CacheValue, (type(self), 0xac42a46, state) # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * __pyx_unpickle__CacheValue__set_state(self, __pyx_state) + */ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle__CacheValue); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 15, __pyx_L1_error); + __Pyx_INCREF(__pyx_int_180628038); + __Pyx_GIVEREF(__pyx_int_180628038); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_180628038)) __PYX_ERR(1, 15, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_state); + __Pyx_GIVEREF(__pyx_v_state); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state)) __PYX_ERR(1, 15, __pyx_L1_error); + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_5); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error); + __pyx_t_5 = 0; + __pyx_t_1 = 0; + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + } + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator._CacheValue.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_state); + __Pyx_XDECREF(__pyx_v__dict); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":16 + * else: + * return __pyx_unpickle__CacheValue, (type(self), 0xac42a46, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle__CacheValue__set_state(self, __pyx_state) + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_7__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_7__setstate_cython__(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 16, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(1, 16, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + } + __pyx_v___pyx_state = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 16, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator._CacheValue.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_6__setstate_cython__(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)__pyx_v_self), __pyx_v___pyx_state); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_6__setstate_cython__(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_self, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__setstate_cython__", 1); + + /* "(tree fragment)":17 + * return __pyx_unpickle__CacheValue, (type(self), 0xac42a46, state) + * def __setstate_cython__(self, __pyx_state): + * __pyx_unpickle__CacheValue__set_state(self, __pyx_state) # <<<<<<<<<<<<<< + */ + if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(1, 17, __pyx_L1_error) + __pyx_t_1 = __pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unpickle__CacheValue__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle__CacheValue, (type(self), 0xac42a46, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle__CacheValue__set_state(self, __pyx_state) + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator._CacheValue.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":401 + * return breakpoint_found, force_stay_in_untraced_mode + * + * def generate_code_with_breakpoints_py(object code_obj_py, dict breakpoints): # <<<<<<<<<<<<<< + * return generate_code_with_breakpoints(code_obj_py, breakpoints) + * + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_15generate_code_with_breakpoints_py(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_15generate_code_with_breakpoints_py = {"generate_code_with_breakpoints_py", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_15generate_code_with_breakpoints_py, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_15generate_code_with_breakpoints_py(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_code_obj_py = 0; + PyObject *__pyx_v_breakpoints = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[2] = {0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("generate_code_with_breakpoints_py (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_code_obj_py,&__pyx_n_s_breakpoints,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_code_obj_py)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 401, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_breakpoints)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 401, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("generate_code_with_breakpoints_py", 1, 2, 2, 1); __PYX_ERR(0, 401, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "generate_code_with_breakpoints_py") < 0)) __PYX_ERR(0, 401, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 2)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + } + __pyx_v_code_obj_py = values[0]; + __pyx_v_breakpoints = ((PyObject*)values[1]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("generate_code_with_breakpoints_py", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 401, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.generate_code_with_breakpoints_py", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_breakpoints), (&PyDict_Type), 1, "breakpoints", 1))) __PYX_ERR(0, 401, __pyx_L1_error) + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_14generate_code_with_breakpoints_py(__pyx_self, __pyx_v_code_obj_py, __pyx_v_breakpoints); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + __pyx_L0:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_14generate_code_with_breakpoints_py(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_code_obj_py, PyObject *__pyx_v_breakpoints) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("generate_code_with_breakpoints_py", 1); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":402 + * + * def generate_code_with_breakpoints_py(object code_obj_py, dict breakpoints): + * return generate_code_with_breakpoints(code_obj_py, breakpoints) # <<<<<<<<<<<<<< + * + * # DEBUG = True + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_generate_code_with_breakpoints(__pyx_v_code_obj_py, __pyx_v_breakpoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 402, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":401 + * return breakpoint_found, force_stay_in_untraced_mode + * + * def generate_code_with_breakpoints_py(object code_obj_py, dict breakpoints): # <<<<<<<<<<<<<< + * return generate_code_with_breakpoints(code_obj_py, breakpoints) + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.generate_code_with_breakpoints_py", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":407 + * # debug_helper = DebugHelper() + * + * cdef generate_code_with_breakpoints(object code_obj_py, dict breakpoints): # <<<<<<<<<<<<<< + * ''' + * :param breakpoints: + */ + +static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_generate_code_with_breakpoints(PyObject *__pyx_v_code_obj_py, PyObject *__pyx_v_breakpoints) { + int __pyx_v_success; + int __pyx_v_breakpoint_line; + int __pyx_v_breakpoint_found; + struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v_cache_value = 0; + PyObject *__pyx_v_breakpoints_hit_at_lines = 0; + PyObject *__pyx_v_line_to_offset = 0; + PyObject *__pyx_v_code_line_info = NULL; + PyObject *__pyx_v_new_code = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + unsigned int __pyx_t_5; + Py_ssize_t __pyx_t_6; + Py_ssize_t __pyx_t_7; + int __pyx_t_8; + int __pyx_t_9; + int __pyx_t_10; + PyObject *__pyx_t_11 = NULL; + PyObject *(*__pyx_t_12)(PyObject *); + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("generate_code_with_breakpoints", 0); + __Pyx_INCREF(__pyx_v_code_obj_py); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":424 + * cdef dict line_to_offset + * + * assert code_obj_py not in _cache, 'If a code object is cached, that same code object must be reused.' # <<<<<<<<<<<<<< + * + * # if DEBUG: + */ + #ifndef CYTHON_WITHOUT_ASSERTIONS + if (unlikely(__pyx_assertions_enabled())) { + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_cache); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 424, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_code_obj_py, __pyx_t_1, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 424, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_2)) { + __Pyx_Raise(__pyx_builtin_AssertionError, __pyx_kp_s_If_a_code_object_is_cached_that, 0, 0); + __PYX_ERR(0, 424, __pyx_L1_error) + } + } + #else + if ((1)); else __PYX_ERR(0, 424, __pyx_L1_error) + #endif + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":429 + * # initial_code_obj_py = code_obj_py + * + * code_line_info = _get_code_line_info(code_obj_py) # <<<<<<<<<<<<<< + * + * success = True + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_get_code_line_info); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 429, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_code_obj_py}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 429, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_v_code_line_info = __pyx_t_1; + __pyx_t_1 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":431 + * code_line_info = _get_code_line_info(code_obj_py) + * + * success = True # <<<<<<<<<<<<<< + * + * breakpoints_hit_at_lines = set() + */ + __pyx_v_success = 1; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":433 + * success = True + * + * breakpoints_hit_at_lines = set() # <<<<<<<<<<<<<< + * line_to_offset = code_line_info.line_to_offset + * + */ + __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 433, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_breakpoints_hit_at_lines = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":434 + * + * breakpoints_hit_at_lines = set() + * line_to_offset = code_line_info.line_to_offset # <<<<<<<<<<<<<< + * + * for breakpoint_line in breakpoints: + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_code_line_info, __pyx_n_s_line_to_offset); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 434, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_1))) __PYX_ERR(0, 434, __pyx_L1_error) + __pyx_v_line_to_offset = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":436 + * line_to_offset = code_line_info.line_to_offset + * + * for breakpoint_line in breakpoints: # <<<<<<<<<<<<<< + * if breakpoint_line in line_to_offset: + * breakpoints_hit_at_lines.add(breakpoint_line) + */ + __pyx_t_6 = 0; + if (unlikely(__pyx_v_breakpoints == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); + __PYX_ERR(0, 436, __pyx_L1_error) + } + __pyx_t_3 = __Pyx_dict_iterator(__pyx_v_breakpoints, 1, ((PyObject *)NULL), (&__pyx_t_7), (&__pyx_t_8)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 436, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_1); + __pyx_t_1 = __pyx_t_3; + __pyx_t_3 = 0; + while (1) { + __pyx_t_9 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_7, &__pyx_t_6, &__pyx_t_3, NULL, NULL, __pyx_t_8); + if (unlikely(__pyx_t_9 == 0)) break; + if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 436, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 436, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_breakpoint_line = __pyx_t_9; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":437 + * + * for breakpoint_line in breakpoints: + * if breakpoint_line in line_to_offset: # <<<<<<<<<<<<<< + * breakpoints_hit_at_lines.add(breakpoint_line) + * + */ + __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_breakpoint_line); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 437, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (unlikely(__pyx_v_line_to_offset == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); + __PYX_ERR(0, 437, __pyx_L1_error) + } + __pyx_t_2 = (__Pyx_PyDict_ContainsTF(__pyx_t_3, __pyx_v_line_to_offset, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 437, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_2) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":438 + * for breakpoint_line in breakpoints: + * if breakpoint_line in line_to_offset: + * breakpoints_hit_at_lines.add(breakpoint_line) # <<<<<<<<<<<<<< + * + * if breakpoints_hit_at_lines: + */ + __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_breakpoint_line); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 438, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_10 = PySet_Add(__pyx_v_breakpoints_hit_at_lines, __pyx_t_3); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 438, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":437 + * + * for breakpoint_line in breakpoints: + * if breakpoint_line in line_to_offset: # <<<<<<<<<<<<<< + * breakpoints_hit_at_lines.add(breakpoint_line) + * + */ + } + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":440 + * breakpoints_hit_at_lines.add(breakpoint_line) + * + * if breakpoints_hit_at_lines: # <<<<<<<<<<<<<< + * success, new_code = insert_pydevd_breaks( + * code_obj_py, + */ + __pyx_t_2 = (PySet_GET_SIZE(__pyx_v_breakpoints_hit_at_lines) != 0); + if (__pyx_t_2) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":441 + * + * if breakpoints_hit_at_lines: + * success, new_code = insert_pydevd_breaks( # <<<<<<<<<<<<<< + * code_obj_py, + * breakpoints_hit_at_lines, + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_insert_pydevd_breaks); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 441, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":444 + * code_obj_py, + * breakpoints_hit_at_lines, + * code_line_info # <<<<<<<<<<<<<< + * ) + * + */ + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[4] = {__pyx_t_4, __pyx_v_code_obj_py, __pyx_v_breakpoints_hit_at_lines, __pyx_v_code_line_info}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 441, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { + PyObject* sequence = __pyx_t_1; + Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); + if (unlikely(size != 2)) { + if (size > 2) __Pyx_RaiseTooManyValuesError(2); + else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); + __PYX_ERR(0, 441, __pyx_L1_error) + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + if (likely(PyTuple_CheckExact(sequence))) { + __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); + __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); + } else { + __pyx_t_3 = PyList_GET_ITEM(sequence, 0); + __pyx_t_4 = PyList_GET_ITEM(sequence, 1); + } + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + #else + __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 441, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 441, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #endif + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } else { + Py_ssize_t index = -1; + __pyx_t_11 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 441, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_12 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_11); + index = 0; __pyx_t_3 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_3)) goto __pyx_L7_unpacking_failed; + __Pyx_GOTREF(__pyx_t_3); + index = 1; __pyx_t_4 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_4)) goto __pyx_L7_unpacking_failed; + __Pyx_GOTREF(__pyx_t_4); + if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_11), 2) < 0) __PYX_ERR(0, 441, __pyx_L1_error) + __pyx_t_12 = NULL; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + goto __pyx_L8_unpacking_done; + __pyx_L7_unpacking_failed:; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_12 = NULL; + if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); + __PYX_ERR(0, 441, __pyx_L1_error) + __pyx_L8_unpacking_done:; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":441 + * + * if breakpoints_hit_at_lines: + * success, new_code = insert_pydevd_breaks( # <<<<<<<<<<<<<< + * code_obj_py, + * breakpoints_hit_at_lines, + */ + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 441, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_success = __pyx_t_2; + __pyx_v_new_code = __pyx_t_4; + __pyx_t_4 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":447 + * ) + * + * if not success: # <<<<<<<<<<<<<< + * code_obj_py = None + * else: + */ + __pyx_t_2 = (!__pyx_v_success); + if (__pyx_t_2) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":448 + * + * if not success: + * code_obj_py = None # <<<<<<<<<<<<<< + * else: + * code_obj_py = new_code + */ + __Pyx_INCREF(Py_None); + __Pyx_DECREF_SET(__pyx_v_code_obj_py, Py_None); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":447 + * ) + * + * if not success: # <<<<<<<<<<<<<< + * code_obj_py = None + * else: + */ + goto __pyx_L9; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":450 + * code_obj_py = None + * else: + * code_obj_py = new_code # <<<<<<<<<<<<<< + * + * breakpoint_found = bool(breakpoints_hit_at_lines) + */ + /*else*/ { + __Pyx_INCREF(__pyx_v_new_code); + __Pyx_DECREF_SET(__pyx_v_code_obj_py, __pyx_v_new_code); + } + __pyx_L9:; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":440 + * breakpoints_hit_at_lines.add(breakpoint_line) + * + * if breakpoints_hit_at_lines: # <<<<<<<<<<<<<< + * success, new_code = insert_pydevd_breaks( + * code_obj_py, + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":452 + * code_obj_py = new_code + * + * breakpoint_found = bool(breakpoints_hit_at_lines) # <<<<<<<<<<<<<< + * if breakpoint_found and success: + * # if DEBUG: + */ + __pyx_t_2 = (PySet_GET_SIZE(__pyx_v_breakpoints_hit_at_lines) != 0); + __pyx_v_breakpoint_found = (!(!__pyx_t_2)); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":453 + * + * breakpoint_found = bool(breakpoints_hit_at_lines) + * if breakpoint_found and success: # <<<<<<<<<<<<<< + * # if DEBUG: + * # op_number = debug_helper.write_dis( + */ + if (__pyx_v_breakpoint_found) { + } else { + __pyx_t_2 = __pyx_v_breakpoint_found; + goto __pyx_L11_bool_binop_done; + } + __pyx_t_2 = __pyx_v_success; + __pyx_L11_bool_binop_done:; + if (__pyx_t_2) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":466 + * # ) + * + * cache_value = _CacheValue(code_obj_py, code_line_info, breakpoints_hit_at_lines) # <<<<<<<<<<<<<< + * _cache[code_obj_py] = cache_value + * + */ + __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 466, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_v_code_obj_py); + __Pyx_GIVEREF(__pyx_v_code_obj_py); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_code_obj_py)) __PYX_ERR(0, 466, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_code_line_info); + __Pyx_GIVEREF(__pyx_v_code_line_info); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_code_line_info)) __PYX_ERR(0, 466, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_breakpoints_hit_at_lines); + __Pyx_GIVEREF(__pyx_v_breakpoints_hit_at_lines); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_breakpoints_hit_at_lines)) __PYX_ERR(0, 466, __pyx_L1_error); + __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue), __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 466, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_cache_value = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)__pyx_t_4); + __pyx_t_4 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":467 + * + * cache_value = _CacheValue(code_obj_py, code_line_info, breakpoints_hit_at_lines) + * _cache[code_obj_py] = cache_value # <<<<<<<<<<<<<< + * + * return breakpoint_found, code_obj_py + */ + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_cache); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 467, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (unlikely((PyObject_SetItem(__pyx_t_4, __pyx_v_code_obj_py, ((PyObject *)__pyx_v_cache_value)) < 0))) __PYX_ERR(0, 467, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":453 + * + * breakpoint_found = bool(breakpoints_hit_at_lines) + * if breakpoint_found and success: # <<<<<<<<<<<<<< + * # if DEBUG: + * # op_number = debug_helper.write_dis( + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":469 + * _cache[code_obj_py] = cache_value + * + * return breakpoint_found, code_obj_py # <<<<<<<<<<<<<< + * + * import sys + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_breakpoint_found); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 469, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 469, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_4); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4)) __PYX_ERR(0, 469, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_code_obj_py); + __Pyx_GIVEREF(__pyx_v_code_obj_py); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_code_obj_py)) __PYX_ERR(0, 469, __pyx_L1_error); + __pyx_t_4 = 0; + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":407 + * # debug_helper = DebugHelper() + * + * cdef generate_code_with_breakpoints(object code_obj_py, dict breakpoints): # <<<<<<<<<<<<<< + * ''' + * :param breakpoints: + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_11); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.generate_code_with_breakpoints", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_cache_value); + __Pyx_XDECREF(__pyx_v_breakpoints_hit_at_lines); + __Pyx_XDECREF(__pyx_v_line_to_offset); + __Pyx_XDECREF(__pyx_v_code_line_info); + __Pyx_XDECREF(__pyx_v_new_code); + __Pyx_XDECREF(__pyx_v_code_obj_py); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":475 + * cdef bint IS_PY_39_OWNARDS = sys.version_info[:2] >= (3, 9) + * + * def frame_eval_func(): # <<<<<<<<<<<<<< + * cdef PyThreadState *state = PyThreadState_Get() + * if IS_PY_39_OWNARDS: + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_17frame_eval_func(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_17frame_eval_func = {"frame_eval_func", (PyCFunction)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_17frame_eval_func, METH_NOARGS, 0}; +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_17frame_eval_func(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("frame_eval_func (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_16frame_eval_func(__pyx_self); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_16frame_eval_func(CYTHON_UNUSED PyObject *__pyx_self) { + PyThreadState *__pyx_v_state; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + unsigned int __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("frame_eval_func", 1); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":476 + * + * def frame_eval_func(): + * cdef PyThreadState *state = PyThreadState_Get() # <<<<<<<<<<<<<< + * if IS_PY_39_OWNARDS: + * state.interp.eval_frame = <_PyFrameEvalFunction *> get_bytecode_while_frame_eval_39 + */ + __pyx_v_state = PyThreadState_Get(); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":477 + * def frame_eval_func(): + * cdef PyThreadState *state = PyThreadState_Get() + * if IS_PY_39_OWNARDS: # <<<<<<<<<<<<<< + * state.interp.eval_frame = <_PyFrameEvalFunction *> get_bytecode_while_frame_eval_39 + * else: + */ + if (__pyx_v_18_pydevd_frame_eval_22pydevd_frame_evaluator_IS_PY_39_OWNARDS) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":478 + * cdef PyThreadState *state = PyThreadState_Get() + * if IS_PY_39_OWNARDS: + * state.interp.eval_frame = <_PyFrameEvalFunction *> get_bytecode_while_frame_eval_39 # <<<<<<<<<<<<<< + * else: + * state.interp.eval_frame = <_PyFrameEvalFunction *> get_bytecode_while_frame_eval_38 + */ + __pyx_v_state->interp->eval_frame = ((_PyFrameEvalFunction *)__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytecode_while_frame_eval_39); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":477 + * def frame_eval_func(): + * cdef PyThreadState *state = PyThreadState_Get() + * if IS_PY_39_OWNARDS: # <<<<<<<<<<<<<< + * state.interp.eval_frame = <_PyFrameEvalFunction *> get_bytecode_while_frame_eval_39 + * else: + */ + goto __pyx_L3; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":480 + * state.interp.eval_frame = <_PyFrameEvalFunction *> get_bytecode_while_frame_eval_39 + * else: + * state.interp.eval_frame = <_PyFrameEvalFunction *> get_bytecode_while_frame_eval_38 # <<<<<<<<<<<<<< + * dummy_tracing_holder.set_trace_func(dummy_trace_dispatch) + * + */ + /*else*/ { + __pyx_v_state->interp->eval_frame = ((_PyFrameEvalFunction *)__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytecode_while_frame_eval_38); + } + __pyx_L3:; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":481 + * else: + * state.interp.eval_frame = <_PyFrameEvalFunction *> get_bytecode_while_frame_eval_38 + * dummy_tracing_holder.set_trace_func(dummy_trace_dispatch) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_dummy_tracing_holder); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 481, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_set_trace_func); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 481, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_dummy_trace_dispatch); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 481, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_2}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 481, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":475 + * cdef bint IS_PY_39_OWNARDS = sys.version_info[:2] >= (3, 9) + * + * def frame_eval_func(): # <<<<<<<<<<<<<< + * cdef PyThreadState *state = PyThreadState_Get() + * if IS_PY_39_OWNARDS: + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.frame_eval_func", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":484 + * + * + * def stop_frame_eval(): # <<<<<<<<<<<<<< + * cdef PyThreadState *state = PyThreadState_Get() + * state.interp.eval_frame = _PyEval_EvalFrameDefault + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_19stop_frame_eval(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_19stop_frame_eval = {"stop_frame_eval", (PyCFunction)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_19stop_frame_eval, METH_NOARGS, 0}; +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_19stop_frame_eval(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("stop_frame_eval (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_18stop_frame_eval(__pyx_self); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_18stop_frame_eval(CYTHON_UNUSED PyObject *__pyx_self) { + PyThreadState *__pyx_v_state; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("stop_frame_eval", 1); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":485 + * + * def stop_frame_eval(): + * cdef PyThreadState *state = PyThreadState_Get() # <<<<<<<<<<<<<< + * state.interp.eval_frame = _PyEval_EvalFrameDefault + * + */ + __pyx_v_state = PyThreadState_Get(); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":486 + * def stop_frame_eval(): + * cdef PyThreadState *state = PyThreadState_Get() + * state.interp.eval_frame = _PyEval_EvalFrameDefault # <<<<<<<<<<<<<< + * + * # During the build we'll generate 2 versions of the code below so that we're compatible with + */ + __pyx_v_state->interp->eval_frame = _PyEval_EvalFrameDefault; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":484 + * + * + * def stop_frame_eval(): # <<<<<<<<<<<<<< + * cdef PyThreadState *state = PyThreadState_Get() + * state.interp.eval_frame = _PyEval_EvalFrameDefault + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":494 + * ### WARNING: GENERATED CODE, DO NOT EDIT! + * ### WARNING: GENERATED CODE, DO NOT EDIT! + * cdef PyObject * get_bytecode_while_frame_eval_38(PyFrameObject * frame_obj, int exc): # <<<<<<<<<<<<<< + * ''' + * This function makes the actual evaluation and changes the bytecode to a version + */ + +static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytecode_while_frame_eval_38(PyFrameObject *__pyx_v_frame_obj, int __pyx_v_exc) { + struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_thread_info = 0; + CYTHON_UNUSED int __pyx_v_STATE_SUSPEND; + int __pyx_v_CMD_STEP_INTO; + int __pyx_v_CMD_STEP_OVER; + int __pyx_v_CMD_STEP_OVER_MY_CODE; + int __pyx_v_CMD_STEP_INTO_MY_CODE; + int __pyx_v_CMD_STEP_INTO_COROUTINE; + int __pyx_v_CMD_SMART_STEP_INTO; + int __pyx_v_can_skip; + struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_additional_info = 0; + PyObject *__pyx_v_main_debugger = 0; + PyObject *__pyx_v_frame = NULL; + PyObject *__pyx_v_trace_func = NULL; + PyObject *__pyx_v_apply_to_global = NULL; + struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_func_code_info = 0; + PyObject *__pyx_v_old = NULL; + PyObject *__pyx_r; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + unsigned int __pyx_t_10; + PyObject *(*__pyx_t_11)(PyObject *); + int __pyx_t_12; + int __pyx_t_13; + int __pyx_t_14; + char const *__pyx_t_15; + PyObject *__pyx_t_16 = NULL; + PyObject *__pyx_t_17 = NULL; + PyObject *__pyx_t_18 = NULL; + PyObject *__pyx_t_19; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get_bytecode_while_frame_eval_38", 1); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":499 + * where programmatic breakpoints are added. + * ''' + * if GlobalDebuggerHolder is None or _thread_local_info is None or exc: # <<<<<<<<<<<<<< + * # Sometimes during process shutdown these global variables become None + * return CALL_EvalFrameDefault_38(frame_obj, exc) + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_GlobalDebuggerHolder); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 499, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = (__pyx_t_2 == Py_None); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (!__pyx_t_3) { + } else { + __pyx_t_1 = __pyx_t_3; + goto __pyx_L4_bool_binop_done; + } + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_thread_local_info); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 499, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = (__pyx_t_2 == Py_None); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (!__pyx_t_3) { + } else { + __pyx_t_1 = __pyx_t_3; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_3 = (__pyx_v_exc != 0); + __pyx_t_1 = __pyx_t_3; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":501 + * if GlobalDebuggerHolder is None or _thread_local_info is None or exc: + * # Sometimes during process shutdown these global variables become None + * return CALL_EvalFrameDefault_38(frame_obj, exc) # <<<<<<<<<<<<<< + * + * # co_filename: str = frame_obj.f_code.co_filename + */ + __pyx_r = CALL_EvalFrameDefault_38(__pyx_v_frame_obj, __pyx_v_exc); + goto __pyx_L0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":499 + * where programmatic breakpoints are added. + * ''' + * if GlobalDebuggerHolder is None or _thread_local_info is None or exc: # <<<<<<<<<<<<<< + * # Sometimes during process shutdown these global variables become None + * return CALL_EvalFrameDefault_38(frame_obj, exc) + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":508 + * + * cdef ThreadInfo thread_info + * cdef int STATE_SUSPEND = 2 # <<<<<<<<<<<<<< + * cdef int CMD_STEP_INTO = 107 + * cdef int CMD_STEP_OVER = 108 + */ + __pyx_v_STATE_SUSPEND = 2; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":509 + * cdef ThreadInfo thread_info + * cdef int STATE_SUSPEND = 2 + * cdef int CMD_STEP_INTO = 107 # <<<<<<<<<<<<<< + * cdef int CMD_STEP_OVER = 108 + * cdef int CMD_STEP_OVER_MY_CODE = 159 + */ + __pyx_v_CMD_STEP_INTO = 0x6B; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":510 + * cdef int STATE_SUSPEND = 2 + * cdef int CMD_STEP_INTO = 107 + * cdef int CMD_STEP_OVER = 108 # <<<<<<<<<<<<<< + * cdef int CMD_STEP_OVER_MY_CODE = 159 + * cdef int CMD_STEP_INTO_MY_CODE = 144 + */ + __pyx_v_CMD_STEP_OVER = 0x6C; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":511 + * cdef int CMD_STEP_INTO = 107 + * cdef int CMD_STEP_OVER = 108 + * cdef int CMD_STEP_OVER_MY_CODE = 159 # <<<<<<<<<<<<<< + * cdef int CMD_STEP_INTO_MY_CODE = 144 + * cdef int CMD_STEP_INTO_COROUTINE = 206 + */ + __pyx_v_CMD_STEP_OVER_MY_CODE = 0x9F; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":512 + * cdef int CMD_STEP_OVER = 108 + * cdef int CMD_STEP_OVER_MY_CODE = 159 + * cdef int CMD_STEP_INTO_MY_CODE = 144 # <<<<<<<<<<<<<< + * cdef int CMD_STEP_INTO_COROUTINE = 206 + * cdef int CMD_SMART_STEP_INTO = 128 + */ + __pyx_v_CMD_STEP_INTO_MY_CODE = 0x90; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":513 + * cdef int CMD_STEP_OVER_MY_CODE = 159 + * cdef int CMD_STEP_INTO_MY_CODE = 144 + * cdef int CMD_STEP_INTO_COROUTINE = 206 # <<<<<<<<<<<<<< + * cdef int CMD_SMART_STEP_INTO = 128 + * cdef bint can_skip = True + */ + __pyx_v_CMD_STEP_INTO_COROUTINE = 0xCE; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":514 + * cdef int CMD_STEP_INTO_MY_CODE = 144 + * cdef int CMD_STEP_INTO_COROUTINE = 206 + * cdef int CMD_SMART_STEP_INTO = 128 # <<<<<<<<<<<<<< + * cdef bint can_skip = True + * try: + */ + __pyx_v_CMD_SMART_STEP_INTO = 0x80; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":515 + * cdef int CMD_STEP_INTO_COROUTINE = 206 + * cdef int CMD_SMART_STEP_INTO = 128 + * cdef bint can_skip = True # <<<<<<<<<<<<<< + * try: + * thread_info = _thread_local_info.thread_info + */ + __pyx_v_can_skip = 1; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":516 + * cdef int CMD_SMART_STEP_INTO = 128 + * cdef bint can_skip = True + * try: # <<<<<<<<<<<<<< + * thread_info = _thread_local_info.thread_info + * except: + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6); + __Pyx_XGOTREF(__pyx_t_4); + __Pyx_XGOTREF(__pyx_t_5); + __Pyx_XGOTREF(__pyx_t_6); + /*try:*/ { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":517 + * cdef bint can_skip = True + * try: + * thread_info = _thread_local_info.thread_info # <<<<<<<<<<<<<< + * except: + * thread_info = get_thread_info(frame_obj) + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_thread_local_info); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 517, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_thread_info); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 517, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo))))) __PYX_ERR(0, 517, __pyx_L7_error) + __pyx_v_thread_info = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_t_7); + __pyx_t_7 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":516 + * cdef int CMD_SMART_STEP_INTO = 128 + * cdef bint can_skip = True + * try: # <<<<<<<<<<<<<< + * thread_info = _thread_local_info.thread_info + * except: + */ + } + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + goto __pyx_L12_try_end; + __pyx_L7_error:; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":518 + * try: + * thread_info = _thread_local_info.thread_info + * except: # <<<<<<<<<<<<<< + * thread_info = get_thread_info(frame_obj) + * if thread_info is None: + */ + /*except:*/ { + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.get_bytecode_while_frame_eval_38", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_2, &__pyx_t_8) < 0) __PYX_ERR(0, 518, __pyx_L9_except_error) + __Pyx_XGOTREF(__pyx_t_7); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_8); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":519 + * thread_info = _thread_local_info.thread_info + * except: + * thread_info = get_thread_info(frame_obj) # <<<<<<<<<<<<<< + * if thread_info is None: + * return CALL_EvalFrameDefault_38(frame_obj, exc) + */ + __pyx_t_9 = ((PyObject *)__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_thread_info(__pyx_v_frame_obj)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 519, __pyx_L9_except_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_XDECREF_SET(__pyx_v_thread_info, ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_t_9)); + __pyx_t_9 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":520 + * except: + * thread_info = get_thread_info(frame_obj) + * if thread_info is None: # <<<<<<<<<<<<<< + * return CALL_EvalFrameDefault_38(frame_obj, exc) + * + */ + __pyx_t_1 = (((PyObject *)__pyx_v_thread_info) == Py_None); + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":521 + * thread_info = get_thread_info(frame_obj) + * if thread_info is None: + * return CALL_EvalFrameDefault_38(frame_obj, exc) # <<<<<<<<<<<<<< + * + * if thread_info.inside_frame_eval: + */ + __pyx_r = CALL_EvalFrameDefault_38(__pyx_v_frame_obj, __pyx_v_exc); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + goto __pyx_L10_except_return; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":520 + * except: + * thread_info = get_thread_info(frame_obj) + * if thread_info is None: # <<<<<<<<<<<<<< + * return CALL_EvalFrameDefault_38(frame_obj, exc) + * + */ + } + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + goto __pyx_L8_exception_handled; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":516 + * cdef int CMD_SMART_STEP_INTO = 128 + * cdef bint can_skip = True + * try: # <<<<<<<<<<<<<< + * thread_info = _thread_local_info.thread_info + * except: + */ + __pyx_L9_except_error:; + __Pyx_XGIVEREF(__pyx_t_4); + __Pyx_XGIVEREF(__pyx_t_5); + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6); + goto __pyx_L1_error; + __pyx_L10_except_return:; + __Pyx_XGIVEREF(__pyx_t_4); + __Pyx_XGIVEREF(__pyx_t_5); + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6); + goto __pyx_L0; + __pyx_L8_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_4); + __Pyx_XGIVEREF(__pyx_t_5); + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6); + __pyx_L12_try_end:; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":523 + * return CALL_EvalFrameDefault_38(frame_obj, exc) + * + * if thread_info.inside_frame_eval: # <<<<<<<<<<<<<< + * return CALL_EvalFrameDefault_38(frame_obj, exc) + * + */ + __pyx_t_1 = (__pyx_v_thread_info->inside_frame_eval != 0); + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":524 + * + * if thread_info.inside_frame_eval: + * return CALL_EvalFrameDefault_38(frame_obj, exc) # <<<<<<<<<<<<<< + * + * if not thread_info.fully_initialized: + */ + __pyx_r = CALL_EvalFrameDefault_38(__pyx_v_frame_obj, __pyx_v_exc); + goto __pyx_L0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":523 + * return CALL_EvalFrameDefault_38(frame_obj, exc) + * + * if thread_info.inside_frame_eval: # <<<<<<<<<<<<<< + * return CALL_EvalFrameDefault_38(frame_obj, exc) + * + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":526 + * return CALL_EvalFrameDefault_38(frame_obj, exc) + * + * if not thread_info.fully_initialized: # <<<<<<<<<<<<<< + * thread_info.initialize_if_possible() + * if not thread_info.fully_initialized: + */ + __pyx_t_1 = (!__pyx_v_thread_info->fully_initialized); + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":527 + * + * if not thread_info.fully_initialized: + * thread_info.initialize_if_possible() # <<<<<<<<<<<<<< + * if not thread_info.fully_initialized: + * return CALL_EvalFrameDefault_38(frame_obj, exc) + */ + __pyx_t_8 = ((struct __pyx_vtabstruct_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_thread_info->__pyx_vtab)->initialize_if_possible(__pyx_v_thread_info); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 527, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":528 + * if not thread_info.fully_initialized: + * thread_info.initialize_if_possible() + * if not thread_info.fully_initialized: # <<<<<<<<<<<<<< + * return CALL_EvalFrameDefault_38(frame_obj, exc) + * + */ + __pyx_t_1 = (!__pyx_v_thread_info->fully_initialized); + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":529 + * thread_info.initialize_if_possible() + * if not thread_info.fully_initialized: + * return CALL_EvalFrameDefault_38(frame_obj, exc) # <<<<<<<<<<<<<< + * + * # Can only get additional_info when fully initialized. + */ + __pyx_r = CALL_EvalFrameDefault_38(__pyx_v_frame_obj, __pyx_v_exc); + goto __pyx_L0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":528 + * if not thread_info.fully_initialized: + * thread_info.initialize_if_possible() + * if not thread_info.fully_initialized: # <<<<<<<<<<<<<< + * return CALL_EvalFrameDefault_38(frame_obj, exc) + * + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":526 + * return CALL_EvalFrameDefault_38(frame_obj, exc) + * + * if not thread_info.fully_initialized: # <<<<<<<<<<<<<< + * thread_info.initialize_if_possible() + * if not thread_info.fully_initialized: + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":532 + * + * # Can only get additional_info when fully initialized. + * cdef PyDBAdditionalThreadInfo additional_info = thread_info.additional_info # <<<<<<<<<<<<<< + * if thread_info.is_pydevd_thread or additional_info.is_tracing: + * # Make sure that we don't trace pydevd threads or inside our own calls. + */ + __pyx_t_8 = ((PyObject *)__pyx_v_thread_info->additional_info); + __Pyx_INCREF(__pyx_t_8); + __pyx_v_additional_info = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_t_8); + __pyx_t_8 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":533 + * # Can only get additional_info when fully initialized. + * cdef PyDBAdditionalThreadInfo additional_info = thread_info.additional_info + * if thread_info.is_pydevd_thread or additional_info.is_tracing: # <<<<<<<<<<<<<< + * # Make sure that we don't trace pydevd threads or inside our own calls. + * return CALL_EvalFrameDefault_38(frame_obj, exc) + */ + if (!__pyx_v_thread_info->is_pydevd_thread) { + } else { + __pyx_t_1 = __pyx_v_thread_info->is_pydevd_thread; + goto __pyx_L20_bool_binop_done; + } + __pyx_t_3 = (__pyx_v_additional_info->is_tracing != 0); + __pyx_t_1 = __pyx_t_3; + __pyx_L20_bool_binop_done:; + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":535 + * if thread_info.is_pydevd_thread or additional_info.is_tracing: + * # Make sure that we don't trace pydevd threads or inside our own calls. + * return CALL_EvalFrameDefault_38(frame_obj, exc) # <<<<<<<<<<<<<< + * + * # frame = frame_obj + */ + __pyx_r = CALL_EvalFrameDefault_38(__pyx_v_frame_obj, __pyx_v_exc); + goto __pyx_L0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":533 + * # Can only get additional_info when fully initialized. + * cdef PyDBAdditionalThreadInfo additional_info = thread_info.additional_info + * if thread_info.is_pydevd_thread or additional_info.is_tracing: # <<<<<<<<<<<<<< + * # Make sure that we don't trace pydevd threads or inside our own calls. + * return CALL_EvalFrameDefault_38(frame_obj, exc) + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":542 + * # print('get_bytecode_while_frame_eval', frame.f_lineno, frame.f_code.co_name, frame.f_code.co_filename) + * + * thread_info.inside_frame_eval += 1 # <<<<<<<<<<<<<< + * additional_info.is_tracing = True + * try: + */ + __pyx_v_thread_info->inside_frame_eval = (__pyx_v_thread_info->inside_frame_eval + 1); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":543 + * + * thread_info.inside_frame_eval += 1 + * additional_info.is_tracing = True # <<<<<<<<<<<<<< + * try: + * main_debugger: object = GlobalDebuggerHolder.global_dbg + */ + __pyx_v_additional_info->is_tracing = 1; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":544 + * thread_info.inside_frame_eval += 1 + * additional_info.is_tracing = True + * try: # <<<<<<<<<<<<<< + * main_debugger: object = GlobalDebuggerHolder.global_dbg + * if main_debugger is None: + */ + /*try:*/ { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":545 + * additional_info.is_tracing = True + * try: + * main_debugger: object = GlobalDebuggerHolder.global_dbg # <<<<<<<<<<<<<< + * if main_debugger is None: + * return CALL_EvalFrameDefault_38(frame_obj, exc) + */ + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_GlobalDebuggerHolder); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 545, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_global_dbg); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 545, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_v_main_debugger = __pyx_t_2; + __pyx_t_2 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":546 + * try: + * main_debugger: object = GlobalDebuggerHolder.global_dbg + * if main_debugger is None: # <<<<<<<<<<<<<< + * return CALL_EvalFrameDefault_38(frame_obj, exc) + * frame = frame_obj + */ + __pyx_t_1 = (__pyx_v_main_debugger == Py_None); + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":547 + * main_debugger: object = GlobalDebuggerHolder.global_dbg + * if main_debugger is None: + * return CALL_EvalFrameDefault_38(frame_obj, exc) # <<<<<<<<<<<<<< + * frame = frame_obj + * + */ + __pyx_r = CALL_EvalFrameDefault_38(__pyx_v_frame_obj, __pyx_v_exc); + goto __pyx_L22_return; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":546 + * try: + * main_debugger: object = GlobalDebuggerHolder.global_dbg + * if main_debugger is None: # <<<<<<<<<<<<<< + * return CALL_EvalFrameDefault_38(frame_obj, exc) + * frame = frame_obj + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":548 + * if main_debugger is None: + * return CALL_EvalFrameDefault_38(frame_obj, exc) + * frame = frame_obj # <<<<<<<<<<<<<< + * + * if thread_info.thread_trace_func is None: + */ + __pyx_t_2 = ((PyObject *)__pyx_v_frame_obj); + __Pyx_INCREF(__pyx_t_2); + __pyx_v_frame = __pyx_t_2; + __pyx_t_2 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":550 + * frame = frame_obj + * + * if thread_info.thread_trace_func is None: # <<<<<<<<<<<<<< + * trace_func, apply_to_global = fix_top_level_trace_and_get_trace_func(main_debugger, frame) + * if apply_to_global: + */ + __pyx_t_1 = (__pyx_v_thread_info->thread_trace_func == Py_None); + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":551 + * + * if thread_info.thread_trace_func is None: + * trace_func, apply_to_global = fix_top_level_trace_and_get_trace_func(main_debugger, frame) # <<<<<<<<<<<<<< + * if apply_to_global: + * thread_info.thread_trace_func = trace_func + */ + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_fix_top_level_trace_and_get_trac); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 551, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_7 = NULL; + __pyx_t_10 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + __pyx_t_10 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_v_main_debugger, __pyx_v_frame}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_10, 2+__pyx_t_10); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 551, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { + PyObject* sequence = __pyx_t_2; + Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); + if (unlikely(size != 2)) { + if (size > 2) __Pyx_RaiseTooManyValuesError(2); + else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); + __PYX_ERR(0, 551, __pyx_L23_error) + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + if (likely(PyTuple_CheckExact(sequence))) { + __pyx_t_8 = PyTuple_GET_ITEM(sequence, 0); + __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); + } else { + __pyx_t_8 = PyList_GET_ITEM(sequence, 0); + __pyx_t_7 = PyList_GET_ITEM(sequence, 1); + } + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(__pyx_t_7); + #else + __pyx_t_8 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 551, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 551, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_7); + #endif + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else { + Py_ssize_t index = -1; + __pyx_t_9 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 551, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_11 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_9); + index = 0; __pyx_t_8 = __pyx_t_11(__pyx_t_9); if (unlikely(!__pyx_t_8)) goto __pyx_L27_unpacking_failed; + __Pyx_GOTREF(__pyx_t_8); + index = 1; __pyx_t_7 = __pyx_t_11(__pyx_t_9); if (unlikely(!__pyx_t_7)) goto __pyx_L27_unpacking_failed; + __Pyx_GOTREF(__pyx_t_7); + if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_9), 2) < 0) __PYX_ERR(0, 551, __pyx_L23_error) + __pyx_t_11 = NULL; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + goto __pyx_L28_unpacking_done; + __pyx_L27_unpacking_failed:; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_11 = NULL; + if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); + __PYX_ERR(0, 551, __pyx_L23_error) + __pyx_L28_unpacking_done:; + } + __pyx_v_trace_func = __pyx_t_8; + __pyx_t_8 = 0; + __pyx_v_apply_to_global = __pyx_t_7; + __pyx_t_7 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":552 + * if thread_info.thread_trace_func is None: + * trace_func, apply_to_global = fix_top_level_trace_and_get_trace_func(main_debugger, frame) + * if apply_to_global: # <<<<<<<<<<<<<< + * thread_info.thread_trace_func = trace_func + * + */ + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_apply_to_global); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 552, __pyx_L23_error) + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":553 + * trace_func, apply_to_global = fix_top_level_trace_and_get_trace_func(main_debugger, frame) + * if apply_to_global: + * thread_info.thread_trace_func = trace_func # <<<<<<<<<<<<<< + * + * if additional_info.pydev_step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE, CMD_STEP_INTO_COROUTINE, CMD_SMART_STEP_INTO) or \ + */ + __Pyx_INCREF(__pyx_v_trace_func); + __Pyx_GIVEREF(__pyx_v_trace_func); + __Pyx_GOTREF(__pyx_v_thread_info->thread_trace_func); + __Pyx_DECREF(__pyx_v_thread_info->thread_trace_func); + __pyx_v_thread_info->thread_trace_func = __pyx_v_trace_func; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":552 + * if thread_info.thread_trace_func is None: + * trace_func, apply_to_global = fix_top_level_trace_and_get_trace_func(main_debugger, frame) + * if apply_to_global: # <<<<<<<<<<<<<< + * thread_info.thread_trace_func = trace_func + * + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":550 + * frame = frame_obj + * + * if thread_info.thread_trace_func is None: # <<<<<<<<<<<<<< + * trace_func, apply_to_global = fix_top_level_trace_and_get_trace_func(main_debugger, frame) + * if apply_to_global: + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":555 + * thread_info.thread_trace_func = trace_func + * + * if additional_info.pydev_step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE, CMD_STEP_INTO_COROUTINE, CMD_SMART_STEP_INTO) or \ # <<<<<<<<<<<<<< + * main_debugger.break_on_caught_exceptions or \ + * main_debugger.break_on_user_uncaught_exceptions or \ + */ + __pyx_t_12 = __pyx_v_additional_info->pydev_step_cmd; + __pyx_t_13 = (__pyx_t_12 == __pyx_v_CMD_STEP_INTO); + if (!__pyx_t_13) { + } else { + __pyx_t_3 = __pyx_t_13; + goto __pyx_L33_bool_binop_done; + } + __pyx_t_13 = (__pyx_t_12 == __pyx_v_CMD_STEP_INTO_MY_CODE); + if (!__pyx_t_13) { + } else { + __pyx_t_3 = __pyx_t_13; + goto __pyx_L33_bool_binop_done; + } + __pyx_t_13 = (__pyx_t_12 == __pyx_v_CMD_STEP_INTO_COROUTINE); + if (!__pyx_t_13) { + } else { + __pyx_t_3 = __pyx_t_13; + goto __pyx_L33_bool_binop_done; + } + __pyx_t_13 = (__pyx_t_12 == __pyx_v_CMD_SMART_STEP_INTO); + __pyx_t_3 = __pyx_t_13; + __pyx_L33_bool_binop_done:; + __pyx_t_13 = __pyx_t_3; + if (!__pyx_t_13) { + } else { + __pyx_t_1 = __pyx_t_13; + goto __pyx_L31_bool_binop_done; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":556 + * + * if additional_info.pydev_step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE, CMD_STEP_INTO_COROUTINE, CMD_SMART_STEP_INTO) or \ + * main_debugger.break_on_caught_exceptions or \ # <<<<<<<<<<<<<< + * main_debugger.break_on_user_uncaught_exceptions or \ + * main_debugger.has_plugin_exception_breaks or \ + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_break_on_caught_exceptions); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 556, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(0, 556, __pyx_L23_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (!__pyx_t_13) { + } else { + __pyx_t_1 = __pyx_t_13; + goto __pyx_L31_bool_binop_done; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":557 + * if additional_info.pydev_step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE, CMD_STEP_INTO_COROUTINE, CMD_SMART_STEP_INTO) or \ + * main_debugger.break_on_caught_exceptions or \ + * main_debugger.break_on_user_uncaught_exceptions or \ # <<<<<<<<<<<<<< + * main_debugger.has_plugin_exception_breaks or \ + * main_debugger.signature_factory or \ + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_break_on_user_uncaught_exception); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 557, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(0, 557, __pyx_L23_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (!__pyx_t_13) { + } else { + __pyx_t_1 = __pyx_t_13; + goto __pyx_L31_bool_binop_done; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":558 + * main_debugger.break_on_caught_exceptions or \ + * main_debugger.break_on_user_uncaught_exceptions or \ + * main_debugger.has_plugin_exception_breaks or \ # <<<<<<<<<<<<<< + * main_debugger.signature_factory or \ + * additional_info.pydev_step_cmd in (CMD_STEP_OVER, CMD_STEP_OVER_MY_CODE) and main_debugger.show_return_values and frame.f_back is additional_info.pydev_step_stop: + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_has_plugin_exception_breaks); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 558, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(0, 558, __pyx_L23_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (!__pyx_t_13) { + } else { + __pyx_t_1 = __pyx_t_13; + goto __pyx_L31_bool_binop_done; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":559 + * main_debugger.break_on_user_uncaught_exceptions or \ + * main_debugger.has_plugin_exception_breaks or \ + * main_debugger.signature_factory or \ # <<<<<<<<<<<<<< + * additional_info.pydev_step_cmd in (CMD_STEP_OVER, CMD_STEP_OVER_MY_CODE) and main_debugger.show_return_values and frame.f_back is additional_info.pydev_step_stop: + * + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_signature_factory); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 559, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(0, 559, __pyx_L23_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (!__pyx_t_13) { + } else { + __pyx_t_1 = __pyx_t_13; + goto __pyx_L31_bool_binop_done; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":560 + * main_debugger.has_plugin_exception_breaks or \ + * main_debugger.signature_factory or \ + * additional_info.pydev_step_cmd in (CMD_STEP_OVER, CMD_STEP_OVER_MY_CODE) and main_debugger.show_return_values and frame.f_back is additional_info.pydev_step_stop: # <<<<<<<<<<<<<< + * + * # if DEBUG: + */ + __pyx_t_12 = __pyx_v_additional_info->pydev_step_cmd; + __pyx_t_3 = (__pyx_t_12 == __pyx_v_CMD_STEP_OVER); + if (!__pyx_t_3) { + } else { + __pyx_t_13 = __pyx_t_3; + goto __pyx_L42_bool_binop_done; + } + __pyx_t_3 = (__pyx_t_12 == __pyx_v_CMD_STEP_OVER_MY_CODE); + __pyx_t_13 = __pyx_t_3; + __pyx_L42_bool_binop_done:; + __pyx_t_3 = __pyx_t_13; + if (__pyx_t_3) { + } else { + __pyx_t_1 = __pyx_t_3; + goto __pyx_L31_bool_binop_done; + } + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_show_return_values); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 560, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 560, __pyx_L23_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__pyx_t_3) { + } else { + __pyx_t_1 = __pyx_t_3; + goto __pyx_L31_bool_binop_done; + } + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 560, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = (__pyx_t_2 == __pyx_v_additional_info->pydev_step_stop); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_1 = __pyx_t_3; + __pyx_L31_bool_binop_done:; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":555 + * thread_info.thread_trace_func = trace_func + * + * if additional_info.pydev_step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE, CMD_STEP_INTO_COROUTINE, CMD_SMART_STEP_INTO) or \ # <<<<<<<<<<<<<< + * main_debugger.break_on_caught_exceptions or \ + * main_debugger.break_on_user_uncaught_exceptions or \ + */ + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":564 + * # if DEBUG: + * # print('get_bytecode_while_frame_eval enabled trace') + * if thread_info.thread_trace_func is not None: # <<<<<<<<<<<<<< + * frame.f_trace = thread_info.thread_trace_func + * else: + */ + __pyx_t_1 = (__pyx_v_thread_info->thread_trace_func != Py_None); + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":565 + * # print('get_bytecode_while_frame_eval enabled trace') + * if thread_info.thread_trace_func is not None: + * frame.f_trace = thread_info.thread_trace_func # <<<<<<<<<<<<<< + * else: + * frame.f_trace = main_debugger.trace_dispatch + */ + __pyx_t_2 = __pyx_v_thread_info->thread_trace_func; + __Pyx_INCREF(__pyx_t_2); + if (__Pyx_PyObject_SetAttrStr(__pyx_v_frame, __pyx_n_s_f_trace, __pyx_t_2) < 0) __PYX_ERR(0, 565, __pyx_L23_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":564 + * # if DEBUG: + * # print('get_bytecode_while_frame_eval enabled trace') + * if thread_info.thread_trace_func is not None: # <<<<<<<<<<<<<< + * frame.f_trace = thread_info.thread_trace_func + * else: + */ + goto __pyx_L45; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":567 + * frame.f_trace = thread_info.thread_trace_func + * else: + * frame.f_trace = main_debugger.trace_dispatch # <<<<<<<<<<<<<< + * else: + * func_code_info: FuncCodeInfo = get_func_code_info(thread_info, frame_obj, frame_obj.f_code) + */ + /*else*/ { + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 567, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_7 = __pyx_t_2; + __Pyx_INCREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__Pyx_PyObject_SetAttrStr(__pyx_v_frame, __pyx_n_s_f_trace, __pyx_t_7) < 0) __PYX_ERR(0, 567, __pyx_L23_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __pyx_L45:; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":555 + * thread_info.thread_trace_func = trace_func + * + * if additional_info.pydev_step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE, CMD_STEP_INTO_COROUTINE, CMD_SMART_STEP_INTO) or \ # <<<<<<<<<<<<<< + * main_debugger.break_on_caught_exceptions or \ + * main_debugger.break_on_user_uncaught_exceptions or \ + */ + goto __pyx_L30; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":569 + * frame.f_trace = main_debugger.trace_dispatch + * else: + * func_code_info: FuncCodeInfo = get_func_code_info(thread_info, frame_obj, frame_obj.f_code) # <<<<<<<<<<<<<< + * # if DEBUG: + * # print('get_bytecode_while_frame_eval always skip', func_code_info.always_skip_code) + */ + /*else*/ { + __pyx_t_7 = ((PyObject *)__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_func_code_info(__pyx_v_thread_info, __pyx_v_frame_obj, __pyx_v_frame_obj->f_code)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 569, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_v_func_code_info = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_t_7); + __pyx_t_7 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":572 + * # if DEBUG: + * # print('get_bytecode_while_frame_eval always skip', func_code_info.always_skip_code) + * if not func_code_info.always_skip_code: # <<<<<<<<<<<<<< + * + * if main_debugger.has_plugin_line_breaks or main_debugger.has_plugin_exception_breaks: + */ + __pyx_t_1 = (!__pyx_v_func_code_info->always_skip_code); + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":574 + * if not func_code_info.always_skip_code: + * + * if main_debugger.has_plugin_line_breaks or main_debugger.has_plugin_exception_breaks: # <<<<<<<<<<<<<< + * can_skip = main_debugger.plugin.can_skip(main_debugger, frame_obj) + * + */ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_has_plugin_line_breaks); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 574, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 574, __pyx_L23_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (!__pyx_t_3) { + } else { + __pyx_t_1 = __pyx_t_3; + goto __pyx_L48_bool_binop_done; + } + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_has_plugin_exception_breaks); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 574, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 574, __pyx_L23_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_1 = __pyx_t_3; + __pyx_L48_bool_binop_done:; + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":575 + * + * if main_debugger.has_plugin_line_breaks or main_debugger.has_plugin_exception_breaks: + * can_skip = main_debugger.plugin.can_skip(main_debugger, frame_obj) # <<<<<<<<<<<<<< + * + * if not can_skip: + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_plugin); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 575, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_can_skip); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 575, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_10 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + __pyx_t_10 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_v_main_debugger, ((PyObject *)__pyx_v_frame_obj)}; + __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_10, 2+__pyx_t_10); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 575, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 575, __pyx_L23_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_v_can_skip = __pyx_t_1; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":577 + * can_skip = main_debugger.plugin.can_skip(main_debugger, frame_obj) + * + * if not can_skip: # <<<<<<<<<<<<<< + * # if DEBUG: + * # print('get_bytecode_while_frame_eval not can_skip') + */ + __pyx_t_1 = (!__pyx_v_can_skip); + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":580 + * # if DEBUG: + * # print('get_bytecode_while_frame_eval not can_skip') + * if thread_info.thread_trace_func is not None: # <<<<<<<<<<<<<< + * frame.f_trace = thread_info.thread_trace_func + * else: + */ + __pyx_t_1 = (__pyx_v_thread_info->thread_trace_func != Py_None); + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":581 + * # print('get_bytecode_while_frame_eval not can_skip') + * if thread_info.thread_trace_func is not None: + * frame.f_trace = thread_info.thread_trace_func # <<<<<<<<<<<<<< + * else: + * frame.f_trace = main_debugger.trace_dispatch + */ + __pyx_t_7 = __pyx_v_thread_info->thread_trace_func; + __Pyx_INCREF(__pyx_t_7); + if (__Pyx_PyObject_SetAttrStr(__pyx_v_frame, __pyx_n_s_f_trace, __pyx_t_7) < 0) __PYX_ERR(0, 581, __pyx_L23_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":580 + * # if DEBUG: + * # print('get_bytecode_while_frame_eval not can_skip') + * if thread_info.thread_trace_func is not None: # <<<<<<<<<<<<<< + * frame.f_trace = thread_info.thread_trace_func + * else: + */ + goto __pyx_L51; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":583 + * frame.f_trace = thread_info.thread_trace_func + * else: + * frame.f_trace = main_debugger.trace_dispatch # <<<<<<<<<<<<<< + * + * if can_skip and func_code_info.breakpoint_found: + */ + /*else*/ { + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 583, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = __pyx_t_7; + __Pyx_INCREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (__Pyx_PyObject_SetAttrStr(__pyx_v_frame, __pyx_n_s_f_trace, __pyx_t_8) < 0) __PYX_ERR(0, 583, __pyx_L23_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + __pyx_L51:; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":577 + * can_skip = main_debugger.plugin.can_skip(main_debugger, frame_obj) + * + * if not can_skip: # <<<<<<<<<<<<<< + * # if DEBUG: + * # print('get_bytecode_while_frame_eval not can_skip') + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":574 + * if not func_code_info.always_skip_code: + * + * if main_debugger.has_plugin_line_breaks or main_debugger.has_plugin_exception_breaks: # <<<<<<<<<<<<<< + * can_skip = main_debugger.plugin.can_skip(main_debugger, frame_obj) + * + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":585 + * frame.f_trace = main_debugger.trace_dispatch + * + * if can_skip and func_code_info.breakpoint_found: # <<<<<<<<<<<<<< + * # if DEBUG: + * # print('get_bytecode_while_frame_eval new_code', func_code_info.new_code) + */ + if (__pyx_v_can_skip) { + } else { + __pyx_t_1 = __pyx_v_can_skip; + goto __pyx_L53_bool_binop_done; + } + __pyx_t_1 = __pyx_v_func_code_info->breakpoint_found; + __pyx_L53_bool_binop_done:; + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":588 + * # if DEBUG: + * # print('get_bytecode_while_frame_eval new_code', func_code_info.new_code) + * if not thread_info.force_stay_in_untraced_mode: # <<<<<<<<<<<<<< + * # If breakpoints are found but new_code is None, + * # this means we weren't able to actually add the code + */ + __pyx_t_1 = (!__pyx_v_thread_info->force_stay_in_untraced_mode); + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":592 + * # this means we weren't able to actually add the code + * # where needed, so, fallback to tracing. + * if func_code_info.new_code is None: # <<<<<<<<<<<<<< + * if thread_info.thread_trace_func is not None: + * frame.f_trace = thread_info.thread_trace_func + */ + __pyx_t_1 = (__pyx_v_func_code_info->new_code == Py_None); + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":593 + * # where needed, so, fallback to tracing. + * if func_code_info.new_code is None: + * if thread_info.thread_trace_func is not None: # <<<<<<<<<<<<<< + * frame.f_trace = thread_info.thread_trace_func + * else: + */ + __pyx_t_1 = (__pyx_v_thread_info->thread_trace_func != Py_None); + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":594 + * if func_code_info.new_code is None: + * if thread_info.thread_trace_func is not None: + * frame.f_trace = thread_info.thread_trace_func # <<<<<<<<<<<<<< + * else: + * frame.f_trace = main_debugger.trace_dispatch + */ + __pyx_t_8 = __pyx_v_thread_info->thread_trace_func; + __Pyx_INCREF(__pyx_t_8); + if (__Pyx_PyObject_SetAttrStr(__pyx_v_frame, __pyx_n_s_f_trace, __pyx_t_8) < 0) __PYX_ERR(0, 594, __pyx_L23_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":593 + * # where needed, so, fallback to tracing. + * if func_code_info.new_code is None: + * if thread_info.thread_trace_func is not None: # <<<<<<<<<<<<<< + * frame.f_trace = thread_info.thread_trace_func + * else: + */ + goto __pyx_L57; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":596 + * frame.f_trace = thread_info.thread_trace_func + * else: + * frame.f_trace = main_debugger.trace_dispatch # <<<<<<<<<<<<<< + * else: + * # print('Using frame eval break for', frame_obj.f_code.co_name) + */ + /*else*/ { + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 596, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_7 = __pyx_t_8; + __Pyx_INCREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (__Pyx_PyObject_SetAttrStr(__pyx_v_frame, __pyx_n_s_f_trace, __pyx_t_7) < 0) __PYX_ERR(0, 596, __pyx_L23_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __pyx_L57:; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":592 + * # this means we weren't able to actually add the code + * # where needed, so, fallback to tracing. + * if func_code_info.new_code is None: # <<<<<<<<<<<<<< + * if thread_info.thread_trace_func is not None: + * frame.f_trace = thread_info.thread_trace_func + */ + goto __pyx_L56; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":599 + * else: + * # print('Using frame eval break for', frame_obj.f_code.co_name) + * update_globals_dict( frame_obj.f_globals) # <<<<<<<<<<<<<< + * Py_INCREF(func_code_info.new_code) + * old = frame_obj.f_code + */ + /*else*/ { + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_update_globals_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 599, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_2 = NULL; + __pyx_t_10 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + __pyx_t_10 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, ((PyObject *)__pyx_v_frame_obj->f_globals)}; + __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_10, 1+__pyx_t_10); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 599, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":600 + * # print('Using frame eval break for', frame_obj.f_code.co_name) + * update_globals_dict( frame_obj.f_globals) + * Py_INCREF(func_code_info.new_code) # <<<<<<<<<<<<<< + * old = frame_obj.f_code + * frame_obj.f_code = func_code_info.new_code + */ + __pyx_t_7 = __pyx_v_func_code_info->new_code; + __Pyx_INCREF(__pyx_t_7); + Py_INCREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":601 + * update_globals_dict( frame_obj.f_globals) + * Py_INCREF(func_code_info.new_code) + * old = frame_obj.f_code # <<<<<<<<<<<<<< + * frame_obj.f_code = func_code_info.new_code + * Py_DECREF(old) + */ + __pyx_t_7 = ((PyObject *)__pyx_v_frame_obj->f_code); + __Pyx_INCREF(__pyx_t_7); + __pyx_v_old = __pyx_t_7; + __pyx_t_7 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":602 + * Py_INCREF(func_code_info.new_code) + * old = frame_obj.f_code + * frame_obj.f_code = func_code_info.new_code # <<<<<<<<<<<<<< + * Py_DECREF(old) + * else: + */ + __pyx_v_frame_obj->f_code = ((PyCodeObject *)__pyx_v_func_code_info->new_code); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":603 + * old = frame_obj.f_code + * frame_obj.f_code = func_code_info.new_code + * Py_DECREF(old) # <<<<<<<<<<<<<< + * else: + * # When we're forcing to stay in traced mode we need to + */ + Py_DECREF(__pyx_v_old); + } + __pyx_L56:; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":588 + * # if DEBUG: + * # print('get_bytecode_while_frame_eval new_code', func_code_info.new_code) + * if not thread_info.force_stay_in_untraced_mode: # <<<<<<<<<<<<<< + * # If breakpoints are found but new_code is None, + * # this means we weren't able to actually add the code + */ + goto __pyx_L55; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":608 + * # update the globals dict (because this means that we're reusing + * # a previous code which had breakpoints added in a new frame). + * update_globals_dict( frame_obj.f_globals) # <<<<<<<<<<<<<< + * + * finally: + */ + /*else*/ { + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_update_globals_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 608, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_2 = NULL; + __pyx_t_10 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + __pyx_t_10 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, ((PyObject *)__pyx_v_frame_obj->f_globals)}; + __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_10, 1+__pyx_t_10); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 608, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __pyx_L55:; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":585 + * frame.f_trace = main_debugger.trace_dispatch + * + * if can_skip and func_code_info.breakpoint_found: # <<<<<<<<<<<<<< + * # if DEBUG: + * # print('get_bytecode_while_frame_eval new_code', func_code_info.new_code) + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":572 + * # if DEBUG: + * # print('get_bytecode_while_frame_eval always skip', func_code_info.always_skip_code) + * if not func_code_info.always_skip_code: # <<<<<<<<<<<<<< + * + * if main_debugger.has_plugin_line_breaks or main_debugger.has_plugin_exception_breaks: + */ + } + } + __pyx_L30:; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":611 + * + * finally: + * thread_info.inside_frame_eval -= 1 # <<<<<<<<<<<<<< + * additional_info.is_tracing = False + * + */ + /*finally:*/ { + /*normal exit:*/{ + __pyx_v_thread_info->inside_frame_eval = (__pyx_v_thread_info->inside_frame_eval - 1); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":612 + * finally: + * thread_info.inside_frame_eval -= 1 + * additional_info.is_tracing = False # <<<<<<<<<<<<<< + * + * return CALL_EvalFrameDefault_38(frame_obj, exc) + */ + __pyx_v_additional_info->is_tracing = 0; + goto __pyx_L24; + } + __pyx_L23_error:; + /*exception exit:*/{ + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4) < 0)) __Pyx_ErrFetch(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4); + __Pyx_XGOTREF(__pyx_t_6); + __Pyx_XGOTREF(__pyx_t_5); + __Pyx_XGOTREF(__pyx_t_4); + __Pyx_XGOTREF(__pyx_t_16); + __Pyx_XGOTREF(__pyx_t_17); + __Pyx_XGOTREF(__pyx_t_18); + __pyx_t_12 = __pyx_lineno; __pyx_t_14 = __pyx_clineno; __pyx_t_15 = __pyx_filename; + { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":611 + * + * finally: + * thread_info.inside_frame_eval -= 1 # <<<<<<<<<<<<<< + * additional_info.is_tracing = False + * + */ + __pyx_v_thread_info->inside_frame_eval = (__pyx_v_thread_info->inside_frame_eval - 1); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":612 + * finally: + * thread_info.inside_frame_eval -= 1 + * additional_info.is_tracing = False # <<<<<<<<<<<<<< + * + * return CALL_EvalFrameDefault_38(frame_obj, exc) + */ + __pyx_v_additional_info->is_tracing = 0; + } + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_16); + __Pyx_XGIVEREF(__pyx_t_17); + __Pyx_XGIVEREF(__pyx_t_18); + __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18); + } + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_XGIVEREF(__pyx_t_5); + __Pyx_XGIVEREF(__pyx_t_4); + __Pyx_ErrRestore(__pyx_t_6, __pyx_t_5, __pyx_t_4); + __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; + __pyx_lineno = __pyx_t_12; __pyx_clineno = __pyx_t_14; __pyx_filename = __pyx_t_15; + goto __pyx_L1_error; + } + __pyx_L22_return: { + __pyx_t_19 = __pyx_r; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":611 + * + * finally: + * thread_info.inside_frame_eval -= 1 # <<<<<<<<<<<<<< + * additional_info.is_tracing = False + * + */ + __pyx_v_thread_info->inside_frame_eval = (__pyx_v_thread_info->inside_frame_eval - 1); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":612 + * finally: + * thread_info.inside_frame_eval -= 1 + * additional_info.is_tracing = False # <<<<<<<<<<<<<< + * + * return CALL_EvalFrameDefault_38(frame_obj, exc) + */ + __pyx_v_additional_info->is_tracing = 0; + __pyx_r = __pyx_t_19; + goto __pyx_L0; + } + __pyx_L24:; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":614 + * additional_info.is_tracing = False + * + * return CALL_EvalFrameDefault_38(frame_obj, exc) # <<<<<<<<<<<<<< + * ### WARNING: GENERATED CODE, DO NOT EDIT! + * ### WARNING: GENERATED CODE, DO NOT EDIT! + */ + __pyx_r = CALL_EvalFrameDefault_38(__pyx_v_frame_obj, __pyx_v_exc); + goto __pyx_L0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":494 + * ### WARNING: GENERATED CODE, DO NOT EDIT! + * ### WARNING: GENERATED CODE, DO NOT EDIT! + * cdef PyObject * get_bytecode_while_frame_eval_38(PyFrameObject * frame_obj, int exc): # <<<<<<<<<<<<<< + * ''' + * This function makes the actual evaluation and changes the bytecode to a version + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.get_bytecode_while_frame_eval_38", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_thread_info); + __Pyx_XDECREF((PyObject *)__pyx_v_additional_info); + __Pyx_XDECREF(__pyx_v_main_debugger); + __Pyx_XDECREF(__pyx_v_frame); + __Pyx_XDECREF(__pyx_v_trace_func); + __Pyx_XDECREF(__pyx_v_apply_to_global); + __Pyx_XDECREF((PyObject *)__pyx_v_func_code_info); + __Pyx_XDECREF(__pyx_v_old); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":623 + * ### WARNING: GENERATED CODE, DO NOT EDIT! + * ### WARNING: GENERATED CODE, DO NOT EDIT! + * cdef PyObject * get_bytecode_while_frame_eval_39(PyThreadState* tstate, PyFrameObject * frame_obj, int exc): # <<<<<<<<<<<<<< + * ''' + * This function makes the actual evaluation and changes the bytecode to a version + */ + +static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_bytecode_while_frame_eval_39(PyThreadState *__pyx_v_tstate, PyFrameObject *__pyx_v_frame_obj, int __pyx_v_exc) { + struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v_thread_info = 0; + CYTHON_UNUSED int __pyx_v_STATE_SUSPEND; + int __pyx_v_CMD_STEP_INTO; + int __pyx_v_CMD_STEP_OVER; + int __pyx_v_CMD_STEP_OVER_MY_CODE; + int __pyx_v_CMD_STEP_INTO_MY_CODE; + int __pyx_v_CMD_STEP_INTO_COROUTINE; + int __pyx_v_CMD_SMART_STEP_INTO; + int __pyx_v_can_skip; + struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *__pyx_v_additional_info = 0; + PyObject *__pyx_v_main_debugger = 0; + PyObject *__pyx_v_frame = NULL; + PyObject *__pyx_v_trace_func = NULL; + PyObject *__pyx_v_apply_to_global = NULL; + struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v_func_code_info = 0; + PyObject *__pyx_v_old = NULL; + PyObject *__pyx_r; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + unsigned int __pyx_t_10; + PyObject *(*__pyx_t_11)(PyObject *); + int __pyx_t_12; + int __pyx_t_13; + int __pyx_t_14; + char const *__pyx_t_15; + PyObject *__pyx_t_16 = NULL; + PyObject *__pyx_t_17 = NULL; + PyObject *__pyx_t_18 = NULL; + PyObject *__pyx_t_19; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get_bytecode_while_frame_eval_39", 1); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":628 + * where programmatic breakpoints are added. + * ''' + * if GlobalDebuggerHolder is None or _thread_local_info is None or exc: # <<<<<<<<<<<<<< + * # Sometimes during process shutdown these global variables become None + * return CALL_EvalFrameDefault_39(tstate, frame_obj, exc) + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_GlobalDebuggerHolder); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 628, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = (__pyx_t_2 == Py_None); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (!__pyx_t_3) { + } else { + __pyx_t_1 = __pyx_t_3; + goto __pyx_L4_bool_binop_done; + } + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_thread_local_info); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 628, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = (__pyx_t_2 == Py_None); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (!__pyx_t_3) { + } else { + __pyx_t_1 = __pyx_t_3; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_3 = (__pyx_v_exc != 0); + __pyx_t_1 = __pyx_t_3; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":630 + * if GlobalDebuggerHolder is None or _thread_local_info is None or exc: + * # Sometimes during process shutdown these global variables become None + * return CALL_EvalFrameDefault_39(tstate, frame_obj, exc) # <<<<<<<<<<<<<< + * + * # co_filename: str = frame_obj.f_code.co_filename + */ + __pyx_r = CALL_EvalFrameDefault_39(__pyx_v_tstate, __pyx_v_frame_obj, __pyx_v_exc); + goto __pyx_L0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":628 + * where programmatic breakpoints are added. + * ''' + * if GlobalDebuggerHolder is None or _thread_local_info is None or exc: # <<<<<<<<<<<<<< + * # Sometimes during process shutdown these global variables become None + * return CALL_EvalFrameDefault_39(tstate, frame_obj, exc) + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":637 + * + * cdef ThreadInfo thread_info + * cdef int STATE_SUSPEND = 2 # <<<<<<<<<<<<<< + * cdef int CMD_STEP_INTO = 107 + * cdef int CMD_STEP_OVER = 108 + */ + __pyx_v_STATE_SUSPEND = 2; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":638 + * cdef ThreadInfo thread_info + * cdef int STATE_SUSPEND = 2 + * cdef int CMD_STEP_INTO = 107 # <<<<<<<<<<<<<< + * cdef int CMD_STEP_OVER = 108 + * cdef int CMD_STEP_OVER_MY_CODE = 159 + */ + __pyx_v_CMD_STEP_INTO = 0x6B; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":639 + * cdef int STATE_SUSPEND = 2 + * cdef int CMD_STEP_INTO = 107 + * cdef int CMD_STEP_OVER = 108 # <<<<<<<<<<<<<< + * cdef int CMD_STEP_OVER_MY_CODE = 159 + * cdef int CMD_STEP_INTO_MY_CODE = 144 + */ + __pyx_v_CMD_STEP_OVER = 0x6C; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":640 + * cdef int CMD_STEP_INTO = 107 + * cdef int CMD_STEP_OVER = 108 + * cdef int CMD_STEP_OVER_MY_CODE = 159 # <<<<<<<<<<<<<< + * cdef int CMD_STEP_INTO_MY_CODE = 144 + * cdef int CMD_STEP_INTO_COROUTINE = 206 + */ + __pyx_v_CMD_STEP_OVER_MY_CODE = 0x9F; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":641 + * cdef int CMD_STEP_OVER = 108 + * cdef int CMD_STEP_OVER_MY_CODE = 159 + * cdef int CMD_STEP_INTO_MY_CODE = 144 # <<<<<<<<<<<<<< + * cdef int CMD_STEP_INTO_COROUTINE = 206 + * cdef int CMD_SMART_STEP_INTO = 128 + */ + __pyx_v_CMD_STEP_INTO_MY_CODE = 0x90; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":642 + * cdef int CMD_STEP_OVER_MY_CODE = 159 + * cdef int CMD_STEP_INTO_MY_CODE = 144 + * cdef int CMD_STEP_INTO_COROUTINE = 206 # <<<<<<<<<<<<<< + * cdef int CMD_SMART_STEP_INTO = 128 + * cdef bint can_skip = True + */ + __pyx_v_CMD_STEP_INTO_COROUTINE = 0xCE; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":643 + * cdef int CMD_STEP_INTO_MY_CODE = 144 + * cdef int CMD_STEP_INTO_COROUTINE = 206 + * cdef int CMD_SMART_STEP_INTO = 128 # <<<<<<<<<<<<<< + * cdef bint can_skip = True + * try: + */ + __pyx_v_CMD_SMART_STEP_INTO = 0x80; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":644 + * cdef int CMD_STEP_INTO_COROUTINE = 206 + * cdef int CMD_SMART_STEP_INTO = 128 + * cdef bint can_skip = True # <<<<<<<<<<<<<< + * try: + * thread_info = _thread_local_info.thread_info + */ + __pyx_v_can_skip = 1; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":645 + * cdef int CMD_SMART_STEP_INTO = 128 + * cdef bint can_skip = True + * try: # <<<<<<<<<<<<<< + * thread_info = _thread_local_info.thread_info + * except: + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6); + __Pyx_XGOTREF(__pyx_t_4); + __Pyx_XGOTREF(__pyx_t_5); + __Pyx_XGOTREF(__pyx_t_6); + /*try:*/ { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":646 + * cdef bint can_skip = True + * try: + * thread_info = _thread_local_info.thread_info # <<<<<<<<<<<<<< + * except: + * thread_info = get_thread_info(frame_obj) + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_thread_local_info); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 646, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_thread_info); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 646, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo))))) __PYX_ERR(0, 646, __pyx_L7_error) + __pyx_v_thread_info = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_t_7); + __pyx_t_7 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":645 + * cdef int CMD_SMART_STEP_INTO = 128 + * cdef bint can_skip = True + * try: # <<<<<<<<<<<<<< + * thread_info = _thread_local_info.thread_info + * except: + */ + } + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + goto __pyx_L12_try_end; + __pyx_L7_error:; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":647 + * try: + * thread_info = _thread_local_info.thread_info + * except: # <<<<<<<<<<<<<< + * thread_info = get_thread_info(frame_obj) + * if thread_info is None: + */ + /*except:*/ { + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.get_bytecode_while_frame_eval_39", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_2, &__pyx_t_8) < 0) __PYX_ERR(0, 647, __pyx_L9_except_error) + __Pyx_XGOTREF(__pyx_t_7); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_8); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":648 + * thread_info = _thread_local_info.thread_info + * except: + * thread_info = get_thread_info(frame_obj) # <<<<<<<<<<<<<< + * if thread_info is None: + * return CALL_EvalFrameDefault_39(tstate, frame_obj, exc) + */ + __pyx_t_9 = ((PyObject *)__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_thread_info(__pyx_v_frame_obj)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 648, __pyx_L9_except_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_XDECREF_SET(__pyx_v_thread_info, ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_t_9)); + __pyx_t_9 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":649 + * except: + * thread_info = get_thread_info(frame_obj) + * if thread_info is None: # <<<<<<<<<<<<<< + * return CALL_EvalFrameDefault_39(tstate, frame_obj, exc) + * + */ + __pyx_t_1 = (((PyObject *)__pyx_v_thread_info) == Py_None); + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":650 + * thread_info = get_thread_info(frame_obj) + * if thread_info is None: + * return CALL_EvalFrameDefault_39(tstate, frame_obj, exc) # <<<<<<<<<<<<<< + * + * if thread_info.inside_frame_eval: + */ + __pyx_r = CALL_EvalFrameDefault_39(__pyx_v_tstate, __pyx_v_frame_obj, __pyx_v_exc); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + goto __pyx_L10_except_return; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":649 + * except: + * thread_info = get_thread_info(frame_obj) + * if thread_info is None: # <<<<<<<<<<<<<< + * return CALL_EvalFrameDefault_39(tstate, frame_obj, exc) + * + */ + } + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + goto __pyx_L8_exception_handled; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":645 + * cdef int CMD_SMART_STEP_INTO = 128 + * cdef bint can_skip = True + * try: # <<<<<<<<<<<<<< + * thread_info = _thread_local_info.thread_info + * except: + */ + __pyx_L9_except_error:; + __Pyx_XGIVEREF(__pyx_t_4); + __Pyx_XGIVEREF(__pyx_t_5); + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6); + goto __pyx_L1_error; + __pyx_L10_except_return:; + __Pyx_XGIVEREF(__pyx_t_4); + __Pyx_XGIVEREF(__pyx_t_5); + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6); + goto __pyx_L0; + __pyx_L8_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_4); + __Pyx_XGIVEREF(__pyx_t_5); + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6); + __pyx_L12_try_end:; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":652 + * return CALL_EvalFrameDefault_39(tstate, frame_obj, exc) + * + * if thread_info.inside_frame_eval: # <<<<<<<<<<<<<< + * return CALL_EvalFrameDefault_39(tstate, frame_obj, exc) + * + */ + __pyx_t_1 = (__pyx_v_thread_info->inside_frame_eval != 0); + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":653 + * + * if thread_info.inside_frame_eval: + * return CALL_EvalFrameDefault_39(tstate, frame_obj, exc) # <<<<<<<<<<<<<< + * + * if not thread_info.fully_initialized: + */ + __pyx_r = CALL_EvalFrameDefault_39(__pyx_v_tstate, __pyx_v_frame_obj, __pyx_v_exc); + goto __pyx_L0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":652 + * return CALL_EvalFrameDefault_39(tstate, frame_obj, exc) + * + * if thread_info.inside_frame_eval: # <<<<<<<<<<<<<< + * return CALL_EvalFrameDefault_39(tstate, frame_obj, exc) + * + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":655 + * return CALL_EvalFrameDefault_39(tstate, frame_obj, exc) + * + * if not thread_info.fully_initialized: # <<<<<<<<<<<<<< + * thread_info.initialize_if_possible() + * if not thread_info.fully_initialized: + */ + __pyx_t_1 = (!__pyx_v_thread_info->fully_initialized); + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":656 + * + * if not thread_info.fully_initialized: + * thread_info.initialize_if_possible() # <<<<<<<<<<<<<< + * if not thread_info.fully_initialized: + * return CALL_EvalFrameDefault_39(tstate, frame_obj, exc) + */ + __pyx_t_8 = ((struct __pyx_vtabstruct_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v_thread_info->__pyx_vtab)->initialize_if_possible(__pyx_v_thread_info); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 656, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":657 + * if not thread_info.fully_initialized: + * thread_info.initialize_if_possible() + * if not thread_info.fully_initialized: # <<<<<<<<<<<<<< + * return CALL_EvalFrameDefault_39(tstate, frame_obj, exc) + * + */ + __pyx_t_1 = (!__pyx_v_thread_info->fully_initialized); + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":658 + * thread_info.initialize_if_possible() + * if not thread_info.fully_initialized: + * return CALL_EvalFrameDefault_39(tstate, frame_obj, exc) # <<<<<<<<<<<<<< + * + * # Can only get additional_info when fully initialized. + */ + __pyx_r = CALL_EvalFrameDefault_39(__pyx_v_tstate, __pyx_v_frame_obj, __pyx_v_exc); + goto __pyx_L0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":657 + * if not thread_info.fully_initialized: + * thread_info.initialize_if_possible() + * if not thread_info.fully_initialized: # <<<<<<<<<<<<<< + * return CALL_EvalFrameDefault_39(tstate, frame_obj, exc) + * + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":655 + * return CALL_EvalFrameDefault_39(tstate, frame_obj, exc) + * + * if not thread_info.fully_initialized: # <<<<<<<<<<<<<< + * thread_info.initialize_if_possible() + * if not thread_info.fully_initialized: + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":661 + * + * # Can only get additional_info when fully initialized. + * cdef PyDBAdditionalThreadInfo additional_info = thread_info.additional_info # <<<<<<<<<<<<<< + * if thread_info.is_pydevd_thread or additional_info.is_tracing: + * # Make sure that we don't trace pydevd threads or inside our own calls. + */ + __pyx_t_8 = ((PyObject *)__pyx_v_thread_info->additional_info); + __Pyx_INCREF(__pyx_t_8); + __pyx_v_additional_info = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_t_8); + __pyx_t_8 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":662 + * # Can only get additional_info when fully initialized. + * cdef PyDBAdditionalThreadInfo additional_info = thread_info.additional_info + * if thread_info.is_pydevd_thread or additional_info.is_tracing: # <<<<<<<<<<<<<< + * # Make sure that we don't trace pydevd threads or inside our own calls. + * return CALL_EvalFrameDefault_39(tstate, frame_obj, exc) + */ + if (!__pyx_v_thread_info->is_pydevd_thread) { + } else { + __pyx_t_1 = __pyx_v_thread_info->is_pydevd_thread; + goto __pyx_L20_bool_binop_done; + } + __pyx_t_3 = (__pyx_v_additional_info->is_tracing != 0); + __pyx_t_1 = __pyx_t_3; + __pyx_L20_bool_binop_done:; + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":664 + * if thread_info.is_pydevd_thread or additional_info.is_tracing: + * # Make sure that we don't trace pydevd threads or inside our own calls. + * return CALL_EvalFrameDefault_39(tstate, frame_obj, exc) # <<<<<<<<<<<<<< + * + * # frame = frame_obj + */ + __pyx_r = CALL_EvalFrameDefault_39(__pyx_v_tstate, __pyx_v_frame_obj, __pyx_v_exc); + goto __pyx_L0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":662 + * # Can only get additional_info when fully initialized. + * cdef PyDBAdditionalThreadInfo additional_info = thread_info.additional_info + * if thread_info.is_pydevd_thread or additional_info.is_tracing: # <<<<<<<<<<<<<< + * # Make sure that we don't trace pydevd threads or inside our own calls. + * return CALL_EvalFrameDefault_39(tstate, frame_obj, exc) + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":671 + * # print('get_bytecode_while_frame_eval', frame.f_lineno, frame.f_code.co_name, frame.f_code.co_filename) + * + * thread_info.inside_frame_eval += 1 # <<<<<<<<<<<<<< + * additional_info.is_tracing = True + * try: + */ + __pyx_v_thread_info->inside_frame_eval = (__pyx_v_thread_info->inside_frame_eval + 1); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":672 + * + * thread_info.inside_frame_eval += 1 + * additional_info.is_tracing = True # <<<<<<<<<<<<<< + * try: + * main_debugger: object = GlobalDebuggerHolder.global_dbg + */ + __pyx_v_additional_info->is_tracing = 1; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":673 + * thread_info.inside_frame_eval += 1 + * additional_info.is_tracing = True + * try: # <<<<<<<<<<<<<< + * main_debugger: object = GlobalDebuggerHolder.global_dbg + * if main_debugger is None: + */ + /*try:*/ { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":674 + * additional_info.is_tracing = True + * try: + * main_debugger: object = GlobalDebuggerHolder.global_dbg # <<<<<<<<<<<<<< + * if main_debugger is None: + * return CALL_EvalFrameDefault_39(tstate, frame_obj, exc) + */ + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_GlobalDebuggerHolder); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 674, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_global_dbg); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 674, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_v_main_debugger = __pyx_t_2; + __pyx_t_2 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":675 + * try: + * main_debugger: object = GlobalDebuggerHolder.global_dbg + * if main_debugger is None: # <<<<<<<<<<<<<< + * return CALL_EvalFrameDefault_39(tstate, frame_obj, exc) + * frame = frame_obj + */ + __pyx_t_1 = (__pyx_v_main_debugger == Py_None); + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":676 + * main_debugger: object = GlobalDebuggerHolder.global_dbg + * if main_debugger is None: + * return CALL_EvalFrameDefault_39(tstate, frame_obj, exc) # <<<<<<<<<<<<<< + * frame = frame_obj + * + */ + __pyx_r = CALL_EvalFrameDefault_39(__pyx_v_tstate, __pyx_v_frame_obj, __pyx_v_exc); + goto __pyx_L22_return; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":675 + * try: + * main_debugger: object = GlobalDebuggerHolder.global_dbg + * if main_debugger is None: # <<<<<<<<<<<<<< + * return CALL_EvalFrameDefault_39(tstate, frame_obj, exc) + * frame = frame_obj + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":677 + * if main_debugger is None: + * return CALL_EvalFrameDefault_39(tstate, frame_obj, exc) + * frame = frame_obj # <<<<<<<<<<<<<< + * + * if thread_info.thread_trace_func is None: + */ + __pyx_t_2 = ((PyObject *)__pyx_v_frame_obj); + __Pyx_INCREF(__pyx_t_2); + __pyx_v_frame = __pyx_t_2; + __pyx_t_2 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":679 + * frame = frame_obj + * + * if thread_info.thread_trace_func is None: # <<<<<<<<<<<<<< + * trace_func, apply_to_global = fix_top_level_trace_and_get_trace_func(main_debugger, frame) + * if apply_to_global: + */ + __pyx_t_1 = (__pyx_v_thread_info->thread_trace_func == Py_None); + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":680 + * + * if thread_info.thread_trace_func is None: + * trace_func, apply_to_global = fix_top_level_trace_and_get_trace_func(main_debugger, frame) # <<<<<<<<<<<<<< + * if apply_to_global: + * thread_info.thread_trace_func = trace_func + */ + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_fix_top_level_trace_and_get_trac); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 680, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_7 = NULL; + __pyx_t_10 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + __pyx_t_10 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_v_main_debugger, __pyx_v_frame}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_10, 2+__pyx_t_10); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 680, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { + PyObject* sequence = __pyx_t_2; + Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); + if (unlikely(size != 2)) { + if (size > 2) __Pyx_RaiseTooManyValuesError(2); + else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); + __PYX_ERR(0, 680, __pyx_L23_error) + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + if (likely(PyTuple_CheckExact(sequence))) { + __pyx_t_8 = PyTuple_GET_ITEM(sequence, 0); + __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); + } else { + __pyx_t_8 = PyList_GET_ITEM(sequence, 0); + __pyx_t_7 = PyList_GET_ITEM(sequence, 1); + } + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(__pyx_t_7); + #else + __pyx_t_8 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 680, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 680, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_7); + #endif + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else { + Py_ssize_t index = -1; + __pyx_t_9 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 680, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_11 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_9); + index = 0; __pyx_t_8 = __pyx_t_11(__pyx_t_9); if (unlikely(!__pyx_t_8)) goto __pyx_L27_unpacking_failed; + __Pyx_GOTREF(__pyx_t_8); + index = 1; __pyx_t_7 = __pyx_t_11(__pyx_t_9); if (unlikely(!__pyx_t_7)) goto __pyx_L27_unpacking_failed; + __Pyx_GOTREF(__pyx_t_7); + if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_9), 2) < 0) __PYX_ERR(0, 680, __pyx_L23_error) + __pyx_t_11 = NULL; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + goto __pyx_L28_unpacking_done; + __pyx_L27_unpacking_failed:; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_11 = NULL; + if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); + __PYX_ERR(0, 680, __pyx_L23_error) + __pyx_L28_unpacking_done:; + } + __pyx_v_trace_func = __pyx_t_8; + __pyx_t_8 = 0; + __pyx_v_apply_to_global = __pyx_t_7; + __pyx_t_7 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":681 + * if thread_info.thread_trace_func is None: + * trace_func, apply_to_global = fix_top_level_trace_and_get_trace_func(main_debugger, frame) + * if apply_to_global: # <<<<<<<<<<<<<< + * thread_info.thread_trace_func = trace_func + * + */ + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_apply_to_global); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 681, __pyx_L23_error) + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":682 + * trace_func, apply_to_global = fix_top_level_trace_and_get_trace_func(main_debugger, frame) + * if apply_to_global: + * thread_info.thread_trace_func = trace_func # <<<<<<<<<<<<<< + * + * if additional_info.pydev_step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE, CMD_STEP_INTO_COROUTINE, CMD_SMART_STEP_INTO) or \ + */ + __Pyx_INCREF(__pyx_v_trace_func); + __Pyx_GIVEREF(__pyx_v_trace_func); + __Pyx_GOTREF(__pyx_v_thread_info->thread_trace_func); + __Pyx_DECREF(__pyx_v_thread_info->thread_trace_func); + __pyx_v_thread_info->thread_trace_func = __pyx_v_trace_func; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":681 + * if thread_info.thread_trace_func is None: + * trace_func, apply_to_global = fix_top_level_trace_and_get_trace_func(main_debugger, frame) + * if apply_to_global: # <<<<<<<<<<<<<< + * thread_info.thread_trace_func = trace_func + * + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":679 + * frame = frame_obj + * + * if thread_info.thread_trace_func is None: # <<<<<<<<<<<<<< + * trace_func, apply_to_global = fix_top_level_trace_and_get_trace_func(main_debugger, frame) + * if apply_to_global: + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":684 + * thread_info.thread_trace_func = trace_func + * + * if additional_info.pydev_step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE, CMD_STEP_INTO_COROUTINE, CMD_SMART_STEP_INTO) or \ # <<<<<<<<<<<<<< + * main_debugger.break_on_caught_exceptions or \ + * main_debugger.break_on_user_uncaught_exceptions or \ + */ + __pyx_t_12 = __pyx_v_additional_info->pydev_step_cmd; + __pyx_t_13 = (__pyx_t_12 == __pyx_v_CMD_STEP_INTO); + if (!__pyx_t_13) { + } else { + __pyx_t_3 = __pyx_t_13; + goto __pyx_L33_bool_binop_done; + } + __pyx_t_13 = (__pyx_t_12 == __pyx_v_CMD_STEP_INTO_MY_CODE); + if (!__pyx_t_13) { + } else { + __pyx_t_3 = __pyx_t_13; + goto __pyx_L33_bool_binop_done; + } + __pyx_t_13 = (__pyx_t_12 == __pyx_v_CMD_STEP_INTO_COROUTINE); + if (!__pyx_t_13) { + } else { + __pyx_t_3 = __pyx_t_13; + goto __pyx_L33_bool_binop_done; + } + __pyx_t_13 = (__pyx_t_12 == __pyx_v_CMD_SMART_STEP_INTO); + __pyx_t_3 = __pyx_t_13; + __pyx_L33_bool_binop_done:; + __pyx_t_13 = __pyx_t_3; + if (!__pyx_t_13) { + } else { + __pyx_t_1 = __pyx_t_13; + goto __pyx_L31_bool_binop_done; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":685 + * + * if additional_info.pydev_step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE, CMD_STEP_INTO_COROUTINE, CMD_SMART_STEP_INTO) or \ + * main_debugger.break_on_caught_exceptions or \ # <<<<<<<<<<<<<< + * main_debugger.break_on_user_uncaught_exceptions or \ + * main_debugger.has_plugin_exception_breaks or \ + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_break_on_caught_exceptions); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 685, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(0, 685, __pyx_L23_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (!__pyx_t_13) { + } else { + __pyx_t_1 = __pyx_t_13; + goto __pyx_L31_bool_binop_done; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":686 + * if additional_info.pydev_step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE, CMD_STEP_INTO_COROUTINE, CMD_SMART_STEP_INTO) or \ + * main_debugger.break_on_caught_exceptions or \ + * main_debugger.break_on_user_uncaught_exceptions or \ # <<<<<<<<<<<<<< + * main_debugger.has_plugin_exception_breaks or \ + * main_debugger.signature_factory or \ + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_break_on_user_uncaught_exception); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 686, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(0, 686, __pyx_L23_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (!__pyx_t_13) { + } else { + __pyx_t_1 = __pyx_t_13; + goto __pyx_L31_bool_binop_done; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":687 + * main_debugger.break_on_caught_exceptions or \ + * main_debugger.break_on_user_uncaught_exceptions or \ + * main_debugger.has_plugin_exception_breaks or \ # <<<<<<<<<<<<<< + * main_debugger.signature_factory or \ + * additional_info.pydev_step_cmd in (CMD_STEP_OVER, CMD_STEP_OVER_MY_CODE) and main_debugger.show_return_values and frame.f_back is additional_info.pydev_step_stop: + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_has_plugin_exception_breaks); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 687, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(0, 687, __pyx_L23_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (!__pyx_t_13) { + } else { + __pyx_t_1 = __pyx_t_13; + goto __pyx_L31_bool_binop_done; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":688 + * main_debugger.break_on_user_uncaught_exceptions or \ + * main_debugger.has_plugin_exception_breaks or \ + * main_debugger.signature_factory or \ # <<<<<<<<<<<<<< + * additional_info.pydev_step_cmd in (CMD_STEP_OVER, CMD_STEP_OVER_MY_CODE) and main_debugger.show_return_values and frame.f_back is additional_info.pydev_step_stop: + * + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_signature_factory); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 688, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(0, 688, __pyx_L23_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (!__pyx_t_13) { + } else { + __pyx_t_1 = __pyx_t_13; + goto __pyx_L31_bool_binop_done; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":689 + * main_debugger.has_plugin_exception_breaks or \ + * main_debugger.signature_factory or \ + * additional_info.pydev_step_cmd in (CMD_STEP_OVER, CMD_STEP_OVER_MY_CODE) and main_debugger.show_return_values and frame.f_back is additional_info.pydev_step_stop: # <<<<<<<<<<<<<< + * + * # if DEBUG: + */ + __pyx_t_12 = __pyx_v_additional_info->pydev_step_cmd; + __pyx_t_3 = (__pyx_t_12 == __pyx_v_CMD_STEP_OVER); + if (!__pyx_t_3) { + } else { + __pyx_t_13 = __pyx_t_3; + goto __pyx_L42_bool_binop_done; + } + __pyx_t_3 = (__pyx_t_12 == __pyx_v_CMD_STEP_OVER_MY_CODE); + __pyx_t_13 = __pyx_t_3; + __pyx_L42_bool_binop_done:; + __pyx_t_3 = __pyx_t_13; + if (__pyx_t_3) { + } else { + __pyx_t_1 = __pyx_t_3; + goto __pyx_L31_bool_binop_done; + } + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_show_return_values); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 689, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 689, __pyx_L23_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__pyx_t_3) { + } else { + __pyx_t_1 = __pyx_t_3; + goto __pyx_L31_bool_binop_done; + } + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_n_s_f_back); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 689, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = (__pyx_t_2 == __pyx_v_additional_info->pydev_step_stop); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_1 = __pyx_t_3; + __pyx_L31_bool_binop_done:; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":684 + * thread_info.thread_trace_func = trace_func + * + * if additional_info.pydev_step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE, CMD_STEP_INTO_COROUTINE, CMD_SMART_STEP_INTO) or \ # <<<<<<<<<<<<<< + * main_debugger.break_on_caught_exceptions or \ + * main_debugger.break_on_user_uncaught_exceptions or \ + */ + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":693 + * # if DEBUG: + * # print('get_bytecode_while_frame_eval enabled trace') + * if thread_info.thread_trace_func is not None: # <<<<<<<<<<<<<< + * frame.f_trace = thread_info.thread_trace_func + * else: + */ + __pyx_t_1 = (__pyx_v_thread_info->thread_trace_func != Py_None); + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":694 + * # print('get_bytecode_while_frame_eval enabled trace') + * if thread_info.thread_trace_func is not None: + * frame.f_trace = thread_info.thread_trace_func # <<<<<<<<<<<<<< + * else: + * frame.f_trace = main_debugger.trace_dispatch + */ + __pyx_t_2 = __pyx_v_thread_info->thread_trace_func; + __Pyx_INCREF(__pyx_t_2); + if (__Pyx_PyObject_SetAttrStr(__pyx_v_frame, __pyx_n_s_f_trace, __pyx_t_2) < 0) __PYX_ERR(0, 694, __pyx_L23_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":693 + * # if DEBUG: + * # print('get_bytecode_while_frame_eval enabled trace') + * if thread_info.thread_trace_func is not None: # <<<<<<<<<<<<<< + * frame.f_trace = thread_info.thread_trace_func + * else: + */ + goto __pyx_L45; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":696 + * frame.f_trace = thread_info.thread_trace_func + * else: + * frame.f_trace = main_debugger.trace_dispatch # <<<<<<<<<<<<<< + * else: + * func_code_info: FuncCodeInfo = get_func_code_info(thread_info, frame_obj, frame_obj.f_code) + */ + /*else*/ { + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 696, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_7 = __pyx_t_2; + __Pyx_INCREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__Pyx_PyObject_SetAttrStr(__pyx_v_frame, __pyx_n_s_f_trace, __pyx_t_7) < 0) __PYX_ERR(0, 696, __pyx_L23_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __pyx_L45:; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":684 + * thread_info.thread_trace_func = trace_func + * + * if additional_info.pydev_step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE, CMD_STEP_INTO_COROUTINE, CMD_SMART_STEP_INTO) or \ # <<<<<<<<<<<<<< + * main_debugger.break_on_caught_exceptions or \ + * main_debugger.break_on_user_uncaught_exceptions or \ + */ + goto __pyx_L30; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":698 + * frame.f_trace = main_debugger.trace_dispatch + * else: + * func_code_info: FuncCodeInfo = get_func_code_info(thread_info, frame_obj, frame_obj.f_code) # <<<<<<<<<<<<<< + * # if DEBUG: + * # print('get_bytecode_while_frame_eval always skip', func_code_info.always_skip_code) + */ + /*else*/ { + __pyx_t_7 = ((PyObject *)__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_get_func_code_info(__pyx_v_thread_info, __pyx_v_frame_obj, __pyx_v_frame_obj->f_code)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 698, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_v_func_code_info = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_t_7); + __pyx_t_7 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":701 + * # if DEBUG: + * # print('get_bytecode_while_frame_eval always skip', func_code_info.always_skip_code) + * if not func_code_info.always_skip_code: # <<<<<<<<<<<<<< + * + * if main_debugger.has_plugin_line_breaks or main_debugger.has_plugin_exception_breaks: + */ + __pyx_t_1 = (!__pyx_v_func_code_info->always_skip_code); + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":703 + * if not func_code_info.always_skip_code: + * + * if main_debugger.has_plugin_line_breaks or main_debugger.has_plugin_exception_breaks: # <<<<<<<<<<<<<< + * can_skip = main_debugger.plugin.can_skip(main_debugger, frame_obj) + * + */ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_has_plugin_line_breaks); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 703, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 703, __pyx_L23_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (!__pyx_t_3) { + } else { + __pyx_t_1 = __pyx_t_3; + goto __pyx_L48_bool_binop_done; + } + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_has_plugin_exception_breaks); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 703, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 703, __pyx_L23_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_1 = __pyx_t_3; + __pyx_L48_bool_binop_done:; + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":704 + * + * if main_debugger.has_plugin_line_breaks or main_debugger.has_plugin_exception_breaks: + * can_skip = main_debugger.plugin.can_skip(main_debugger, frame_obj) # <<<<<<<<<<<<<< + * + * if not can_skip: + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_plugin); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 704, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_can_skip); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 704, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_10 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + __pyx_t_10 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_v_main_debugger, ((PyObject *)__pyx_v_frame_obj)}; + __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_10, 2+__pyx_t_10); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 704, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 704, __pyx_L23_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_v_can_skip = __pyx_t_1; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":706 + * can_skip = main_debugger.plugin.can_skip(main_debugger, frame_obj) + * + * if not can_skip: # <<<<<<<<<<<<<< + * # if DEBUG: + * # print('get_bytecode_while_frame_eval not can_skip') + */ + __pyx_t_1 = (!__pyx_v_can_skip); + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":709 + * # if DEBUG: + * # print('get_bytecode_while_frame_eval not can_skip') + * if thread_info.thread_trace_func is not None: # <<<<<<<<<<<<<< + * frame.f_trace = thread_info.thread_trace_func + * else: + */ + __pyx_t_1 = (__pyx_v_thread_info->thread_trace_func != Py_None); + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":710 + * # print('get_bytecode_while_frame_eval not can_skip') + * if thread_info.thread_trace_func is not None: + * frame.f_trace = thread_info.thread_trace_func # <<<<<<<<<<<<<< + * else: + * frame.f_trace = main_debugger.trace_dispatch + */ + __pyx_t_7 = __pyx_v_thread_info->thread_trace_func; + __Pyx_INCREF(__pyx_t_7); + if (__Pyx_PyObject_SetAttrStr(__pyx_v_frame, __pyx_n_s_f_trace, __pyx_t_7) < 0) __PYX_ERR(0, 710, __pyx_L23_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":709 + * # if DEBUG: + * # print('get_bytecode_while_frame_eval not can_skip') + * if thread_info.thread_trace_func is not None: # <<<<<<<<<<<<<< + * frame.f_trace = thread_info.thread_trace_func + * else: + */ + goto __pyx_L51; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":712 + * frame.f_trace = thread_info.thread_trace_func + * else: + * frame.f_trace = main_debugger.trace_dispatch # <<<<<<<<<<<<<< + * + * if can_skip and func_code_info.breakpoint_found: + */ + /*else*/ { + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 712, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = __pyx_t_7; + __Pyx_INCREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (__Pyx_PyObject_SetAttrStr(__pyx_v_frame, __pyx_n_s_f_trace, __pyx_t_8) < 0) __PYX_ERR(0, 712, __pyx_L23_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + __pyx_L51:; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":706 + * can_skip = main_debugger.plugin.can_skip(main_debugger, frame_obj) + * + * if not can_skip: # <<<<<<<<<<<<<< + * # if DEBUG: + * # print('get_bytecode_while_frame_eval not can_skip') + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":703 + * if not func_code_info.always_skip_code: + * + * if main_debugger.has_plugin_line_breaks or main_debugger.has_plugin_exception_breaks: # <<<<<<<<<<<<<< + * can_skip = main_debugger.plugin.can_skip(main_debugger, frame_obj) + * + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":714 + * frame.f_trace = main_debugger.trace_dispatch + * + * if can_skip and func_code_info.breakpoint_found: # <<<<<<<<<<<<<< + * # if DEBUG: + * # print('get_bytecode_while_frame_eval new_code', func_code_info.new_code) + */ + if (__pyx_v_can_skip) { + } else { + __pyx_t_1 = __pyx_v_can_skip; + goto __pyx_L53_bool_binop_done; + } + __pyx_t_1 = __pyx_v_func_code_info->breakpoint_found; + __pyx_L53_bool_binop_done:; + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":717 + * # if DEBUG: + * # print('get_bytecode_while_frame_eval new_code', func_code_info.new_code) + * if not thread_info.force_stay_in_untraced_mode: # <<<<<<<<<<<<<< + * # If breakpoints are found but new_code is None, + * # this means we weren't able to actually add the code + */ + __pyx_t_1 = (!__pyx_v_thread_info->force_stay_in_untraced_mode); + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":721 + * # this means we weren't able to actually add the code + * # where needed, so, fallback to tracing. + * if func_code_info.new_code is None: # <<<<<<<<<<<<<< + * if thread_info.thread_trace_func is not None: + * frame.f_trace = thread_info.thread_trace_func + */ + __pyx_t_1 = (__pyx_v_func_code_info->new_code == Py_None); + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":722 + * # where needed, so, fallback to tracing. + * if func_code_info.new_code is None: + * if thread_info.thread_trace_func is not None: # <<<<<<<<<<<<<< + * frame.f_trace = thread_info.thread_trace_func + * else: + */ + __pyx_t_1 = (__pyx_v_thread_info->thread_trace_func != Py_None); + if (__pyx_t_1) { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":723 + * if func_code_info.new_code is None: + * if thread_info.thread_trace_func is not None: + * frame.f_trace = thread_info.thread_trace_func # <<<<<<<<<<<<<< + * else: + * frame.f_trace = main_debugger.trace_dispatch + */ + __pyx_t_8 = __pyx_v_thread_info->thread_trace_func; + __Pyx_INCREF(__pyx_t_8); + if (__Pyx_PyObject_SetAttrStr(__pyx_v_frame, __pyx_n_s_f_trace, __pyx_t_8) < 0) __PYX_ERR(0, 723, __pyx_L23_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":722 + * # where needed, so, fallback to tracing. + * if func_code_info.new_code is None: + * if thread_info.thread_trace_func is not None: # <<<<<<<<<<<<<< + * frame.f_trace = thread_info.thread_trace_func + * else: + */ + goto __pyx_L57; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":725 + * frame.f_trace = thread_info.thread_trace_func + * else: + * frame.f_trace = main_debugger.trace_dispatch # <<<<<<<<<<<<<< + * else: + * # print('Using frame eval break for', frame_obj.f_code.co_name) + */ + /*else*/ { + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_main_debugger, __pyx_n_s_trace_dispatch); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 725, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_7 = __pyx_t_8; + __Pyx_INCREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (__Pyx_PyObject_SetAttrStr(__pyx_v_frame, __pyx_n_s_f_trace, __pyx_t_7) < 0) __PYX_ERR(0, 725, __pyx_L23_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __pyx_L57:; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":721 + * # this means we weren't able to actually add the code + * # where needed, so, fallback to tracing. + * if func_code_info.new_code is None: # <<<<<<<<<<<<<< + * if thread_info.thread_trace_func is not None: + * frame.f_trace = thread_info.thread_trace_func + */ + goto __pyx_L56; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":728 + * else: + * # print('Using frame eval break for', frame_obj.f_code.co_name) + * update_globals_dict( frame_obj.f_globals) # <<<<<<<<<<<<<< + * Py_INCREF(func_code_info.new_code) + * old = frame_obj.f_code + */ + /*else*/ { + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_update_globals_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 728, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_2 = NULL; + __pyx_t_10 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + __pyx_t_10 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, ((PyObject *)__pyx_v_frame_obj->f_globals)}; + __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_10, 1+__pyx_t_10); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 728, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":729 + * # print('Using frame eval break for', frame_obj.f_code.co_name) + * update_globals_dict( frame_obj.f_globals) + * Py_INCREF(func_code_info.new_code) # <<<<<<<<<<<<<< + * old = frame_obj.f_code + * frame_obj.f_code = func_code_info.new_code + */ + __pyx_t_7 = __pyx_v_func_code_info->new_code; + __Pyx_INCREF(__pyx_t_7); + Py_INCREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":730 + * update_globals_dict( frame_obj.f_globals) + * Py_INCREF(func_code_info.new_code) + * old = frame_obj.f_code # <<<<<<<<<<<<<< + * frame_obj.f_code = func_code_info.new_code + * Py_DECREF(old) + */ + __pyx_t_7 = ((PyObject *)__pyx_v_frame_obj->f_code); + __Pyx_INCREF(__pyx_t_7); + __pyx_v_old = __pyx_t_7; + __pyx_t_7 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":731 + * Py_INCREF(func_code_info.new_code) + * old = frame_obj.f_code + * frame_obj.f_code = func_code_info.new_code # <<<<<<<<<<<<<< + * Py_DECREF(old) + * else: + */ + __pyx_v_frame_obj->f_code = ((PyCodeObject *)__pyx_v_func_code_info->new_code); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":732 + * old = frame_obj.f_code + * frame_obj.f_code = func_code_info.new_code + * Py_DECREF(old) # <<<<<<<<<<<<<< + * else: + * # When we're forcing to stay in traced mode we need to + */ + Py_DECREF(__pyx_v_old); + } + __pyx_L56:; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":717 + * # if DEBUG: + * # print('get_bytecode_while_frame_eval new_code', func_code_info.new_code) + * if not thread_info.force_stay_in_untraced_mode: # <<<<<<<<<<<<<< + * # If breakpoints are found but new_code is None, + * # this means we weren't able to actually add the code + */ + goto __pyx_L55; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":737 + * # update the globals dict (because this means that we're reusing + * # a previous code which had breakpoints added in a new frame). + * update_globals_dict( frame_obj.f_globals) # <<<<<<<<<<<<<< + * + * finally: + */ + /*else*/ { + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_update_globals_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 737, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_2 = NULL; + __pyx_t_10 = 0; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + __pyx_t_10 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, ((PyObject *)__pyx_v_frame_obj->f_globals)}; + __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_10, 1+__pyx_t_10); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 737, __pyx_L23_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __pyx_L55:; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":714 + * frame.f_trace = main_debugger.trace_dispatch + * + * if can_skip and func_code_info.breakpoint_found: # <<<<<<<<<<<<<< + * # if DEBUG: + * # print('get_bytecode_while_frame_eval new_code', func_code_info.new_code) + */ + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":701 + * # if DEBUG: + * # print('get_bytecode_while_frame_eval always skip', func_code_info.always_skip_code) + * if not func_code_info.always_skip_code: # <<<<<<<<<<<<<< + * + * if main_debugger.has_plugin_line_breaks or main_debugger.has_plugin_exception_breaks: + */ + } + } + __pyx_L30:; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":740 + * + * finally: + * thread_info.inside_frame_eval -= 1 # <<<<<<<<<<<<<< + * additional_info.is_tracing = False + * + */ + /*finally:*/ { + /*normal exit:*/{ + __pyx_v_thread_info->inside_frame_eval = (__pyx_v_thread_info->inside_frame_eval - 1); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":741 + * finally: + * thread_info.inside_frame_eval -= 1 + * additional_info.is_tracing = False # <<<<<<<<<<<<<< + * + * return CALL_EvalFrameDefault_39(tstate, frame_obj, exc) + */ + __pyx_v_additional_info->is_tracing = 0; + goto __pyx_L24; + } + __pyx_L23_error:; + /*exception exit:*/{ + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4) < 0)) __Pyx_ErrFetch(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4); + __Pyx_XGOTREF(__pyx_t_6); + __Pyx_XGOTREF(__pyx_t_5); + __Pyx_XGOTREF(__pyx_t_4); + __Pyx_XGOTREF(__pyx_t_16); + __Pyx_XGOTREF(__pyx_t_17); + __Pyx_XGOTREF(__pyx_t_18); + __pyx_t_12 = __pyx_lineno; __pyx_t_14 = __pyx_clineno; __pyx_t_15 = __pyx_filename; + { + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":740 + * + * finally: + * thread_info.inside_frame_eval -= 1 # <<<<<<<<<<<<<< + * additional_info.is_tracing = False + * + */ + __pyx_v_thread_info->inside_frame_eval = (__pyx_v_thread_info->inside_frame_eval - 1); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":741 + * finally: + * thread_info.inside_frame_eval -= 1 + * additional_info.is_tracing = False # <<<<<<<<<<<<<< + * + * return CALL_EvalFrameDefault_39(tstate, frame_obj, exc) + */ + __pyx_v_additional_info->is_tracing = 0; + } + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_16); + __Pyx_XGIVEREF(__pyx_t_17); + __Pyx_XGIVEREF(__pyx_t_18); + __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18); + } + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_XGIVEREF(__pyx_t_5); + __Pyx_XGIVEREF(__pyx_t_4); + __Pyx_ErrRestore(__pyx_t_6, __pyx_t_5, __pyx_t_4); + __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; + __pyx_lineno = __pyx_t_12; __pyx_clineno = __pyx_t_14; __pyx_filename = __pyx_t_15; + goto __pyx_L1_error; + } + __pyx_L22_return: { + __pyx_t_19 = __pyx_r; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":740 + * + * finally: + * thread_info.inside_frame_eval -= 1 # <<<<<<<<<<<<<< + * additional_info.is_tracing = False + * + */ + __pyx_v_thread_info->inside_frame_eval = (__pyx_v_thread_info->inside_frame_eval - 1); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":741 + * finally: + * thread_info.inside_frame_eval -= 1 + * additional_info.is_tracing = False # <<<<<<<<<<<<<< + * + * return CALL_EvalFrameDefault_39(tstate, frame_obj, exc) + */ + __pyx_v_additional_info->is_tracing = 0; + __pyx_r = __pyx_t_19; + goto __pyx_L0; + } + __pyx_L24:; + } + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":743 + * additional_info.is_tracing = False + * + * return CALL_EvalFrameDefault_39(tstate, frame_obj, exc) # <<<<<<<<<<<<<< + * ### WARNING: GENERATED CODE, DO NOT EDIT! + * ### WARNING: GENERATED CODE, DO NOT EDIT! + */ + __pyx_r = CALL_EvalFrameDefault_39(__pyx_v_tstate, __pyx_v_frame_obj, __pyx_v_exc); + goto __pyx_L0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":623 + * ### WARNING: GENERATED CODE, DO NOT EDIT! + * ### WARNING: GENERATED CODE, DO NOT EDIT! + * cdef PyObject * get_bytecode_while_frame_eval_39(PyThreadState* tstate, PyFrameObject * frame_obj, int exc): # <<<<<<<<<<<<<< + * ''' + * This function makes the actual evaluation and changes the bytecode to a version + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.get_bytecode_while_frame_eval_39", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_thread_info); + __Pyx_XDECREF((PyObject *)__pyx_v_additional_info); + __Pyx_XDECREF(__pyx_v_main_debugger); + __Pyx_XDECREF(__pyx_v_frame); + __Pyx_XDECREF(__pyx_v_trace_func); + __Pyx_XDECREF(__pyx_v_apply_to_global); + __Pyx_XDECREF((PyObject *)__pyx_v_func_code_info); + __Pyx_XDECREF(__pyx_v_old); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __pyx_unpickle_ThreadInfo(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError + * cdef object __pyx_result + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_21__pyx_unpickle_ThreadInfo(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_21__pyx_unpickle_ThreadInfo = {"__pyx_unpickle_ThreadInfo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_21__pyx_unpickle_ThreadInfo, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_21__pyx_unpickle_ThreadInfo(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v___pyx_type = 0; + long __pyx_v___pyx_checksum; + PyObject *__pyx_v___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__pyx_unpickle_ThreadInfo (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_type)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_checksum)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ThreadInfo", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ThreadInfo", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__pyx_unpickle_ThreadInfo") < 0)) __PYX_ERR(1, 1, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 3)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + } + __pyx_v___pyx_type = values[0]; + __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) + __pyx_v___pyx_state = values[2]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ThreadInfo", 1, 3, 3, __pyx_nargs); __PYX_ERR(1, 1, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.__pyx_unpickle_ThreadInfo", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_20__pyx_unpickle_ThreadInfo(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_20__pyx_unpickle_ThreadInfo(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_v___pyx_PickleError = 0; + PyObject *__pyx_v___pyx_result = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + unsigned int __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_unpickle_ThreadInfo", 1); + + /* "(tree fragment)":4 + * cdef object __pyx_PickleError + * cdef object __pyx_result + * if __pyx_checksum not in (0xe535b68, 0xb8148ba, 0x0af4089): # <<<<<<<<<<<<<< + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe535b68, 0xb8148ba, 0x0af4089) = (_can_create_dummy_thread, additional_info, force_stay_in_untraced_mode, fully_initialized, inside_frame_eval, is_pydevd_thread, thread_trace_func))" % __pyx_checksum + */ + __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__6, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_2) { + + /* "(tree fragment)":5 + * cdef object __pyx_result + * if __pyx_checksum not in (0xe535b68, 0xb8148ba, 0x0af4089): + * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe535b68, 0xb8148ba, 0x0af4089) = (_can_create_dummy_thread, additional_info, force_stay_in_untraced_mode, fully_initialized, inside_frame_eval, is_pydevd_thread, thread_trace_func))" % __pyx_checksum + * __pyx_result = ThreadInfo.__new__(__pyx_type) + */ + __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_n_s_PickleError); + __Pyx_GIVEREF(__pyx_n_s_PickleError); + if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PickleError)) __PYX_ERR(1, 5, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_t_1); + __pyx_v___pyx_PickleError = __pyx_t_1; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "(tree fragment)":6 + * if __pyx_checksum not in (0xe535b68, 0xb8148ba, 0x0af4089): + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe535b68, 0xb8148ba, 0x0af4089) = (_can_create_dummy_thread, additional_info, force_stay_in_untraced_mode, fully_initialized, inside_frame_eval, is_pydevd_thread, thread_trace_func))" % __pyx_checksum # <<<<<<<<<<<<<< + * __pyx_result = ThreadInfo.__new__(__pyx_type) + * if __pyx_state is not None: + */ + __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_0x_x_vs_0, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_Raise(__pyx_v___pyx_PickleError, __pyx_t_1, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(1, 6, __pyx_L1_error) + + /* "(tree fragment)":4 + * cdef object __pyx_PickleError + * cdef object __pyx_result + * if __pyx_checksum not in (0xe535b68, 0xb8148ba, 0x0af4089): # <<<<<<<<<<<<<< + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe535b68, 0xb8148ba, 0x0af4089) = (_can_create_dummy_thread, additional_info, force_stay_in_untraced_mode, fully_initialized, inside_frame_eval, is_pydevd_thread, thread_trace_func))" % __pyx_checksum + */ + } + + /* "(tree fragment)":7 + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe535b68, 0xb8148ba, 0x0af4089) = (_can_create_dummy_thread, additional_info, force_stay_in_untraced_mode, fully_initialized, inside_frame_eval, is_pydevd_thread, thread_trace_func))" % __pyx_checksum + * __pyx_result = ThreadInfo.__new__(__pyx_type) # <<<<<<<<<<<<<< + * if __pyx_state is not None: + * __pyx_unpickle_ThreadInfo__set_state( __pyx_result, __pyx_state) + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo), __pyx_n_s_new); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v___pyx_type}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_v___pyx_result = __pyx_t_1; + __pyx_t_1 = 0; + + /* "(tree fragment)":8 + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe535b68, 0xb8148ba, 0x0af4089) = (_can_create_dummy_thread, additional_info, force_stay_in_untraced_mode, fully_initialized, inside_frame_eval, is_pydevd_thread, thread_trace_func))" % __pyx_checksum + * __pyx_result = ThreadInfo.__new__(__pyx_type) + * if __pyx_state is not None: # <<<<<<<<<<<<<< + * __pyx_unpickle_ThreadInfo__set_state( __pyx_result, __pyx_state) + * return __pyx_result + */ + __pyx_t_2 = (__pyx_v___pyx_state != Py_None); + if (__pyx_t_2) { + + /* "(tree fragment)":9 + * __pyx_result = ThreadInfo.__new__(__pyx_type) + * if __pyx_state is not None: + * __pyx_unpickle_ThreadInfo__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< + * return __pyx_result + * cdef __pyx_unpickle_ThreadInfo__set_state(ThreadInfo __pyx_result, tuple __pyx_state): + */ + if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(1, 9, __pyx_L1_error) + __pyx_t_1 = __pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unpickle_ThreadInfo__set_state(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":8 + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe535b68, 0xb8148ba, 0x0af4089) = (_can_create_dummy_thread, additional_info, force_stay_in_untraced_mode, fully_initialized, inside_frame_eval, is_pydevd_thread, thread_trace_func))" % __pyx_checksum + * __pyx_result = ThreadInfo.__new__(__pyx_type) + * if __pyx_state is not None: # <<<<<<<<<<<<<< + * __pyx_unpickle_ThreadInfo__set_state( __pyx_result, __pyx_state) + * return __pyx_result + */ + } + + /* "(tree fragment)":10 + * if __pyx_state is not None: + * __pyx_unpickle_ThreadInfo__set_state( __pyx_result, __pyx_state) + * return __pyx_result # <<<<<<<<<<<<<< + * cdef __pyx_unpickle_ThreadInfo__set_state(ThreadInfo __pyx_result, tuple __pyx_state): + * __pyx_result._can_create_dummy_thread = __pyx_state[0]; __pyx_result.additional_info = __pyx_state[1]; __pyx_result.force_stay_in_untraced_mode = __pyx_state[2]; __pyx_result.fully_initialized = __pyx_state[3]; __pyx_result.inside_frame_eval = __pyx_state[4]; __pyx_result.is_pydevd_thread = __pyx_state[5]; __pyx_result.thread_trace_func = __pyx_state[6] + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v___pyx_result); + __pyx_r = __pyx_v___pyx_result; + goto __pyx_L0; + + /* "(tree fragment)":1 + * def __pyx_unpickle_ThreadInfo(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError + * cdef object __pyx_result + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.__pyx_unpickle_ThreadInfo", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v___pyx_PickleError); + __Pyx_XDECREF(__pyx_v___pyx_result); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":11 + * __pyx_unpickle_ThreadInfo__set_state( __pyx_result, __pyx_state) + * return __pyx_result + * cdef __pyx_unpickle_ThreadInfo__set_state(ThreadInfo __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< + * __pyx_result._can_create_dummy_thread = __pyx_state[0]; __pyx_result.additional_info = __pyx_state[1]; __pyx_result.force_stay_in_untraced_mode = __pyx_state[2]; __pyx_result.fully_initialized = __pyx_state[3]; __pyx_result.inside_frame_eval = __pyx_state[4]; __pyx_result.is_pydevd_thread = __pyx_state[5]; __pyx_result.thread_trace_func = __pyx_state[6] + * if len(__pyx_state) > 7 and hasattr(__pyx_result, '__dict__'): + */ + +static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unpickle_ThreadInfo__set_state(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + int __pyx_t_3; + Py_ssize_t __pyx_t_4; + int __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + unsigned int __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_unpickle_ThreadInfo__set_state", 1); + + /* "(tree fragment)":12 + * return __pyx_result + * cdef __pyx_unpickle_ThreadInfo__set_state(ThreadInfo __pyx_result, tuple __pyx_state): + * __pyx_result._can_create_dummy_thread = __pyx_state[0]; __pyx_result.additional_info = __pyx_state[1]; __pyx_result.force_stay_in_untraced_mode = __pyx_state[2]; __pyx_result.fully_initialized = __pyx_state[3]; __pyx_result.inside_frame_eval = __pyx_state[4]; __pyx_result.is_pydevd_thread = __pyx_state[5]; __pyx_result.thread_trace_func = __pyx_state[6] # <<<<<<<<<<<<<< + * if len(__pyx_state) > 7 and hasattr(__pyx_result, '__dict__'): + * __pyx_result.__dict__.update(__pyx_state[7]) + */ + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(1, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v___pyx_result->_can_create_dummy_thread = __pyx_t_2; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(1, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo))))) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF((PyObject *)__pyx_v___pyx_result->additional_info); + __Pyx_DECREF((PyObject *)__pyx_v___pyx_result->additional_info); + __pyx_v___pyx_result->additional_info = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)__pyx_t_1); + __pyx_t_1 = 0; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(1, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v___pyx_result->force_stay_in_untraced_mode = __pyx_t_2; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(1, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v___pyx_result->fully_initialized = __pyx_t_2; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(1, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v___pyx_result->inside_frame_eval = __pyx_t_3; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(1, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 5, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v___pyx_result->is_pydevd_thread = __pyx_t_2; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(1, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 6, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v___pyx_result->thread_trace_func); + __Pyx_DECREF(__pyx_v___pyx_result->thread_trace_func); + __pyx_v___pyx_result->thread_trace_func = __pyx_t_1; + __pyx_t_1 = 0; + + /* "(tree fragment)":13 + * cdef __pyx_unpickle_ThreadInfo__set_state(ThreadInfo __pyx_result, tuple __pyx_state): + * __pyx_result._can_create_dummy_thread = __pyx_state[0]; __pyx_result.additional_info = __pyx_state[1]; __pyx_result.force_stay_in_untraced_mode = __pyx_state[2]; __pyx_result.fully_initialized = __pyx_state[3]; __pyx_result.inside_frame_eval = __pyx_state[4]; __pyx_result.is_pydevd_thread = __pyx_state[5]; __pyx_result.thread_trace_func = __pyx_state[6] + * if len(__pyx_state) > 7 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< + * __pyx_result.__dict__.update(__pyx_state[7]) + */ + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(1, 13, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error) + __pyx_t_5 = (__pyx_t_4 > 7); + if (__pyx_t_5) { + } else { + __pyx_t_2 = __pyx_t_5; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error) + __pyx_t_2 = __pyx_t_5; + __pyx_L4_bool_binop_done:; + if (__pyx_t_2) { + + /* "(tree fragment)":14 + * __pyx_result._can_create_dummy_thread = __pyx_state[0]; __pyx_result.additional_info = __pyx_state[1]; __pyx_result.force_stay_in_untraced_mode = __pyx_state[2]; __pyx_result.fully_initialized = __pyx_state[3]; __pyx_result.inside_frame_eval = __pyx_state[4]; __pyx_result.is_pydevd_thread = __pyx_state[5]; __pyx_result.thread_trace_func = __pyx_state[6] + * if len(__pyx_state) > 7 and hasattr(__pyx_result, '__dict__'): + * __pyx_result.__dict__.update(__pyx_state[7]) # <<<<<<<<<<<<<< + */ + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(1, 14, __pyx_L1_error) + } + __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 7, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_8 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_6}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":13 + * cdef __pyx_unpickle_ThreadInfo__set_state(ThreadInfo __pyx_result, tuple __pyx_state): + * __pyx_result._can_create_dummy_thread = __pyx_state[0]; __pyx_result.additional_info = __pyx_state[1]; __pyx_result.force_stay_in_untraced_mode = __pyx_state[2]; __pyx_result.fully_initialized = __pyx_state[3]; __pyx_result.inside_frame_eval = __pyx_state[4]; __pyx_result.is_pydevd_thread = __pyx_state[5]; __pyx_result.thread_trace_func = __pyx_state[6] + * if len(__pyx_state) > 7 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< + * __pyx_result.__dict__.update(__pyx_state[7]) + */ + } + + /* "(tree fragment)":11 + * __pyx_unpickle_ThreadInfo__set_state( __pyx_result, __pyx_state) + * return __pyx_result + * cdef __pyx_unpickle_ThreadInfo__set_state(ThreadInfo __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< + * __pyx_result._can_create_dummy_thread = __pyx_state[0]; __pyx_result.additional_info = __pyx_state[1]; __pyx_result.force_stay_in_untraced_mode = __pyx_state[2]; __pyx_result.fully_initialized = __pyx_state[3]; __pyx_result.inside_frame_eval = __pyx_state[4]; __pyx_result.is_pydevd_thread = __pyx_state[5]; __pyx_result.thread_trace_func = __pyx_state[6] + * if len(__pyx_state) > 7 and hasattr(__pyx_result, '__dict__'): + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.__pyx_unpickle_ThreadInfo__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __pyx_unpickle_FuncCodeInfo(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError + * cdef object __pyx_result + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_23__pyx_unpickle_FuncCodeInfo(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_23__pyx_unpickle_FuncCodeInfo = {"__pyx_unpickle_FuncCodeInfo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_23__pyx_unpickle_FuncCodeInfo, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_23__pyx_unpickle_FuncCodeInfo(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v___pyx_type = 0; + long __pyx_v___pyx_checksum; + PyObject *__pyx_v___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__pyx_unpickle_FuncCodeInfo (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_type)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_checksum)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_FuncCodeInfo", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_FuncCodeInfo", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__pyx_unpickle_FuncCodeInfo") < 0)) __PYX_ERR(1, 1, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 3)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + } + __pyx_v___pyx_type = values[0]; + __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) + __pyx_v___pyx_state = values[2]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_FuncCodeInfo", 1, 3, 3, __pyx_nargs); __PYX_ERR(1, 1, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.__pyx_unpickle_FuncCodeInfo", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_22__pyx_unpickle_FuncCodeInfo(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_22__pyx_unpickle_FuncCodeInfo(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_v___pyx_PickleError = 0; + PyObject *__pyx_v___pyx_result = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + unsigned int __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_unpickle_FuncCodeInfo", 1); + + /* "(tree fragment)":4 + * cdef object __pyx_PickleError + * cdef object __pyx_result + * if __pyx_checksum not in (0x450d2d6, 0x956dcaa, 0xb3ee05d): # <<<<<<<<<<<<<< + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x450d2d6, 0x956dcaa, 0xb3ee05d) = (always_skip_code, breakpoint_found, breakpoints_mtime, canonical_normalized_filename, co_filename, co_name, new_code))" % __pyx_checksum + */ + __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__7, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_2) { + + /* "(tree fragment)":5 + * cdef object __pyx_result + * if __pyx_checksum not in (0x450d2d6, 0x956dcaa, 0xb3ee05d): + * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x450d2d6, 0x956dcaa, 0xb3ee05d) = (always_skip_code, breakpoint_found, breakpoints_mtime, canonical_normalized_filename, co_filename, co_name, new_code))" % __pyx_checksum + * __pyx_result = FuncCodeInfo.__new__(__pyx_type) + */ + __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_n_s_PickleError); + __Pyx_GIVEREF(__pyx_n_s_PickleError); + if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PickleError)) __PYX_ERR(1, 5, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_t_1); + __pyx_v___pyx_PickleError = __pyx_t_1; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "(tree fragment)":6 + * if __pyx_checksum not in (0x450d2d6, 0x956dcaa, 0xb3ee05d): + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x450d2d6, 0x956dcaa, 0xb3ee05d) = (always_skip_code, breakpoint_found, breakpoints_mtime, canonical_normalized_filename, co_filename, co_name, new_code))" % __pyx_checksum # <<<<<<<<<<<<<< + * __pyx_result = FuncCodeInfo.__new__(__pyx_type) + * if __pyx_state is not None: + */ + __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_Raise(__pyx_v___pyx_PickleError, __pyx_t_1, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(1, 6, __pyx_L1_error) + + /* "(tree fragment)":4 + * cdef object __pyx_PickleError + * cdef object __pyx_result + * if __pyx_checksum not in (0x450d2d6, 0x956dcaa, 0xb3ee05d): # <<<<<<<<<<<<<< + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x450d2d6, 0x956dcaa, 0xb3ee05d) = (always_skip_code, breakpoint_found, breakpoints_mtime, canonical_normalized_filename, co_filename, co_name, new_code))" % __pyx_checksum + */ + } + + /* "(tree fragment)":7 + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x450d2d6, 0x956dcaa, 0xb3ee05d) = (always_skip_code, breakpoint_found, breakpoints_mtime, canonical_normalized_filename, co_filename, co_name, new_code))" % __pyx_checksum + * __pyx_result = FuncCodeInfo.__new__(__pyx_type) # <<<<<<<<<<<<<< + * if __pyx_state is not None: + * __pyx_unpickle_FuncCodeInfo__set_state( __pyx_result, __pyx_state) + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo), __pyx_n_s_new); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v___pyx_type}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_v___pyx_result = __pyx_t_1; + __pyx_t_1 = 0; + + /* "(tree fragment)":8 + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x450d2d6, 0x956dcaa, 0xb3ee05d) = (always_skip_code, breakpoint_found, breakpoints_mtime, canonical_normalized_filename, co_filename, co_name, new_code))" % __pyx_checksum + * __pyx_result = FuncCodeInfo.__new__(__pyx_type) + * if __pyx_state is not None: # <<<<<<<<<<<<<< + * __pyx_unpickle_FuncCodeInfo__set_state( __pyx_result, __pyx_state) + * return __pyx_result + */ + __pyx_t_2 = (__pyx_v___pyx_state != Py_None); + if (__pyx_t_2) { + + /* "(tree fragment)":9 + * __pyx_result = FuncCodeInfo.__new__(__pyx_type) + * if __pyx_state is not None: + * __pyx_unpickle_FuncCodeInfo__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< + * return __pyx_result + * cdef __pyx_unpickle_FuncCodeInfo__set_state(FuncCodeInfo __pyx_result, tuple __pyx_state): + */ + if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(1, 9, __pyx_L1_error) + __pyx_t_1 = __pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unpickle_FuncCodeInfo__set_state(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":8 + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x450d2d6, 0x956dcaa, 0xb3ee05d) = (always_skip_code, breakpoint_found, breakpoints_mtime, canonical_normalized_filename, co_filename, co_name, new_code))" % __pyx_checksum + * __pyx_result = FuncCodeInfo.__new__(__pyx_type) + * if __pyx_state is not None: # <<<<<<<<<<<<<< + * __pyx_unpickle_FuncCodeInfo__set_state( __pyx_result, __pyx_state) + * return __pyx_result + */ + } + + /* "(tree fragment)":10 + * if __pyx_state is not None: + * __pyx_unpickle_FuncCodeInfo__set_state( __pyx_result, __pyx_state) + * return __pyx_result # <<<<<<<<<<<<<< + * cdef __pyx_unpickle_FuncCodeInfo__set_state(FuncCodeInfo __pyx_result, tuple __pyx_state): + * __pyx_result.always_skip_code = __pyx_state[0]; __pyx_result.breakpoint_found = __pyx_state[1]; __pyx_result.breakpoints_mtime = __pyx_state[2]; __pyx_result.canonical_normalized_filename = __pyx_state[3]; __pyx_result.co_filename = __pyx_state[4]; __pyx_result.co_name = __pyx_state[5]; __pyx_result.new_code = __pyx_state[6] + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v___pyx_result); + __pyx_r = __pyx_v___pyx_result; + goto __pyx_L0; + + /* "(tree fragment)":1 + * def __pyx_unpickle_FuncCodeInfo(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError + * cdef object __pyx_result + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.__pyx_unpickle_FuncCodeInfo", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v___pyx_PickleError); + __Pyx_XDECREF(__pyx_v___pyx_result); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":11 + * __pyx_unpickle_FuncCodeInfo__set_state( __pyx_result, __pyx_state) + * return __pyx_result + * cdef __pyx_unpickle_FuncCodeInfo__set_state(FuncCodeInfo __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< + * __pyx_result.always_skip_code = __pyx_state[0]; __pyx_result.breakpoint_found = __pyx_state[1]; __pyx_result.breakpoints_mtime = __pyx_state[2]; __pyx_result.canonical_normalized_filename = __pyx_state[3]; __pyx_result.co_filename = __pyx_state[4]; __pyx_result.co_name = __pyx_state[5]; __pyx_result.new_code = __pyx_state[6] + * if len(__pyx_state) > 7 and hasattr(__pyx_result, '__dict__'): + */ + +static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unpickle_FuncCodeInfo__set_state(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + int __pyx_t_3; + Py_ssize_t __pyx_t_4; + int __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + unsigned int __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_unpickle_FuncCodeInfo__set_state", 1); + + /* "(tree fragment)":12 + * return __pyx_result + * cdef __pyx_unpickle_FuncCodeInfo__set_state(FuncCodeInfo __pyx_result, tuple __pyx_state): + * __pyx_result.always_skip_code = __pyx_state[0]; __pyx_result.breakpoint_found = __pyx_state[1]; __pyx_result.breakpoints_mtime = __pyx_state[2]; __pyx_result.canonical_normalized_filename = __pyx_state[3]; __pyx_result.co_filename = __pyx_state[4]; __pyx_result.co_name = __pyx_state[5]; __pyx_result.new_code = __pyx_state[6] # <<<<<<<<<<<<<< + * if len(__pyx_state) > 7 and hasattr(__pyx_result, '__dict__'): + * __pyx_result.__dict__.update(__pyx_state[7]) + */ + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(1, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v___pyx_result->always_skip_code = __pyx_t_2; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(1, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v___pyx_result->breakpoint_found = __pyx_t_2; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(1, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v___pyx_result->breakpoints_mtime = __pyx_t_3; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(1, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_1))) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v___pyx_result->canonical_normalized_filename); + __Pyx_DECREF(__pyx_v___pyx_result->canonical_normalized_filename); + __pyx_v___pyx_result->canonical_normalized_filename = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(1, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_1))) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v___pyx_result->co_filename); + __Pyx_DECREF(__pyx_v___pyx_result->co_filename); + __pyx_v___pyx_result->co_filename = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(1, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 5, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_1))) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v___pyx_result->co_name); + __Pyx_DECREF(__pyx_v___pyx_result->co_name); + __pyx_v___pyx_result->co_name = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(1, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 6, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v___pyx_result->new_code); + __Pyx_DECREF(__pyx_v___pyx_result->new_code); + __pyx_v___pyx_result->new_code = __pyx_t_1; + __pyx_t_1 = 0; + + /* "(tree fragment)":13 + * cdef __pyx_unpickle_FuncCodeInfo__set_state(FuncCodeInfo __pyx_result, tuple __pyx_state): + * __pyx_result.always_skip_code = __pyx_state[0]; __pyx_result.breakpoint_found = __pyx_state[1]; __pyx_result.breakpoints_mtime = __pyx_state[2]; __pyx_result.canonical_normalized_filename = __pyx_state[3]; __pyx_result.co_filename = __pyx_state[4]; __pyx_result.co_name = __pyx_state[5]; __pyx_result.new_code = __pyx_state[6] + * if len(__pyx_state) > 7 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< + * __pyx_result.__dict__.update(__pyx_state[7]) + */ + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(1, 13, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error) + __pyx_t_5 = (__pyx_t_4 > 7); + if (__pyx_t_5) { + } else { + __pyx_t_2 = __pyx_t_5; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error) + __pyx_t_2 = __pyx_t_5; + __pyx_L4_bool_binop_done:; + if (__pyx_t_2) { + + /* "(tree fragment)":14 + * __pyx_result.always_skip_code = __pyx_state[0]; __pyx_result.breakpoint_found = __pyx_state[1]; __pyx_result.breakpoints_mtime = __pyx_state[2]; __pyx_result.canonical_normalized_filename = __pyx_state[3]; __pyx_result.co_filename = __pyx_state[4]; __pyx_result.co_name = __pyx_state[5]; __pyx_result.new_code = __pyx_state[6] + * if len(__pyx_state) > 7 and hasattr(__pyx_result, '__dict__'): + * __pyx_result.__dict__.update(__pyx_state[7]) # <<<<<<<<<<<<<< + */ + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(1, 14, __pyx_L1_error) + } + __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 7, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_8 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_6}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":13 + * cdef __pyx_unpickle_FuncCodeInfo__set_state(FuncCodeInfo __pyx_result, tuple __pyx_state): + * __pyx_result.always_skip_code = __pyx_state[0]; __pyx_result.breakpoint_found = __pyx_state[1]; __pyx_result.breakpoints_mtime = __pyx_state[2]; __pyx_result.canonical_normalized_filename = __pyx_state[3]; __pyx_result.co_filename = __pyx_state[4]; __pyx_result.co_name = __pyx_state[5]; __pyx_result.new_code = __pyx_state[6] + * if len(__pyx_state) > 7 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< + * __pyx_result.__dict__.update(__pyx_state[7]) + */ + } + + /* "(tree fragment)":11 + * __pyx_unpickle_FuncCodeInfo__set_state( __pyx_result, __pyx_state) + * return __pyx_result + * cdef __pyx_unpickle_FuncCodeInfo__set_state(FuncCodeInfo __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< + * __pyx_result.always_skip_code = __pyx_state[0]; __pyx_result.breakpoint_found = __pyx_state[1]; __pyx_result.breakpoints_mtime = __pyx_state[2]; __pyx_result.canonical_normalized_filename = __pyx_state[3]; __pyx_result.co_filename = __pyx_state[4]; __pyx_result.co_name = __pyx_state[5]; __pyx_result.new_code = __pyx_state[6] + * if len(__pyx_state) > 7 and hasattr(__pyx_result, '__dict__'): + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.__pyx_unpickle_FuncCodeInfo__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __pyx_unpickle__CodeLineInfo(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError + * cdef object __pyx_result + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_25__pyx_unpickle__CodeLineInfo(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_25__pyx_unpickle__CodeLineInfo = {"__pyx_unpickle__CodeLineInfo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_25__pyx_unpickle__CodeLineInfo, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_25__pyx_unpickle__CodeLineInfo(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v___pyx_type = 0; + long __pyx_v___pyx_checksum; + PyObject *__pyx_v___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__pyx_unpickle__CodeLineInfo (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_type)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_checksum)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle__CodeLineInfo", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle__CodeLineInfo", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__pyx_unpickle__CodeLineInfo") < 0)) __PYX_ERR(1, 1, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 3)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + } + __pyx_v___pyx_type = values[0]; + __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) + __pyx_v___pyx_state = values[2]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle__CodeLineInfo", 1, 3, 3, __pyx_nargs); __PYX_ERR(1, 1, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.__pyx_unpickle__CodeLineInfo", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_24__pyx_unpickle__CodeLineInfo(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_24__pyx_unpickle__CodeLineInfo(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_v___pyx_PickleError = 0; + PyObject *__pyx_v___pyx_result = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + unsigned int __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_unpickle__CodeLineInfo", 1); + + /* "(tree fragment)":4 + * cdef object __pyx_PickleError + * cdef object __pyx_result + * if __pyx_checksum not in (0x5a9bcd5, 0x0267473, 0x3fbbd02): # <<<<<<<<<<<<<< + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x5a9bcd5, 0x0267473, 0x3fbbd02) = (first_line, last_line, line_to_offset))" % __pyx_checksum + */ + __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__8, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_2) { + + /* "(tree fragment)":5 + * cdef object __pyx_result + * if __pyx_checksum not in (0x5a9bcd5, 0x0267473, 0x3fbbd02): + * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x5a9bcd5, 0x0267473, 0x3fbbd02) = (first_line, last_line, line_to_offset))" % __pyx_checksum + * __pyx_result = _CodeLineInfo.__new__(__pyx_type) + */ + __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_n_s_PickleError); + __Pyx_GIVEREF(__pyx_n_s_PickleError); + if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PickleError)) __PYX_ERR(1, 5, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_t_1); + __pyx_v___pyx_PickleError = __pyx_t_1; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "(tree fragment)":6 + * if __pyx_checksum not in (0x5a9bcd5, 0x0267473, 0x3fbbd02): + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x5a9bcd5, 0x0267473, 0x3fbbd02) = (first_line, last_line, line_to_offset))" % __pyx_checksum # <<<<<<<<<<<<<< + * __pyx_result = _CodeLineInfo.__new__(__pyx_type) + * if __pyx_state is not None: + */ + __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_Raise(__pyx_v___pyx_PickleError, __pyx_t_1, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(1, 6, __pyx_L1_error) + + /* "(tree fragment)":4 + * cdef object __pyx_PickleError + * cdef object __pyx_result + * if __pyx_checksum not in (0x5a9bcd5, 0x0267473, 0x3fbbd02): # <<<<<<<<<<<<<< + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x5a9bcd5, 0x0267473, 0x3fbbd02) = (first_line, last_line, line_to_offset))" % __pyx_checksum + */ + } + + /* "(tree fragment)":7 + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x5a9bcd5, 0x0267473, 0x3fbbd02) = (first_line, last_line, line_to_offset))" % __pyx_checksum + * __pyx_result = _CodeLineInfo.__new__(__pyx_type) # <<<<<<<<<<<<<< + * if __pyx_state is not None: + * __pyx_unpickle__CodeLineInfo__set_state(<_CodeLineInfo> __pyx_result, __pyx_state) + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo), __pyx_n_s_new); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v___pyx_type}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_v___pyx_result = __pyx_t_1; + __pyx_t_1 = 0; + + /* "(tree fragment)":8 + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x5a9bcd5, 0x0267473, 0x3fbbd02) = (first_line, last_line, line_to_offset))" % __pyx_checksum + * __pyx_result = _CodeLineInfo.__new__(__pyx_type) + * if __pyx_state is not None: # <<<<<<<<<<<<<< + * __pyx_unpickle__CodeLineInfo__set_state(<_CodeLineInfo> __pyx_result, __pyx_state) + * return __pyx_result + */ + __pyx_t_2 = (__pyx_v___pyx_state != Py_None); + if (__pyx_t_2) { + + /* "(tree fragment)":9 + * __pyx_result = _CodeLineInfo.__new__(__pyx_type) + * if __pyx_state is not None: + * __pyx_unpickle__CodeLineInfo__set_state(<_CodeLineInfo> __pyx_result, __pyx_state) # <<<<<<<<<<<<<< + * return __pyx_result + * cdef __pyx_unpickle__CodeLineInfo__set_state(_CodeLineInfo __pyx_result, tuple __pyx_state): + */ + if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(1, 9, __pyx_L1_error) + __pyx_t_1 = __pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unpickle__CodeLineInfo__set_state(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":8 + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x5a9bcd5, 0x0267473, 0x3fbbd02) = (first_line, last_line, line_to_offset))" % __pyx_checksum + * __pyx_result = _CodeLineInfo.__new__(__pyx_type) + * if __pyx_state is not None: # <<<<<<<<<<<<<< + * __pyx_unpickle__CodeLineInfo__set_state(<_CodeLineInfo> __pyx_result, __pyx_state) + * return __pyx_result + */ + } + + /* "(tree fragment)":10 + * if __pyx_state is not None: + * __pyx_unpickle__CodeLineInfo__set_state(<_CodeLineInfo> __pyx_result, __pyx_state) + * return __pyx_result # <<<<<<<<<<<<<< + * cdef __pyx_unpickle__CodeLineInfo__set_state(_CodeLineInfo __pyx_result, tuple __pyx_state): + * __pyx_result.first_line = __pyx_state[0]; __pyx_result.last_line = __pyx_state[1]; __pyx_result.line_to_offset = __pyx_state[2] + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v___pyx_result); + __pyx_r = __pyx_v___pyx_result; + goto __pyx_L0; + + /* "(tree fragment)":1 + * def __pyx_unpickle__CodeLineInfo(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError + * cdef object __pyx_result + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.__pyx_unpickle__CodeLineInfo", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v___pyx_PickleError); + __Pyx_XDECREF(__pyx_v___pyx_result); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":11 + * __pyx_unpickle__CodeLineInfo__set_state(<_CodeLineInfo> __pyx_result, __pyx_state) + * return __pyx_result + * cdef __pyx_unpickle__CodeLineInfo__set_state(_CodeLineInfo __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< + * __pyx_result.first_line = __pyx_state[0]; __pyx_result.last_line = __pyx_state[1]; __pyx_result.line_to_offset = __pyx_state[2] + * if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'): + */ + +static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unpickle__CodeLineInfo__set_state(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + int __pyx_t_3; + Py_ssize_t __pyx_t_4; + int __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + unsigned int __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_unpickle__CodeLineInfo__set_state", 1); + + /* "(tree fragment)":12 + * return __pyx_result + * cdef __pyx_unpickle__CodeLineInfo__set_state(_CodeLineInfo __pyx_result, tuple __pyx_state): + * __pyx_result.first_line = __pyx_state[0]; __pyx_result.last_line = __pyx_state[1]; __pyx_result.line_to_offset = __pyx_state[2] # <<<<<<<<<<<<<< + * if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'): + * __pyx_result.__dict__.update(__pyx_state[3]) + */ + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(1, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v___pyx_result->first_line = __pyx_t_2; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(1, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v___pyx_result->last_line = __pyx_t_2; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(1, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_1))) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v___pyx_result->line_to_offset); + __Pyx_DECREF(__pyx_v___pyx_result->line_to_offset); + __pyx_v___pyx_result->line_to_offset = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "(tree fragment)":13 + * cdef __pyx_unpickle__CodeLineInfo__set_state(_CodeLineInfo __pyx_result, tuple __pyx_state): + * __pyx_result.first_line = __pyx_state[0]; __pyx_result.last_line = __pyx_state[1]; __pyx_result.line_to_offset = __pyx_state[2] + * if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< + * __pyx_result.__dict__.update(__pyx_state[3]) + */ + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(1, 13, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error) + __pyx_t_5 = (__pyx_t_4 > 3); + if (__pyx_t_5) { + } else { + __pyx_t_3 = __pyx_t_5; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error) + __pyx_t_3 = __pyx_t_5; + __pyx_L4_bool_binop_done:; + if (__pyx_t_3) { + + /* "(tree fragment)":14 + * __pyx_result.first_line = __pyx_state[0]; __pyx_result.last_line = __pyx_state[1]; __pyx_result.line_to_offset = __pyx_state[2] + * if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'): + * __pyx_result.__dict__.update(__pyx_state[3]) # <<<<<<<<<<<<<< + */ + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(1, 14, __pyx_L1_error) + } + __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_8 = NULL; + __pyx_t_9 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_9 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_6}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":13 + * cdef __pyx_unpickle__CodeLineInfo__set_state(_CodeLineInfo __pyx_result, tuple __pyx_state): + * __pyx_result.first_line = __pyx_state[0]; __pyx_result.last_line = __pyx_state[1]; __pyx_result.line_to_offset = __pyx_state[2] + * if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< + * __pyx_result.__dict__.update(__pyx_state[3]) + */ + } + + /* "(tree fragment)":11 + * __pyx_unpickle__CodeLineInfo__set_state(<_CodeLineInfo> __pyx_result, __pyx_state) + * return __pyx_result + * cdef __pyx_unpickle__CodeLineInfo__set_state(_CodeLineInfo __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< + * __pyx_result.first_line = __pyx_state[0]; __pyx_result.last_line = __pyx_state[1]; __pyx_result.line_to_offset = __pyx_state[2] + * if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'): + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.__pyx_unpickle__CodeLineInfo__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __pyx_unpickle__CacheValue(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError + * cdef object __pyx_result + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_27__pyx_unpickle__CacheValue(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_27__pyx_unpickle__CacheValue = {"__pyx_unpickle__CacheValue", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_27__pyx_unpickle__CacheValue, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_27__pyx_unpickle__CacheValue(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v___pyx_type = 0; + long __pyx_v___pyx_checksum; + PyObject *__pyx_v___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__pyx_unpickle__CacheValue (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_MACROS + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_type)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_checksum)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle__CacheValue", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { + (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); + kw_args--; + } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) + else { + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle__CacheValue", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__pyx_unpickle__CacheValue") < 0)) __PYX_ERR(1, 1, __pyx_L3_error) + } + } else if (unlikely(__pyx_nargs != 3)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); + values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); + } + __pyx_v___pyx_type = values[0]; + __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) + __pyx_v___pyx_state = values[2]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle__CacheValue", 1, 3, 3, __pyx_nargs); __PYX_ERR(1, 1, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.__pyx_unpickle__CacheValue", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_26__pyx_unpickle__CacheValue(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); + + /* function exit code */ + { + Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); + } + } + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_18_pydevd_frame_eval_22pydevd_frame_evaluator_26__pyx_unpickle__CacheValue(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_v___pyx_PickleError = 0; + PyObject *__pyx_v___pyx_result = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + unsigned int __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_unpickle__CacheValue", 1); + + /* "(tree fragment)":4 + * cdef object __pyx_PickleError + * cdef object __pyx_result + * if __pyx_checksum not in (0xac42a46, 0xedff7c3, 0x3d481b9): # <<<<<<<<<<<<<< + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xac42a46, 0xedff7c3, 0x3d481b9) = (breakpoints_hit_at_lines, code_line_info, code_lines_as_set, code_obj_py))" % __pyx_checksum + */ + __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__9, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_2) { + + /* "(tree fragment)":5 + * cdef object __pyx_result + * if __pyx_checksum not in (0xac42a46, 0xedff7c3, 0x3d481b9): + * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xac42a46, 0xedff7c3, 0x3d481b9) = (breakpoints_hit_at_lines, code_line_info, code_lines_as_set, code_obj_py))" % __pyx_checksum + * __pyx_result = _CacheValue.__new__(__pyx_type) + */ + __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_n_s_PickleError); + __Pyx_GIVEREF(__pyx_n_s_PickleError); + if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PickleError)) __PYX_ERR(1, 5, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_t_1); + __pyx_v___pyx_PickleError = __pyx_t_1; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "(tree fragment)":6 + * if __pyx_checksum not in (0xac42a46, 0xedff7c3, 0x3d481b9): + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xac42a46, 0xedff7c3, 0x3d481b9) = (breakpoints_hit_at_lines, code_line_info, code_lines_as_set, code_obj_py))" % __pyx_checksum # <<<<<<<<<<<<<< + * __pyx_result = _CacheValue.__new__(__pyx_type) + * if __pyx_state is not None: + */ + __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_4, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_Raise(__pyx_v___pyx_PickleError, __pyx_t_1, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(1, 6, __pyx_L1_error) + + /* "(tree fragment)":4 + * cdef object __pyx_PickleError + * cdef object __pyx_result + * if __pyx_checksum not in (0xac42a46, 0xedff7c3, 0x3d481b9): # <<<<<<<<<<<<<< + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xac42a46, 0xedff7c3, 0x3d481b9) = (breakpoints_hit_at_lines, code_line_info, code_lines_as_set, code_obj_py))" % __pyx_checksum + */ + } + + /* "(tree fragment)":7 + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xac42a46, 0xedff7c3, 0x3d481b9) = (breakpoints_hit_at_lines, code_line_info, code_lines_as_set, code_obj_py))" % __pyx_checksum + * __pyx_result = _CacheValue.__new__(__pyx_type) # <<<<<<<<<<<<<< + * if __pyx_state is not None: + * __pyx_unpickle__CacheValue__set_state(<_CacheValue> __pyx_result, __pyx_state) + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue), __pyx_n_s_new); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + __pyx_t_5 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_5 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v___pyx_type}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_v___pyx_result = __pyx_t_1; + __pyx_t_1 = 0; + + /* "(tree fragment)":8 + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xac42a46, 0xedff7c3, 0x3d481b9) = (breakpoints_hit_at_lines, code_line_info, code_lines_as_set, code_obj_py))" % __pyx_checksum + * __pyx_result = _CacheValue.__new__(__pyx_type) + * if __pyx_state is not None: # <<<<<<<<<<<<<< + * __pyx_unpickle__CacheValue__set_state(<_CacheValue> __pyx_result, __pyx_state) + * return __pyx_result + */ + __pyx_t_2 = (__pyx_v___pyx_state != Py_None); + if (__pyx_t_2) { + + /* "(tree fragment)":9 + * __pyx_result = _CacheValue.__new__(__pyx_type) + * if __pyx_state is not None: + * __pyx_unpickle__CacheValue__set_state(<_CacheValue> __pyx_result, __pyx_state) # <<<<<<<<<<<<<< + * return __pyx_result + * cdef __pyx_unpickle__CacheValue__set_state(_CacheValue __pyx_result, tuple __pyx_state): + */ + if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(1, 9, __pyx_L1_error) + __pyx_t_1 = __pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unpickle__CacheValue__set_state(((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":8 + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xac42a46, 0xedff7c3, 0x3d481b9) = (breakpoints_hit_at_lines, code_line_info, code_lines_as_set, code_obj_py))" % __pyx_checksum + * __pyx_result = _CacheValue.__new__(__pyx_type) + * if __pyx_state is not None: # <<<<<<<<<<<<<< + * __pyx_unpickle__CacheValue__set_state(<_CacheValue> __pyx_result, __pyx_state) + * return __pyx_result + */ + } + + /* "(tree fragment)":10 + * if __pyx_state is not None: + * __pyx_unpickle__CacheValue__set_state(<_CacheValue> __pyx_result, __pyx_state) + * return __pyx_result # <<<<<<<<<<<<<< + * cdef __pyx_unpickle__CacheValue__set_state(_CacheValue __pyx_result, tuple __pyx_state): + * __pyx_result.breakpoints_hit_at_lines = __pyx_state[0]; __pyx_result.code_line_info = __pyx_state[1]; __pyx_result.code_lines_as_set = __pyx_state[2]; __pyx_result.code_obj_py = __pyx_state[3] + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v___pyx_result); + __pyx_r = __pyx_v___pyx_result; + goto __pyx_L0; + + /* "(tree fragment)":1 + * def __pyx_unpickle__CacheValue(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError + * cdef object __pyx_result + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.__pyx_unpickle__CacheValue", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v___pyx_PickleError); + __Pyx_XDECREF(__pyx_v___pyx_result); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":11 + * __pyx_unpickle__CacheValue__set_state(<_CacheValue> __pyx_result, __pyx_state) + * return __pyx_result + * cdef __pyx_unpickle__CacheValue__set_state(_CacheValue __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< + * __pyx_result.breakpoints_hit_at_lines = __pyx_state[0]; __pyx_result.code_line_info = __pyx_state[1]; __pyx_result.code_lines_as_set = __pyx_state[2]; __pyx_result.code_obj_py = __pyx_state[3] + * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): + */ + +static PyObject *__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator___pyx_unpickle__CacheValue__set_state(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + Py_ssize_t __pyx_t_3; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + unsigned int __pyx_t_8; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_unpickle__CacheValue__set_state", 1); + + /* "(tree fragment)":12 + * return __pyx_result + * cdef __pyx_unpickle__CacheValue__set_state(_CacheValue __pyx_result, tuple __pyx_state): + * __pyx_result.breakpoints_hit_at_lines = __pyx_state[0]; __pyx_result.code_line_info = __pyx_state[1]; __pyx_result.code_lines_as_set = __pyx_state[2]; __pyx_result.code_obj_py = __pyx_state[3] # <<<<<<<<<<<<<< + * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): + * __pyx_result.__dict__.update(__pyx_state[4]) + */ + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(1, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!(likely(PySet_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("set", __pyx_t_1))) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v___pyx_result->breakpoints_hit_at_lines); + __Pyx_DECREF(__pyx_v___pyx_result->breakpoints_hit_at_lines); + __pyx_v___pyx_result->breakpoints_hit_at_lines = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(1, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo))))) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF((PyObject *)__pyx_v___pyx_result->code_line_info); + __Pyx_DECREF((PyObject *)__pyx_v___pyx_result->code_line_info); + __pyx_v___pyx_result->code_line_info = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *)__pyx_t_1); + __pyx_t_1 = 0; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(1, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!(likely(PySet_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("set", __pyx_t_1))) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v___pyx_result->code_lines_as_set); + __Pyx_DECREF(__pyx_v___pyx_result->code_lines_as_set); + __pyx_v___pyx_result->code_lines_as_set = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(1, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v___pyx_result->code_obj_py); + __Pyx_DECREF(__pyx_v___pyx_result->code_obj_py); + __pyx_v___pyx_result->code_obj_py = __pyx_t_1; + __pyx_t_1 = 0; + + /* "(tree fragment)":13 + * cdef __pyx_unpickle__CacheValue__set_state(_CacheValue __pyx_result, tuple __pyx_state): + * __pyx_result.breakpoints_hit_at_lines = __pyx_state[0]; __pyx_result.code_line_info = __pyx_state[1]; __pyx_result.code_lines_as_set = __pyx_state[2]; __pyx_result.code_obj_py = __pyx_state[3] + * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< + * __pyx_result.__dict__.update(__pyx_state[4]) + */ + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(1, 13, __pyx_L1_error) + } + __pyx_t_3 = __Pyx_PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error) + __pyx_t_4 = (__pyx_t_3 > 4); + if (__pyx_t_4) { + } else { + __pyx_t_2 = __pyx_t_4; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error) + __pyx_t_2 = __pyx_t_4; + __pyx_L4_bool_binop_done:; + if (__pyx_t_2) { + + /* "(tree fragment)":14 + * __pyx_result.breakpoints_hit_at_lines = __pyx_state[0]; __pyx_result.code_line_info = __pyx_state[1]; __pyx_result.code_lines_as_set = __pyx_state[2]; __pyx_result.code_obj_py = __pyx_state[3] + * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): + * __pyx_result.__dict__.update(__pyx_state[4]) # <<<<<<<<<<<<<< + */ + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_update); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(1, 14, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_7 = NULL; + __pyx_t_8 = 0; + #if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_8 = 1; + } + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_5}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":13 + * cdef __pyx_unpickle__CacheValue__set_state(_CacheValue __pyx_result, tuple __pyx_state): + * __pyx_result.breakpoints_hit_at_lines = __pyx_state[0]; __pyx_result.code_line_info = __pyx_state[1]; __pyx_result.code_lines_as_set = __pyx_state[2]; __pyx_result.code_obj_py = __pyx_state[3] + * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< + * __pyx_result.__dict__.update(__pyx_state[4]) + */ + } + + /* "(tree fragment)":11 + * __pyx_unpickle__CacheValue__set_state(<_CacheValue> __pyx_result, __pyx_state) + * return __pyx_result + * cdef __pyx_unpickle__CacheValue__set_state(_CacheValue __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< + * __pyx_result.breakpoints_hit_at_lines = __pyx_state[0]; __pyx_result.code_line_info = __pyx_state[1]; __pyx_result.code_lines_as_set = __pyx_state[2]; __pyx_result.code_obj_py = __pyx_state[3] + * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_AddTraceback("_pydevd_frame_eval.pydevd_frame_evaluator.__pyx_unpickle__CacheValue__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static struct __pyx_vtabstruct_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo __pyx_vtable_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo; + +static PyObject *__pyx_tp_new_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *p; + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { + o = (*t->tp_alloc)(t, 0); + } else { + o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); + } + if (unlikely(!o)) return 0; + #endif + p = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)o); + p->__pyx_vtab = __pyx_vtabptr_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo; + p->additional_info = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)Py_None); Py_INCREF(Py_None); + p->thread_trace_func = Py_None; Py_INCREF(Py_None); + return o; +} + +static void __pyx_tp_dealloc_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo(PyObject *o) { + struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *p = (struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->additional_info); + Py_CLEAR(p->thread_trace_func); + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif +} + +static int __pyx_tp_traverse_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *p = (struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)o; + if (p->additional_info) { + e = (*v)(((PyObject *)p->additional_info), a); if (e) return e; + } + if (p->thread_trace_func) { + e = (*v)(p->thread_trace_func, a); if (e) return e; + } + return 0; +} + +static int __pyx_tp_clear_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo(PyObject *o) { + PyObject* tmp; + struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *p = (struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *)o; + tmp = ((PyObject*)p->additional_info); + p->additional_info = ((struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo *)Py_None); Py_INCREF(Py_None); + Py_XDECREF(tmp); + tmp = ((PyObject*)p->thread_trace_func); + p->thread_trace_func = Py_None; Py_INCREF(Py_None); + Py_XDECREF(tmp); + return 0; +} + +static PyObject *__pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_additional_info(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_15additional_info_1__get__(o); +} + +static int __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_additional_info(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_15additional_info_3__set__(o, v); + } + else { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_15additional_info_5__del__(o); + } +} + +static PyObject *__pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_is_pydevd_thread(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_16is_pydevd_thread_1__get__(o); +} + +static int __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_is_pydevd_thread(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_16is_pydevd_thread_3__set__(o, v); + } + else { + PyErr_SetString(PyExc_NotImplementedError, "__del__"); + return -1; + } +} + +static PyObject *__pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_inside_frame_eval(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17inside_frame_eval_1__get__(o); +} + +static int __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_inside_frame_eval(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17inside_frame_eval_3__set__(o, v); + } + else { + PyErr_SetString(PyExc_NotImplementedError, "__del__"); + return -1; + } +} + +static PyObject *__pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_fully_initialized(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17fully_initialized_1__get__(o); +} + +static int __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_fully_initialized(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17fully_initialized_3__set__(o, v); + } + else { + PyErr_SetString(PyExc_NotImplementedError, "__del__"); + return -1; + } +} + +static PyObject *__pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_thread_trace_func(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17thread_trace_func_1__get__(o); +} + +static int __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_thread_trace_func(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17thread_trace_func_3__set__(o, v); + } + else { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_17thread_trace_func_5__del__(o); + } +} + +static PyObject *__pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_force_stay_in_untraced_mode(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_27force_stay_in_untraced_mode_1__get__(o); +} + +static int __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_force_stay_in_untraced_mode(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_27force_stay_in_untraced_mode_3__set__(o, v); + } + else { + PyErr_SetString(PyExc_NotImplementedError, "__del__"); + return -1; + } +} + +static PyMethodDef __pyx_methods_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo[] = { + {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {0, 0, 0, 0} +}; + +static struct PyGetSetDef __pyx_getsets_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo[] = { + {(char *)"additional_info", __pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_additional_info, __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_additional_info, (char *)0, 0}, + {(char *)"is_pydevd_thread", __pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_is_pydevd_thread, __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_is_pydevd_thread, (char *)0, 0}, + {(char *)"inside_frame_eval", __pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_inside_frame_eval, __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_inside_frame_eval, (char *)0, 0}, + {(char *)"fully_initialized", __pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_fully_initialized, __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_fully_initialized, (char *)0, 0}, + {(char *)"thread_trace_func", __pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_thread_trace_func, __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_thread_trace_func, (char *)0, 0}, + {(char *)"force_stay_in_untraced_mode", __pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_force_stay_in_untraced_mode, __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_force_stay_in_untraced_mode, (char *)0, 0}, + {0, 0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo}, + {Py_tp_clear, (void *)__pyx_tp_clear_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo}, + {Py_tp_methods, (void *)__pyx_methods_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo}, + {Py_tp_getset, (void *)__pyx_getsets_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo}, + {Py_tp_new, (void *)__pyx_tp_new_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo}, + {0, 0}, +}; +static PyType_Spec __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo_spec = { + "_pydevd_frame_eval.pydevd_frame_evaluator.ThreadInfo", + sizeof(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, + __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo_slots, +}; +#else + +static PyTypeObject __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo = { + PyVarObject_HEAD_INIT(0, 0) + "_pydevd_frame_eval.pydevd_frame_evaluator.""ThreadInfo", /*tp_name*/ + sizeof(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo, /*tp_traverse*/ + __pyx_tp_clear_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo, /*tp_methods*/ + 0, /*tp_members*/ + __pyx_getsets_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +static PyObject *__pyx_tp_new_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *p; + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { + o = (*t->tp_alloc)(t, 0); + } else { + o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); + } + if (unlikely(!o)) return 0; + #endif + p = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)o); + p->co_filename = ((PyObject*)Py_None); Py_INCREF(Py_None); + p->co_name = ((PyObject*)Py_None); Py_INCREF(Py_None); + p->canonical_normalized_filename = ((PyObject*)Py_None); Py_INCREF(Py_None); + p->new_code = Py_None; Py_INCREF(Py_None); + return o; +} + +static void __pyx_tp_dealloc_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo(PyObject *o) { + struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *p = (struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->co_filename); + Py_CLEAR(p->co_name); + Py_CLEAR(p->canonical_normalized_filename); + Py_CLEAR(p->new_code); + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif +} + +static int __pyx_tp_traverse_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *p = (struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)o; + if (p->new_code) { + e = (*v)(p->new_code, a); if (e) return e; + } + return 0; +} + +static int __pyx_tp_clear_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo(PyObject *o) { + PyObject* tmp; + struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *p = (struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo *)o; + tmp = ((PyObject*)p->new_code); + p->new_code = Py_None; Py_INCREF(Py_None); + Py_XDECREF(tmp); + return 0; +} + +static PyObject *__pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_co_filename(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_11co_filename_1__get__(o); +} + +static int __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_co_filename(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_11co_filename_3__set__(o, v); + } + else { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_11co_filename_5__del__(o); + } +} + +static PyObject *__pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_co_name(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_7co_name_1__get__(o); +} + +static int __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_co_name(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_7co_name_3__set__(o, v); + } + else { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_7co_name_5__del__(o); + } +} + +static PyObject *__pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_canonical_normalized_filename(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_29canonical_normalized_filename_1__get__(o); +} + +static int __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_canonical_normalized_filename(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_29canonical_normalized_filename_3__set__(o, v); + } + else { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_29canonical_normalized_filename_5__del__(o); + } +} + +static PyObject *__pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_breakpoint_found(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_16breakpoint_found_1__get__(o); +} + +static int __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_breakpoint_found(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_16breakpoint_found_3__set__(o, v); + } + else { + PyErr_SetString(PyExc_NotImplementedError, "__del__"); + return -1; + } +} + +static PyObject *__pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_new_code(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_8new_code_1__get__(o); +} + +static int __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_new_code(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_8new_code_3__set__(o, v); + } + else { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_8new_code_5__del__(o); + } +} + +static PyObject *__pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_breakpoints_mtime(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_17breakpoints_mtime_1__get__(o); +} + +static int __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_breakpoints_mtime(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_17breakpoints_mtime_3__set__(o, v); + } + else { + PyErr_SetString(PyExc_NotImplementedError, "__del__"); + return -1; + } +} + +static PyMethodDef __pyx_methods_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo[] = { + {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {0, 0, 0, 0} +}; + +static struct PyGetSetDef __pyx_getsets_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo[] = { + {(char *)"co_filename", __pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_co_filename, __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_co_filename, (char *)0, 0}, + {(char *)"co_name", __pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_co_name, __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_co_name, (char *)0, 0}, + {(char *)"canonical_normalized_filename", __pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_canonical_normalized_filename, __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_canonical_normalized_filename, (char *)0, 0}, + {(char *)"breakpoint_found", __pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_breakpoint_found, __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_breakpoint_found, (char *)0, 0}, + {(char *)"new_code", __pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_new_code, __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_new_code, (char *)0, 0}, + {(char *)"breakpoints_mtime", __pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_breakpoints_mtime, __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_breakpoints_mtime, (char *)0, 0}, + {0, 0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo}, + {Py_tp_clear, (void *)__pyx_tp_clear_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo}, + {Py_tp_methods, (void *)__pyx_methods_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo}, + {Py_tp_getset, (void *)__pyx_getsets_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo}, + {Py_tp_init, (void *)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_1__init__}, + {Py_tp_new, (void *)__pyx_tp_new_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo}, + {0, 0}, +}; +static PyType_Spec __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo_spec = { + "_pydevd_frame_eval.pydevd_frame_evaluator.FuncCodeInfo", + sizeof(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, + __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo_slots, +}; +#else + +static PyTypeObject __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo = { + PyVarObject_HEAD_INIT(0, 0) + "_pydevd_frame_eval.pydevd_frame_evaluator.""FuncCodeInfo", /*tp_name*/ + sizeof(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo, /*tp_traverse*/ + __pyx_tp_clear_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo, /*tp_methods*/ + 0, /*tp_members*/ + __pyx_getsets_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_1__init__, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +static PyObject *__pyx_tp_new_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *p; + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { + o = (*t->tp_alloc)(t, 0); + } else { + o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); + } + if (unlikely(!o)) return 0; + #endif + p = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *)o); + p->line_to_offset = ((PyObject*)Py_None); Py_INCREF(Py_None); + return o; +} + +static void __pyx_tp_dealloc_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo(PyObject *o) { + struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *p = (struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->line_to_offset); + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif +} + +static int __pyx_tp_traverse_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *p = (struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *)o; + if (p->line_to_offset) { + e = (*v)(p->line_to_offset, a); if (e) return e; + } + return 0; +} + +static int __pyx_tp_clear_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo(PyObject *o) { + PyObject* tmp; + struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *p = (struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *)o; + tmp = ((PyObject*)p->line_to_offset); + p->line_to_offset = ((PyObject*)Py_None); Py_INCREF(Py_None); + Py_XDECREF(tmp); + return 0; +} + +static PyObject *__pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_line_to_offset(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_14line_to_offset_1__get__(o); +} + +static int __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_line_to_offset(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_14line_to_offset_3__set__(o, v); + } + else { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_14line_to_offset_5__del__(o); + } +} + +static PyObject *__pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_first_line(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_10first_line_1__get__(o); +} + +static int __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_first_line(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_10first_line_3__set__(o, v); + } + else { + PyErr_SetString(PyExc_NotImplementedError, "__del__"); + return -1; + } +} + +static PyObject *__pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_last_line(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_9last_line_1__get__(o); +} + +static int __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_last_line(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_9last_line_3__set__(o, v); + } + else { + PyErr_SetString(PyExc_NotImplementedError, "__del__"); + return -1; + } +} + +static PyMethodDef __pyx_methods_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo[] = { + {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {0, 0, 0, 0} +}; + +static struct PyGetSetDef __pyx_getsets_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo[] = { + {(char *)"line_to_offset", __pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_line_to_offset, __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_line_to_offset, (char *)0, 0}, + {(char *)"first_line", __pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_first_line, __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_first_line, (char *)0, 0}, + {(char *)"last_line", __pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_last_line, __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_last_line, (char *)0, 0}, + {0, 0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo}, + {Py_tp_clear, (void *)__pyx_tp_clear_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo}, + {Py_tp_methods, (void *)__pyx_methods_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo}, + {Py_tp_getset, (void *)__pyx_getsets_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo}, + {Py_tp_init, (void *)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_1__init__}, + {Py_tp_new, (void *)__pyx_tp_new_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo}, + {0, 0}, +}; +static PyType_Spec __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo_spec = { + "_pydevd_frame_eval.pydevd_frame_evaluator._CodeLineInfo", + sizeof(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, + __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo_slots, +}; +#else + +static PyTypeObject __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo = { + PyVarObject_HEAD_INIT(0, 0) + "_pydevd_frame_eval.pydevd_frame_evaluator.""_CodeLineInfo", /*tp_name*/ + sizeof(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo, /*tp_traverse*/ + __pyx_tp_clear_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo, /*tp_methods*/ + 0, /*tp_members*/ + __pyx_getsets_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_1__init__, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif +static struct __pyx_vtabstruct_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue __pyx_vtable_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue; + +static PyObject *__pyx_tp_new_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *p; + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { + o = (*t->tp_alloc)(t, 0); + } else { + o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); + } + if (unlikely(!o)) return 0; + #endif + p = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)o); + p->__pyx_vtab = __pyx_vtabptr_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue; + p->code_obj_py = Py_None; Py_INCREF(Py_None); + p->code_line_info = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *)Py_None); Py_INCREF(Py_None); + p->breakpoints_hit_at_lines = ((PyObject*)Py_None); Py_INCREF(Py_None); + p->code_lines_as_set = ((PyObject*)Py_None); Py_INCREF(Py_None); + return o; +} + +static void __pyx_tp_dealloc_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue(PyObject *o) { + struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *p = (struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->code_obj_py); + Py_CLEAR(p->code_line_info); + Py_CLEAR(p->breakpoints_hit_at_lines); + Py_CLEAR(p->code_lines_as_set); + #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif +} + +static int __pyx_tp_traverse_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *p = (struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)o; + if (p->code_obj_py) { + e = (*v)(p->code_obj_py, a); if (e) return e; + } + if (p->code_line_info) { + e = (*v)(((PyObject *)p->code_line_info), a); if (e) return e; + } + if (p->breakpoints_hit_at_lines) { + e = (*v)(p->breakpoints_hit_at_lines, a); if (e) return e; + } + if (p->code_lines_as_set) { + e = (*v)(p->code_lines_as_set, a); if (e) return e; + } + return 0; +} + +static int __pyx_tp_clear_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue(PyObject *o) { + PyObject* tmp; + struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *p = (struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *)o; + tmp = ((PyObject*)p->code_obj_py); + p->code_obj_py = Py_None; Py_INCREF(Py_None); + Py_XDECREF(tmp); + tmp = ((PyObject*)p->code_line_info); + p->code_line_info = ((struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo *)Py_None); Py_INCREF(Py_None); + Py_XDECREF(tmp); + tmp = ((PyObject*)p->breakpoints_hit_at_lines); + p->breakpoints_hit_at_lines = ((PyObject*)Py_None); Py_INCREF(Py_None); + Py_XDECREF(tmp); + tmp = ((PyObject*)p->code_lines_as_set); + p->code_lines_as_set = ((PyObject*)Py_None); Py_INCREF(Py_None); + Py_XDECREF(tmp); + return 0; +} + +static PyObject *__pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_code_obj_py(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_11code_obj_py_1__get__(o); +} + +static int __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_code_obj_py(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_11code_obj_py_3__set__(o, v); + } + else { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_11code_obj_py_5__del__(o); + } +} + +static PyObject *__pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_code_line_info(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_14code_line_info_1__get__(o); +} + +static int __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_code_line_info(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_14code_line_info_3__set__(o, v); + } + else { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_14code_line_info_5__del__(o); + } +} + +static PyObject *__pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_breakpoints_hit_at_lines(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_24breakpoints_hit_at_lines_1__get__(o); +} + +static int __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_breakpoints_hit_at_lines(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_24breakpoints_hit_at_lines_3__set__(o, v); + } + else { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_24breakpoints_hit_at_lines_5__del__(o); + } +} + +static PyObject *__pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_code_lines_as_set(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_17code_lines_as_set_1__get__(o); +} + +static int __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_code_lines_as_set(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { + if (v) { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_17code_lines_as_set_3__set__(o, v); + } + else { + return __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_17code_lines_as_set_5__del__(o); + } +} + +static PyMethodDef __pyx_methods_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue[] = { + {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {0, 0, 0, 0} +}; + +static struct PyGetSetDef __pyx_getsets_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue[] = { + {(char *)"code_obj_py", __pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_code_obj_py, __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_code_obj_py, (char *)0, 0}, + {(char *)"code_line_info", __pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_code_line_info, __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_code_line_info, (char *)0, 0}, + {(char *)"breakpoints_hit_at_lines", __pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_breakpoints_hit_at_lines, __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_breakpoints_hit_at_lines, (char *)0, 0}, + {(char *)"code_lines_as_set", __pyx_getprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_code_lines_as_set, __pyx_setprop_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_code_lines_as_set, (char *)0, 0}, + {0, 0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue}, + {Py_tp_clear, (void *)__pyx_tp_clear_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue}, + {Py_tp_methods, (void *)__pyx_methods_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue}, + {Py_tp_getset, (void *)__pyx_getsets_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue}, + {Py_tp_init, (void *)__pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_1__init__}, + {Py_tp_new, (void *)__pyx_tp_new_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue}, + {0, 0}, +}; +static PyType_Spec __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue_spec = { + "_pydevd_frame_eval.pydevd_frame_evaluator._CacheValue", + sizeof(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, + __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue_slots, +}; +#else + +static PyTypeObject __pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue = { + PyVarObject_HEAD_INIT(0, 0) + "_pydevd_frame_eval.pydevd_frame_evaluator.""_CacheValue", /*tp_name*/ + sizeof(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue, /*tp_traverse*/ + __pyx_tp_clear_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue, /*tp_methods*/ + 0, /*tp_members*/ + __pyx_getsets_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + __pyx_pw_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_1__init__, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +static PyMethodDef __pyx_methods[] = { + {0, 0, 0, 0} +}; +#ifndef CYTHON_SMALL_CODE +#if defined(__clang__) + #define CYTHON_SMALL_CODE +#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) + #define CYTHON_SMALL_CODE __attribute__((cold)) +#else + #define CYTHON_SMALL_CODE +#endif +#endif +/* #### Code section: pystring_table ### */ + +static int __Pyx_CreateStringTabAndInitStrings(void) { + __Pyx_StringTabEntry __pyx_string_tab[] = { + {&__pyx_kp_s_, __pyx_k_, sizeof(__pyx_k_), 0, 0, 1, 0}, + {&__pyx_n_s_AssertionError, __pyx_k_AssertionError, sizeof(__pyx_k_AssertionError), 0, 0, 1, 1}, + {&__pyx_n_s_AttributeError, __pyx_k_AttributeError, sizeof(__pyx_k_AttributeError), 0, 0, 1, 1}, + {&__pyx_n_s_CacheValue, __pyx_k_CacheValue, sizeof(__pyx_k_CacheValue), 0, 0, 1, 1}, + {&__pyx_n_s_CacheValue___reduce_cython, __pyx_k_CacheValue___reduce_cython, sizeof(__pyx_k_CacheValue___reduce_cython), 0, 0, 1, 1}, + {&__pyx_n_s_CacheValue___setstate_cython, __pyx_k_CacheValue___setstate_cython, sizeof(__pyx_k_CacheValue___setstate_cython), 0, 0, 1, 1}, + {&__pyx_n_s_CacheValue_compute_force_stay_i, __pyx_k_CacheValue_compute_force_stay_i, sizeof(__pyx_k_CacheValue_compute_force_stay_i), 0, 0, 1, 1}, + {&__pyx_n_s_CodeLineInfo, __pyx_k_CodeLineInfo, sizeof(__pyx_k_CodeLineInfo), 0, 0, 1, 1}, + {&__pyx_n_s_CodeLineInfo___reduce_cython, __pyx_k_CodeLineInfo___reduce_cython, sizeof(__pyx_k_CodeLineInfo___reduce_cython), 0, 0, 1, 1}, + {&__pyx_n_s_CodeLineInfo___setstate_cython, __pyx_k_CodeLineInfo___setstate_cython, sizeof(__pyx_k_CodeLineInfo___setstate_cython), 0, 0, 1, 1}, + {&__pyx_n_s_DebugHelper, __pyx_k_DebugHelper, sizeof(__pyx_k_DebugHelper), 0, 0, 1, 1}, + {&__pyx_n_s_FuncCodeInfo, __pyx_k_FuncCodeInfo, sizeof(__pyx_k_FuncCodeInfo), 0, 0, 1, 1}, + {&__pyx_n_s_FuncCodeInfo___reduce_cython, __pyx_k_FuncCodeInfo___reduce_cython, sizeof(__pyx_k_FuncCodeInfo___reduce_cython), 0, 0, 1, 1}, + {&__pyx_n_s_FuncCodeInfo___setstate_cython, __pyx_k_FuncCodeInfo___setstate_cython, sizeof(__pyx_k_FuncCodeInfo___setstate_cython), 0, 0, 1, 1}, + {&__pyx_n_s_GlobalDebuggerHolder, __pyx_k_GlobalDebuggerHolder, sizeof(__pyx_k_GlobalDebuggerHolder), 0, 0, 1, 1}, + {&__pyx_kp_s_If_a_code_object_is_cached_that, __pyx_k_If_a_code_object_is_cached_that, sizeof(__pyx_k_If_a_code_object_is_cached_that), 0, 0, 1, 0}, + {&__pyx_kp_s_Incompatible_checksums_0x_x_vs_0, __pyx_k_Incompatible_checksums_0x_x_vs_0, sizeof(__pyx_k_Incompatible_checksums_0x_x_vs_0), 0, 0, 1, 0}, + {&__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2, __pyx_k_Incompatible_checksums_0x_x_vs_0_2, sizeof(__pyx_k_Incompatible_checksums_0x_x_vs_0_2), 0, 0, 1, 0}, + {&__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3, __pyx_k_Incompatible_checksums_0x_x_vs_0_3, sizeof(__pyx_k_Incompatible_checksums_0x_x_vs_0_3), 0, 0, 1, 0}, + {&__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_4, __pyx_k_Incompatible_checksums_0x_x_vs_0_4, sizeof(__pyx_k_Incompatible_checksums_0x_x_vs_0_4), 0, 0, 1, 0}, + {&__pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER, __pyx_k_NORM_PATHS_AND_BASE_CONTAINER, sizeof(__pyx_k_NORM_PATHS_AND_BASE_CONTAINER), 0, 0, 1, 1}, + {&__pyx_n_s_PickleError, __pyx_k_PickleError, sizeof(__pyx_k_PickleError), 0, 0, 1, 1}, + {&__pyx_n_s_SetTrace, __pyx_k_SetTrace, sizeof(__pyx_k_SetTrace), 0, 0, 1, 1}, + {&__pyx_n_s_ThreadInfo, __pyx_k_ThreadInfo, sizeof(__pyx_k_ThreadInfo), 0, 0, 1, 1}, + {&__pyx_n_s_ThreadInfo___reduce_cython, __pyx_k_ThreadInfo___reduce_cython, sizeof(__pyx_k_ThreadInfo___reduce_cython), 0, 0, 1, 1}, + {&__pyx_n_s_ThreadInfo___setstate_cython, __pyx_k_ThreadInfo___setstate_cython, sizeof(__pyx_k_ThreadInfo___setstate_cython), 0, 0, 1, 1}, + {&__pyx_n_s__10, __pyx_k__10, sizeof(__pyx_k__10), 0, 0, 1, 1}, + {&__pyx_kp_s__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 0, 1, 0}, + {&__pyx_kp_s__3, __pyx_k__3, sizeof(__pyx_k__3), 0, 0, 1, 0}, + {&__pyx_kp_u__3, __pyx_k__3, sizeof(__pyx_k__3), 0, 1, 0, 0}, + {&__pyx_n_s__47, __pyx_k__47, sizeof(__pyx_k__47), 0, 0, 1, 1}, + {&__pyx_kp_s__5, __pyx_k__5, sizeof(__pyx_k__5), 0, 0, 1, 0}, + {&__pyx_n_s_active, __pyx_k_active, sizeof(__pyx_k_active), 0, 0, 1, 1}, + {&__pyx_n_s_additional_info, __pyx_k_additional_info, sizeof(__pyx_k_additional_info), 0, 0, 1, 1}, + {&__pyx_n_s_arg, __pyx_k_arg, sizeof(__pyx_k_arg), 0, 0, 1, 1}, + {&__pyx_n_s_asyncio_coroutines, __pyx_k_asyncio_coroutines, sizeof(__pyx_k_asyncio_coroutines), 0, 0, 1, 1}, + {&__pyx_n_s_bootstrap, __pyx_k_bootstrap, sizeof(__pyx_k_bootstrap), 0, 0, 1, 1}, + {&__pyx_n_s_bootstrap_2, __pyx_k_bootstrap_2, sizeof(__pyx_k_bootstrap_2), 0, 0, 1, 1}, + {&__pyx_n_s_bootstrap_inner, __pyx_k_bootstrap_inner, sizeof(__pyx_k_bootstrap_inner), 0, 0, 1, 1}, + {&__pyx_n_s_bootstrap_inner_2, __pyx_k_bootstrap_inner_2, sizeof(__pyx_k_bootstrap_inner_2), 0, 0, 1, 1}, + {&__pyx_n_s_break_on_caught_exceptions, __pyx_k_break_on_caught_exceptions, sizeof(__pyx_k_break_on_caught_exceptions), 0, 0, 1, 1}, + {&__pyx_n_s_break_on_user_uncaught_exception, __pyx_k_break_on_user_uncaught_exception, sizeof(__pyx_k_break_on_user_uncaught_exception), 0, 0, 1, 1}, + {&__pyx_n_s_breakpoints, __pyx_k_breakpoints, sizeof(__pyx_k_breakpoints), 0, 0, 1, 1}, + {&__pyx_n_s_breakpoints_hit_at_lines, __pyx_k_breakpoints_hit_at_lines, sizeof(__pyx_k_breakpoints_hit_at_lines), 0, 0, 1, 1}, + {&__pyx_n_s_cache, __pyx_k_cache, sizeof(__pyx_k_cache), 0, 0, 1, 1}, + {&__pyx_n_s_call, __pyx_k_call, sizeof(__pyx_k_call), 0, 0, 1, 1}, + {&__pyx_n_s_call_2, __pyx_k_call_2, sizeof(__pyx_k_call_2), 0, 0, 1, 1}, + {&__pyx_n_s_can_skip, __pyx_k_can_skip, sizeof(__pyx_k_can_skip), 0, 0, 1, 1}, + {&__pyx_n_s_clear_thread_local_info, __pyx_k_clear_thread_local_info, sizeof(__pyx_k_clear_thread_local_info), 0, 0, 1, 1}, + {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, + {&__pyx_n_s_code_line_info, __pyx_k_code_line_info, sizeof(__pyx_k_code_line_info), 0, 0, 1, 1}, + {&__pyx_n_s_code_obj, __pyx_k_code_obj, sizeof(__pyx_k_code_obj), 0, 0, 1, 1}, + {&__pyx_n_s_code_obj_py, __pyx_k_code_obj_py, sizeof(__pyx_k_code_obj_py), 0, 0, 1, 1}, + {&__pyx_n_s_compute_force_stay_in_untraced_m, __pyx_k_compute_force_stay_in_untraced_m, sizeof(__pyx_k_compute_force_stay_in_untraced_m), 0, 0, 1, 1}, + {&__pyx_n_s_current_thread, __pyx_k_current_thread, sizeof(__pyx_k_current_thread), 0, 0, 1, 1}, + {&__pyx_n_s_decref_py, __pyx_k_decref_py, sizeof(__pyx_k_decref_py), 0, 0, 1, 1}, + {&__pyx_n_s_dict, __pyx_k_dict, sizeof(__pyx_k_dict), 0, 0, 1, 1}, + {&__pyx_n_s_dict_2, __pyx_k_dict_2, sizeof(__pyx_k_dict_2), 0, 0, 1, 1}, + {&__pyx_n_s_dis, __pyx_k_dis, sizeof(__pyx_k_dis), 0, 0, 1, 1}, + {&__pyx_kp_u_disable, __pyx_k_disable, sizeof(__pyx_k_disable), 0, 1, 0, 0}, + {&__pyx_n_s_dummy_trace_dispatch, __pyx_k_dummy_trace_dispatch, sizeof(__pyx_k_dummy_trace_dispatch), 0, 0, 1, 1}, + {&__pyx_n_s_dummy_tracing_holder, __pyx_k_dummy_tracing_holder, sizeof(__pyx_k_dummy_tracing_holder), 0, 0, 1, 1}, + {&__pyx_kp_u_enable, __pyx_k_enable, sizeof(__pyx_k_enable), 0, 1, 0, 0}, + {&__pyx_n_s_enter, __pyx_k_enter, sizeof(__pyx_k_enter), 0, 0, 1, 1}, + {&__pyx_n_s_event, __pyx_k_event, sizeof(__pyx_k_event), 0, 0, 1, 1}, + {&__pyx_n_s_exec, __pyx_k_exec, sizeof(__pyx_k_exec), 0, 0, 1, 1}, + {&__pyx_n_s_exit, __pyx_k_exit, sizeof(__pyx_k_exit), 0, 0, 1, 1}, + {&__pyx_n_s_f_back, __pyx_k_f_back, sizeof(__pyx_k_f_back), 0, 0, 1, 1}, + {&__pyx_n_s_f_trace, __pyx_k_f_trace, sizeof(__pyx_k_f_trace), 0, 0, 1, 1}, + {&__pyx_n_s_findlinestarts, __pyx_k_findlinestarts, sizeof(__pyx_k_findlinestarts), 0, 0, 1, 1}, + {&__pyx_n_s_first_line, __pyx_k_first_line, sizeof(__pyx_k_first_line), 0, 0, 1, 1}, + {&__pyx_n_s_fix_top_level_trace_and_get_trac, __pyx_k_fix_top_level_trace_and_get_trac, sizeof(__pyx_k_fix_top_level_trace_and_get_trac), 0, 0, 1, 1}, + {&__pyx_n_s_frame, __pyx_k_frame, sizeof(__pyx_k_frame), 0, 0, 1, 1}, + {&__pyx_n_s_frame_eval_func, __pyx_k_frame_eval_func, sizeof(__pyx_k_frame_eval_func), 0, 0, 1, 1}, + {&__pyx_n_s_function_breakpoint_name_to_brea, __pyx_k_function_breakpoint_name_to_brea, sizeof(__pyx_k_function_breakpoint_name_to_brea), 0, 0, 1, 1}, + {&__pyx_kp_u_gc, __pyx_k_gc, sizeof(__pyx_k_gc), 0, 1, 0, 0}, + {&__pyx_n_s_generate_code_with_breakpoints_p, __pyx_k_generate_code_with_breakpoints_p, sizeof(__pyx_k_generate_code_with_breakpoints_p), 0, 0, 1, 1}, + {&__pyx_n_s_get, __pyx_k_get, sizeof(__pyx_k_get), 0, 0, 1, 1}, + {&__pyx_n_s_get_abs_path_real_path_and_base, __pyx_k_get_abs_path_real_path_and_base, sizeof(__pyx_k_get_abs_path_real_path_and_base), 0, 0, 1, 1}, + {&__pyx_n_s_get_cache_file_type, __pyx_k_get_cache_file_type, sizeof(__pyx_k_get_cache_file_type), 0, 0, 1, 1}, + {&__pyx_n_s_get_cached_code_obj_info_py, __pyx_k_get_cached_code_obj_info_py, sizeof(__pyx_k_get_cached_code_obj_info_py), 0, 0, 1, 1}, + {&__pyx_n_s_get_code_line_info, __pyx_k_get_code_line_info, sizeof(__pyx_k_get_code_line_info), 0, 0, 1, 1}, + {&__pyx_n_s_get_file_type, __pyx_k_get_file_type, sizeof(__pyx_k_get_file_type), 0, 0, 1, 1}, + {&__pyx_n_s_get_func_code_info_py, __pyx_k_get_func_code_info_py, sizeof(__pyx_k_get_func_code_info_py), 0, 0, 1, 1}, + {&__pyx_n_s_get_ident, __pyx_k_get_ident, sizeof(__pyx_k_get_ident), 0, 0, 1, 1}, + {&__pyx_n_s_get_ident_2, __pyx_k_get_ident_2, sizeof(__pyx_k_get_ident_2), 0, 0, 1, 1}, + {&__pyx_n_s_get_thread_info_py, __pyx_k_get_thread_info_py, sizeof(__pyx_k_get_thread_info_py), 0, 0, 1, 1}, + {&__pyx_n_s_getstate, __pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 0, 1, 1}, + {&__pyx_n_s_global_dbg, __pyx_k_global_dbg, sizeof(__pyx_k_global_dbg), 0, 0, 1, 1}, + {&__pyx_n_s_has_plugin_exception_breaks, __pyx_k_has_plugin_exception_breaks, sizeof(__pyx_k_has_plugin_exception_breaks), 0, 0, 1, 1}, + {&__pyx_n_s_has_plugin_line_breaks, __pyx_k_has_plugin_line_breaks, sizeof(__pyx_k_has_plugin_line_breaks), 0, 0, 1, 1}, + {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, + {&__pyx_n_s_initializing, __pyx_k_initializing, sizeof(__pyx_k_initializing), 0, 0, 1, 1}, + {&__pyx_n_s_insert_pydevd_breaks, __pyx_k_insert_pydevd_breaks, sizeof(__pyx_k_insert_pydevd_breaks), 0, 0, 1, 1}, + {&__pyx_n_s_intersection, __pyx_k_intersection, sizeof(__pyx_k_intersection), 0, 0, 1, 1}, + {&__pyx_n_s_is_coroutine, __pyx_k_is_coroutine, sizeof(__pyx_k_is_coroutine), 0, 0, 1, 1}, + {&__pyx_n_s_is_pydev_daemon_thread, __pyx_k_is_pydev_daemon_thread, sizeof(__pyx_k_is_pydev_daemon_thread), 0, 0, 1, 1}, + {&__pyx_kp_u_isenabled, __pyx_k_isenabled, sizeof(__pyx_k_isenabled), 0, 1, 0, 0}, + {&__pyx_n_s_issuperset, __pyx_k_issuperset, sizeof(__pyx_k_issuperset), 0, 0, 1, 1}, + {&__pyx_n_s_last_line, __pyx_k_last_line, sizeof(__pyx_k_last_line), 0, 0, 1, 1}, + {&__pyx_n_s_line, __pyx_k_line, sizeof(__pyx_k_line), 0, 0, 1, 1}, + {&__pyx_n_s_line_to_offset, __pyx_k_line_to_offset, sizeof(__pyx_k_line_to_offset), 0, 0, 1, 1}, + {&__pyx_n_s_local, __pyx_k_local, sizeof(__pyx_k_local), 0, 0, 1, 1}, + {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, + {&__pyx_n_s_main_2, __pyx_k_main_2, sizeof(__pyx_k_main_2), 0, 0, 1, 1}, + {&__pyx_n_s_max, __pyx_k_max, sizeof(__pyx_k_max), 0, 0, 1, 1}, + {&__pyx_n_s_min, __pyx_k_min, sizeof(__pyx_k_min), 0, 0, 1, 1}, + {&__pyx_n_s_mtime, __pyx_k_mtime, sizeof(__pyx_k_mtime), 0, 0, 1, 1}, + {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, + {&__pyx_n_s_new, __pyx_k_new, sizeof(__pyx_k_new), 0, 0, 1, 1}, + {&__pyx_n_s_obj, __pyx_k_obj, sizeof(__pyx_k_obj), 0, 0, 1, 1}, + {&__pyx_n_s_offset, __pyx_k_offset, sizeof(__pyx_k_offset), 0, 0, 1, 1}, + {&__pyx_n_s_pickle, __pyx_k_pickle, sizeof(__pyx_k_pickle), 0, 0, 1, 1}, + {&__pyx_n_s_plugin, __pyx_k_plugin, sizeof(__pyx_k_plugin), 0, 0, 1, 1}, + {&__pyx_n_s_pydev_bundle__pydev_saved_modul, __pyx_k_pydev_bundle__pydev_saved_modul, sizeof(__pyx_k_pydev_bundle__pydev_saved_modul), 0, 0, 1, 1}, + {&__pyx_n_s_pydev_monkey, __pyx_k_pydev_monkey, sizeof(__pyx_k_pydev_monkey), 0, 0, 1, 1}, + {&__pyx_n_s_pydevd, __pyx_k_pydevd, sizeof(__pyx_k_pydevd), 0, 0, 1, 1}, + {&__pyx_n_s_pydevd_bundle_pydevd_additional, __pyx_k_pydevd_bundle_pydevd_additional, sizeof(__pyx_k_pydevd_bundle_pydevd_additional), 0, 0, 1, 1}, + {&__pyx_n_s_pydevd_bundle_pydevd_constants, __pyx_k_pydevd_bundle_pydevd_constants, sizeof(__pyx_k_pydevd_bundle_pydevd_constants), 0, 0, 1, 1}, + {&__pyx_n_s_pydevd_bundle_pydevd_trace_disp, __pyx_k_pydevd_bundle_pydevd_trace_disp, sizeof(__pyx_k_pydevd_bundle_pydevd_trace_disp), 0, 0, 1, 1}, + {&__pyx_n_s_pydevd_file_utils, __pyx_k_pydevd_file_utils, sizeof(__pyx_k_pydevd_file_utils), 0, 0, 1, 1}, + {&__pyx_n_s_pydevd_frame_eval_pydevd_frame, __pyx_k_pydevd_frame_eval_pydevd_frame, sizeof(__pyx_k_pydevd_frame_eval_pydevd_frame), 0, 0, 1, 1}, + {&__pyx_kp_s_pydevd_frame_eval_pydevd_frame_2, __pyx_k_pydevd_frame_eval_pydevd_frame_2, sizeof(__pyx_k_pydevd_frame_eval_pydevd_frame_2), 0, 0, 1, 0}, + {&__pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_k_pydevd_frame_eval_pydevd_frame_3, sizeof(__pyx_k_pydevd_frame_eval_pydevd_frame_3), 0, 0, 1, 1}, + {&__pyx_n_s_pydevd_frame_eval_pydevd_modify, __pyx_k_pydevd_frame_eval_pydevd_modify, sizeof(__pyx_k_pydevd_frame_eval_pydevd_modify), 0, 0, 1, 1}, + {&__pyx_n_s_pydevd_tracing, __pyx_k_pydevd_tracing, sizeof(__pyx_k_pydevd_tracing), 0, 0, 1, 1}, + {&__pyx_n_s_pyx_PickleError, __pyx_k_pyx_PickleError, sizeof(__pyx_k_pyx_PickleError), 0, 0, 1, 1}, + {&__pyx_n_s_pyx_checksum, __pyx_k_pyx_checksum, sizeof(__pyx_k_pyx_checksum), 0, 0, 1, 1}, + {&__pyx_n_s_pyx_result, __pyx_k_pyx_result, sizeof(__pyx_k_pyx_result), 0, 0, 1, 1}, + {&__pyx_n_s_pyx_state, __pyx_k_pyx_state, sizeof(__pyx_k_pyx_state), 0, 0, 1, 1}, + {&__pyx_n_s_pyx_type, __pyx_k_pyx_type, sizeof(__pyx_k_pyx_type), 0, 0, 1, 1}, + {&__pyx_n_s_pyx_unpickle_FuncCodeInfo, __pyx_k_pyx_unpickle_FuncCodeInfo, sizeof(__pyx_k_pyx_unpickle_FuncCodeInfo), 0, 0, 1, 1}, + {&__pyx_n_s_pyx_unpickle_ThreadInfo, __pyx_k_pyx_unpickle_ThreadInfo, sizeof(__pyx_k_pyx_unpickle_ThreadInfo), 0, 0, 1, 1}, + {&__pyx_n_s_pyx_unpickle__CacheValue, __pyx_k_pyx_unpickle__CacheValue, sizeof(__pyx_k_pyx_unpickle__CacheValue), 0, 0, 1, 1}, + {&__pyx_n_s_pyx_unpickle__CodeLineInfo, __pyx_k_pyx_unpickle__CodeLineInfo, sizeof(__pyx_k_pyx_unpickle__CodeLineInfo), 0, 0, 1, 1}, + {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1}, + {&__pyx_n_s_reduce, __pyx_k_reduce, sizeof(__pyx_k_reduce), 0, 0, 1, 1}, + {&__pyx_n_s_reduce_cython, __pyx_k_reduce_cython, sizeof(__pyx_k_reduce_cython), 0, 0, 1, 1}, + {&__pyx_n_s_reduce_ex, __pyx_k_reduce_ex, sizeof(__pyx_k_reduce_ex), 0, 0, 1, 1}, + {&__pyx_n_s_return, __pyx_k_return, sizeof(__pyx_k_return), 0, 0, 1, 1}, + {&__pyx_n_s_rfind, __pyx_k_rfind, sizeof(__pyx_k_rfind), 0, 0, 1, 1}, + {&__pyx_n_s_run, __pyx_k_run, sizeof(__pyx_k_run), 0, 0, 1, 1}, + {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1}, + {&__pyx_n_s_set_additional_thread_info_lock, __pyx_k_set_additional_thread_info_lock, sizeof(__pyx_k_set_additional_thread_info_lock), 0, 0, 1, 1}, + {&__pyx_n_s_set_trace_func, __pyx_k_set_trace_func, sizeof(__pyx_k_set_trace_func), 0, 0, 1, 1}, + {&__pyx_n_s_setstate, __pyx_k_setstate, sizeof(__pyx_k_setstate), 0, 0, 1, 1}, + {&__pyx_n_s_setstate_cython, __pyx_k_setstate_cython, sizeof(__pyx_k_setstate_cython), 0, 0, 1, 1}, + {&__pyx_n_s_show_return_values, __pyx_k_show_return_values, sizeof(__pyx_k_show_return_values), 0, 0, 1, 1}, + {&__pyx_n_s_signature_factory, __pyx_k_signature_factory, sizeof(__pyx_k_signature_factory), 0, 0, 1, 1}, + {&__pyx_n_s_spec, __pyx_k_spec, sizeof(__pyx_k_spec), 0, 0, 1, 1}, + {&__pyx_n_s_state, __pyx_k_state, sizeof(__pyx_k_state), 0, 0, 1, 1}, + {&__pyx_n_s_stop_frame_eval, __pyx_k_stop_frame_eval, sizeof(__pyx_k_stop_frame_eval), 0, 0, 1, 1}, + {&__pyx_kp_s_stringsource, __pyx_k_stringsource, sizeof(__pyx_k_stringsource), 0, 0, 1, 0}, + {&__pyx_n_s_sys, __pyx_k_sys, sizeof(__pyx_k_sys), 0, 0, 1, 1}, + {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, + {&__pyx_n_s_thread, __pyx_k_thread, sizeof(__pyx_k_thread), 0, 0, 1, 1}, + {&__pyx_n_s_thread_active, __pyx_k_thread_active, sizeof(__pyx_k_thread_active), 0, 0, 1, 1}, + {&__pyx_n_s_thread_info, __pyx_k_thread_info, sizeof(__pyx_k_thread_info), 0, 0, 1, 1}, + {&__pyx_n_s_thread_local_info, __pyx_k_thread_local_info, sizeof(__pyx_k_thread_local_info), 0, 0, 1, 1}, + {&__pyx_n_s_threading, __pyx_k_threading, sizeof(__pyx_k_threading), 0, 0, 1, 1}, + {&__pyx_n_s_trace_dispatch, __pyx_k_trace_dispatch, sizeof(__pyx_k_trace_dispatch), 0, 0, 1, 1}, + {&__pyx_n_s_update, __pyx_k_update, sizeof(__pyx_k_update), 0, 0, 1, 1}, + {&__pyx_n_s_update_globals_dict, __pyx_k_update_globals_dict, sizeof(__pyx_k_update_globals_dict), 0, 0, 1, 1}, + {&__pyx_n_s_use_setstate, __pyx_k_use_setstate, sizeof(__pyx_k_use_setstate), 0, 0, 1, 1}, + {&__pyx_n_s_version_info, __pyx_k_version_info, sizeof(__pyx_k_version_info), 0, 0, 1, 1}, + {0, 0, 0, 0, 0, 0, 0} + }; + return __Pyx_InitStrings(__pyx_string_tab); +} +/* #### Code section: cached_builtins ### */ +static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) { + __pyx_builtin_AssertionError = __Pyx_GetBuiltinName(__pyx_n_s_AssertionError); if (!__pyx_builtin_AssertionError) __PYX_ERR(0, 42, __pyx_L1_error) + __pyx_builtin_AttributeError = __Pyx_GetBuiltinName(__pyx_n_s_AttributeError); if (!__pyx_builtin_AttributeError) __PYX_ERR(0, 110, __pyx_L1_error) + __pyx_builtin_min = __Pyx_GetBuiltinName(__pyx_n_s_min); if (!__pyx_builtin_min) __PYX_ERR(0, 341, __pyx_L1_error) + __pyx_builtin_max = __Pyx_GetBuiltinName(__pyx_n_s_max); if (!__pyx_builtin_max) __PYX_ERR(0, 342, __pyx_L1_error) + return 0; + __pyx_L1_error:; + return -1; +} +/* #### Code section: cached_constants ### */ + +static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":112 + * raise AttributeError() + * except: + * with _set_additional_thread_info_lock: # <<<<<<<<<<<<<< + * # If it's not there, set it within a lock to avoid any racing + * # conditions. + */ + __pyx_tuple__4 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 112, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__4); + __Pyx_GIVEREF(__pyx_tuple__4); + + /* "(tree fragment)":4 + * cdef object __pyx_PickleError + * cdef object __pyx_result + * if __pyx_checksum not in (0xe535b68, 0xb8148ba, 0x0af4089): # <<<<<<<<<<<<<< + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe535b68, 0xb8148ba, 0x0af4089) = (_can_create_dummy_thread, additional_info, force_stay_in_untraced_mode, fully_initialized, inside_frame_eval, is_pydevd_thread, thread_trace_func))" % __pyx_checksum + */ + __pyx_tuple__6 = PyTuple_Pack(3, __pyx_int_240343912, __pyx_int_193022138, __pyx_int_11485321); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__6); + __Pyx_GIVEREF(__pyx_tuple__6); + __pyx_tuple__7 = PyTuple_Pack(3, __pyx_int_72405718, __pyx_int_156687530, __pyx_int_188670045); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__7); + __Pyx_GIVEREF(__pyx_tuple__7); + __pyx_tuple__8 = PyTuple_Pack(3, __pyx_int_95010005, __pyx_int_2520179, __pyx_int_66829570); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__8); + __Pyx_GIVEREF(__pyx_tuple__8); + __pyx_tuple__9 = PyTuple_Pack(3, __pyx_int_180628038, __pyx_int_249558979, __pyx_int_64258489); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__9); + __Pyx_GIVEREF(__pyx_tuple__9); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":19 + * _thread_active = threading._active + * + * def clear_thread_local_info(): # <<<<<<<<<<<<<< + * global _thread_local_info + * _thread_local_info = threading.local() + */ + __pyx_codeobj__11 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_frame_eval_pydevd_frame_2, __pyx_n_s_clear_thread_local_info, 19, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__11)) __PYX_ERR(0, 19, __pyx_L1_error) + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + __pyx_tuple__12 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_state, __pyx_n_s_dict_2, __pyx_n_s_use_setstate); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__12); + __Pyx_GIVEREF(__pyx_tuple__12); + __pyx_codeobj__13 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__12, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__13)) __PYX_ERR(1, 1, __pyx_L1_error) + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle_ThreadInfo, (type(self), 0xe535b68, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_ThreadInfo__set_state(self, __pyx_state) + */ + __pyx_tuple__14 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_pyx_state); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(1, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__14); + __Pyx_GIVEREF(__pyx_tuple__14); + __pyx_codeobj__15 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__14, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__15)) __PYX_ERR(1, 16, __pyx_L1_error) + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + __pyx_codeobj__16 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__12, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__16)) __PYX_ERR(1, 1, __pyx_L1_error) + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle_FuncCodeInfo, (type(self), 0x450d2d6, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_FuncCodeInfo__set_state(self, __pyx_state) + */ + __pyx_codeobj__17 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__14, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__17)) __PYX_ERR(1, 16, __pyx_L1_error) + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":152 + * + * + * def dummy_trace_dispatch(frame, str event, arg): # <<<<<<<<<<<<<< + * if event == 'call': + * if frame.f_trace is not None: + */ + __pyx_tuple__18 = PyTuple_Pack(3, __pyx_n_s_frame, __pyx_n_s_event, __pyx_n_s_arg); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 152, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__18); + __Pyx_GIVEREF(__pyx_tuple__18); + __pyx_codeobj__19 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_frame_eval_pydevd_frame_2, __pyx_n_s_dummy_trace_dispatch, 152, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__19)) __PYX_ERR(0, 152, __pyx_L1_error) + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":159 + * + * + * def get_thread_info_py() -> ThreadInfo: # <<<<<<<<<<<<<< + * return get_thread_info(PyEval_GetFrame()) + * + */ + __pyx_codeobj__20 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_frame_eval_pydevd_frame_2, __pyx_n_s_get_thread_info_py, 159, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__20)) __PYX_ERR(0, 159, __pyx_L1_error) + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":196 + * + * + * def decref_py(obj): # <<<<<<<<<<<<<< + * ''' + * Helper to be called from Python. + */ + __pyx_tuple__21 = PyTuple_Pack(1, __pyx_n_s_obj); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 196, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__21); + __Pyx_GIVEREF(__pyx_tuple__21); + __pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_frame_eval_pydevd_frame_2, __pyx_n_s_decref_py, 196, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) __PYX_ERR(0, 196, __pyx_L1_error) + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":203 + * + * + * def get_func_code_info_py(thread_info, frame, code_obj) -> FuncCodeInfo: # <<<<<<<<<<<<<< + * ''' + * Helper to be called from Python. + */ + __pyx_tuple__23 = PyTuple_Pack(3, __pyx_n_s_thread_info, __pyx_n_s_frame, __pyx_n_s_code_obj); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 203, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__23); + __Pyx_GIVEREF(__pyx_tuple__23); + __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__23, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_frame_eval_pydevd_frame_2, __pyx_n_s_get_func_code_info_py, 203, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(0, 203, __pyx_L1_error) + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + __pyx_codeobj__25 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__12, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__25)) __PYX_ERR(1, 1, __pyx_L1_error) + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle__CodeLineInfo, (type(self), 0x5a9bcd5, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle__CodeLineInfo__set_state(self, __pyx_state) + */ + __pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__14, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) __PYX_ERR(1, 16, __pyx_L1_error) + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":329 + * + * # Note: this method has a version in pure-python too. + * def _get_code_line_info(code_obj): # <<<<<<<<<<<<<< + * line_to_offset: dict = {} + * first_line: int = None + */ + __pyx_tuple__27 = PyTuple_Pack(6, __pyx_n_s_code_obj, __pyx_n_s_line_to_offset, __pyx_n_s_first_line, __pyx_n_s_last_line, __pyx_n_s_offset, __pyx_n_s_line); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 329, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__27); + __Pyx_GIVEREF(__pyx_tuple__27); + __pyx_codeobj__28 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_frame_eval_pydevd_frame_2, __pyx_n_s_get_code_line_info, 329, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__28)) __PYX_ERR(0, 329, __pyx_L1_error) + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":353 + * _cache: dict = {} + * + * def get_cached_code_obj_info_py(code_obj_py): # <<<<<<<<<<<<<< + * ''' + * :return _CacheValue: + */ + __pyx_tuple__29 = PyTuple_Pack(1, __pyx_n_s_code_obj_py); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 353, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__29); + __Pyx_GIVEREF(__pyx_tuple__29); + __pyx_codeobj__30 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__29, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_frame_eval_pydevd_frame_2, __pyx_n_s_get_cached_code_obj_info_py, 353, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__30)) __PYX_ERR(0, 353, __pyx_L1_error) + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":379 + * self.code_lines_as_set = set(code_line_info.line_to_offset) + * + * cpdef compute_force_stay_in_untraced_mode(self, breakpoints): # <<<<<<<<<<<<<< + * ''' + * :param breakpoints: + */ + __pyx_tuple__31 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_breakpoints); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 379, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__31); + __Pyx_GIVEREF(__pyx_tuple__31); + __pyx_codeobj__32 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__31, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_frame_eval_pydevd_frame_2, __pyx_n_s_compute_force_stay_in_untraced_m, 379, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__32)) __PYX_ERR(0, 379, __pyx_L1_error) + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + __pyx_codeobj__33 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__12, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__33)) __PYX_ERR(1, 1, __pyx_L1_error) + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle__CacheValue, (type(self), 0xac42a46, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle__CacheValue__set_state(self, __pyx_state) + */ + __pyx_codeobj__34 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__14, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__34)) __PYX_ERR(1, 16, __pyx_L1_error) + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":401 + * return breakpoint_found, force_stay_in_untraced_mode + * + * def generate_code_with_breakpoints_py(object code_obj_py, dict breakpoints): # <<<<<<<<<<<<<< + * return generate_code_with_breakpoints(code_obj_py, breakpoints) + * + */ + __pyx_tuple__35 = PyTuple_Pack(2, __pyx_n_s_code_obj_py, __pyx_n_s_breakpoints); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(0, 401, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__35); + __Pyx_GIVEREF(__pyx_tuple__35); + __pyx_codeobj__36 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__35, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_frame_eval_pydevd_frame_2, __pyx_n_s_generate_code_with_breakpoints_p, 401, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__36)) __PYX_ERR(0, 401, __pyx_L1_error) + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":473 + * import sys + * + * cdef bint IS_PY_39_OWNARDS = sys.version_info[:2] >= (3, 9) # <<<<<<<<<<<<<< + * + * def frame_eval_func(): + */ + __pyx_slice__37 = PySlice_New(Py_None, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__37)) __PYX_ERR(0, 473, __pyx_L1_error) + __Pyx_GOTREF(__pyx_slice__37); + __Pyx_GIVEREF(__pyx_slice__37); + __pyx_tuple__38 = PyTuple_Pack(2, __pyx_int_3, __pyx_int_9); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(0, 473, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__38); + __Pyx_GIVEREF(__pyx_tuple__38); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":475 + * cdef bint IS_PY_39_OWNARDS = sys.version_info[:2] >= (3, 9) + * + * def frame_eval_func(): # <<<<<<<<<<<<<< + * cdef PyThreadState *state = PyThreadState_Get() + * if IS_PY_39_OWNARDS: + */ + __pyx_tuple__39 = PyTuple_Pack(1, __pyx_n_s_state); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(0, 475, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__39); + __Pyx_GIVEREF(__pyx_tuple__39); + __pyx_codeobj__40 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__39, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_frame_eval_pydevd_frame_2, __pyx_n_s_frame_eval_func, 475, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__40)) __PYX_ERR(0, 475, __pyx_L1_error) + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":484 + * + * + * def stop_frame_eval(): # <<<<<<<<<<<<<< + * cdef PyThreadState *state = PyThreadState_Get() + * state.interp.eval_frame = _PyEval_EvalFrameDefault + */ + __pyx_codeobj__41 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__39, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pydevd_frame_eval_pydevd_frame_2, __pyx_n_s_stop_frame_eval, 484, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__41)) __PYX_ERR(0, 484, __pyx_L1_error) + + /* "(tree fragment)":1 + * def __pyx_unpickle_ThreadInfo(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError + * cdef object __pyx_result + */ + __pyx_tuple__42 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__42); + __Pyx_GIVEREF(__pyx_tuple__42); + __pyx_codeobj__43 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__42, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_ThreadInfo, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__43)) __PYX_ERR(1, 1, __pyx_L1_error) + __pyx_codeobj__44 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__42, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_FuncCodeInfo, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__44)) __PYX_ERR(1, 1, __pyx_L1_error) + __pyx_codeobj__45 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__42, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle__CodeLineInfo, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__45)) __PYX_ERR(1, 1, __pyx_L1_error) + __pyx_codeobj__46 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__42, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle__CacheValue, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__46)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_RefNannyFinishContext(); + return -1; +} +/* #### Code section: init_constants ### */ + +static CYTHON_SMALL_CODE int __Pyx_InitConstants(void) { + if (__Pyx_CreateStringTabAndInitStrings() < 0) __PYX_ERR(0, 1, __pyx_L1_error); + __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_3 = PyInt_FromLong(3); if (unlikely(!__pyx_int_3)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_9 = PyInt_FromLong(9); if (unlikely(!__pyx_int_9)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_2520179 = PyInt_FromLong(2520179L); if (unlikely(!__pyx_int_2520179)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_11485321 = PyInt_FromLong(11485321L); if (unlikely(!__pyx_int_11485321)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_64258489 = PyInt_FromLong(64258489L); if (unlikely(!__pyx_int_64258489)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_66829570 = PyInt_FromLong(66829570L); if (unlikely(!__pyx_int_66829570)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_72405718 = PyInt_FromLong(72405718L); if (unlikely(!__pyx_int_72405718)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_95010005 = PyInt_FromLong(95010005L); if (unlikely(!__pyx_int_95010005)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_156687530 = PyInt_FromLong(156687530L); if (unlikely(!__pyx_int_156687530)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_180628038 = PyInt_FromLong(180628038L); if (unlikely(!__pyx_int_180628038)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_188670045 = PyInt_FromLong(188670045L); if (unlikely(!__pyx_int_188670045)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_193022138 = PyInt_FromLong(193022138L); if (unlikely(!__pyx_int_193022138)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_240343912 = PyInt_FromLong(240343912L); if (unlikely(!__pyx_int_240343912)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_249558979 = PyInt_FromLong(249558979L); if (unlikely(!__pyx_int_249558979)) __PYX_ERR(0, 1, __pyx_L1_error) + return 0; + __pyx_L1_error:; + return -1; +} +/* #### Code section: init_globals ### */ + +static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) { + /* AssertionsEnabled.init */ + if (likely(__Pyx_init_assertions_enabled() == 0)); else + +if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error) + + return 0; + __pyx_L1_error:; + return -1; +} +/* #### Code section: init_module ### */ + +static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/ + +static int __Pyx_modinit_global_init_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); + /*--- Global init code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_variable_export_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); + /*--- Variable export code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_function_export_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); + /*--- Function export code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_type_init_code(void) { + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); + /*--- Type init code ---*/ + __pyx_vtabptr_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo = &__pyx_vtable_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo; + __pyx_vtable_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo.initialize = (PyObject *(*)(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *, PyFrameObject *))__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_initialize; + __pyx_vtable_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo.initialize_if_possible = (PyObject *(*)(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo *))__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_initialize_if_possible; + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo_spec, NULL); if (unlikely(!__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo)) __PYX_ERR(0, 24, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo_spec, __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo) < 0) __PYX_ERR(0, 24, __pyx_L1_error) + #else + __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo = &__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo) < 0) __PYX_ERR(0, 24, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo->tp_dictoffset && __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo->tp_getattro = __Pyx_PyObject_GenericGetAttr; + } + #endif + if (__Pyx_SetVtable(__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo, __pyx_vtabptr_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo) < 0) __PYX_ERR(0, 24, __pyx_L1_error) + #if !CYTHON_COMPILING_IN_LIMITED_API + if (__Pyx_MergeVtables(__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo) < 0) __PYX_ERR(0, 24, __pyx_L1_error) + #endif + if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ThreadInfo, (PyObject *) __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo) < 0) __PYX_ERR(0, 24, __pyx_L1_error) + #if !CYTHON_COMPILING_IN_LIMITED_API + if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo) < 0) __PYX_ERR(0, 24, __pyx_L1_error) + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo_spec, NULL); if (unlikely(!__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo)) __PYX_ERR(0, 125, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo_spec, __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo) < 0) __PYX_ERR(0, 125, __pyx_L1_error) + #else + __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo = &__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo) < 0) __PYX_ERR(0, 125, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo->tp_dictoffset && __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo->tp_getattro = __Pyx_PyObject_GenericGetAttr; + } + #endif + if (PyObject_SetAttr(__pyx_m, __pyx_n_s_FuncCodeInfo, (PyObject *) __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo) < 0) __PYX_ERR(0, 125, __pyx_L1_error) + #if !CYTHON_COMPILING_IN_LIMITED_API + if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo) < 0) __PYX_ERR(0, 125, __pyx_L1_error) + #endif + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo_spec, NULL); if (unlikely(!__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo)) __PYX_ERR(0, 316, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo_spec, __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo) < 0) __PYX_ERR(0, 316, __pyx_L1_error) + #else + __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo = &__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo) < 0) __PYX_ERR(0, 316, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo->tp_dictoffset && __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo->tp_getattro = __Pyx_PyObject_GenericGetAttr; + } + #endif + if (PyObject_SetAttr(__pyx_m, __pyx_n_s_CodeLineInfo, (PyObject *) __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo) < 0) __PYX_ERR(0, 316, __pyx_L1_error) + #if !CYTHON_COMPILING_IN_LIMITED_API + if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo) < 0) __PYX_ERR(0, 316, __pyx_L1_error) + #endif + __pyx_vtabptr_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue = &__pyx_vtable_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue; + __pyx_vtable_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue.compute_force_stay_in_untraced_mode = (PyObject *(*)(struct __pyx_obj_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue *, PyObject *, int __pyx_skip_dispatch))__pyx_f_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_compute_force_stay_in_untraced_mode; + #if CYTHON_USE_TYPE_SPECS + __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue_spec, NULL); if (unlikely(!__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue)) __PYX_ERR(0, 361, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue_spec, __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue) < 0) __PYX_ERR(0, 361, __pyx_L1_error) + #else + __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue = &__pyx_type_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue) < 0) __PYX_ERR(0, 361, __pyx_L1_error) + #endif + #if PY_MAJOR_VERSION < 3 + __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue->tp_print = 0; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue->tp_dictoffset && __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue->tp_getattro = __Pyx_PyObject_GenericGetAttr; + } + #endif + #if CYTHON_UPDATE_DESCRIPTOR_DOC + { + PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue, "__init__"); if (unlikely(!wrapper)) __PYX_ERR(0, 361, __pyx_L1_error) + if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) { + __pyx_wrapperbase_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue___init__ = *((PyWrapperDescrObject *)wrapper)->d_base; + __pyx_wrapperbase_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue___init__.doc = __pyx_doc_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue___init__; + ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue___init__; + } + } + #endif + if (__Pyx_SetVtable(__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue, __pyx_vtabptr_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue) < 0) __PYX_ERR(0, 361, __pyx_L1_error) + #if !CYTHON_COMPILING_IN_LIMITED_API + if (__Pyx_MergeVtables(__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue) < 0) __PYX_ERR(0, 361, __pyx_L1_error) + #endif + if (PyObject_SetAttr(__pyx_m, __pyx_n_s_CacheValue, (PyObject *) __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue) < 0) __PYX_ERR(0, 361, __pyx_L1_error) + #if !CYTHON_COMPILING_IN_LIMITED_API + if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue) < 0) __PYX_ERR(0, 361, __pyx_L1_error) + #endif + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_RefNannyFinishContext(); + return -1; +} + +static int __Pyx_modinit_type_import_code(void) { + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); + /*--- Type import code ---*/ + __pyx_t_1 = PyImport_ImportModule("_pydevd_bundle.pydevd_cython"); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo = __Pyx_ImportType_3_0_11(__pyx_t_1, "_pydevd_bundle.pydevd_cython", "PyDBAdditionalThreadInfo", sizeof(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(struct __pyx_obj_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo),__Pyx_ImportType_CheckSize_Warn_3_0_11); if (!__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo) __PYX_ERR(2, 1, __pyx_L1_error) + __pyx_vtabptr_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo = (struct __pyx_vtabstruct_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo*)__Pyx_GetVtable(__pyx_ptype_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo); if (unlikely(!__pyx_vtabptr_14_pydevd_bundle_13pydevd_cython_PyDBAdditionalThreadInfo)) __PYX_ERR(2, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_RefNannyFinishContext(); + return -1; +} + +static int __Pyx_modinit_variable_import_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); + /*--- Variable import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_function_import_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); + /*--- Function import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + + +#if PY_MAJOR_VERSION >= 3 +#if CYTHON_PEP489_MULTI_PHASE_INIT +static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ +static int __pyx_pymod_exec_pydevd_frame_evaluator(PyObject* module); /*proto*/ +static PyModuleDef_Slot __pyx_moduledef_slots[] = { + {Py_mod_create, (void*)__pyx_pymod_create}, + {Py_mod_exec, (void*)__pyx_pymod_exec_pydevd_frame_evaluator}, + {0, NULL} +}; +#endif + +#ifdef __cplusplus +namespace { + struct PyModuleDef __pyx_moduledef = + #else + static struct PyModuleDef __pyx_moduledef = + #endif + { + PyModuleDef_HEAD_INIT, + "pydevd_frame_evaluator", + 0, /* m_doc */ + #if CYTHON_PEP489_MULTI_PHASE_INIT + 0, /* m_size */ + #elif CYTHON_USE_MODULE_STATE + sizeof(__pyx_mstate), /* m_size */ + #else + -1, /* m_size */ + #endif + __pyx_methods /* m_methods */, + #if CYTHON_PEP489_MULTI_PHASE_INIT + __pyx_moduledef_slots, /* m_slots */ + #else + NULL, /* m_reload */ + #endif + #if CYTHON_USE_MODULE_STATE + __pyx_m_traverse, /* m_traverse */ + __pyx_m_clear, /* m_clear */ + NULL /* m_free */ + #else + NULL, /* m_traverse */ + NULL, /* m_clear */ + NULL /* m_free */ + #endif + }; + #ifdef __cplusplus +} /* anonymous namespace */ +#endif +#endif + +#ifndef CYTHON_NO_PYINIT_EXPORT +#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC +#elif PY_MAJOR_VERSION < 3 +#ifdef __cplusplus +#define __Pyx_PyMODINIT_FUNC extern "C" void +#else +#define __Pyx_PyMODINIT_FUNC void +#endif +#else +#ifdef __cplusplus +#define __Pyx_PyMODINIT_FUNC extern "C" PyObject * +#else +#define __Pyx_PyMODINIT_FUNC PyObject * +#endif +#endif + + +#if PY_MAJOR_VERSION < 3 +__Pyx_PyMODINIT_FUNC initpydevd_frame_evaluator(void) CYTHON_SMALL_CODE; /*proto*/ +__Pyx_PyMODINIT_FUNC initpydevd_frame_evaluator(void) +#else +__Pyx_PyMODINIT_FUNC PyInit_pydevd_frame_evaluator(void) CYTHON_SMALL_CODE; /*proto*/ +__Pyx_PyMODINIT_FUNC PyInit_pydevd_frame_evaluator(void) +#if CYTHON_PEP489_MULTI_PHASE_INIT +{ + return PyModuleDef_Init(&__pyx_moduledef); +} +static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { + #if PY_VERSION_HEX >= 0x030700A1 + static PY_INT64_T main_interpreter_id = -1; + PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp); + if (main_interpreter_id == -1) { + main_interpreter_id = current_id; + return (unlikely(current_id == -1)) ? -1 : 0; + } else if (unlikely(main_interpreter_id != current_id)) + #else + static PyInterpreterState *main_interpreter = NULL; + PyInterpreterState *current_interpreter = PyThreadState_Get()->interp; + if (!main_interpreter) { + main_interpreter = current_interpreter; + } else if (unlikely(main_interpreter != current_interpreter)) + #endif + { + PyErr_SetString( + PyExc_ImportError, + "Interpreter change detected - this module can only be loaded into one interpreter per process."); + return -1; + } + return 0; +} +#if CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *module, const char* from_name, const char* to_name, int allow_none) +#else +static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none) +#endif +{ + PyObject *value = PyObject_GetAttrString(spec, from_name); + int result = 0; + if (likely(value)) { + if (allow_none || value != Py_None) { +#if CYTHON_COMPILING_IN_LIMITED_API + result = PyModule_AddObject(module, to_name, value); +#else + result = PyDict_SetItemString(moddict, to_name, value); +#endif + } + Py_DECREF(value); + } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { + PyErr_Clear(); + } else { + result = -1; + } + return result; +} +static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def) { + PyObject *module = NULL, *moddict, *modname; + CYTHON_UNUSED_VAR(def); + if (__Pyx_check_single_interpreter()) + return NULL; + if (__pyx_m) + return __Pyx_NewRef(__pyx_m); + modname = PyObject_GetAttrString(spec, "name"); + if (unlikely(!modname)) goto bad; + module = PyModule_NewObject(modname); + Py_DECREF(modname); + if (unlikely(!module)) goto bad; +#if CYTHON_COMPILING_IN_LIMITED_API + moddict = module; +#else + moddict = PyModule_GetDict(module); + if (unlikely(!moddict)) goto bad; +#endif + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad; + return module; +bad: + Py_XDECREF(module); + return NULL; +} + + +static CYTHON_SMALL_CODE int __pyx_pymod_exec_pydevd_frame_evaluator(PyObject *__pyx_pyinit_module) +#endif +#endif +{ + int stringtab_initialized = 0; + #if CYTHON_USE_MODULE_STATE + int pystate_addmodule_run = 0; + #endif + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + #if CYTHON_PEP489_MULTI_PHASE_INIT + if (__pyx_m) { + if (__pyx_m == __pyx_pyinit_module) return 0; + PyErr_SetString(PyExc_RuntimeError, "Module 'pydevd_frame_evaluator' has already been imported. Re-initialisation is not supported."); + return -1; + } + #elif PY_MAJOR_VERSION >= 3 + if (__pyx_m) return __Pyx_NewRef(__pyx_m); + #endif + /*--- Module creation code ---*/ + #if CYTHON_PEP489_MULTI_PHASE_INIT + __pyx_m = __pyx_pyinit_module; + Py_INCREF(__pyx_m); + #else + #if PY_MAJOR_VERSION < 3 + __pyx_m = Py_InitModule4("pydevd_frame_evaluator", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); + if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) + #elif CYTHON_USE_MODULE_STATE + __pyx_t_1 = PyModule_Create(&__pyx_moduledef); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error) + { + int add_module_result = PyState_AddModule(__pyx_t_1, &__pyx_moduledef); + __pyx_t_1 = 0; /* transfer ownership from __pyx_t_1 to "pydevd_frame_evaluator" pseudovariable */ + if (unlikely((add_module_result < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + pystate_addmodule_run = 1; + } + #else + __pyx_m = PyModule_Create(&__pyx_moduledef); + if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #endif + CYTHON_UNUSED_VAR(__pyx_t_1); + __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) + Py_INCREF(__pyx_d); + __pyx_b = __Pyx_PyImport_AddModuleRef(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_cython_runtime = __Pyx_PyImport_AddModuleRef((const char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #if CYTHON_REFNANNY +__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); +if (!__Pyx_RefNanny) { + PyErr_Clear(); + __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); + if (!__Pyx_RefNanny) + Py_FatalError("failed to import 'refnanny' module"); +} +#endif + __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_pydevd_frame_evaluator(void)", 0); + if (__Pyx_check_binary_version(__PYX_LIMITED_VERSION_HEX, __Pyx_get_runtime_version(), CYTHON_COMPILING_IN_LIMITED_API) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #ifdef __Pxy_PyFrame_Initialize_Offsets + __Pxy_PyFrame_Initialize_Offsets(); + #endif + __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) + #ifdef __Pyx_CyFunction_USED + if (__pyx_CyFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_FusedFunction_USED + if (__pyx_FusedFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_Coroutine_USED + if (__pyx_Coroutine_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_Generator_USED + if (__pyx_Generator_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_AsyncGen_USED + if (__pyx_AsyncGen_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_StopAsyncIteration_USED + if (__pyx_StopAsyncIteration_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + /*--- Library function declarations ---*/ + /*--- Threads initialization code ---*/ + #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS + PyEval_InitThreads(); + #endif + /*--- Initialize various global constants etc. ---*/ + if (__Pyx_InitConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + stringtab_initialized = 1; + if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) + if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + if (__pyx_module_is_main__pydevd_frame_eval__pydevd_frame_evaluator) { + if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name, __pyx_n_s_main_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + } + #if PY_MAJOR_VERSION >= 3 + { + PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) + if (!PyDict_GetItemString(modules, "_pydevd_frame_eval.pydevd_frame_evaluator")) { + if (unlikely((PyDict_SetItemString(modules, "_pydevd_frame_eval.pydevd_frame_evaluator", __pyx_m) < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + } + } + #endif + /*--- Builtin init code ---*/ + if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + /*--- Constants init code ---*/ + if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + /*--- Global type/function init code ---*/ + (void)__Pyx_modinit_global_init_code(); + (void)__Pyx_modinit_variable_export_code(); + (void)__Pyx_modinit_function_export_code(); + if (unlikely((__Pyx_modinit_type_init_code() < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + if (unlikely((__Pyx_modinit_type_import_code() < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + (void)__Pyx_modinit_variable_import_code(); + (void)__Pyx_modinit_function_import_code(); + /*--- Execution code ---*/ + #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) + if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":2 + * from __future__ import print_function + * from _pydev_bundle._pydev_saved_modules import threading, thread # <<<<<<<<<<<<<< + * from _pydevd_bundle.pydevd_constants import GlobalDebuggerHolder + * import dis + */ + __pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_threading); + __Pyx_GIVEREF(__pyx_n_s_threading); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_threading)) __PYX_ERR(0, 2, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_thread); + __Pyx_GIVEREF(__pyx_n_s_thread); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_thread)) __PYX_ERR(0, 2, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_pydev_bundle__pydev_saved_modul, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_threading); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_threading, __pyx_t_2) < 0) __PYX_ERR(0, 2, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_thread); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_thread, __pyx_t_2) < 0) __PYX_ERR(0, 2, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":3 + * from __future__ import print_function + * from _pydev_bundle._pydev_saved_modules import threading, thread + * from _pydevd_bundle.pydevd_constants import GlobalDebuggerHolder # <<<<<<<<<<<<<< + * import dis + * import sys + */ + __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_GlobalDebuggerHolder); + __Pyx_GIVEREF(__pyx_n_s_GlobalDebuggerHolder); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_GlobalDebuggerHolder)) __PYX_ERR(0, 3, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_pydevd_bundle_pydevd_constants, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_GlobalDebuggerHolder); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_GlobalDebuggerHolder, __pyx_t_3) < 0) __PYX_ERR(0, 3, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":4 + * from _pydev_bundle._pydev_saved_modules import threading, thread + * from _pydevd_bundle.pydevd_constants import GlobalDebuggerHolder + * import dis # <<<<<<<<<<<<<< + * import sys + * from _pydevd_frame_eval.pydevd_frame_tracing import update_globals_dict, dummy_tracing_holder + */ + __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_dis, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_dis, __pyx_t_2) < 0) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":5 + * from _pydevd_bundle.pydevd_constants import GlobalDebuggerHolder + * import dis + * import sys # <<<<<<<<<<<<<< + * from _pydevd_frame_eval.pydevd_frame_tracing import update_globals_dict, dummy_tracing_holder + * from _pydevd_frame_eval.pydevd_modify_bytecode import DebugHelper, insert_pydevd_breaks + */ + __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_sys, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_2) < 0) __PYX_ERR(0, 5, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":6 + * import dis + * import sys + * from _pydevd_frame_eval.pydevd_frame_tracing import update_globals_dict, dummy_tracing_holder # <<<<<<<<<<<<<< + * from _pydevd_frame_eval.pydevd_modify_bytecode import DebugHelper, insert_pydevd_breaks + * from pydevd_file_utils import get_abs_path_real_path_and_base_from_frame, NORM_PATHS_AND_BASE_CONTAINER + */ + __pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_update_globals_dict); + __Pyx_GIVEREF(__pyx_n_s_update_globals_dict); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_update_globals_dict)) __PYX_ERR(0, 6, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_dummy_tracing_holder); + __Pyx_GIVEREF(__pyx_n_s_dummy_tracing_holder); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_dummy_tracing_holder)) __PYX_ERR(0, 6, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_pydevd_frame_eval_pydevd_frame, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_update_globals_dict); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_update_globals_dict, __pyx_t_2) < 0) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_dummy_tracing_holder); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_dummy_tracing_holder, __pyx_t_2) < 0) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":7 + * import sys + * from _pydevd_frame_eval.pydevd_frame_tracing import update_globals_dict, dummy_tracing_holder + * from _pydevd_frame_eval.pydevd_modify_bytecode import DebugHelper, insert_pydevd_breaks # <<<<<<<<<<<<<< + * from pydevd_file_utils import get_abs_path_real_path_and_base_from_frame, NORM_PATHS_AND_BASE_CONTAINER + * from _pydevd_bundle.pydevd_trace_dispatch import fix_top_level_trace_and_get_trace_func + */ + __pyx_t_3 = PyList_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_DebugHelper); + __Pyx_GIVEREF(__pyx_n_s_DebugHelper); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_DebugHelper)) __PYX_ERR(0, 7, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_insert_pydevd_breaks); + __Pyx_GIVEREF(__pyx_n_s_insert_pydevd_breaks); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_insert_pydevd_breaks)) __PYX_ERR(0, 7, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_pydevd_frame_eval_pydevd_modify, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_DebugHelper); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_DebugHelper, __pyx_t_3) < 0) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_insert_pydevd_breaks); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_insert_pydevd_breaks, __pyx_t_3) < 0) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":8 + * from _pydevd_frame_eval.pydevd_frame_tracing import update_globals_dict, dummy_tracing_holder + * from _pydevd_frame_eval.pydevd_modify_bytecode import DebugHelper, insert_pydevd_breaks + * from pydevd_file_utils import get_abs_path_real_path_and_base_from_frame, NORM_PATHS_AND_BASE_CONTAINER # <<<<<<<<<<<<<< + * from _pydevd_bundle.pydevd_trace_dispatch import fix_top_level_trace_and_get_trace_func + * + */ + __pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_get_abs_path_real_path_and_base); + __Pyx_GIVEREF(__pyx_n_s_get_abs_path_real_path_and_base); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_get_abs_path_real_path_and_base)) __PYX_ERR(0, 8, __pyx_L1_error); + __Pyx_INCREF(__pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER); + __Pyx_GIVEREF(__pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER)) __PYX_ERR(0, 8, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_pydevd_file_utils, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_get_abs_path_real_path_and_base); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_abs_path_real_path_and_base, __pyx_t_2) < 0) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_NORM_PATHS_AND_BASE_CONTAINER, __pyx_t_2) < 0) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":9 + * from _pydevd_frame_eval.pydevd_modify_bytecode import DebugHelper, insert_pydevd_breaks + * from pydevd_file_utils import get_abs_path_real_path_and_base_from_frame, NORM_PATHS_AND_BASE_CONTAINER + * from _pydevd_bundle.pydevd_trace_dispatch import fix_top_level_trace_and_get_trace_func # <<<<<<<<<<<<<< + * + * from _pydevd_bundle.pydevd_additional_thread_info import _set_additional_thread_info_lock + */ + __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_fix_top_level_trace_and_get_trac); + __Pyx_GIVEREF(__pyx_n_s_fix_top_level_trace_and_get_trac); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_fix_top_level_trace_and_get_trac)) __PYX_ERR(0, 9, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_pydevd_bundle_pydevd_trace_disp, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_fix_top_level_trace_and_get_trac); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_fix_top_level_trace_and_get_trac, __pyx_t_3) < 0) __PYX_ERR(0, 9, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":11 + * from _pydevd_bundle.pydevd_trace_dispatch import fix_top_level_trace_and_get_trace_func + * + * from _pydevd_bundle.pydevd_additional_thread_info import _set_additional_thread_info_lock # <<<<<<<<<<<<<< + * from _pydevd_bundle.pydevd_cython cimport PyDBAdditionalThreadInfo + * from pydevd_tracing import SetTrace + */ + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_set_additional_thread_info_lock); + __Pyx_GIVEREF(__pyx_n_s_set_additional_thread_info_lock); + if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_set_additional_thread_info_lock)) __PYX_ERR(0, 11, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_pydevd_bundle_pydevd_additional, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 11, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_set_additional_thread_info_lock); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_additional_thread_info_lock, __pyx_t_2) < 0) __PYX_ERR(0, 11, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":13 + * from _pydevd_bundle.pydevd_additional_thread_info import _set_additional_thread_info_lock + * from _pydevd_bundle.pydevd_cython cimport PyDBAdditionalThreadInfo + * from pydevd_tracing import SetTrace # <<<<<<<<<<<<<< + * + * _get_ident = threading.get_ident # Note this is py3 only, if py2 needed to be supported, _get_ident would be needed. + */ + __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_n_s_SetTrace); + __Pyx_GIVEREF(__pyx_n_s_SetTrace); + if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_SetTrace)) __PYX_ERR(0, 13, __pyx_L1_error); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_pydevd_tracing, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_SetTrace); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_SetTrace, __pyx_t_3) < 0) __PYX_ERR(0, 13, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":15 + * from pydevd_tracing import SetTrace + * + * _get_ident = threading.get_ident # Note this is py3 only, if py2 needed to be supported, _get_ident would be needed. # <<<<<<<<<<<<<< + * _thread_local_info = threading.local() + * _thread_active = threading._active + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_threading); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_get_ident_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_ident, __pyx_t_3) < 0) __PYX_ERR(0, 15, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":16 + * + * _get_ident = threading.get_ident # Note this is py3 only, if py2 needed to be supported, _get_ident would be needed. + * _thread_local_info = threading.local() # <<<<<<<<<<<<<< + * _thread_active = threading._active + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_threading); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_local); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_thread_local_info, __pyx_t_3) < 0) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":17 + * _get_ident = threading.get_ident # Note this is py3 only, if py2 needed to be supported, _get_ident would be needed. + * _thread_local_info = threading.local() + * _thread_active = threading._active # <<<<<<<<<<<<<< + * + * def clear_thread_local_info(): + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_threading); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_active); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_thread_active, __pyx_t_2) < 0) __PYX_ERR(0, 17, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":19 + * _thread_active = threading._active + * + * def clear_thread_local_info(): # <<<<<<<<<<<<<< + * global _thread_local_info + * _thread_local_info = threading.local() + */ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_1clear_thread_local_info, 0, __pyx_n_s_clear_thread_local_info, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__11)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 19, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_clear_thread_local_info, __pyx_t_2) < 0) __PYX_ERR(0, 19, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_1__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ThreadInfo___reduce_cython, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__13)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo); + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle_ThreadInfo, (type(self), 0xe535b68, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_ThreadInfo__set_state(self, __pyx_state) + */ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_10ThreadInfo_3__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ThreadInfo___setstate_cython, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__15)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 16, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_ThreadInfo); + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_FuncCodeInfo___reduce_cython, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__16)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo); + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle_FuncCodeInfo, (type(self), 0x450d2d6, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_FuncCodeInfo__set_state(self, __pyx_state) + */ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_12FuncCodeInfo_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_FuncCodeInfo___setstate_cython, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__17)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 16, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator_FuncCodeInfo); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":152 + * + * + * def dummy_trace_dispatch(frame, str event, arg): # <<<<<<<<<<<<<< + * if event == 'call': + * if frame.f_trace is not None: + */ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_3dummy_trace_dispatch, 0, __pyx_n_s_dummy_trace_dispatch, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__19)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 152, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_dummy_trace_dispatch, __pyx_t_2) < 0) __PYX_ERR(0, 152, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":159 + * + * + * def get_thread_info_py() -> ThreadInfo: # <<<<<<<<<<<<<< + * return get_thread_info(PyEval_GetFrame()) + * + */ + __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 159, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_return, __pyx_n_s_ThreadInfo) < 0) __PYX_ERR(0, 159, __pyx_L1_error) + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_5get_thread_info_py, 0, __pyx_n_s_get_thread_info_py, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__20)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 159, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_thread_info_py, __pyx_t_3) < 0) __PYX_ERR(0, 159, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":196 + * + * + * def decref_py(obj): # <<<<<<<<<<<<<< + * ''' + * Helper to be called from Python. + */ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_7decref_py, 0, __pyx_n_s_decref_py, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__22)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 196, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_decref_py, __pyx_t_3) < 0) __PYX_ERR(0, 196, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":203 + * + * + * def get_func_code_info_py(thread_info, frame, code_obj) -> FuncCodeInfo: # <<<<<<<<<<<<<< + * ''' + * Helper to be called from Python. + */ + __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 203, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_FuncCodeInfo) < 0) __PYX_ERR(0, 203, __pyx_L1_error) + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_9get_func_code_info_py, 0, __pyx_n_s_get_func_code_info_py, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__24)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 203, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_func_code_info_py, __pyx_t_2) < 0) __PYX_ERR(0, 203, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":210 + * + * + * cdef int _code_extra_index = -1 # <<<<<<<<<<<<<< + * + * cdef FuncCodeInfo get_func_code_info(ThreadInfo thread_info, PyFrameObject * frame_obj, PyCodeObject * code_obj): + */ + __pyx_v_18_pydevd_frame_eval_22pydevd_frame_evaluator__code_extra_index = -1; + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CodeLineInfo___reduce_cython, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__25)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo); + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle__CodeLineInfo, (type(self), 0x5a9bcd5, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle__CodeLineInfo__set_state(self, __pyx_state) + */ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_13_CodeLineInfo_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CodeLineInfo___setstate_cython, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__26)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 16, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CodeLineInfo); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":329 + * + * # Note: this method has a version in pure-python too. + * def _get_code_line_info(code_obj): # <<<<<<<<<<<<<< + * line_to_offset: dict = {} + * first_line: int = None + */ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_get_code_line_info, 0, __pyx_n_s_get_code_line_info, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__28)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 329, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_code_line_info, __pyx_t_2) < 0) __PYX_ERR(0, 329, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":351 + * # handled by the cython side in `FuncCodeInfo get_func_code_info` by providing the + * # same code info if the debugger mtime is still the same). + * _cache: dict = {} # <<<<<<<<<<<<<< + * + * def get_cached_code_obj_info_py(code_obj_py): + */ + __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 351, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_cache, __pyx_t_2) < 0) __PYX_ERR(0, 351, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":353 + * _cache: dict = {} + * + * def get_cached_code_obj_info_py(code_obj_py): # <<<<<<<<<<<<<< + * ''' + * :return _CacheValue: + */ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_13get_cached_code_obj_info_py, 0, __pyx_n_s_get_cached_code_obj_info_py, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__30)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 353, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_cached_code_obj_info_py, __pyx_t_2) < 0) __PYX_ERR(0, 353, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":379 + * self.code_lines_as_set = set(code_line_info.line_to_offset) + * + * cpdef compute_force_stay_in_untraced_mode(self, breakpoints): # <<<<<<<<<<<<<< + * ''' + * :param breakpoints: + */ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_3compute_force_stay_in_untraced_mode, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CacheValue_compute_force_stay_i, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__32)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 379, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue, __pyx_n_s_compute_force_stay_in_untraced_m, __pyx_t_2) < 0) __PYX_ERR(0, 379, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue); + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CacheValue___reduce_cython, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue); + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle__CacheValue, (type(self), 0xac42a46, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle__CacheValue__set_state(self, __pyx_state) + */ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_11_CacheValue_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CacheValue___setstate_cython, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__34)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 16, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyType_Modified(__pyx_ptype_18_pydevd_frame_eval_22pydevd_frame_evaluator__CacheValue); + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":401 + * return breakpoint_found, force_stay_in_untraced_mode + * + * def generate_code_with_breakpoints_py(object code_obj_py, dict breakpoints): # <<<<<<<<<<<<<< + * return generate_code_with_breakpoints(code_obj_py, breakpoints) + * + */ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_15generate_code_with_breakpoints_py, 0, __pyx_n_s_generate_code_with_breakpoints_p, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__36)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 401, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_generate_code_with_breakpoints_p, __pyx_t_2) < 0) __PYX_ERR(0, 401, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":471 + * return breakpoint_found, code_obj_py + * + * import sys # <<<<<<<<<<<<<< + * + * cdef bint IS_PY_39_OWNARDS = sys.version_info[:2] >= (3, 9) + */ + __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_sys, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 471, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_2) < 0) __PYX_ERR(0, 471, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":473 + * import sys + * + * cdef bint IS_PY_39_OWNARDS = sys.version_info[:2] >= (3, 9) # <<<<<<<<<<<<<< + * + * def frame_eval_func(): + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_sys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 473, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_version_info); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 473, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_t_3, 0, 2, NULL, NULL, &__pyx_slice__37, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 473, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_tuple__38, Py_GE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 473, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 473, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_18_pydevd_frame_eval_22pydevd_frame_evaluator_IS_PY_39_OWNARDS = __pyx_t_4; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":475 + * cdef bint IS_PY_39_OWNARDS = sys.version_info[:2] >= (3, 9) + * + * def frame_eval_func(): # <<<<<<<<<<<<<< + * cdef PyThreadState *state = PyThreadState_Get() + * if IS_PY_39_OWNARDS: + */ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_17frame_eval_func, 0, __pyx_n_s_frame_eval_func, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__40)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 475, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_frame_eval_func, __pyx_t_3) < 0) __PYX_ERR(0, 475, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":484 + * + * + * def stop_frame_eval(): # <<<<<<<<<<<<<< + * cdef PyThreadState *state = PyThreadState_Get() + * state.interp.eval_frame = _PyEval_EvalFrameDefault + */ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_19stop_frame_eval, 0, __pyx_n_s_stop_frame_eval, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__41)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 484, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_stop_frame_eval, __pyx_t_3) < 0) __PYX_ERR(0, 484, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "(tree fragment)":1 + * def __pyx_unpickle_ThreadInfo(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError + * cdef object __pyx_result + */ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_21__pyx_unpickle_ThreadInfo, 0, __pyx_n_s_pyx_unpickle_ThreadInfo, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__43)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_ThreadInfo, __pyx_t_3) < 0) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "(tree fragment)":11 + * __pyx_unpickle_ThreadInfo__set_state( __pyx_result, __pyx_state) + * return __pyx_result + * cdef __pyx_unpickle_ThreadInfo__set_state(ThreadInfo __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< + * __pyx_result._can_create_dummy_thread = __pyx_state[0]; __pyx_result.additional_info = __pyx_state[1]; __pyx_result.force_stay_in_untraced_mode = __pyx_state[2]; __pyx_result.fully_initialized = __pyx_state[3]; __pyx_result.inside_frame_eval = __pyx_state[4]; __pyx_result.is_pydevd_thread = __pyx_state[5]; __pyx_result.thread_trace_func = __pyx_state[6] + * if len(__pyx_state) > 7 and hasattr(__pyx_result, '__dict__'): + */ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_23__pyx_unpickle_FuncCodeInfo, 0, __pyx_n_s_pyx_unpickle_FuncCodeInfo, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__44)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_FuncCodeInfo, __pyx_t_3) < 0) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "(tree fragment)":1 + * def __pyx_unpickle__CodeLineInfo(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError + * cdef object __pyx_result + */ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_25__pyx_unpickle__CodeLineInfo, 0, __pyx_n_s_pyx_unpickle__CodeLineInfo, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__45)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle__CodeLineInfo, __pyx_t_3) < 0) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "(tree fragment)":11 + * __pyx_unpickle__CodeLineInfo__set_state(<_CodeLineInfo> __pyx_result, __pyx_state) + * return __pyx_result + * cdef __pyx_unpickle__CodeLineInfo__set_state(_CodeLineInfo __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< + * __pyx_result.first_line = __pyx_state[0]; __pyx_result.last_line = __pyx_state[1]; __pyx_result.line_to_offset = __pyx_state[2] + * if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'): + */ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_18_pydevd_frame_eval_22pydevd_frame_evaluator_27__pyx_unpickle__CacheValue, 0, __pyx_n_s_pyx_unpickle__CacheValue, NULL, __pyx_n_s_pydevd_frame_eval_pydevd_frame_3, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle__CacheValue, __pyx_t_3) < 0) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "_pydevd_frame_eval/pydevd_frame_evaluator.pyx":1 + * from __future__ import print_function # <<<<<<<<<<<<<< + * from _pydev_bundle._pydev_saved_modules import threading, thread + * from _pydevd_bundle.pydevd_constants import GlobalDebuggerHolder + */ + __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_3) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /*--- Wrapped vars code ---*/ + + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + if (__pyx_m) { + if (__pyx_d && stringtab_initialized) { + __Pyx_AddTraceback("init _pydevd_frame_eval.pydevd_frame_evaluator", __pyx_clineno, __pyx_lineno, __pyx_filename); + } + #if !CYTHON_USE_MODULE_STATE + Py_CLEAR(__pyx_m); + #else + Py_DECREF(__pyx_m); + if (pystate_addmodule_run) { + PyObject *tp, *value, *tb; + PyErr_Fetch(&tp, &value, &tb); + PyState_RemoveModule(&__pyx_moduledef); + PyErr_Restore(tp, value, tb); + } + #endif + } else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_ImportError, "init _pydevd_frame_eval.pydevd_frame_evaluator"); + } + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + #if CYTHON_PEP489_MULTI_PHASE_INIT + return (__pyx_m != NULL) ? 0 : -1; + #elif PY_MAJOR_VERSION >= 3 + return __pyx_m; + #else + return; + #endif +} +/* #### Code section: cleanup_globals ### */ +/* #### Code section: cleanup_module ### */ +/* #### Code section: main_method ### */ +/* #### Code section: utility_code_pragmas ### */ +#ifdef _MSC_VER +#pragma warning( push ) +/* Warning 4127: conditional expression is constant + * Cython uses constant conditional expressions to allow in inline functions to be optimized at + * compile-time, so this warning is not useful + */ +#pragma warning( disable : 4127 ) +#endif + + + +/* #### Code section: utility_code_def ### */ + +/* --- Runtime support code --- */ +/* Refnanny */ +#if CYTHON_REFNANNY +static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { + PyObject *m = NULL, *p = NULL; + void *r = NULL; + m = PyImport_ImportModule(modname); + if (!m) goto end; + p = PyObject_GetAttrString(m, "RefNannyAPI"); + if (!p) goto end; + r = PyLong_AsVoidPtr(p); +end: + Py_XDECREF(p); + Py_XDECREF(m); + return (__Pyx_RefNannyAPIStruct *)r; +} +#endif + +/* PyErrExceptionMatches */ +#if CYTHON_FAST_THREAD_STATE +static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(tuple); +#if PY_MAJOR_VERSION >= 3 + for (i=0; i= 0x030C00A6 + PyObject *current_exception = tstate->current_exception; + if (unlikely(!current_exception)) return 0; + exc_type = (PyObject*) Py_TYPE(current_exception); + if (exc_type == err) return 1; +#else + exc_type = tstate->curexc_type; + if (exc_type == err) return 1; + if (unlikely(!exc_type)) return 0; +#endif + #if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(exc_type); + #endif + if (unlikely(PyTuple_Check(err))) { + result = __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); + } else { + result = __Pyx_PyErr_GivenExceptionMatches(exc_type, err); + } + #if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(exc_type); + #endif + return result; +} +#endif + +/* PyErrFetchRestore */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { +#if PY_VERSION_HEX >= 0x030C00A6 + PyObject *tmp_value; + assert(type == NULL || (value != NULL && type == (PyObject*) Py_TYPE(value))); + if (value) { + #if CYTHON_COMPILING_IN_CPYTHON + if (unlikely(((PyBaseExceptionObject*) value)->traceback != tb)) + #endif + PyException_SetTraceback(value, tb); + } + tmp_value = tstate->current_exception; + tstate->current_exception = value; + Py_XDECREF(tmp_value); + Py_XDECREF(type); + Py_XDECREF(tb); +#else + PyObject *tmp_type, *tmp_value, *tmp_tb; + tmp_type = tstate->curexc_type; + tmp_value = tstate->curexc_value; + tmp_tb = tstate->curexc_traceback; + tstate->curexc_type = type; + tstate->curexc_value = value; + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +#endif +} +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { +#if PY_VERSION_HEX >= 0x030C00A6 + PyObject* exc_value; + exc_value = tstate->current_exception; + tstate->current_exception = 0; + *value = exc_value; + *type = NULL; + *tb = NULL; + if (exc_value) { + *type = (PyObject*) Py_TYPE(exc_value); + Py_INCREF(*type); + #if CYTHON_COMPILING_IN_CPYTHON + *tb = ((PyBaseExceptionObject*) exc_value)->traceback; + Py_XINCREF(*tb); + #else + *tb = PyException_GetTraceback(exc_value); + #endif + } +#else + *type = tstate->curexc_type; + *value = tstate->curexc_value; + *tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; +#endif +} +#endif + +/* PyObjectGetAttrStr */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro)) + return tp->tp_getattro(obj, attr_name); +#if PY_MAJOR_VERSION < 3 + if (likely(tp->tp_getattr)) + return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); +#endif + return PyObject_GetAttr(obj, attr_name); +} +#endif + +/* PyObjectGetAttrStrNoError */ +#if __PYX_LIMITED_VERSION_HEX < 0x030d00A1 +static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) + __Pyx_PyErr_Clear(); +} +#endif +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) { + PyObject *result; +#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1 + (void) PyObject_GetOptionalAttr(obj, attr_name, &result); + return result; +#else +#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS && PY_VERSION_HEX >= 0x030700B1 + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) { + return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1); + } +#endif + result = __Pyx_PyObject_GetAttrStr(obj, attr_name); + if (unlikely(!result)) { + __Pyx_PyObject_GetAttrStr_ClearAttributeError(); + } + return result; +#endif +} + +/* GetBuiltinName */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name) { + PyObject* result = __Pyx_PyObject_GetAttrStrNoError(__pyx_b, name); + if (unlikely(!result) && !PyErr_Occurred()) { + PyErr_Format(PyExc_NameError, +#if PY_MAJOR_VERSION >= 3 + "name '%U' is not defined", name); +#else + "name '%.200s' is not defined", PyString_AS_STRING(name)); +#endif + } + return result; +} + +/* TupleAndListFromArray */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE void __Pyx_copy_object_array(PyObject *const *CYTHON_RESTRICT src, PyObject** CYTHON_RESTRICT dest, Py_ssize_t length) { + PyObject *v; + Py_ssize_t i; + for (i = 0; i < length; i++) { + v = dest[i] = src[i]; + Py_INCREF(v); + } +} +static CYTHON_INLINE PyObject * +__Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n) +{ + PyObject *res; + if (n <= 0) { + Py_INCREF(__pyx_empty_tuple); + return __pyx_empty_tuple; + } + res = PyTuple_New(n); + if (unlikely(res == NULL)) return NULL; + __Pyx_copy_object_array(src, ((PyTupleObject*)res)->ob_item, n); + return res; +} +static CYTHON_INLINE PyObject * +__Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n) +{ + PyObject *res; + if (n <= 0) { + return PyList_New(0); + } + res = PyList_New(n); + if (unlikely(res == NULL)) return NULL; + __Pyx_copy_object_array(src, ((PyListObject*)res)->ob_item, n); + return res; +} +#endif + +/* BytesEquals */ +static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) { +#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API + return PyObject_RichCompareBool(s1, s2, equals); +#else + if (s1 == s2) { + return (equals == Py_EQ); + } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) { + const char *ps1, *ps2; + Py_ssize_t length = PyBytes_GET_SIZE(s1); + if (length != PyBytes_GET_SIZE(s2)) + return (equals == Py_NE); + ps1 = PyBytes_AS_STRING(s1); + ps2 = PyBytes_AS_STRING(s2); + if (ps1[0] != ps2[0]) { + return (equals == Py_NE); + } else if (length == 1) { + return (equals == Py_EQ); + } else { + int result; +#if CYTHON_USE_UNICODE_INTERNALS && (PY_VERSION_HEX < 0x030B0000) + Py_hash_t hash1, hash2; + hash1 = ((PyBytesObject*)s1)->ob_shash; + hash2 = ((PyBytesObject*)s2)->ob_shash; + if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { + return (equals == Py_NE); + } +#endif + result = memcmp(ps1, ps2, (size_t)length); + return (equals == Py_EQ) ? (result == 0) : (result != 0); + } + } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) { + return (equals == Py_NE); + } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) { + return (equals == Py_NE); + } else { + int result; + PyObject* py_result = PyObject_RichCompare(s1, s2, equals); + if (!py_result) + return -1; + result = __Pyx_PyObject_IsTrue(py_result); + Py_DECREF(py_result); + return result; + } +#endif +} + +/* UnicodeEquals */ +static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) { +#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API + return PyObject_RichCompareBool(s1, s2, equals); +#else +#if PY_MAJOR_VERSION < 3 + PyObject* owned_ref = NULL; +#endif + int s1_is_unicode, s2_is_unicode; + if (s1 == s2) { + goto return_eq; + } + s1_is_unicode = PyUnicode_CheckExact(s1); + s2_is_unicode = PyUnicode_CheckExact(s2); +#if PY_MAJOR_VERSION < 3 + if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) { + owned_ref = PyUnicode_FromObject(s2); + if (unlikely(!owned_ref)) + return -1; + s2 = owned_ref; + s2_is_unicode = 1; + } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) { + owned_ref = PyUnicode_FromObject(s1); + if (unlikely(!owned_ref)) + return -1; + s1 = owned_ref; + s1_is_unicode = 1; + } else if (((!s2_is_unicode) & (!s1_is_unicode))) { + return __Pyx_PyBytes_Equals(s1, s2, equals); + } +#endif + if (s1_is_unicode & s2_is_unicode) { + Py_ssize_t length; + int kind; + void *data1, *data2; + if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0)) + return -1; + length = __Pyx_PyUnicode_GET_LENGTH(s1); + if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) { + goto return_ne; + } +#if CYTHON_USE_UNICODE_INTERNALS + { + Py_hash_t hash1, hash2; + #if CYTHON_PEP393_ENABLED + hash1 = ((PyASCIIObject*)s1)->hash; + hash2 = ((PyASCIIObject*)s2)->hash; + #else + hash1 = ((PyUnicodeObject*)s1)->hash; + hash2 = ((PyUnicodeObject*)s2)->hash; + #endif + if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { + goto return_ne; + } + } +#endif + kind = __Pyx_PyUnicode_KIND(s1); + if (kind != __Pyx_PyUnicode_KIND(s2)) { + goto return_ne; + } + data1 = __Pyx_PyUnicode_DATA(s1); + data2 = __Pyx_PyUnicode_DATA(s2); + if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) { + goto return_ne; + } else if (length == 1) { + goto return_eq; + } else { + int result = memcmp(data1, data2, (size_t)(length * kind)); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_EQ) ? (result == 0) : (result != 0); + } + } else if ((s1 == Py_None) & s2_is_unicode) { + goto return_ne; + } else if ((s2 == Py_None) & s1_is_unicode) { + goto return_ne; + } else { + int result; + PyObject* py_result = PyObject_RichCompare(s1, s2, equals); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + if (!py_result) + return -1; + result = __Pyx_PyObject_IsTrue(py_result); + Py_DECREF(py_result); + return result; + } +return_eq: + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_EQ); +return_ne: + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_NE); +#endif +} + +/* fastcall */ +#if CYTHON_METH_FASTCALL +static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s) +{ + Py_ssize_t i, n = PyTuple_GET_SIZE(kwnames); + for (i = 0; i < n; i++) + { + if (s == PyTuple_GET_ITEM(kwnames, i)) return kwvalues[i]; + } + for (i = 0; i < n; i++) + { + int eq = __Pyx_PyUnicode_Equals(s, PyTuple_GET_ITEM(kwnames, i), Py_EQ); + if (unlikely(eq != 0)) { + if (unlikely(eq < 0)) return NULL; + return kwvalues[i]; + } + } + return NULL; +} +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 +CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues) { + Py_ssize_t i, nkwargs = PyTuple_GET_SIZE(kwnames); + PyObject *dict; + dict = PyDict_New(); + if (unlikely(!dict)) + return NULL; + for (i=0; itp_dict; + return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0; +} +static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) { + PyObject **dictptr = NULL; + Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset; + if (offset) { +#if CYTHON_COMPILING_IN_CPYTHON + dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj); +#else + dictptr = _PyObject_GetDictPtr(obj); +#endif + } + return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0; +} +static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) { + PyObject *dict = Py_TYPE(obj)->tp_dict; + if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict))) + return 0; + return obj_dict_version == __Pyx_get_object_dict_version(obj); +} +#endif + +/* GetModuleGlobalName */ +#if CYTHON_USE_DICT_VERSIONS +static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value) +#else +static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name) +#endif +{ + PyObject *result; +#if !CYTHON_AVOID_BORROWED_REFS +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && PY_VERSION_HEX < 0x030d0000 + result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); + __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } else if (unlikely(PyErr_Occurred())) { + return NULL; + } +#elif CYTHON_COMPILING_IN_LIMITED_API + if (unlikely(!__pyx_m)) { + return NULL; + } + result = PyObject_GetAttr(__pyx_m, name); + if (likely(result)) { + return result; + } +#else + result = PyDict_GetItem(__pyx_d, name); + __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } +#endif +#else + result = PyObject_GetItem(__pyx_d, name); + __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } + PyErr_Clear(); +#endif + return __Pyx_GetBuiltinName(name); +} + +/* PyFunctionFastCall */ +#if CYTHON_FAST_PYCALL && !CYTHON_VECTORCALL +static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, + PyObject *globals) { + PyFrameObject *f; + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject **fastlocals; + Py_ssize_t i; + PyObject *result; + assert(globals != NULL); + /* XXX Perhaps we should create a specialized + PyFrame_New() that doesn't take locals, but does + take builtins without sanity checking them. + */ + assert(tstate != NULL); + f = PyFrame_New(tstate, co, globals, NULL); + if (f == NULL) { + return NULL; + } + fastlocals = __Pyx_PyFrame_GetLocalsplus(f); + for (i = 0; i < na; i++) { + Py_INCREF(*args); + fastlocals[i] = *args++; + } + result = PyEval_EvalFrameEx(f,0); + ++tstate->recursion_depth; + Py_DECREF(f); + --tstate->recursion_depth; + return result; +} +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) { + PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); + PyObject *globals = PyFunction_GET_GLOBALS(func); + PyObject *argdefs = PyFunction_GET_DEFAULTS(func); + PyObject *closure; +#if PY_MAJOR_VERSION >= 3 + PyObject *kwdefs; +#endif + PyObject *kwtuple, **k; + PyObject **d; + Py_ssize_t nd; + Py_ssize_t nk; + PyObject *result; + assert(kwargs == NULL || PyDict_Check(kwargs)); + nk = kwargs ? PyDict_Size(kwargs) : 0; + #if PY_MAJOR_VERSION < 3 + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) { + return NULL; + } + #else + if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) { + return NULL; + } + #endif + if ( +#if PY_MAJOR_VERSION >= 3 + co->co_kwonlyargcount == 0 && +#endif + likely(kwargs == NULL || nk == 0) && + co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { + if (argdefs == NULL && co->co_argcount == nargs) { + result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); + goto done; + } + else if (nargs == 0 && argdefs != NULL + && co->co_argcount == Py_SIZE(argdefs)) { + /* function called with no arguments, but all parameters have + a default value: use default values as arguments .*/ + args = &PyTuple_GET_ITEM(argdefs, 0); + result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); + goto done; + } + } + if (kwargs != NULL) { + Py_ssize_t pos, i; + kwtuple = PyTuple_New(2 * nk); + if (kwtuple == NULL) { + result = NULL; + goto done; + } + k = &PyTuple_GET_ITEM(kwtuple, 0); + pos = i = 0; + while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { + Py_INCREF(k[i]); + Py_INCREF(k[i+1]); + i += 2; + } + nk = i / 2; + } + else { + kwtuple = NULL; + k = NULL; + } + closure = PyFunction_GET_CLOSURE(func); +#if PY_MAJOR_VERSION >= 3 + kwdefs = PyFunction_GET_KW_DEFAULTS(func); +#endif + if (argdefs != NULL) { + d = &PyTuple_GET_ITEM(argdefs, 0); + nd = Py_SIZE(argdefs); + } + else { + d = NULL; + nd = 0; + } +#if PY_MAJOR_VERSION >= 3 + result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, + args, (int)nargs, + k, (int)nk, + d, (int)nd, kwdefs, closure); +#else + result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, + args, (int)nargs, + k, (int)nk, + d, (int)nd, closure); +#endif + Py_XDECREF(kwtuple); +done: + Py_LeaveRecursiveCall(); + return result; +} +#endif + +/* PyObjectCall */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { + PyObject *result; + ternaryfunc call = Py_TYPE(func)->tp_call; + if (unlikely(!call)) + return PyObject_Call(func, arg, kw); + #if PY_MAJOR_VERSION < 3 + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + #else + if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) + return NULL; + #endif + result = (*call)(func, arg, kw); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyObjectCallMethO */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { + PyObject *self, *result; + PyCFunction cfunc; + cfunc = __Pyx_CyOrPyCFunction_GET_FUNCTION(func); + self = __Pyx_CyOrPyCFunction_GET_SELF(func); + #if PY_MAJOR_VERSION < 3 + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + #else + if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) + return NULL; + #endif + result = cfunc(self, arg); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyObjectFastCall */ +#if PY_VERSION_HEX < 0x03090000 || CYTHON_COMPILING_IN_LIMITED_API +static PyObject* __Pyx_PyObject_FastCall_fallback(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs) { + PyObject *argstuple; + PyObject *result = 0; + size_t i; + argstuple = PyTuple_New((Py_ssize_t)nargs); + if (unlikely(!argstuple)) return NULL; + for (i = 0; i < nargs; i++) { + Py_INCREF(args[i]); + if (__Pyx_PyTuple_SET_ITEM(argstuple, (Py_ssize_t)i, args[i]) < 0) goto bad; + } + result = __Pyx_PyObject_Call(func, argstuple, kwargs); + bad: + Py_DECREF(argstuple); + return result; +} +#endif +static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t _nargs, PyObject *kwargs) { + Py_ssize_t nargs = __Pyx_PyVectorcall_NARGS(_nargs); +#if CYTHON_COMPILING_IN_CPYTHON + if (nargs == 0 && kwargs == NULL) { + if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_NOARGS)) + return __Pyx_PyObject_CallMethO(func, NULL); + } + else if (nargs == 1 && kwargs == NULL) { + if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_O)) + return __Pyx_PyObject_CallMethO(func, args[0]); + } +#endif + #if PY_VERSION_HEX < 0x030800B1 + #if CYTHON_FAST_PYCCALL + if (PyCFunction_Check(func)) { + if (kwargs) { + return _PyCFunction_FastCallDict(func, args, nargs, kwargs); + } else { + return _PyCFunction_FastCallKeywords(func, args, nargs, NULL); + } + } + #if PY_VERSION_HEX >= 0x030700A1 + if (!kwargs && __Pyx_IS_TYPE(func, &PyMethodDescr_Type)) { + return _PyMethodDescr_FastCallKeywords(func, args, nargs, NULL); + } + #endif + #endif + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(func)) { + return __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs); + } + #endif + #endif + if (kwargs == NULL) { + #if CYTHON_VECTORCALL + #if PY_VERSION_HEX < 0x03090000 + vectorcallfunc f = _PyVectorcall_Function(func); + #else + vectorcallfunc f = PyVectorcall_Function(func); + #endif + if (f) { + return f(func, args, (size_t)nargs, NULL); + } + #elif defined(__Pyx_CyFunction_USED) && CYTHON_BACKPORT_VECTORCALL + if (__Pyx_CyFunction_CheckExact(func)) { + __pyx_vectorcallfunc f = __Pyx_CyFunction_func_vectorcall(func); + if (f) return f(func, args, (size_t)nargs, NULL); + } + #endif + } + if (nargs == 0) { + return __Pyx_PyObject_Call(func, __pyx_empty_tuple, kwargs); + } + #if PY_VERSION_HEX >= 0x03090000 && !CYTHON_COMPILING_IN_LIMITED_API + return PyObject_VectorcallDict(func, args, (size_t)nargs, kwargs); + #else + return __Pyx_PyObject_FastCall_fallback(func, args, (size_t)nargs, kwargs); + #endif +} + +/* RaiseException */ +#if PY_MAJOR_VERSION < 3 +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { + __Pyx_PyThreadState_declare + CYTHON_UNUSED_VAR(cause); + Py_XINCREF(type); + if (!value || value == Py_None) + value = NULL; + else + Py_INCREF(value); + if (!tb || tb == Py_None) + tb = NULL; + else { + Py_INCREF(tb); + if (!PyTraceBack_Check(tb)) { + PyErr_SetString(PyExc_TypeError, + "raise: arg 3 must be a traceback or None"); + goto raise_error; + } + } + if (PyType_Check(type)) { +#if CYTHON_COMPILING_IN_PYPY + if (!value) { + Py_INCREF(Py_None); + value = Py_None; + } +#endif + PyErr_NormalizeException(&type, &value, &tb); + } else { + if (value) { + PyErr_SetString(PyExc_TypeError, + "instance exception may not have a separate value"); + goto raise_error; + } + value = type; + type = (PyObject*) Py_TYPE(type); + Py_INCREF(type); + if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { + PyErr_SetString(PyExc_TypeError, + "raise: exception class must be a subclass of BaseException"); + goto raise_error; + } + } + __Pyx_PyThreadState_assign + __Pyx_ErrRestore(type, value, tb); + return; +raise_error: + Py_XDECREF(value); + Py_XDECREF(type); + Py_XDECREF(tb); + return; +} +#else +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { + PyObject* owned_instance = NULL; + if (tb == Py_None) { + tb = 0; + } else if (tb && !PyTraceBack_Check(tb)) { + PyErr_SetString(PyExc_TypeError, + "raise: arg 3 must be a traceback or None"); + goto bad; + } + if (value == Py_None) + value = 0; + if (PyExceptionInstance_Check(type)) { + if (value) { + PyErr_SetString(PyExc_TypeError, + "instance exception may not have a separate value"); + goto bad; + } + value = type; + type = (PyObject*) Py_TYPE(value); + } else if (PyExceptionClass_Check(type)) { + PyObject *instance_class = NULL; + if (value && PyExceptionInstance_Check(value)) { + instance_class = (PyObject*) Py_TYPE(value); + if (instance_class != type) { + int is_subclass = PyObject_IsSubclass(instance_class, type); + if (!is_subclass) { + instance_class = NULL; + } else if (unlikely(is_subclass == -1)) { + goto bad; + } else { + type = instance_class; + } + } + } + if (!instance_class) { + PyObject *args; + if (!value) + args = PyTuple_New(0); + else if (PyTuple_Check(value)) { + Py_INCREF(value); + args = value; + } else + args = PyTuple_Pack(1, value); + if (!args) + goto bad; + owned_instance = PyObject_Call(type, args, NULL); + Py_DECREF(args); + if (!owned_instance) + goto bad; + value = owned_instance; + if (!PyExceptionInstance_Check(value)) { + PyErr_Format(PyExc_TypeError, + "calling %R should have returned an instance of " + "BaseException, not %R", + type, Py_TYPE(value)); + goto bad; + } + } + } else { + PyErr_SetString(PyExc_TypeError, + "raise: exception class must be a subclass of BaseException"); + goto bad; + } + if (cause) { + PyObject *fixed_cause; + if (cause == Py_None) { + fixed_cause = NULL; + } else if (PyExceptionClass_Check(cause)) { + fixed_cause = PyObject_CallObject(cause, NULL); + if (fixed_cause == NULL) + goto bad; + } else if (PyExceptionInstance_Check(cause)) { + fixed_cause = cause; + Py_INCREF(fixed_cause); + } else { + PyErr_SetString(PyExc_TypeError, + "exception causes must derive from " + "BaseException"); + goto bad; + } + PyException_SetCause(value, fixed_cause); + } + PyErr_SetObject(type, value); + if (tb) { + #if PY_VERSION_HEX >= 0x030C00A6 + PyException_SetTraceback(value, tb); + #elif CYTHON_FAST_THREAD_STATE + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject* tmp_tb = tstate->curexc_traceback; + if (tb != tmp_tb) { + Py_INCREF(tb); + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_tb); + } +#else + PyObject *tmp_type, *tmp_value, *tmp_tb; + PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); + Py_INCREF(tb); + PyErr_Restore(tmp_type, tmp_value, tb); + Py_XDECREF(tmp_tb); +#endif + } +bad: + Py_XDECREF(owned_instance); + return; +} +#endif + +/* PyIntBinop */ +#if !CYTHON_COMPILING_IN_PYPY +static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) { + CYTHON_MAYBE_UNUSED_VAR(intval); + CYTHON_MAYBE_UNUSED_VAR(inplace); + CYTHON_UNUSED_VAR(zerodivision_check); + #if PY_MAJOR_VERSION < 3 + if (likely(PyInt_CheckExact(op1))) { + const long b = intval; + long x; + long a = PyInt_AS_LONG(op1); + + x = (long)((unsigned long)a + (unsigned long)b); + if (likely((x^a) >= 0 || (x^b) >= 0)) + return PyInt_FromLong(x); + return PyLong_Type.tp_as_number->nb_add(op1, op2); + } + #endif + #if CYTHON_USE_PYLONG_INTERNALS + if (likely(PyLong_CheckExact(op1))) { + const long b = intval; + long a, x; +#ifdef HAVE_LONG_LONG + const PY_LONG_LONG llb = intval; + PY_LONG_LONG lla, llx; +#endif + if (unlikely(__Pyx_PyLong_IsZero(op1))) { + return __Pyx_NewRef(op2); + } + if (likely(__Pyx_PyLong_IsCompact(op1))) { + a = __Pyx_PyLong_CompactValue(op1); + } else { + const digit* digits = __Pyx_PyLong_Digits(op1); + const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(op1); + switch (size) { + case -2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case -3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case -4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + default: return PyLong_Type.tp_as_number->nb_add(op1, op2); + } + } + x = a + b; + return PyLong_FromLong(x); +#ifdef HAVE_LONG_LONG + long_long: + llx = lla + llb; + return PyLong_FromLongLong(llx); +#endif + + + } + #endif + if (PyFloat_CheckExact(op1)) { + const long b = intval; +#if CYTHON_COMPILING_IN_LIMITED_API + double a = __pyx_PyFloat_AsDouble(op1); +#else + double a = PyFloat_AS_DOUBLE(op1); +#endif + double result; + + PyFPE_START_PROTECT("add", return NULL) + result = ((double)a) + (double)b; + PyFPE_END_PROTECT(result) + return PyFloat_FromDouble(result); + } + return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2); +} +#endif + +/* SliceObject */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(PyObject* obj, + Py_ssize_t cstart, Py_ssize_t cstop, + PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice, + int has_cstart, int has_cstop, int wraparound) { + __Pyx_TypeName obj_type_name; +#if CYTHON_USE_TYPE_SLOTS + PyMappingMethods* mp; +#if PY_MAJOR_VERSION < 3 + PySequenceMethods* ms = Py_TYPE(obj)->tp_as_sequence; + if (likely(ms && ms->sq_slice)) { + if (!has_cstart) { + if (_py_start && (*_py_start != Py_None)) { + cstart = __Pyx_PyIndex_AsSsize_t(*_py_start); + if ((cstart == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad; + } else + cstart = 0; + } + if (!has_cstop) { + if (_py_stop && (*_py_stop != Py_None)) { + cstop = __Pyx_PyIndex_AsSsize_t(*_py_stop); + if ((cstop == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad; + } else + cstop = PY_SSIZE_T_MAX; + } + if (wraparound && unlikely((cstart < 0) | (cstop < 0)) && likely(ms->sq_length)) { + Py_ssize_t l = ms->sq_length(obj); + if (likely(l >= 0)) { + if (cstop < 0) { + cstop += l; + if (cstop < 0) cstop = 0; + } + if (cstart < 0) { + cstart += l; + if (cstart < 0) cstart = 0; + } + } else { + if (!PyErr_ExceptionMatches(PyExc_OverflowError)) + goto bad; + PyErr_Clear(); + } + } + return ms->sq_slice(obj, cstart, cstop); + } +#else + CYTHON_UNUSED_VAR(wraparound); +#endif + mp = Py_TYPE(obj)->tp_as_mapping; + if (likely(mp && mp->mp_subscript)) +#else + CYTHON_UNUSED_VAR(wraparound); +#endif + { + PyObject* result; + PyObject *py_slice, *py_start, *py_stop; + if (_py_slice) { + py_slice = *_py_slice; + } else { + PyObject* owned_start = NULL; + PyObject* owned_stop = NULL; + if (_py_start) { + py_start = *_py_start; + } else { + if (has_cstart) { + owned_start = py_start = PyInt_FromSsize_t(cstart); + if (unlikely(!py_start)) goto bad; + } else + py_start = Py_None; + } + if (_py_stop) { + py_stop = *_py_stop; + } else { + if (has_cstop) { + owned_stop = py_stop = PyInt_FromSsize_t(cstop); + if (unlikely(!py_stop)) { + Py_XDECREF(owned_start); + goto bad; + } + } else + py_stop = Py_None; + } + py_slice = PySlice_New(py_start, py_stop, Py_None); + Py_XDECREF(owned_start); + Py_XDECREF(owned_stop); + if (unlikely(!py_slice)) goto bad; + } +#if CYTHON_USE_TYPE_SLOTS + result = mp->mp_subscript(obj, py_slice); +#else + result = PyObject_GetItem(obj, py_slice); +#endif + if (!_py_slice) { + Py_DECREF(py_slice); + } + return result; + } + obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj)); + PyErr_Format(PyExc_TypeError, + "'" __Pyx_FMT_TYPENAME "' object is unsliceable", obj_type_name); + __Pyx_DECREF_TypeName(obj_type_name); +bad: + return NULL; +} + +/* GetAttr3 */ +#if __PYX_LIMITED_VERSION_HEX < 0x030d00A1 +static PyObject *__Pyx_GetAttr3Default(PyObject *d) { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) + return NULL; + __Pyx_PyErr_Clear(); + Py_INCREF(d); + return d; +} +#endif +static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject *d) { + PyObject *r; +#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1 + int res = PyObject_GetOptionalAttr(o, n, &r); + return (res != 0) ? r : __Pyx_NewRef(d); +#else + #if CYTHON_USE_TYPE_SLOTS + if (likely(PyString_Check(n))) { + r = __Pyx_PyObject_GetAttrStrNoError(o, n); + if (unlikely(!r) && likely(!PyErr_Occurred())) { + r = __Pyx_NewRef(d); + } + return r; + } + #endif + r = PyObject_GetAttr(o, n); + return (likely(r)) ? r : __Pyx_GetAttr3Default(d); +#endif +} + +/* PyObjectCallNoArg */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { + PyObject *arg[2] = {NULL, NULL}; + return __Pyx_PyObject_FastCall(func, arg + 1, 0 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); +} + +/* GetTopmostException */ +#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE +static _PyErr_StackItem * +__Pyx_PyErr_GetTopmostException(PyThreadState *tstate) +{ + _PyErr_StackItem *exc_info = tstate->exc_info; + while ((exc_info->exc_value == NULL || exc_info->exc_value == Py_None) && + exc_info->previous_item != NULL) + { + exc_info = exc_info->previous_item; + } + return exc_info; +} +#endif + +/* SaveResetException */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); + PyObject *exc_value = exc_info->exc_value; + if (exc_value == NULL || exc_value == Py_None) { + *value = NULL; + *type = NULL; + *tb = NULL; + } else { + *value = exc_value; + Py_INCREF(*value); + *type = (PyObject*) Py_TYPE(exc_value); + Py_INCREF(*type); + *tb = PyException_GetTraceback(exc_value); + } + #elif CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); + *type = exc_info->exc_type; + *value = exc_info->exc_value; + *tb = exc_info->exc_traceback; + Py_XINCREF(*type); + Py_XINCREF(*value); + Py_XINCREF(*tb); + #else + *type = tstate->exc_type; + *value = tstate->exc_value; + *tb = tstate->exc_traceback; + Py_XINCREF(*type); + Py_XINCREF(*value); + Py_XINCREF(*tb); + #endif +} +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = tstate->exc_info; + PyObject *tmp_value = exc_info->exc_value; + exc_info->exc_value = value; + Py_XDECREF(tmp_value); + Py_XDECREF(type); + Py_XDECREF(tb); + #else + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = type; + exc_info->exc_value = value; + exc_info->exc_traceback = tb; + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = type; + tstate->exc_value = value; + tstate->exc_traceback = tb; + #endif + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); + #endif +} +#endif + +/* GetException */ +#if CYTHON_FAST_THREAD_STATE +static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) +#else +static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) +#endif +{ + PyObject *local_type = NULL, *local_value, *local_tb = NULL; +#if CYTHON_FAST_THREAD_STATE + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if PY_VERSION_HEX >= 0x030C00A6 + local_value = tstate->current_exception; + tstate->current_exception = 0; + if (likely(local_value)) { + local_type = (PyObject*) Py_TYPE(local_value); + Py_INCREF(local_type); + local_tb = PyException_GetTraceback(local_value); + } + #else + local_type = tstate->curexc_type; + local_value = tstate->curexc_value; + local_tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; + #endif +#else + PyErr_Fetch(&local_type, &local_value, &local_tb); +#endif + PyErr_NormalizeException(&local_type, &local_value, &local_tb); +#if CYTHON_FAST_THREAD_STATE && PY_VERSION_HEX >= 0x030C00A6 + if (unlikely(tstate->current_exception)) +#elif CYTHON_FAST_THREAD_STATE + if (unlikely(tstate->curexc_type)) +#else + if (unlikely(PyErr_Occurred())) +#endif + goto bad; + #if PY_MAJOR_VERSION >= 3 + if (local_tb) { + if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) + goto bad; + } + #endif + Py_XINCREF(local_tb); + Py_XINCREF(local_type); + Py_XINCREF(local_value); + *type = local_type; + *value = local_value; + *tb = local_tb; +#if CYTHON_FAST_THREAD_STATE + #if CYTHON_USE_EXC_INFO_STACK + { + _PyErr_StackItem *exc_info = tstate->exc_info; + #if PY_VERSION_HEX >= 0x030B00a4 + tmp_value = exc_info->exc_value; + exc_info->exc_value = local_value; + tmp_type = NULL; + tmp_tb = NULL; + Py_XDECREF(local_type); + Py_XDECREF(local_tb); + #else + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = local_type; + exc_info->exc_value = local_value; + exc_info->exc_traceback = local_tb; + #endif + } + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = local_type; + tstate->exc_value = local_value; + tstate->exc_traceback = local_tb; + #endif + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +#else + PyErr_SetExcInfo(local_type, local_value, local_tb); +#endif + return 0; +bad: + *type = 0; + *value = 0; + *tb = 0; + Py_XDECREF(local_type); + Py_XDECREF(local_value); + Py_XDECREF(local_tb); + return -1; +} + +/* PyObjectLookupSpecial */ +#if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error) { + PyObject *res; + PyTypeObject *tp = Py_TYPE(obj); +#if PY_MAJOR_VERSION < 3 + if (unlikely(PyInstance_Check(obj))) + return with_error ? __Pyx_PyObject_GetAttrStr(obj, attr_name) : __Pyx_PyObject_GetAttrStrNoError(obj, attr_name); +#endif + res = _PyType_Lookup(tp, attr_name); + if (likely(res)) { + descrgetfunc f = Py_TYPE(res)->tp_descr_get; + if (!f) { + Py_INCREF(res); + } else { + res = f(res, obj, (PyObject *)tp); + } + } else if (with_error) { + PyErr_SetObject(PyExc_AttributeError, attr_name); + } + return res; +} +#endif + +/* PyObjectSetAttrStr */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) { + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_setattro)) + return tp->tp_setattro(obj, attr_name, value); +#if PY_MAJOR_VERSION < 3 + if (likely(tp->tp_setattr)) + return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value); +#endif + return PyObject_SetAttr(obj, attr_name, value); +} +#endif + +/* RaiseUnboundLocalError */ +static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) { + PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname); +} + +/* ExtTypeTest */ +static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { + __Pyx_TypeName obj_type_name; + __Pyx_TypeName type_name; + if (unlikely(!type)) { + PyErr_SetString(PyExc_SystemError, "Missing type object"); + return 0; + } + if (likely(__Pyx_TypeCheck(obj, type))) + return 1; + obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj)); + type_name = __Pyx_PyType_GetName(type); + PyErr_Format(PyExc_TypeError, + "Cannot convert " __Pyx_FMT_TYPENAME " to " __Pyx_FMT_TYPENAME, + obj_type_name, type_name); + __Pyx_DECREF_TypeName(obj_type_name); + __Pyx_DECREF_TypeName(type_name); + return 0; +} + +/* SwapException */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_value = exc_info->exc_value; + exc_info->exc_value = *value; + if (tmp_value == NULL || tmp_value == Py_None) { + Py_XDECREF(tmp_value); + tmp_value = NULL; + tmp_type = NULL; + tmp_tb = NULL; + } else { + tmp_type = (PyObject*) Py_TYPE(tmp_value); + Py_INCREF(tmp_type); + #if CYTHON_COMPILING_IN_CPYTHON + tmp_tb = ((PyBaseExceptionObject*) tmp_value)->traceback; + Py_XINCREF(tmp_tb); + #else + tmp_tb = PyException_GetTraceback(tmp_value); + #endif + } + #elif CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = *type; + exc_info->exc_value = *value; + exc_info->exc_traceback = *tb; + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = *type; + tstate->exc_value = *value; + tstate->exc_traceback = *tb; + #endif + *type = tmp_type; + *value = tmp_value; + *tb = tmp_tb; +} +#else +static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb); + PyErr_SetExcInfo(*type, *value, *tb); + *type = tmp_type; + *value = tmp_value; + *tb = tmp_tb; +} +#endif + +/* RaiseArgTupleInvalid */ +static void __Pyx_RaiseArgtupleInvalid( + const char* func_name, + int exact, + Py_ssize_t num_min, + Py_ssize_t num_max, + Py_ssize_t num_found) +{ + Py_ssize_t num_expected; + const char *more_or_less; + if (num_found < num_min) { + num_expected = num_min; + more_or_less = "at least"; + } else { + num_expected = num_max; + more_or_less = "at most"; + } + if (exact) { + more_or_less = "exactly"; + } + PyErr_Format(PyExc_TypeError, + "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", + func_name, more_or_less, num_expected, + (num_expected == 1) ? "" : "s", num_found); +} + +/* KeywordStringCheck */ +static int __Pyx_CheckKeywordStrings( + PyObject *kw, + const char* function_name, + int kw_allowed) +{ + PyObject* key = 0; + Py_ssize_t pos = 0; +#if CYTHON_COMPILING_IN_PYPY + if (!kw_allowed && PyDict_Next(kw, &pos, &key, 0)) + goto invalid_keyword; + return 1; +#else + if (CYTHON_METH_FASTCALL && likely(PyTuple_Check(kw))) { + Py_ssize_t kwsize; +#if CYTHON_ASSUME_SAFE_MACROS + kwsize = PyTuple_GET_SIZE(kw); +#else + kwsize = PyTuple_Size(kw); + if (kwsize < 0) return 0; +#endif + if (unlikely(kwsize == 0)) + return 1; + if (!kw_allowed) { +#if CYTHON_ASSUME_SAFE_MACROS + key = PyTuple_GET_ITEM(kw, 0); +#else + key = PyTuple_GetItem(kw, pos); + if (!key) return 0; +#endif + goto invalid_keyword; + } +#if PY_VERSION_HEX < 0x03090000 + for (pos = 0; pos < kwsize; pos++) { +#if CYTHON_ASSUME_SAFE_MACROS + key = PyTuple_GET_ITEM(kw, pos); +#else + key = PyTuple_GetItem(kw, pos); + if (!key) return 0; +#endif + if (unlikely(!PyUnicode_Check(key))) + goto invalid_keyword_type; + } +#endif + return 1; + } + while (PyDict_Next(kw, &pos, &key, 0)) { + #if PY_MAJOR_VERSION < 3 + if (unlikely(!PyString_Check(key))) + #endif + if (unlikely(!PyUnicode_Check(key))) + goto invalid_keyword_type; + } + if (!kw_allowed && unlikely(key)) + goto invalid_keyword; + return 1; +invalid_keyword_type: + PyErr_Format(PyExc_TypeError, + "%.200s() keywords must be strings", function_name); + return 0; +#endif +invalid_keyword: + #if PY_MAJOR_VERSION < 3 + PyErr_Format(PyExc_TypeError, + "%.200s() got an unexpected keyword argument '%.200s'", + function_name, PyString_AsString(key)); + #else + PyErr_Format(PyExc_TypeError, + "%s() got an unexpected keyword argument '%U'", + function_name, key); + #endif + return 0; +} + +/* RaiseDoubleKeywords */ +static void __Pyx_RaiseDoubleKeywordsError( + const char* func_name, + PyObject* kw_name) +{ + PyErr_Format(PyExc_TypeError, + #if PY_MAJOR_VERSION >= 3 + "%s() got multiple values for keyword argument '%U'", func_name, kw_name); + #else + "%s() got multiple values for keyword argument '%s'", func_name, + PyString_AsString(kw_name)); + #endif +} + +/* ParseKeywords */ +static int __Pyx_ParseOptionalKeywords( + PyObject *kwds, + PyObject *const *kwvalues, + PyObject **argnames[], + PyObject *kwds2, + PyObject *values[], + Py_ssize_t num_pos_args, + const char* function_name) +{ + PyObject *key = 0, *value = 0; + Py_ssize_t pos = 0; + PyObject*** name; + PyObject*** first_kw_arg = argnames + num_pos_args; + int kwds_is_tuple = CYTHON_METH_FASTCALL && likely(PyTuple_Check(kwds)); + while (1) { + Py_XDECREF(key); key = NULL; + Py_XDECREF(value); value = NULL; + if (kwds_is_tuple) { + Py_ssize_t size; +#if CYTHON_ASSUME_SAFE_MACROS + size = PyTuple_GET_SIZE(kwds); +#else + size = PyTuple_Size(kwds); + if (size < 0) goto bad; +#endif + if (pos >= size) break; +#if CYTHON_AVOID_BORROWED_REFS + key = __Pyx_PySequence_ITEM(kwds, pos); + if (!key) goto bad; +#elif CYTHON_ASSUME_SAFE_MACROS + key = PyTuple_GET_ITEM(kwds, pos); +#else + key = PyTuple_GetItem(kwds, pos); + if (!key) goto bad; +#endif + value = kwvalues[pos]; + pos++; + } + else + { + if (!PyDict_Next(kwds, &pos, &key, &value)) break; +#if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(key); +#endif + } + name = first_kw_arg; + while (*name && (**name != key)) name++; + if (*name) { + values[name-argnames] = value; +#if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(value); + Py_DECREF(key); +#endif + key = NULL; + value = NULL; + continue; + } +#if !CYTHON_AVOID_BORROWED_REFS + Py_INCREF(key); +#endif + Py_INCREF(value); + name = first_kw_arg; + #if PY_MAJOR_VERSION < 3 + if (likely(PyString_Check(key))) { + while (*name) { + if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) + && _PyString_Eq(**name, key)) { + values[name-argnames] = value; +#if CYTHON_AVOID_BORROWED_REFS + value = NULL; +#endif + break; + } + name++; + } + if (*name) continue; + else { + PyObject*** argname = argnames; + while (argname != first_kw_arg) { + if ((**argname == key) || ( + (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) + && _PyString_Eq(**argname, key))) { + goto arg_passed_twice; + } + argname++; + } + } + } else + #endif + if (likely(PyUnicode_Check(key))) { + while (*name) { + int cmp = ( + #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 + (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : + #endif + PyUnicode_Compare(**name, key) + ); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; + if (cmp == 0) { + values[name-argnames] = value; +#if CYTHON_AVOID_BORROWED_REFS + value = NULL; +#endif + break; + } + name++; + } + if (*name) continue; + else { + PyObject*** argname = argnames; + while (argname != first_kw_arg) { + int cmp = (**argname == key) ? 0 : + #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 + (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : + #endif + PyUnicode_Compare(**argname, key); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; + if (cmp == 0) goto arg_passed_twice; + argname++; + } + } + } else + goto invalid_keyword_type; + if (kwds2) { + if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; + } else { + goto invalid_keyword; + } + } + Py_XDECREF(key); + Py_XDECREF(value); + return 0; +arg_passed_twice: + __Pyx_RaiseDoubleKeywordsError(function_name, key); + goto bad; +invalid_keyword_type: + PyErr_Format(PyExc_TypeError, + "%.200s() keywords must be strings", function_name); + goto bad; +invalid_keyword: + #if PY_MAJOR_VERSION < 3 + PyErr_Format(PyExc_TypeError, + "%.200s() got an unexpected keyword argument '%.200s'", + function_name, PyString_AsString(key)); + #else + PyErr_Format(PyExc_TypeError, + "%s() got an unexpected keyword argument '%U'", + function_name, key); + #endif +bad: + Py_XDECREF(key); + Py_XDECREF(value); + return -1; +} + +/* RaiseUnexpectedTypeError */ +static int +__Pyx_RaiseUnexpectedTypeError(const char *expected, PyObject *obj) +{ + __Pyx_TypeName obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj)); + PyErr_Format(PyExc_TypeError, "Expected %s, got " __Pyx_FMT_TYPENAME, + expected, obj_type_name); + __Pyx_DECREF_TypeName(obj_type_name); + return 0; +} + +/* ArgTypeTest */ +static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact) +{ + __Pyx_TypeName type_name; + __Pyx_TypeName obj_type_name; + if (unlikely(!type)) { + PyErr_SetString(PyExc_SystemError, "Missing type object"); + return 0; + } + else if (exact) { + #if PY_MAJOR_VERSION == 2 + if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1; + #endif + } + else { + if (likely(__Pyx_TypeCheck(obj, type))) return 1; + } + type_name = __Pyx_PyType_GetName(type); + obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj)); + PyErr_Format(PyExc_TypeError, + "Argument '%.200s' has incorrect type (expected " __Pyx_FMT_TYPENAME + ", got " __Pyx_FMT_TYPENAME ")", name, type_name, obj_type_name); + __Pyx_DECREF_TypeName(type_name); + __Pyx_DECREF_TypeName(obj_type_name); + return 0; +} + +/* DictGetItem */ +#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY +static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) { + PyObject *value; + value = PyDict_GetItemWithError(d, key); + if (unlikely(!value)) { + if (!PyErr_Occurred()) { + if (unlikely(PyTuple_Check(key))) { + PyObject* args = PyTuple_Pack(1, key); + if (likely(args)) { + PyErr_SetObject(PyExc_KeyError, args); + Py_DECREF(args); + } + } else { + PyErr_SetObject(PyExc_KeyError, key); + } + } + return NULL; + } + Py_INCREF(value); + return value; +} +#endif + +/* GetItemInt */ +static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { + PyObject *r; + if (unlikely(!j)) return NULL; + r = PyObject_GetItem(o, j); + Py_DECREF(j); + return r; +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + Py_ssize_t wrapped_i = i; + if (wraparound & unlikely(i < 0)) { + wrapped_i += PyList_GET_SIZE(o); + } + if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) { + PyObject *r = PyList_GET_ITEM(o, wrapped_i); + Py_INCREF(r); + return r; + } + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +#else + return PySequence_GetItem(o, i); +#endif +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + Py_ssize_t wrapped_i = i; + if (wraparound & unlikely(i < 0)) { + wrapped_i += PyTuple_GET_SIZE(o); + } + if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) { + PyObject *r = PyTuple_GET_ITEM(o, wrapped_i); + Py_INCREF(r); + return r; + } + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +#else + return PySequence_GetItem(o, i); +#endif +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS + if (is_list || PyList_CheckExact(o)) { + Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); + if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) { + PyObject *r = PyList_GET_ITEM(o, n); + Py_INCREF(r); + return r; + } + } + else if (PyTuple_CheckExact(o)) { + Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); + if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) { + PyObject *r = PyTuple_GET_ITEM(o, n); + Py_INCREF(r); + return r; + } + } else { + PyMappingMethods *mm = Py_TYPE(o)->tp_as_mapping; + PySequenceMethods *sm = Py_TYPE(o)->tp_as_sequence; + if (mm && mm->mp_subscript) { + PyObject *r, *key = PyInt_FromSsize_t(i); + if (unlikely(!key)) return NULL; + r = mm->mp_subscript(o, key); + Py_DECREF(key); + return r; + } + if (likely(sm && sm->sq_item)) { + if (wraparound && unlikely(i < 0) && likely(sm->sq_length)) { + Py_ssize_t l = sm->sq_length(o); + if (likely(l >= 0)) { + i += l; + } else { + if (!PyErr_ExceptionMatches(PyExc_OverflowError)) + return NULL; + PyErr_Clear(); + } + } + return sm->sq_item(o, i); + } + } +#else + if (is_list || !PyMapping_Check(o)) { + return PySequence_GetItem(o, i); + } +#endif + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +} + +/* RaiseTooManyValuesToUnpack */ +static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { + PyErr_Format(PyExc_ValueError, + "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected); +} + +/* RaiseNeedMoreValuesToUnpack */ +static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { + PyErr_Format(PyExc_ValueError, + "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack", + index, (index == 1) ? "" : "s"); +} + +/* IterFinish */ +static CYTHON_INLINE int __Pyx_IterFinish(void) { + PyObject* exc_type; + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (unlikely(exc_type)) { + if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) + return -1; + __Pyx_PyErr_Clear(); + return 0; + } + return 0; +} + +/* UnpackItemEndCheck */ +static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) { + if (unlikely(retval)) { + Py_DECREF(retval); + __Pyx_RaiseTooManyValuesError(expected); + return -1; + } + return __Pyx_IterFinish(); +} + +/* PyObjectCallOneArg */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { + PyObject *args[2] = {NULL, arg}; + return __Pyx_PyObject_FastCall(func, args+1, 1 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); +} + +/* PyObjectGetMethod */ +static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) { + PyObject *attr; +#if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP + __Pyx_TypeName type_name; + PyTypeObject *tp = Py_TYPE(obj); + PyObject *descr; + descrgetfunc f = NULL; + PyObject **dictptr, *dict; + int meth_found = 0; + assert (*method == NULL); + if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) { + attr = __Pyx_PyObject_GetAttrStr(obj, name); + goto try_unpack; + } + if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) { + return 0; + } + descr = _PyType_Lookup(tp, name); + if (likely(descr != NULL)) { + Py_INCREF(descr); +#if defined(Py_TPFLAGS_METHOD_DESCRIPTOR) && Py_TPFLAGS_METHOD_DESCRIPTOR + if (__Pyx_PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_METHOD_DESCRIPTOR)) +#elif PY_MAJOR_VERSION >= 3 + #ifdef __Pyx_CyFunction_USED + if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr))) + #else + if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type))) + #endif +#else + #ifdef __Pyx_CyFunction_USED + if (likely(PyFunction_Check(descr) || __Pyx_CyFunction_Check(descr))) + #else + if (likely(PyFunction_Check(descr))) + #endif +#endif + { + meth_found = 1; + } else { + f = Py_TYPE(descr)->tp_descr_get; + if (f != NULL && PyDescr_IsData(descr)) { + attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); + Py_DECREF(descr); + goto try_unpack; + } + } + } + dictptr = _PyObject_GetDictPtr(obj); + if (dictptr != NULL && (dict = *dictptr) != NULL) { + Py_INCREF(dict); + attr = __Pyx_PyDict_GetItemStr(dict, name); + if (attr != NULL) { + Py_INCREF(attr); + Py_DECREF(dict); + Py_XDECREF(descr); + goto try_unpack; + } + Py_DECREF(dict); + } + if (meth_found) { + *method = descr; + return 1; + } + if (f != NULL) { + attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); + Py_DECREF(descr); + goto try_unpack; + } + if (likely(descr != NULL)) { + *method = descr; + return 0; + } + type_name = __Pyx_PyType_GetName(tp); + PyErr_Format(PyExc_AttributeError, +#if PY_MAJOR_VERSION >= 3 + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'", + type_name, name); +#else + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%.400s'", + type_name, PyString_AS_STRING(name)); +#endif + __Pyx_DECREF_TypeName(type_name); + return 0; +#else + attr = __Pyx_PyObject_GetAttrStr(obj, name); + goto try_unpack; +#endif +try_unpack: +#if CYTHON_UNPACK_METHODS + if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) { + PyObject *function = PyMethod_GET_FUNCTION(attr); + Py_INCREF(function); + Py_DECREF(attr); + *method = function; + return 1; + } +#endif + *method = attr; + return 0; +} + +/* PyObjectCallMethod0 */ +static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) { + PyObject *method = NULL, *result = NULL; + int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); + if (likely(is_method)) { + result = __Pyx_PyObject_CallOneArg(method, obj); + Py_DECREF(method); + return result; + } + if (unlikely(!method)) goto bad; + result = __Pyx_PyObject_CallNoArg(method); + Py_DECREF(method); +bad: + return result; +} + +/* RaiseNoneIterError */ +static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); +} + +/* UnpackTupleError */ +static void __Pyx_UnpackTupleError(PyObject *t, Py_ssize_t index) { + if (t == Py_None) { + __Pyx_RaiseNoneNotIterableError(); + } else if (PyTuple_GET_SIZE(t) < index) { + __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(t)); + } else { + __Pyx_RaiseTooManyValuesError(index); + } +} + +/* UnpackTuple2 */ +static CYTHON_INLINE int __Pyx_unpack_tuple2_exact( + PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2, int decref_tuple) { + PyObject *value1 = NULL, *value2 = NULL; +#if CYTHON_COMPILING_IN_PYPY + value1 = PySequence_ITEM(tuple, 0); if (unlikely(!value1)) goto bad; + value2 = PySequence_ITEM(tuple, 1); if (unlikely(!value2)) goto bad; +#else + value1 = PyTuple_GET_ITEM(tuple, 0); Py_INCREF(value1); + value2 = PyTuple_GET_ITEM(tuple, 1); Py_INCREF(value2); +#endif + if (decref_tuple) { + Py_DECREF(tuple); + } + *pvalue1 = value1; + *pvalue2 = value2; + return 0; +#if CYTHON_COMPILING_IN_PYPY +bad: + Py_XDECREF(value1); + Py_XDECREF(value2); + if (decref_tuple) { Py_XDECREF(tuple); } + return -1; +#endif +} +static int __Pyx_unpack_tuple2_generic(PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2, + int has_known_size, int decref_tuple) { + Py_ssize_t index; + PyObject *value1 = NULL, *value2 = NULL, *iter = NULL; + iternextfunc iternext; + iter = PyObject_GetIter(tuple); + if (unlikely(!iter)) goto bad; + if (decref_tuple) { Py_DECREF(tuple); tuple = NULL; } + iternext = __Pyx_PyObject_GetIterNextFunc(iter); + value1 = iternext(iter); if (unlikely(!value1)) { index = 0; goto unpacking_failed; } + value2 = iternext(iter); if (unlikely(!value2)) { index = 1; goto unpacking_failed; } + if (!has_known_size && unlikely(__Pyx_IternextUnpackEndCheck(iternext(iter), 2))) goto bad; + Py_DECREF(iter); + *pvalue1 = value1; + *pvalue2 = value2; + return 0; +unpacking_failed: + if (!has_known_size && __Pyx_IterFinish() == 0) + __Pyx_RaiseNeedMoreValuesError(index); +bad: + Py_XDECREF(iter); + Py_XDECREF(value1); + Py_XDECREF(value2); + if (decref_tuple) { Py_XDECREF(tuple); } + return -1; +} + +/* dict_iter */ +#if CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 +#include +#endif +static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* iterable, int is_dict, PyObject* method_name, + Py_ssize_t* p_orig_length, int* p_source_is_dict) { + is_dict = is_dict || likely(PyDict_CheckExact(iterable)); + *p_source_is_dict = is_dict; + if (is_dict) { +#if !CYTHON_COMPILING_IN_PYPY + *p_orig_length = PyDict_Size(iterable); + Py_INCREF(iterable); + return iterable; +#elif PY_MAJOR_VERSION >= 3 + static PyObject *py_items = NULL, *py_keys = NULL, *py_values = NULL; + PyObject **pp = NULL; + if (method_name) { + const char *name = PyUnicode_AsUTF8(method_name); + if (strcmp(name, "iteritems") == 0) pp = &py_items; + else if (strcmp(name, "iterkeys") == 0) pp = &py_keys; + else if (strcmp(name, "itervalues") == 0) pp = &py_values; + if (pp) { + if (!*pp) { + *pp = PyUnicode_FromString(name + 4); + if (!*pp) + return NULL; + } + method_name = *pp; + } + } +#endif + } + *p_orig_length = 0; + if (method_name) { + PyObject* iter; + iterable = __Pyx_PyObject_CallMethod0(iterable, method_name); + if (!iterable) + return NULL; +#if !CYTHON_COMPILING_IN_PYPY + if (PyTuple_CheckExact(iterable) || PyList_CheckExact(iterable)) + return iterable; +#endif + iter = PyObject_GetIter(iterable); + Py_DECREF(iterable); + return iter; + } + return PyObject_GetIter(iterable); +} +static CYTHON_INLINE int __Pyx_dict_iter_next( + PyObject* iter_obj, CYTHON_NCP_UNUSED Py_ssize_t orig_length, CYTHON_NCP_UNUSED Py_ssize_t* ppos, + PyObject** pkey, PyObject** pvalue, PyObject** pitem, int source_is_dict) { + PyObject* next_item; +#if !CYTHON_COMPILING_IN_PYPY + if (source_is_dict) { + PyObject *key, *value; + if (unlikely(orig_length != PyDict_Size(iter_obj))) { + PyErr_SetString(PyExc_RuntimeError, "dictionary changed size during iteration"); + return -1; + } + if (unlikely(!PyDict_Next(iter_obj, ppos, &key, &value))) { + return 0; + } + if (pitem) { + PyObject* tuple = PyTuple_New(2); + if (unlikely(!tuple)) { + return -1; + } + Py_INCREF(key); + Py_INCREF(value); + PyTuple_SET_ITEM(tuple, 0, key); + PyTuple_SET_ITEM(tuple, 1, value); + *pitem = tuple; + } else { + if (pkey) { + Py_INCREF(key); + *pkey = key; + } + if (pvalue) { + Py_INCREF(value); + *pvalue = value; + } + } + return 1; + } else if (PyTuple_CheckExact(iter_obj)) { + Py_ssize_t pos = *ppos; + if (unlikely(pos >= PyTuple_GET_SIZE(iter_obj))) return 0; + *ppos = pos + 1; + next_item = PyTuple_GET_ITEM(iter_obj, pos); + Py_INCREF(next_item); + } else if (PyList_CheckExact(iter_obj)) { + Py_ssize_t pos = *ppos; + if (unlikely(pos >= PyList_GET_SIZE(iter_obj))) return 0; + *ppos = pos + 1; + next_item = PyList_GET_ITEM(iter_obj, pos); + Py_INCREF(next_item); + } else +#endif + { + next_item = PyIter_Next(iter_obj); + if (unlikely(!next_item)) { + return __Pyx_IterFinish(); + } + } + if (pitem) { + *pitem = next_item; + } else if (pkey && pvalue) { + if (__Pyx_unpack_tuple2(next_item, pkey, pvalue, source_is_dict, source_is_dict, 1)) + return -1; + } else if (pkey) { + *pkey = next_item; + } else { + *pvalue = next_item; + } + return 1; +} + +/* Import */ +static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { + PyObject *module = 0; + PyObject *empty_dict = 0; + PyObject *empty_list = 0; + #if PY_MAJOR_VERSION < 3 + PyObject *py_import; + py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); + if (unlikely(!py_import)) + goto bad; + if (!from_list) { + empty_list = PyList_New(0); + if (unlikely(!empty_list)) + goto bad; + from_list = empty_list; + } + #endif + empty_dict = PyDict_New(); + if (unlikely(!empty_dict)) + goto bad; + { + #if PY_MAJOR_VERSION >= 3 + if (level == -1) { + if (strchr(__Pyx_MODULE_NAME, '.') != NULL) { + module = PyImport_ImportModuleLevelObject( + name, __pyx_d, empty_dict, from_list, 1); + if (unlikely(!module)) { + if (unlikely(!PyErr_ExceptionMatches(PyExc_ImportError))) + goto bad; + PyErr_Clear(); + } + } + level = 0; + } + #endif + if (!module) { + #if PY_MAJOR_VERSION < 3 + PyObject *py_level = PyInt_FromLong(level); + if (unlikely(!py_level)) + goto bad; + module = PyObject_CallFunctionObjArgs(py_import, + name, __pyx_d, empty_dict, from_list, py_level, (PyObject *)NULL); + Py_DECREF(py_level); + #else + module = PyImport_ImportModuleLevelObject( + name, __pyx_d, empty_dict, from_list, level); + #endif + } + } +bad: + Py_XDECREF(empty_dict); + Py_XDECREF(empty_list); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(py_import); + #endif + return module; +} + +/* ImportFrom */ +static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { + PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); + if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { + const char* module_name_str = 0; + PyObject* module_name = 0; + PyObject* module_dot = 0; + PyObject* full_name = 0; + PyErr_Clear(); + module_name_str = PyModule_GetName(module); + if (unlikely(!module_name_str)) { goto modbad; } + module_name = PyUnicode_FromString(module_name_str); + if (unlikely(!module_name)) { goto modbad; } + module_dot = PyUnicode_Concat(module_name, __pyx_kp_u__3); + if (unlikely(!module_dot)) { goto modbad; } + full_name = PyUnicode_Concat(module_dot, name); + if (unlikely(!full_name)) { goto modbad; } + #if PY_VERSION_HEX < 0x030700A1 || (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM < 0x07030400) + { + PyObject *modules = PyImport_GetModuleDict(); + if (unlikely(!modules)) + goto modbad; + value = PyObject_GetItem(modules, full_name); + } + #else + value = PyImport_GetModule(full_name); + #endif + modbad: + Py_XDECREF(full_name); + Py_XDECREF(module_dot); + Py_XDECREF(module_name); + } + if (unlikely(!value)) { + PyErr_Format(PyExc_ImportError, + #if PY_MAJOR_VERSION < 3 + "cannot import name %.230s", PyString_AS_STRING(name)); + #else + "cannot import name %S", name); + #endif + } + return value; +} + +/* GetAttr */ +static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) { +#if CYTHON_USE_TYPE_SLOTS +#if PY_MAJOR_VERSION >= 3 + if (likely(PyUnicode_Check(n))) +#else + if (likely(PyString_Check(n))) +#endif + return __Pyx_PyObject_GetAttrStr(o, n); +#endif + return PyObject_GetAttr(o, n); +} + +/* HasAttr */ +static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) { + PyObject *r; + if (unlikely(!__Pyx_PyBaseString_Check(n))) { + PyErr_SetString(PyExc_TypeError, + "hasattr(): attribute name must be string"); + return -1; + } + r = __Pyx_GetAttr(o, n); + if (!r) { + PyErr_Clear(); + return 0; + } else { + Py_DECREF(r); + return 1; + } +} + +/* FixUpExtensionType */ +#if CYTHON_USE_TYPE_SPECS +static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type) { +#if PY_VERSION_HEX > 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + CYTHON_UNUSED_VAR(spec); + CYTHON_UNUSED_VAR(type); +#else + const PyType_Slot *slot = spec->slots; + while (slot && slot->slot && slot->slot != Py_tp_members) + slot++; + if (slot && slot->slot == Py_tp_members) { + int changed = 0; +#if !(PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON) + const +#endif + PyMemberDef *memb = (PyMemberDef*) slot->pfunc; + while (memb && memb->name) { + if (memb->name[0] == '_' && memb->name[1] == '_') { +#if PY_VERSION_HEX < 0x030900b1 + if (strcmp(memb->name, "__weaklistoffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); + type->tp_weaklistoffset = memb->offset; + changed = 1; + } + else if (strcmp(memb->name, "__dictoffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); + type->tp_dictoffset = memb->offset; + changed = 1; + } +#if CYTHON_METH_FASTCALL + else if (strcmp(memb->name, "__vectorcalloffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); +#if PY_VERSION_HEX >= 0x030800b4 + type->tp_vectorcall_offset = memb->offset; +#else + type->tp_print = (printfunc) memb->offset; +#endif + changed = 1; + } +#endif +#else + if ((0)); +#endif +#if PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON + else if (strcmp(memb->name, "__module__") == 0) { + PyObject *descr; + assert(memb->type == T_OBJECT); + assert(memb->flags == 0 || memb->flags == READONLY); + descr = PyDescr_NewMember(type, memb); + if (unlikely(!descr)) + return -1; + if (unlikely(PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr) < 0)) { + Py_DECREF(descr); + return -1; + } + Py_DECREF(descr); + changed = 1; + } +#endif + } + memb++; + } + if (changed) + PyType_Modified(type); + } +#endif + return 0; +} +#endif + +/* ValidateBasesTuple */ +#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS +static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases) { + Py_ssize_t i, n; +#if CYTHON_ASSUME_SAFE_MACROS + n = PyTuple_GET_SIZE(bases); +#else + n = PyTuple_Size(bases); + if (n < 0) return -1; +#endif + for (i = 1; i < n; i++) + { +#if CYTHON_AVOID_BORROWED_REFS + PyObject *b0 = PySequence_GetItem(bases, i); + if (!b0) return -1; +#elif CYTHON_ASSUME_SAFE_MACROS + PyObject *b0 = PyTuple_GET_ITEM(bases, i); +#else + PyObject *b0 = PyTuple_GetItem(bases, i); + if (!b0) return -1; +#endif + PyTypeObject *b; +#if PY_MAJOR_VERSION < 3 + if (PyClass_Check(b0)) + { + PyErr_Format(PyExc_TypeError, "base class '%.200s' is an old-style class", + PyString_AS_STRING(((PyClassObject*)b0)->cl_name)); +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + return -1; + } +#endif + b = (PyTypeObject*) b0; + if (!__Pyx_PyType_HasFeature(b, Py_TPFLAGS_HEAPTYPE)) + { + __Pyx_TypeName b_name = __Pyx_PyType_GetName(b); + PyErr_Format(PyExc_TypeError, + "base class '" __Pyx_FMT_TYPENAME "' is not a heap type", b_name); + __Pyx_DECREF_TypeName(b_name); +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + return -1; + } + if (dictoffset == 0) + { + Py_ssize_t b_dictoffset = 0; +#if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY + b_dictoffset = b->tp_dictoffset; +#else + PyObject *py_b_dictoffset = PyObject_GetAttrString((PyObject*)b, "__dictoffset__"); + if (!py_b_dictoffset) goto dictoffset_return; + b_dictoffset = PyLong_AsSsize_t(py_b_dictoffset); + Py_DECREF(py_b_dictoffset); + if (b_dictoffset == -1 && PyErr_Occurred()) goto dictoffset_return; +#endif + if (b_dictoffset) { + { + __Pyx_TypeName b_name = __Pyx_PyType_GetName(b); + PyErr_Format(PyExc_TypeError, + "extension type '%.200s' has no __dict__ slot, " + "but base type '" __Pyx_FMT_TYPENAME "' has: " + "either add 'cdef dict __dict__' to the extension type " + "or add '__slots__ = [...]' to the base type", + type_name, b_name); + __Pyx_DECREF_TypeName(b_name); + } +#if !(CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY) + dictoffset_return: +#endif +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + return -1; + } + } +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + } + return 0; +} +#endif + +/* PyType_Ready */ +static int __Pyx_PyType_Ready(PyTypeObject *t) { +#if CYTHON_USE_TYPE_SPECS || !(CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API) || defined(PYSTON_MAJOR_VERSION) + (void)__Pyx_PyObject_CallMethod0; +#if CYTHON_USE_TYPE_SPECS + (void)__Pyx_validate_bases_tuple; +#endif + return PyType_Ready(t); +#else + int r; + PyObject *bases = __Pyx_PyType_GetSlot(t, tp_bases, PyObject*); + if (bases && unlikely(__Pyx_validate_bases_tuple(t->tp_name, t->tp_dictoffset, bases) == -1)) + return -1; +#if PY_VERSION_HEX >= 0x03050000 && !defined(PYSTON_MAJOR_VERSION) + { + int gc_was_enabled; + #if PY_VERSION_HEX >= 0x030A00b1 + gc_was_enabled = PyGC_Disable(); + (void)__Pyx_PyObject_CallMethod0; + #else + PyObject *ret, *py_status; + PyObject *gc = NULL; + #if PY_VERSION_HEX >= 0x030700a1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM+0 >= 0x07030400) + gc = PyImport_GetModule(__pyx_kp_u_gc); + #endif + if (unlikely(!gc)) gc = PyImport_Import(__pyx_kp_u_gc); + if (unlikely(!gc)) return -1; + py_status = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_isenabled); + if (unlikely(!py_status)) { + Py_DECREF(gc); + return -1; + } + gc_was_enabled = __Pyx_PyObject_IsTrue(py_status); + Py_DECREF(py_status); + if (gc_was_enabled > 0) { + ret = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_disable); + if (unlikely(!ret)) { + Py_DECREF(gc); + return -1; + } + Py_DECREF(ret); + } else if (unlikely(gc_was_enabled == -1)) { + Py_DECREF(gc); + return -1; + } + #endif + t->tp_flags |= Py_TPFLAGS_HEAPTYPE; +#if PY_VERSION_HEX >= 0x030A0000 + t->tp_flags |= Py_TPFLAGS_IMMUTABLETYPE; +#endif +#else + (void)__Pyx_PyObject_CallMethod0; +#endif + r = PyType_Ready(t); +#if PY_VERSION_HEX >= 0x03050000 && !defined(PYSTON_MAJOR_VERSION) + t->tp_flags &= ~Py_TPFLAGS_HEAPTYPE; + #if PY_VERSION_HEX >= 0x030A00b1 + if (gc_was_enabled) + PyGC_Enable(); + #else + if (gc_was_enabled) { + PyObject *tp, *v, *tb; + PyErr_Fetch(&tp, &v, &tb); + ret = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_enable); + if (likely(ret || r == -1)) { + Py_XDECREF(ret); + PyErr_Restore(tp, v, tb); + } else { + Py_XDECREF(tp); + Py_XDECREF(v); + Py_XDECREF(tb); + r = -1; + } + } + Py_DECREF(gc); + #endif + } +#endif + return r; +#endif +} + +/* PyObject_GenericGetAttrNoDict */ +#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) { + __Pyx_TypeName type_name = __Pyx_PyType_GetName(tp); + PyErr_Format(PyExc_AttributeError, +#if PY_MAJOR_VERSION >= 3 + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'", + type_name, attr_name); +#else + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%.400s'", + type_name, PyString_AS_STRING(attr_name)); +#endif + __Pyx_DECREF_TypeName(type_name); + return NULL; +} +static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) { + PyObject *descr; + PyTypeObject *tp = Py_TYPE(obj); + if (unlikely(!PyString_Check(attr_name))) { + return PyObject_GenericGetAttr(obj, attr_name); + } + assert(!tp->tp_dictoffset); + descr = _PyType_Lookup(tp, attr_name); + if (unlikely(!descr)) { + return __Pyx_RaiseGenericGetAttributeError(tp, attr_name); + } + Py_INCREF(descr); + #if PY_MAJOR_VERSION < 3 + if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS))) + #endif + { + descrgetfunc f = Py_TYPE(descr)->tp_descr_get; + if (unlikely(f)) { + PyObject *res = f(descr, obj, (PyObject *)tp); + Py_DECREF(descr); + return res; + } + } + return descr; +} +#endif + +/* PyObject_GenericGetAttr */ +#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) { + if (unlikely(Py_TYPE(obj)->tp_dictoffset)) { + return PyObject_GenericGetAttr(obj, attr_name); + } + return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name); +} +#endif + +/* SetVTable */ +static int __Pyx_SetVtable(PyTypeObject *type, void *vtable) { + PyObject *ob = PyCapsule_New(vtable, 0, 0); + if (unlikely(!ob)) + goto bad; +#if CYTHON_COMPILING_IN_LIMITED_API + if (unlikely(PyObject_SetAttr((PyObject *) type, __pyx_n_s_pyx_vtable, ob) < 0)) +#else + if (unlikely(PyDict_SetItem(type->tp_dict, __pyx_n_s_pyx_vtable, ob) < 0)) +#endif + goto bad; + Py_DECREF(ob); + return 0; +bad: + Py_XDECREF(ob); + return -1; +} + +/* GetVTable */ +static void* __Pyx_GetVtable(PyTypeObject *type) { + void* ptr; +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *ob = PyObject_GetAttr((PyObject *)type, __pyx_n_s_pyx_vtable); +#else + PyObject *ob = PyObject_GetItem(type->tp_dict, __pyx_n_s_pyx_vtable); +#endif + if (!ob) + goto bad; + ptr = PyCapsule_GetPointer(ob, 0); + if (!ptr && !PyErr_Occurred()) + PyErr_SetString(PyExc_RuntimeError, "invalid vtable found for imported type"); + Py_DECREF(ob); + return ptr; +bad: + Py_XDECREF(ob); + return NULL; +} + +/* MergeVTables */ +#if !CYTHON_COMPILING_IN_LIMITED_API +static int __Pyx_MergeVtables(PyTypeObject *type) { + int i; + void** base_vtables; + __Pyx_TypeName tp_base_name; + __Pyx_TypeName base_name; + void* unknown = (void*)-1; + PyObject* bases = type->tp_bases; + int base_depth = 0; + { + PyTypeObject* base = type->tp_base; + while (base) { + base_depth += 1; + base = base->tp_base; + } + } + base_vtables = (void**) malloc(sizeof(void*) * (size_t)(base_depth + 1)); + base_vtables[0] = unknown; + for (i = 1; i < PyTuple_GET_SIZE(bases); i++) { + void* base_vtable = __Pyx_GetVtable(((PyTypeObject*)PyTuple_GET_ITEM(bases, i))); + if (base_vtable != NULL) { + int j; + PyTypeObject* base = type->tp_base; + for (j = 0; j < base_depth; j++) { + if (base_vtables[j] == unknown) { + base_vtables[j] = __Pyx_GetVtable(base); + base_vtables[j + 1] = unknown; + } + if (base_vtables[j] == base_vtable) { + break; + } else if (base_vtables[j] == NULL) { + goto bad; + } + base = base->tp_base; + } + } + } + PyErr_Clear(); + free(base_vtables); + return 0; +bad: + tp_base_name = __Pyx_PyType_GetName(type->tp_base); + base_name = __Pyx_PyType_GetName((PyTypeObject*)PyTuple_GET_ITEM(bases, i)); + PyErr_Format(PyExc_TypeError, + "multiple bases have vtable conflict: '" __Pyx_FMT_TYPENAME "' and '" __Pyx_FMT_TYPENAME "'", tp_base_name, base_name); + __Pyx_DECREF_TypeName(tp_base_name); + __Pyx_DECREF_TypeName(base_name); + free(base_vtables); + return -1; +} +#endif + +/* SetupReduce */ +#if !CYTHON_COMPILING_IN_LIMITED_API +static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) { + int ret; + PyObject *name_attr; + name_attr = __Pyx_PyObject_GetAttrStrNoError(meth, __pyx_n_s_name); + if (likely(name_attr)) { + ret = PyObject_RichCompareBool(name_attr, name, Py_EQ); + } else { + ret = -1; + } + if (unlikely(ret < 0)) { + PyErr_Clear(); + ret = 0; + } + Py_XDECREF(name_attr); + return ret; +} +static int __Pyx_setup_reduce(PyObject* type_obj) { + int ret = 0; + PyObject *object_reduce = NULL; + PyObject *object_getstate = NULL; + PyObject *object_reduce_ex = NULL; + PyObject *reduce = NULL; + PyObject *reduce_ex = NULL; + PyObject *reduce_cython = NULL; + PyObject *setstate = NULL; + PyObject *setstate_cython = NULL; + PyObject *getstate = NULL; +#if CYTHON_USE_PYTYPE_LOOKUP + getstate = _PyType_Lookup((PyTypeObject*)type_obj, __pyx_n_s_getstate); +#else + getstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_getstate); + if (!getstate && PyErr_Occurred()) { + goto __PYX_BAD; + } +#endif + if (getstate) { +#if CYTHON_USE_PYTYPE_LOOKUP + object_getstate = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_getstate); +#else + object_getstate = __Pyx_PyObject_GetAttrStrNoError((PyObject*)&PyBaseObject_Type, __pyx_n_s_getstate); + if (!object_getstate && PyErr_Occurred()) { + goto __PYX_BAD; + } +#endif + if (object_getstate != getstate) { + goto __PYX_GOOD; + } + } +#if CYTHON_USE_PYTYPE_LOOKUP + object_reduce_ex = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; +#else + object_reduce_ex = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; +#endif + reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce_ex); if (unlikely(!reduce_ex)) goto __PYX_BAD; + if (reduce_ex == object_reduce_ex) { +#if CYTHON_USE_PYTYPE_LOOKUP + object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD; +#else + object_reduce = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD; +#endif + reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce); if (unlikely(!reduce)) goto __PYX_BAD; + if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, __pyx_n_s_reduce_cython)) { + reduce_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_reduce_cython); + if (likely(reduce_cython)) { + ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce, reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + } else if (reduce == object_reduce || PyErr_Occurred()) { + goto __PYX_BAD; + } + setstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_setstate); + if (!setstate) PyErr_Clear(); + if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_n_s_setstate_cython)) { + setstate_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_setstate_cython); + if (likely(setstate_cython)) { + ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate, setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + } else if (!setstate || PyErr_Occurred()) { + goto __PYX_BAD; + } + } + PyType_Modified((PyTypeObject*)type_obj); + } + } + goto __PYX_GOOD; +__PYX_BAD: + if (!PyErr_Occurred()) { + __Pyx_TypeName type_obj_name = + __Pyx_PyType_GetName((PyTypeObject*)type_obj); + PyErr_Format(PyExc_RuntimeError, + "Unable to initialize pickling for " __Pyx_FMT_TYPENAME, type_obj_name); + __Pyx_DECREF_TypeName(type_obj_name); + } + ret = -1; +__PYX_GOOD: +#if !CYTHON_USE_PYTYPE_LOOKUP + Py_XDECREF(object_reduce); + Py_XDECREF(object_reduce_ex); + Py_XDECREF(object_getstate); + Py_XDECREF(getstate); +#endif + Py_XDECREF(reduce); + Py_XDECREF(reduce_ex); + Py_XDECREF(reduce_cython); + Py_XDECREF(setstate); + Py_XDECREF(setstate_cython); + return ret; +} +#endif + +/* TypeImport */ +#ifndef __PYX_HAVE_RT_ImportType_3_0_11 +#define __PYX_HAVE_RT_ImportType_3_0_11 +static PyTypeObject *__Pyx_ImportType_3_0_11(PyObject *module, const char *module_name, const char *class_name, + size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_0_11 check_size) +{ + PyObject *result = 0; + char warning[200]; + Py_ssize_t basicsize; + Py_ssize_t itemsize; +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *py_basicsize; + PyObject *py_itemsize; +#endif + result = PyObject_GetAttrString(module, class_name); + if (!result) + goto bad; + if (!PyType_Check(result)) { + PyErr_Format(PyExc_TypeError, + "%.200s.%.200s is not a type object", + module_name, class_name); + goto bad; + } +#if !CYTHON_COMPILING_IN_LIMITED_API + basicsize = ((PyTypeObject *)result)->tp_basicsize; + itemsize = ((PyTypeObject *)result)->tp_itemsize; +#else + py_basicsize = PyObject_GetAttrString(result, "__basicsize__"); + if (!py_basicsize) + goto bad; + basicsize = PyLong_AsSsize_t(py_basicsize); + Py_DECREF(py_basicsize); + py_basicsize = 0; + if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred()) + goto bad; + py_itemsize = PyObject_GetAttrString(result, "__itemsize__"); + if (!py_itemsize) + goto bad; + itemsize = PyLong_AsSsize_t(py_itemsize); + Py_DECREF(py_itemsize); + py_itemsize = 0; + if (itemsize == (Py_ssize_t)-1 && PyErr_Occurred()) + goto bad; +#endif + if (itemsize) { + if (size % alignment) { + alignment = size % alignment; + } + if (itemsize < (Py_ssize_t)alignment) + itemsize = (Py_ssize_t)alignment; + } + if ((size_t)(basicsize + itemsize) < size) { + PyErr_Format(PyExc_ValueError, + "%.200s.%.200s size changed, may indicate binary incompatibility. " + "Expected %zd from C header, got %zd from PyObject", + module_name, class_name, size, basicsize+itemsize); + goto bad; + } + if (check_size == __Pyx_ImportType_CheckSize_Error_3_0_11 && + ((size_t)basicsize > size || (size_t)(basicsize + itemsize) < size)) { + PyErr_Format(PyExc_ValueError, + "%.200s.%.200s size changed, may indicate binary incompatibility. " + "Expected %zd from C header, got %zd-%zd from PyObject", + module_name, class_name, size, basicsize, basicsize+itemsize); + goto bad; + } + else if (check_size == __Pyx_ImportType_CheckSize_Warn_3_0_11 && (size_t)basicsize > size) { + PyOS_snprintf(warning, sizeof(warning), + "%s.%s size changed, may indicate binary incompatibility. " + "Expected %zd from C header, got %zd from PyObject", + module_name, class_name, size, basicsize); + if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad; + } + return (PyTypeObject *)result; +bad: + Py_XDECREF(result); + return NULL; +} +#endif + +/* ImportDottedModule */ +#if PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx__ImportDottedModule_Error(PyObject *name, PyObject *parts_tuple, Py_ssize_t count) { + PyObject *partial_name = NULL, *slice = NULL, *sep = NULL; + if (unlikely(PyErr_Occurred())) { + PyErr_Clear(); + } + if (likely(PyTuple_GET_SIZE(parts_tuple) == count)) { + partial_name = name; + } else { + slice = PySequence_GetSlice(parts_tuple, 0, count); + if (unlikely(!slice)) + goto bad; + sep = PyUnicode_FromStringAndSize(".", 1); + if (unlikely(!sep)) + goto bad; + partial_name = PyUnicode_Join(sep, slice); + } + PyErr_Format( +#if PY_MAJOR_VERSION < 3 + PyExc_ImportError, + "No module named '%s'", PyString_AS_STRING(partial_name)); +#else +#if PY_VERSION_HEX >= 0x030600B1 + PyExc_ModuleNotFoundError, +#else + PyExc_ImportError, +#endif + "No module named '%U'", partial_name); +#endif +bad: + Py_XDECREF(sep); + Py_XDECREF(slice); + Py_XDECREF(partial_name); + return NULL; +} +#endif +#if PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx__ImportDottedModule_Lookup(PyObject *name) { + PyObject *imported_module; +#if PY_VERSION_HEX < 0x030700A1 || (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM < 0x07030400) + PyObject *modules = PyImport_GetModuleDict(); + if (unlikely(!modules)) + return NULL; + imported_module = __Pyx_PyDict_GetItemStr(modules, name); + Py_XINCREF(imported_module); +#else + imported_module = PyImport_GetModule(name); +#endif + return imported_module; +} +#endif +#if PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx_ImportDottedModule_WalkParts(PyObject *module, PyObject *name, PyObject *parts_tuple) { + Py_ssize_t i, nparts; + nparts = PyTuple_GET_SIZE(parts_tuple); + for (i=1; i < nparts && module; i++) { + PyObject *part, *submodule; +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + part = PyTuple_GET_ITEM(parts_tuple, i); +#else + part = PySequence_ITEM(parts_tuple, i); +#endif + submodule = __Pyx_PyObject_GetAttrStrNoError(module, part); +#if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) + Py_DECREF(part); +#endif + Py_DECREF(module); + module = submodule; + } + if (unlikely(!module)) { + return __Pyx__ImportDottedModule_Error(name, parts_tuple, i); + } + return module; +} +#endif +static PyObject *__Pyx__ImportDottedModule(PyObject *name, PyObject *parts_tuple) { +#if PY_MAJOR_VERSION < 3 + PyObject *module, *from_list, *star = __pyx_n_s__10; + CYTHON_UNUSED_VAR(parts_tuple); + from_list = PyList_New(1); + if (unlikely(!from_list)) + return NULL; + Py_INCREF(star); + PyList_SET_ITEM(from_list, 0, star); + module = __Pyx_Import(name, from_list, 0); + Py_DECREF(from_list); + return module; +#else + PyObject *imported_module; + PyObject *module = __Pyx_Import(name, NULL, 0); + if (!parts_tuple || unlikely(!module)) + return module; + imported_module = __Pyx__ImportDottedModule_Lookup(name); + if (likely(imported_module)) { + Py_DECREF(module); + return imported_module; + } + PyErr_Clear(); + return __Pyx_ImportDottedModule_WalkParts(module, name, parts_tuple); +#endif +} +static PyObject *__Pyx_ImportDottedModule(PyObject *name, PyObject *parts_tuple) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030400B1 + PyObject *module = __Pyx__ImportDottedModule_Lookup(name); + if (likely(module)) { + PyObject *spec = __Pyx_PyObject_GetAttrStrNoError(module, __pyx_n_s_spec); + if (likely(spec)) { + PyObject *unsafe = __Pyx_PyObject_GetAttrStrNoError(spec, __pyx_n_s_initializing); + if (likely(!unsafe || !__Pyx_PyObject_IsTrue(unsafe))) { + Py_DECREF(spec); + spec = NULL; + } + Py_XDECREF(unsafe); + } + if (likely(!spec)) { + PyErr_Clear(); + return module; + } + Py_DECREF(spec); + Py_DECREF(module); + } else if (PyErr_Occurred()) { + PyErr_Clear(); + } +#endif + return __Pyx__ImportDottedModule(name, parts_tuple); +} + +/* FetchSharedCythonModule */ +static PyObject *__Pyx_FetchSharedCythonABIModule(void) { + return __Pyx_PyImport_AddModuleRef((char*) __PYX_ABI_MODULE_NAME); +} + +/* FetchCommonType */ +static int __Pyx_VerifyCachedType(PyObject *cached_type, + const char *name, + Py_ssize_t basicsize, + Py_ssize_t expected_basicsize) { + if (!PyType_Check(cached_type)) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s is not a type object", name); + return -1; + } + if (basicsize != expected_basicsize) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s has the wrong size, try recompiling", + name); + return -1; + } + return 0; +} +#if !CYTHON_USE_TYPE_SPECS +static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { + PyObject* abi_module; + const char* object_name; + PyTypeObject *cached_type = NULL; + abi_module = __Pyx_FetchSharedCythonABIModule(); + if (!abi_module) return NULL; + object_name = strrchr(type->tp_name, '.'); + object_name = object_name ? object_name+1 : type->tp_name; + cached_type = (PyTypeObject*) PyObject_GetAttrString(abi_module, object_name); + if (cached_type) { + if (__Pyx_VerifyCachedType( + (PyObject *)cached_type, + object_name, + cached_type->tp_basicsize, + type->tp_basicsize) < 0) { + goto bad; + } + goto done; + } + if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; + PyErr_Clear(); + if (PyType_Ready(type) < 0) goto bad; + if (PyObject_SetAttrString(abi_module, object_name, (PyObject *)type) < 0) + goto bad; + Py_INCREF(type); + cached_type = type; +done: + Py_DECREF(abi_module); + return cached_type; +bad: + Py_XDECREF(cached_type); + cached_type = NULL; + goto done; +} +#else +static PyTypeObject *__Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases) { + PyObject *abi_module, *cached_type = NULL; + const char* object_name = strrchr(spec->name, '.'); + object_name = object_name ? object_name+1 : spec->name; + abi_module = __Pyx_FetchSharedCythonABIModule(); + if (!abi_module) return NULL; + cached_type = PyObject_GetAttrString(abi_module, object_name); + if (cached_type) { + Py_ssize_t basicsize; +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *py_basicsize; + py_basicsize = PyObject_GetAttrString(cached_type, "__basicsize__"); + if (unlikely(!py_basicsize)) goto bad; + basicsize = PyLong_AsSsize_t(py_basicsize); + Py_DECREF(py_basicsize); + py_basicsize = 0; + if (unlikely(basicsize == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad; +#else + basicsize = likely(PyType_Check(cached_type)) ? ((PyTypeObject*) cached_type)->tp_basicsize : -1; +#endif + if (__Pyx_VerifyCachedType( + cached_type, + object_name, + basicsize, + spec->basicsize) < 0) { + goto bad; + } + goto done; + } + if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; + PyErr_Clear(); + CYTHON_UNUSED_VAR(module); + cached_type = __Pyx_PyType_FromModuleAndSpec(abi_module, spec, bases); + if (unlikely(!cached_type)) goto bad; + if (unlikely(__Pyx_fix_up_extension_type_from_spec(spec, (PyTypeObject *) cached_type) < 0)) goto bad; + if (PyObject_SetAttrString(abi_module, object_name, cached_type) < 0) goto bad; +done: + Py_DECREF(abi_module); + assert(cached_type == NULL || PyType_Check(cached_type)); + return (PyTypeObject *) cached_type; +bad: + Py_XDECREF(cached_type); + cached_type = NULL; + goto done; +} +#endif + +/* PyVectorcallFastCallDict */ +#if CYTHON_METH_FASTCALL +static PyObject *__Pyx_PyVectorcall_FastCallDict_kw(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) +{ + PyObject *res = NULL; + PyObject *kwnames; + PyObject **newargs; + PyObject **kwvalues; + Py_ssize_t i, pos; + size_t j; + PyObject *key, *value; + unsigned long keys_are_strings; + Py_ssize_t nkw = PyDict_GET_SIZE(kw); + newargs = (PyObject **)PyMem_Malloc((nargs + (size_t)nkw) * sizeof(args[0])); + if (unlikely(newargs == NULL)) { + PyErr_NoMemory(); + return NULL; + } + for (j = 0; j < nargs; j++) newargs[j] = args[j]; + kwnames = PyTuple_New(nkw); + if (unlikely(kwnames == NULL)) { + PyMem_Free(newargs); + return NULL; + } + kwvalues = newargs + nargs; + pos = i = 0; + keys_are_strings = Py_TPFLAGS_UNICODE_SUBCLASS; + while (PyDict_Next(kw, &pos, &key, &value)) { + keys_are_strings &= Py_TYPE(key)->tp_flags; + Py_INCREF(key); + Py_INCREF(value); + PyTuple_SET_ITEM(kwnames, i, key); + kwvalues[i] = value; + i++; + } + if (unlikely(!keys_are_strings)) { + PyErr_SetString(PyExc_TypeError, "keywords must be strings"); + goto cleanup; + } + res = vc(func, newargs, nargs, kwnames); +cleanup: + Py_DECREF(kwnames); + for (i = 0; i < nkw; i++) + Py_DECREF(kwvalues[i]); + PyMem_Free(newargs); + return res; +} +static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) +{ + if (likely(kw == NULL) || PyDict_GET_SIZE(kw) == 0) { + return vc(func, args, nargs, NULL); + } + return __Pyx_PyVectorcall_FastCallDict_kw(func, vc, args, nargs, kw); +} +#endif + +/* CythonFunctionShared */ +#if CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) { + if (__Pyx_CyFunction_Check(func)) { + return PyCFunction_GetFunction(((__pyx_CyFunctionObject*)func)->func) == (PyCFunction) cfunc; + } else if (PyCFunction_Check(func)) { + return PyCFunction_GetFunction(func) == (PyCFunction) cfunc; + } + return 0; +} +#else +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) { + return __Pyx_CyOrPyCFunction_Check(func) && __Pyx_CyOrPyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc; +} +#endif +static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj) { +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + __Pyx_Py_XDECREF_SET( + __Pyx_CyFunction_GetClassObj(f), + ((classobj) ? __Pyx_NewRef(classobj) : NULL)); +#else + __Pyx_Py_XDECREF_SET( + ((PyCMethodObject *) (f))->mm_class, + (PyTypeObject*)((classobj) ? __Pyx_NewRef(classobj) : NULL)); +#endif +} +static PyObject * +__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, void *closure) +{ + CYTHON_UNUSED_VAR(closure); + if (unlikely(op->func_doc == NULL)) { +#if CYTHON_COMPILING_IN_LIMITED_API + op->func_doc = PyObject_GetAttrString(op->func, "__doc__"); + if (unlikely(!op->func_doc)) return NULL; +#else + if (((PyCFunctionObject*)op)->m_ml->ml_doc) { +#if PY_MAJOR_VERSION >= 3 + op->func_doc = PyUnicode_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc); +#else + op->func_doc = PyString_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc); +#endif + if (unlikely(op->func_doc == NULL)) + return NULL; + } else { + Py_INCREF(Py_None); + return Py_None; + } +#endif + } + Py_INCREF(op->func_doc); + return op->func_doc; +} +static int +__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (value == NULL) { + value = Py_None; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_doc, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(op->func_name == NULL)) { +#if CYTHON_COMPILING_IN_LIMITED_API + op->func_name = PyObject_GetAttrString(op->func, "__name__"); +#elif PY_MAJOR_VERSION >= 3 + op->func_name = PyUnicode_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name); +#else + op->func_name = PyString_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name); +#endif + if (unlikely(op->func_name == NULL)) + return NULL; + } + Py_INCREF(op->func_name); + return op->func_name; +} +static int +__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) +#else + if (unlikely(value == NULL || !PyString_Check(value))) +#endif + { + PyErr_SetString(PyExc_TypeError, + "__name__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_name, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + Py_INCREF(op->func_qualname); + return op->func_qualname; +} +static int +__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) +#else + if (unlikely(value == NULL || !PyString_Check(value))) +#endif + { + PyErr_SetString(PyExc_TypeError, + "__qualname__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_qualname, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(op->func_dict == NULL)) { + op->func_dict = PyDict_New(); + if (unlikely(op->func_dict == NULL)) + return NULL; + } + Py_INCREF(op->func_dict); + return op->func_dict; +} +static int +__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(value == NULL)) { + PyErr_SetString(PyExc_TypeError, + "function's dictionary may not be deleted"); + return -1; + } + if (unlikely(!PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "setting function's dictionary to a non-dict"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_dict, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + Py_INCREF(op->func_globals); + return op->func_globals; +} +static PyObject * +__Pyx_CyFunction_get_closure(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(op); + CYTHON_UNUSED_VAR(context); + Py_INCREF(Py_None); + return Py_None; +} +static PyObject * +__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, void *context) +{ + PyObject* result = (op->func_code) ? op->func_code : Py_None; + CYTHON_UNUSED_VAR(context); + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { + int result = 0; + PyObject *res = op->defaults_getter((PyObject *) op); + if (unlikely(!res)) + return -1; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + op->defaults_tuple = PyTuple_GET_ITEM(res, 0); + Py_INCREF(op->defaults_tuple); + op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); + Py_INCREF(op->defaults_kwdict); + #else + op->defaults_tuple = __Pyx_PySequence_ITEM(res, 0); + if (unlikely(!op->defaults_tuple)) result = -1; + else { + op->defaults_kwdict = __Pyx_PySequence_ITEM(res, 1); + if (unlikely(!op->defaults_kwdict)) result = -1; + } + #endif + Py_DECREF(res); + return result; +} +static int +__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value) { + value = Py_None; + } else if (unlikely(value != Py_None && !PyTuple_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__defaults__ must be set to a tuple object"); + return -1; + } + PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__defaults__ will not " + "currently affect the values used in function calls", 1); + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->defaults_tuple, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, void *context) { + PyObject* result = op->defaults_tuple; + CYTHON_UNUSED_VAR(context); + if (unlikely(!result)) { + if (op->defaults_getter) { + if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; + result = op->defaults_tuple; + } else { + result = Py_None; + } + } + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value) { + value = Py_None; + } else if (unlikely(value != Py_None && !PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__kwdefaults__ must be set to a dict object"); + return -1; + } + PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__kwdefaults__ will not " + "currently affect the values used in function calls", 1); + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->defaults_kwdict, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, void *context) { + PyObject* result = op->defaults_kwdict; + CYTHON_UNUSED_VAR(context); + if (unlikely(!result)) { + if (op->defaults_getter) { + if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; + result = op->defaults_kwdict; + } else { + result = Py_None; + } + } + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value || value == Py_None) { + value = NULL; + } else if (unlikely(!PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__annotations__ must be set to a dict object"); + return -1; + } + Py_XINCREF(value); + __Pyx_Py_XDECREF_SET(op->func_annotations, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, void *context) { + PyObject* result = op->func_annotations; + CYTHON_UNUSED_VAR(context); + if (unlikely(!result)) { + result = PyDict_New(); + if (unlikely(!result)) return NULL; + op->func_annotations = result; + } + Py_INCREF(result); + return result; +} +static PyObject * +__Pyx_CyFunction_get_is_coroutine(__pyx_CyFunctionObject *op, void *context) { + int is_coroutine; + CYTHON_UNUSED_VAR(context); + if (op->func_is_coroutine) { + return __Pyx_NewRef(op->func_is_coroutine); + } + is_coroutine = op->flags & __Pyx_CYFUNCTION_COROUTINE; +#if PY_VERSION_HEX >= 0x03050000 + if (is_coroutine) { + PyObject *module, *fromlist, *marker = __pyx_n_s_is_coroutine; + fromlist = PyList_New(1); + if (unlikely(!fromlist)) return NULL; + Py_INCREF(marker); +#if CYTHON_ASSUME_SAFE_MACROS + PyList_SET_ITEM(fromlist, 0, marker); +#else + if (unlikely(PyList_SetItem(fromlist, 0, marker) < 0)) { + Py_DECREF(marker); + Py_DECREF(fromlist); + return NULL; + } +#endif + module = PyImport_ImportModuleLevelObject(__pyx_n_s_asyncio_coroutines, NULL, NULL, fromlist, 0); + Py_DECREF(fromlist); + if (unlikely(!module)) goto ignore; + op->func_is_coroutine = __Pyx_PyObject_GetAttrStr(module, marker); + Py_DECREF(module); + if (likely(op->func_is_coroutine)) { + return __Pyx_NewRef(op->func_is_coroutine); + } +ignore: + PyErr_Clear(); + } +#endif + op->func_is_coroutine = __Pyx_PyBool_FromLong(is_coroutine); + return __Pyx_NewRef(op->func_is_coroutine); +} +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject * +__Pyx_CyFunction_get_module(__pyx_CyFunctionObject *op, void *context) { + CYTHON_UNUSED_VAR(context); + return PyObject_GetAttrString(op->func, "__module__"); +} +static int +__Pyx_CyFunction_set_module(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + return PyObject_SetAttrString(op->func, "__module__", value); +} +#endif +static PyGetSetDef __pyx_CyFunction_getsets[] = { + {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, + {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, + {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, + {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, + {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, + {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, + {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, + {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, + {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, + {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, + {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, + {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, + {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, + {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, + {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, + {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, + {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, + {(char *) "_is_coroutine", (getter)__Pyx_CyFunction_get_is_coroutine, 0, 0, 0}, +#if CYTHON_COMPILING_IN_LIMITED_API + {"__module__", (getter)__Pyx_CyFunction_get_module, (setter)__Pyx_CyFunction_set_module, 0, 0}, +#endif + {0, 0, 0, 0, 0} +}; +static PyMemberDef __pyx_CyFunction_members[] = { +#if !CYTHON_COMPILING_IN_LIMITED_API + {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), 0, 0}, +#endif +#if CYTHON_USE_TYPE_SPECS + {(char *) "__dictoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_dict), READONLY, 0}, +#if CYTHON_METH_FASTCALL +#if CYTHON_BACKPORT_VECTORCALL + {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_vectorcall), READONLY, 0}, +#else +#if !CYTHON_COMPILING_IN_LIMITED_API + {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(PyCFunctionObject, vectorcall), READONLY, 0}, +#endif +#endif +#endif +#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API + {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_weakreflist), READONLY, 0}, +#else + {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(PyCFunctionObject, m_weakreflist), READONLY, 0}, +#endif +#endif + {0, 0, 0, 0, 0} +}; +static PyObject * +__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, PyObject *args) +{ + CYTHON_UNUSED_VAR(args); +#if PY_MAJOR_VERSION >= 3 + Py_INCREF(m->func_qualname); + return m->func_qualname; +#else + return PyString_FromString(((PyCFunctionObject*)m)->m_ml->ml_name); +#endif +} +static PyMethodDef __pyx_CyFunction_methods[] = { + {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, + {0, 0, 0, 0} +}; +#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API +#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) +#else +#define __Pyx_CyFunction_weakreflist(cyfunc) (((PyCFunctionObject*)cyfunc)->m_weakreflist) +#endif +static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname, + PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { +#if !CYTHON_COMPILING_IN_LIMITED_API + PyCFunctionObject *cf = (PyCFunctionObject*) op; +#endif + if (unlikely(op == NULL)) + return NULL; +#if CYTHON_COMPILING_IN_LIMITED_API + op->func = PyCFunction_NewEx(ml, (PyObject*)op, module); + if (unlikely(!op->func)) return NULL; +#endif + op->flags = flags; + __Pyx_CyFunction_weakreflist(op) = NULL; +#if !CYTHON_COMPILING_IN_LIMITED_API + cf->m_ml = ml; + cf->m_self = (PyObject *) op; +#endif + Py_XINCREF(closure); + op->func_closure = closure; +#if !CYTHON_COMPILING_IN_LIMITED_API + Py_XINCREF(module); + cf->m_module = module; +#endif + op->func_dict = NULL; + op->func_name = NULL; + Py_INCREF(qualname); + op->func_qualname = qualname; + op->func_doc = NULL; +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + op->func_classobj = NULL; +#else + ((PyCMethodObject*)op)->mm_class = NULL; +#endif + op->func_globals = globals; + Py_INCREF(op->func_globals); + Py_XINCREF(code); + op->func_code = code; + op->defaults_pyobjects = 0; + op->defaults_size = 0; + op->defaults = NULL; + op->defaults_tuple = NULL; + op->defaults_kwdict = NULL; + op->defaults_getter = NULL; + op->func_annotations = NULL; + op->func_is_coroutine = NULL; +#if CYTHON_METH_FASTCALL + switch (ml->ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O | METH_KEYWORDS | METH_METHOD)) { + case METH_NOARGS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_NOARGS; + break; + case METH_O: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_O; + break; + case METH_METHOD | METH_FASTCALL | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD; + break; + case METH_FASTCALL | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS; + break; + case METH_VARARGS | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = NULL; + break; + default: + PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); + Py_DECREF(op); + return NULL; + } +#endif + return (PyObject *) op; +} +static int +__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) +{ + Py_CLEAR(m->func_closure); +#if CYTHON_COMPILING_IN_LIMITED_API + Py_CLEAR(m->func); +#else + Py_CLEAR(((PyCFunctionObject*)m)->m_module); +#endif + Py_CLEAR(m->func_dict); + Py_CLEAR(m->func_name); + Py_CLEAR(m->func_qualname); + Py_CLEAR(m->func_doc); + Py_CLEAR(m->func_globals); + Py_CLEAR(m->func_code); +#if !CYTHON_COMPILING_IN_LIMITED_API +#if PY_VERSION_HEX < 0x030900B1 + Py_CLEAR(__Pyx_CyFunction_GetClassObj(m)); +#else + { + PyObject *cls = (PyObject*) ((PyCMethodObject *) (m))->mm_class; + ((PyCMethodObject *) (m))->mm_class = NULL; + Py_XDECREF(cls); + } +#endif +#endif + Py_CLEAR(m->defaults_tuple); + Py_CLEAR(m->defaults_kwdict); + Py_CLEAR(m->func_annotations); + Py_CLEAR(m->func_is_coroutine); + if (m->defaults) { + PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); + int i; + for (i = 0; i < m->defaults_pyobjects; i++) + Py_XDECREF(pydefaults[i]); + PyObject_Free(m->defaults); + m->defaults = NULL; + } + return 0; +} +static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) +{ + if (__Pyx_CyFunction_weakreflist(m) != NULL) + PyObject_ClearWeakRefs((PyObject *) m); + __Pyx_CyFunction_clear(m); + __Pyx_PyHeapTypeObject_GC_Del(m); +} +static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) +{ + PyObject_GC_UnTrack(m); + __Pyx__CyFunction_dealloc(m); +} +static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) +{ + Py_VISIT(m->func_closure); +#if CYTHON_COMPILING_IN_LIMITED_API + Py_VISIT(m->func); +#else + Py_VISIT(((PyCFunctionObject*)m)->m_module); +#endif + Py_VISIT(m->func_dict); + Py_VISIT(m->func_name); + Py_VISIT(m->func_qualname); + Py_VISIT(m->func_doc); + Py_VISIT(m->func_globals); + Py_VISIT(m->func_code); +#if !CYTHON_COMPILING_IN_LIMITED_API + Py_VISIT(__Pyx_CyFunction_GetClassObj(m)); +#endif + Py_VISIT(m->defaults_tuple); + Py_VISIT(m->defaults_kwdict); + Py_VISIT(m->func_is_coroutine); + if (m->defaults) { + PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); + int i; + for (i = 0; i < m->defaults_pyobjects; i++) + Py_VISIT(pydefaults[i]); + } + return 0; +} +static PyObject* +__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) +{ +#if PY_MAJOR_VERSION >= 3 + return PyUnicode_FromFormat("", + op->func_qualname, (void *)op); +#else + return PyString_FromFormat("", + PyString_AsString(op->func_qualname), (void *)op); +#endif +} +static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *f = ((__pyx_CyFunctionObject*)func)->func; + PyObject *py_name = NULL; + PyCFunction meth; + int flags; + meth = PyCFunction_GetFunction(f); + if (unlikely(!meth)) return NULL; + flags = PyCFunction_GetFlags(f); + if (unlikely(flags < 0)) return NULL; +#else + PyCFunctionObject* f = (PyCFunctionObject*)func; + PyCFunction meth = f->m_ml->ml_meth; + int flags = f->m_ml->ml_flags; +#endif + Py_ssize_t size; + switch (flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { + case METH_VARARGS: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) + return (*meth)(self, arg); + break; + case METH_VARARGS | METH_KEYWORDS: + return (*(PyCFunctionWithKeywords)(void*)meth)(self, arg, kw); + case METH_NOARGS: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) { +#if CYTHON_ASSUME_SAFE_MACROS + size = PyTuple_GET_SIZE(arg); +#else + size = PyTuple_Size(arg); + if (unlikely(size < 0)) return NULL; +#endif + if (likely(size == 0)) + return (*meth)(self, NULL); +#if CYTHON_COMPILING_IN_LIMITED_API + py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); + if (!py_name) return NULL; + PyErr_Format(PyExc_TypeError, + "%.200S() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", + py_name, size); + Py_DECREF(py_name); +#else + PyErr_Format(PyExc_TypeError, + "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", + f->m_ml->ml_name, size); +#endif + return NULL; + } + break; + case METH_O: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) { +#if CYTHON_ASSUME_SAFE_MACROS + size = PyTuple_GET_SIZE(arg); +#else + size = PyTuple_Size(arg); + if (unlikely(size < 0)) return NULL; +#endif + if (likely(size == 1)) { + PyObject *result, *arg0; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + arg0 = PyTuple_GET_ITEM(arg, 0); + #else + arg0 = __Pyx_PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; + #endif + result = (*meth)(self, arg0); + #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) + Py_DECREF(arg0); + #endif + return result; + } +#if CYTHON_COMPILING_IN_LIMITED_API + py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); + if (!py_name) return NULL; + PyErr_Format(PyExc_TypeError, + "%.200S() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", + py_name, size); + Py_DECREF(py_name); +#else + PyErr_Format(PyExc_TypeError, + "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", + f->m_ml->ml_name, size); +#endif + return NULL; + } + break; + default: + PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); + return NULL; + } +#if CYTHON_COMPILING_IN_LIMITED_API + py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); + if (!py_name) return NULL; + PyErr_Format(PyExc_TypeError, "%.200S() takes no keyword arguments", + py_name); + Py_DECREF(py_name); +#else + PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", + f->m_ml->ml_name); +#endif + return NULL; +} +static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { + PyObject *self, *result; +#if CYTHON_COMPILING_IN_LIMITED_API + self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)func)->func); + if (unlikely(!self) && PyErr_Occurred()) return NULL; +#else + self = ((PyCFunctionObject*)func)->m_self; +#endif + result = __Pyx_CyFunction_CallMethod(func, self, arg, kw); + return result; +} +static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { + PyObject *result; + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; +#if CYTHON_METH_FASTCALL + __pyx_vectorcallfunc vc = __Pyx_CyFunction_func_vectorcall(cyfunc); + if (vc) { +#if CYTHON_ASSUME_SAFE_MACROS + return __Pyx_PyVectorcall_FastCallDict(func, vc, &PyTuple_GET_ITEM(args, 0), (size_t)PyTuple_GET_SIZE(args), kw); +#else + (void) &__Pyx_PyVectorcall_FastCallDict; + return PyVectorcall_Call(func, args, kw); +#endif + } +#endif + if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { + Py_ssize_t argc; + PyObject *new_args; + PyObject *self; +#if CYTHON_ASSUME_SAFE_MACROS + argc = PyTuple_GET_SIZE(args); +#else + argc = PyTuple_Size(args); + if (unlikely(!argc) < 0) return NULL; +#endif + new_args = PyTuple_GetSlice(args, 1, argc); + if (unlikely(!new_args)) + return NULL; + self = PyTuple_GetItem(args, 0); + if (unlikely(!self)) { + Py_DECREF(new_args); +#if PY_MAJOR_VERSION > 2 + PyErr_Format(PyExc_TypeError, + "unbound method %.200S() needs an argument", + cyfunc->func_qualname); +#else + PyErr_SetString(PyExc_TypeError, + "unbound method needs an argument"); +#endif + return NULL; + } + result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); + Py_DECREF(new_args); + } else { + result = __Pyx_CyFunction_Call(func, args, kw); + } + return result; +} +#if CYTHON_METH_FASTCALL +static CYTHON_INLINE int __Pyx_CyFunction_Vectorcall_CheckArgs(__pyx_CyFunctionObject *cyfunc, Py_ssize_t nargs, PyObject *kwnames) +{ + int ret = 0; + if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { + if (unlikely(nargs < 1)) { + PyErr_Format(PyExc_TypeError, "%.200s() needs an argument", + ((PyCFunctionObject*)cyfunc)->m_ml->ml_name); + return -1; + } + ret = 1; + } + if (unlikely(kwnames) && unlikely(PyTuple_GET_SIZE(kwnames))) { + PyErr_Format(PyExc_TypeError, + "%.200s() takes no keyword arguments", ((PyCFunctionObject*)cyfunc)->m_ml->ml_name); + return -1; + } + return ret; +} +static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + if (unlikely(nargs != 0)) { + PyErr_Format(PyExc_TypeError, + "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", + def->ml_name, nargs); + return NULL; + } + return def->ml_meth(self, NULL); +} +static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + if (unlikely(nargs != 1)) { + PyErr_Format(PyExc_TypeError, + "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", + def->ml_name, nargs); + return NULL; + } + return def->ml_meth(self, args[0]); +} +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + return ((__Pyx_PyCFunctionFastWithKeywords)(void(*)(void))def->ml_meth)(self, args, nargs, kwnames); +} +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; + PyTypeObject *cls = (PyTypeObject *) __Pyx_CyFunction_GetClassObj(cyfunc); +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + return ((__Pyx_PyCMethod)(void(*)(void))def->ml_meth)(self, cls, args, (size_t)nargs, kwnames); +} +#endif +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_CyFunctionType_slots[] = { + {Py_tp_dealloc, (void *)__Pyx_CyFunction_dealloc}, + {Py_tp_repr, (void *)__Pyx_CyFunction_repr}, + {Py_tp_call, (void *)__Pyx_CyFunction_CallAsMethod}, + {Py_tp_traverse, (void *)__Pyx_CyFunction_traverse}, + {Py_tp_clear, (void *)__Pyx_CyFunction_clear}, + {Py_tp_methods, (void *)__pyx_CyFunction_methods}, + {Py_tp_members, (void *)__pyx_CyFunction_members}, + {Py_tp_getset, (void *)__pyx_CyFunction_getsets}, + {Py_tp_descr_get, (void *)__Pyx_PyMethod_New}, + {0, 0}, +}; +static PyType_Spec __pyx_CyFunctionType_spec = { + __PYX_TYPE_MODULE_PREFIX "cython_function_or_method", + sizeof(__pyx_CyFunctionObject), + 0, +#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR + Py_TPFLAGS_METHOD_DESCRIPTOR | +#endif +#if (defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL) + _Py_TPFLAGS_HAVE_VECTORCALL | +#endif + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, + __pyx_CyFunctionType_slots +}; +#else +static PyTypeObject __pyx_CyFunctionType_type = { + PyVarObject_HEAD_INIT(0, 0) + __PYX_TYPE_MODULE_PREFIX "cython_function_or_method", + sizeof(__pyx_CyFunctionObject), + 0, + (destructor) __Pyx_CyFunction_dealloc, +#if !CYTHON_METH_FASTCALL + 0, +#elif CYTHON_BACKPORT_VECTORCALL + (printfunc)offsetof(__pyx_CyFunctionObject, func_vectorcall), +#else + offsetof(PyCFunctionObject, vectorcall), +#endif + 0, + 0, +#if PY_MAJOR_VERSION < 3 + 0, +#else + 0, +#endif + (reprfunc) __Pyx_CyFunction_repr, + 0, + 0, + 0, + 0, + __Pyx_CyFunction_CallAsMethod, + 0, + 0, + 0, + 0, +#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR + Py_TPFLAGS_METHOD_DESCRIPTOR | +#endif +#if defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL + _Py_TPFLAGS_HAVE_VECTORCALL | +#endif + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, + 0, + (traverseproc) __Pyx_CyFunction_traverse, + (inquiry) __Pyx_CyFunction_clear, + 0, +#if PY_VERSION_HEX < 0x030500A0 + offsetof(__pyx_CyFunctionObject, func_weakreflist), +#else + offsetof(PyCFunctionObject, m_weakreflist), +#endif + 0, + 0, + __pyx_CyFunction_methods, + __pyx_CyFunction_members, + __pyx_CyFunction_getsets, + 0, + 0, + __Pyx_PyMethod_New, + 0, + offsetof(__pyx_CyFunctionObject, func_dict), + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, +#if PY_VERSION_HEX >= 0x030400a1 + 0, +#endif +#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, +#endif +#if __PYX_NEED_TP_PRINT_SLOT + 0, +#endif +#if PY_VERSION_HEX >= 0x030C0000 + 0, +#endif +#if PY_VERSION_HEX >= 0x030d00A4 + 0, +#endif +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, +#endif +}; +#endif +static int __pyx_CyFunction_init(PyObject *module) { +#if CYTHON_USE_TYPE_SPECS + __pyx_CyFunctionType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CyFunctionType_spec, NULL); +#else + CYTHON_UNUSED_VAR(module); + __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); +#endif + if (unlikely(__pyx_CyFunctionType == NULL)) { + return -1; + } + return 0; +} +static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults = PyObject_Malloc(size); + if (unlikely(!m->defaults)) + return PyErr_NoMemory(); + memset(m->defaults, 0, size); + m->defaults_pyobjects = pyobjects; + m->defaults_size = size; + return m->defaults; +} +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults_tuple = tuple; + Py_INCREF(tuple); +} +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults_kwdict = dict; + Py_INCREF(dict); +} +static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->func_annotations = dict; + Py_INCREF(dict); +} + +/* CythonFunction */ +static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname, + PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { + PyObject *op = __Pyx_CyFunction_Init( + PyObject_GC_New(__pyx_CyFunctionObject, __pyx_CyFunctionType), + ml, flags, qualname, closure, module, globals, code + ); + if (likely(op)) { + PyObject_GC_Track(op); + } + return op; +} + +/* CLineInTraceback */ +#ifndef CYTHON_CLINE_IN_TRACEBACK +static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) { + PyObject *use_cline; + PyObject *ptype, *pvalue, *ptraceback; +#if CYTHON_COMPILING_IN_CPYTHON + PyObject **cython_runtime_dict; +#endif + CYTHON_MAYBE_UNUSED_VAR(tstate); + if (unlikely(!__pyx_cython_runtime)) { + return c_line; + } + __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); +#if CYTHON_COMPILING_IN_CPYTHON + cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); + if (likely(cython_runtime_dict)) { + __PYX_PY_DICT_LOOKUP_IF_MODIFIED( + use_cline, *cython_runtime_dict, + __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback)) + } else +#endif + { + PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStrNoError(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); + if (use_cline_obj) { + use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; + Py_DECREF(use_cline_obj); + } else { + PyErr_Clear(); + use_cline = NULL; + } + } + if (!use_cline) { + c_line = 0; + (void) PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); + } + else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { + c_line = 0; + } + __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); + return c_line; +} +#endif + +/* CodeObjectCache */ +#if !CYTHON_COMPILING_IN_LIMITED_API +static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { + int start = 0, mid = 0, end = count - 1; + if (end >= 0 && code_line > entries[end].code_line) { + return count; + } + while (start < end) { + mid = start + (end - start) / 2; + if (code_line < entries[mid].code_line) { + end = mid; + } else if (code_line > entries[mid].code_line) { + start = mid + 1; + } else { + return mid; + } + } + if (code_line <= entries[mid].code_line) { + return mid; + } else { + return mid + 1; + } +} +static PyCodeObject *__pyx_find_code_object(int code_line) { + PyCodeObject* code_object; + int pos; + if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { + return NULL; + } + pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); + if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { + return NULL; + } + code_object = __pyx_code_cache.entries[pos].code_object; + Py_INCREF(code_object); + return code_object; +} +static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { + int pos, i; + __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; + if (unlikely(!code_line)) { + return; + } + if (unlikely(!entries)) { + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); + if (likely(entries)) { + __pyx_code_cache.entries = entries; + __pyx_code_cache.max_count = 64; + __pyx_code_cache.count = 1; + entries[0].code_line = code_line; + entries[0].code_object = code_object; + Py_INCREF(code_object); + } + return; + } + pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); + if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { + PyCodeObject* tmp = entries[pos].code_object; + entries[pos].code_object = code_object; + Py_DECREF(tmp); + return; + } + if (__pyx_code_cache.count == __pyx_code_cache.max_count) { + int new_max = __pyx_code_cache.max_count + 64; + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( + __pyx_code_cache.entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry)); + if (unlikely(!entries)) { + return; + } + __pyx_code_cache.entries = entries; + __pyx_code_cache.max_count = new_max; + } + for (i=__pyx_code_cache.count; i>pos; i--) { + entries[i] = entries[i-1]; + } + entries[pos].code_line = code_line; + entries[pos].code_object = code_object; + __pyx_code_cache.count++; + Py_INCREF(code_object); +} +#endif + +/* AddTraceback */ +#include "compile.h" +#include "frameobject.h" +#include "traceback.h" +#if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API + #ifndef Py_BUILD_CORE + #define Py_BUILD_CORE 1 + #endif + #include "internal/pycore_frame.h" +#endif +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject *__Pyx_PyCode_Replace_For_AddTraceback(PyObject *code, PyObject *scratch_dict, + PyObject *firstlineno, PyObject *name) { + PyObject *replace = NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "co_firstlineno", firstlineno))) return NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "co_name", name))) return NULL; + replace = PyObject_GetAttrString(code, "replace"); + if (likely(replace)) { + PyObject *result; + result = PyObject_Call(replace, __pyx_empty_tuple, scratch_dict); + Py_DECREF(replace); + return result; + } + PyErr_Clear(); + #if __PYX_LIMITED_VERSION_HEX < 0x030780000 + { + PyObject *compiled = NULL, *result = NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "code", code))) return NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "type", (PyObject*)(&PyType_Type)))) return NULL; + compiled = Py_CompileString( + "out = type(code)(\n" + " code.co_argcount, code.co_kwonlyargcount, code.co_nlocals, code.co_stacksize,\n" + " code.co_flags, code.co_code, code.co_consts, code.co_names,\n" + " code.co_varnames, code.co_filename, co_name, co_firstlineno,\n" + " code.co_lnotab)\n", "", Py_file_input); + if (!compiled) return NULL; + result = PyEval_EvalCode(compiled, scratch_dict, scratch_dict); + Py_DECREF(compiled); + if (!result) PyErr_Print(); + Py_DECREF(result); + result = PyDict_GetItemString(scratch_dict, "out"); + if (result) Py_INCREF(result); + return result; + } + #else + return NULL; + #endif +} +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename) { + PyObject *code_object = NULL, *py_py_line = NULL, *py_funcname = NULL, *dict = NULL; + PyObject *replace = NULL, *getframe = NULL, *frame = NULL; + PyObject *exc_type, *exc_value, *exc_traceback; + int success = 0; + if (c_line) { + (void) __pyx_cfilenm; + (void) __Pyx_CLineForTraceback(__Pyx_PyThreadState_Current, c_line); + } + PyErr_Fetch(&exc_type, &exc_value, &exc_traceback); + code_object = Py_CompileString("_getframe()", filename, Py_eval_input); + if (unlikely(!code_object)) goto bad; + py_py_line = PyLong_FromLong(py_line); + if (unlikely(!py_py_line)) goto bad; + py_funcname = PyUnicode_FromString(funcname); + if (unlikely(!py_funcname)) goto bad; + dict = PyDict_New(); + if (unlikely(!dict)) goto bad; + { + PyObject *old_code_object = code_object; + code_object = __Pyx_PyCode_Replace_For_AddTraceback(code_object, dict, py_py_line, py_funcname); + Py_DECREF(old_code_object); + } + if (unlikely(!code_object)) goto bad; + getframe = PySys_GetObject("_getframe"); + if (unlikely(!getframe)) goto bad; + if (unlikely(PyDict_SetItemString(dict, "_getframe", getframe))) goto bad; + frame = PyEval_EvalCode(code_object, dict, dict); + if (unlikely(!frame) || frame == Py_None) goto bad; + success = 1; + bad: + PyErr_Restore(exc_type, exc_value, exc_traceback); + Py_XDECREF(code_object); + Py_XDECREF(py_py_line); + Py_XDECREF(py_funcname); + Py_XDECREF(dict); + Py_XDECREF(replace); + if (success) { + PyTraceBack_Here( + (struct _frame*)frame); + } + Py_XDECREF(frame); +} +#else +static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( + const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = NULL; + PyObject *py_funcname = NULL; + #if PY_MAJOR_VERSION < 3 + PyObject *py_srcfile = NULL; + py_srcfile = PyString_FromString(filename); + if (!py_srcfile) goto bad; + #endif + if (c_line) { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + if (!py_funcname) goto bad; + #else + py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + if (!py_funcname) goto bad; + funcname = PyUnicode_AsUTF8(py_funcname); + if (!funcname) goto bad; + #endif + } + else { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromString(funcname); + if (!py_funcname) goto bad; + #endif + } + #if PY_MAJOR_VERSION < 3 + py_code = __Pyx_PyCode_New( + 0, + 0, + 0, + 0, + 0, + 0, + __pyx_empty_bytes, /*PyObject *code,*/ + __pyx_empty_tuple, /*PyObject *consts,*/ + __pyx_empty_tuple, /*PyObject *names,*/ + __pyx_empty_tuple, /*PyObject *varnames,*/ + __pyx_empty_tuple, /*PyObject *freevars,*/ + __pyx_empty_tuple, /*PyObject *cellvars,*/ + py_srcfile, /*PyObject *filename,*/ + py_funcname, /*PyObject *name,*/ + py_line, + __pyx_empty_bytes /*PyObject *lnotab*/ + ); + Py_DECREF(py_srcfile); + #else + py_code = PyCode_NewEmpty(filename, funcname, py_line); + #endif + Py_XDECREF(py_funcname); + return py_code; +bad: + Py_XDECREF(py_funcname); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(py_srcfile); + #endif + return NULL; +} +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = 0; + PyFrameObject *py_frame = 0; + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject *ptype, *pvalue, *ptraceback; + if (c_line) { + c_line = __Pyx_CLineForTraceback(tstate, c_line); + } + py_code = __pyx_find_code_object(c_line ? -c_line : py_line); + if (!py_code) { + __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); + py_code = __Pyx_CreateCodeObjectForTraceback( + funcname, c_line, py_line, filename); + if (!py_code) { + /* If the code object creation fails, then we should clear the + fetched exception references and propagate the new exception */ + Py_XDECREF(ptype); + Py_XDECREF(pvalue); + Py_XDECREF(ptraceback); + goto bad; + } + __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); + __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); + } + py_frame = PyFrame_New( + tstate, /*PyThreadState *tstate,*/ + py_code, /*PyCodeObject *code,*/ + __pyx_d, /*PyObject *globals,*/ + 0 /*PyObject *locals*/ + ); + if (!py_frame) goto bad; + __Pyx_PyFrame_SetLineNumber(py_frame, py_line); + PyTraceBack_Here(py_frame); +bad: + Py_XDECREF(py_code); + Py_XDECREF(py_frame); +} +#endif + +/* CIntFromPyVerify */ +#define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) +#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) +#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ + {\ + func_type value = func_value;\ + if (sizeof(target_type) < sizeof(func_type)) {\ + if (unlikely(value != (func_type) (target_type) value)) {\ + func_type zero = 0;\ + if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ + return (target_type) -1;\ + if (is_unsigned && unlikely(value < zero))\ + goto raise_neg_overflow;\ + else\ + goto raise_overflow;\ + }\ + }\ + return (target_type) value;\ + } + +/* CIntToPy */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const int neg_one = (int) -1, const_zero = (int) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(int) < sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(int) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(int) <= sizeof(long)) { + return PyInt_FromLong((long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); +#endif + } + } + { + unsigned char *bytes = (unsigned char *)&value; +#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 + if (is_unsigned) { + return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); + } else { + return PyLong_FromNativeBytes(bytes, sizeof(value), -1); + } +#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 + int one = 1; int little = (int)*(unsigned char *)&one; + return _PyLong_FromByteArray(bytes, sizeof(int), + little, !is_unsigned); +#else + int one = 1; int little = (int)*(unsigned char *)&one; + PyObject *from_bytes, *result = NULL; + PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; + from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); + if (!from_bytes) return NULL; + py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(int)); + if (!py_bytes) goto limited_bad; + order_str = PyUnicode_FromString(little ? "little" : "big"); + if (!order_str) goto limited_bad; + arg_tuple = PyTuple_Pack(2, py_bytes, order_str); + if (!arg_tuple) goto limited_bad; + if (!is_unsigned) { + kwds = PyDict_New(); + if (!kwds) goto limited_bad; + if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; + } + result = PyObject_Call(from_bytes, arg_tuple, kwds); + limited_bad: + Py_XDECREF(kwds); + Py_XDECREF(arg_tuple); + Py_XDECREF(order_str); + Py_XDECREF(py_bytes); + Py_XDECREF(from_bytes); + return result; +#endif + } +} + +/* CIntFromPy */ +static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const int neg_one = (int) -1, const_zero = (int) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if ((sizeof(int) < sizeof(long))) { + __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (int) val; + } + } +#endif + if (unlikely(!PyLong_Check(x))) { + int val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (int) -1; + val = __Pyx_PyInt_As_int(tmp); + Py_DECREF(tmp); + return val; + } + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + if (unlikely(__Pyx_PyLong_IsNeg(x))) { + goto raise_neg_overflow; + } else if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_DigitCount(x)) { + case 2: + if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 2 * PyLong_SHIFT)) { + return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 3 * PyLong_SHIFT)) { + return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 4 * PyLong_SHIFT)) { + return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + } + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (int) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if ((sizeof(int) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(int) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_SignedDigitCount(x)) { + case -2: + if ((8 * sizeof(int) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) { + return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + } + } +#endif + if ((sizeof(int) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(int) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { + int val; + int ret = -1; +#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API + Py_ssize_t bytes_copied = PyLong_AsNativeBytes( + x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); + if (unlikely(bytes_copied == -1)) { + } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { + goto raise_overflow; + } else { + ret = 0; + } +#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + ret = _PyLong_AsByteArray((PyLongObject *)x, + bytes, sizeof(val), + is_little, !is_unsigned); +#else + PyObject *v; + PyObject *stepval = NULL, *mask = NULL, *shift = NULL; + int bits, remaining_bits, is_negative = 0; + int chunk_size = (sizeof(long) < 8) ? 30 : 62; + if (likely(PyLong_CheckExact(x))) { + v = __Pyx_NewRef(x); + } else { + v = PyNumber_Long(x); + if (unlikely(!v)) return (int) -1; + assert(PyLong_CheckExact(v)); + } + { + int result = PyObject_RichCompareBool(v, Py_False, Py_LT); + if (unlikely(result < 0)) { + Py_DECREF(v); + return (int) -1; + } + is_negative = result == 1; + } + if (is_unsigned && unlikely(is_negative)) { + Py_DECREF(v); + goto raise_neg_overflow; + } else if (is_negative) { + stepval = PyNumber_Invert(v); + Py_DECREF(v); + if (unlikely(!stepval)) + return (int) -1; + } else { + stepval = v; + } + v = NULL; + val = (int) 0; + mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; + shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; + for (bits = 0; bits < (int) sizeof(int) * 8 - chunk_size; bits += chunk_size) { + PyObject *tmp, *digit; + long idigit; + digit = PyNumber_And(stepval, mask); + if (unlikely(!digit)) goto done; + idigit = PyLong_AsLong(digit); + Py_DECREF(digit); + if (unlikely(idigit < 0)) goto done; + val |= ((int) idigit) << bits; + tmp = PyNumber_Rshift(stepval, shift); + if (unlikely(!tmp)) goto done; + Py_DECREF(stepval); stepval = tmp; + } + Py_DECREF(shift); shift = NULL; + Py_DECREF(mask); mask = NULL; + { + long idigit = PyLong_AsLong(stepval); + if (unlikely(idigit < 0)) goto done; + remaining_bits = ((int) sizeof(int) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((int) idigit) << bits; + } + if (!is_unsigned) { + if (unlikely(val & (((int) 1) << (sizeof(int) * 8 - 1)))) + goto raise_overflow; + if (is_negative) + val = ~val; + } + ret = 0; + done: + Py_XDECREF(shift); + Py_XDECREF(mask); + Py_XDECREF(stepval); +#endif + if (unlikely(ret)) + return (int) -1; + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to int"); + return (int) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to int"); + return (int) -1; +} + +/* CIntFromPy */ +static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const long neg_one = (long) -1, const_zero = (long) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if ((sizeof(long) < sizeof(long))) { + __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (long) val; + } + } +#endif + if (unlikely(!PyLong_Check(x))) { + long val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (long) -1; + val = __Pyx_PyInt_As_long(tmp); + Py_DECREF(tmp); + return val; + } + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + if (unlikely(__Pyx_PyLong_IsNeg(x))) { + goto raise_neg_overflow; + } else if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_DigitCount(x)) { + case 2: + if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 2 * PyLong_SHIFT)) { + return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 3 * PyLong_SHIFT)) { + return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 4 * PyLong_SHIFT)) { + return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + } + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (long) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if ((sizeof(long) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(long) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_SignedDigitCount(x)) { + case -2: + if ((8 * sizeof(long) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) { + return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + } + } +#endif + if ((sizeof(long) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(long) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { + long val; + int ret = -1; +#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API + Py_ssize_t bytes_copied = PyLong_AsNativeBytes( + x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); + if (unlikely(bytes_copied == -1)) { + } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { + goto raise_overflow; + } else { + ret = 0; + } +#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + ret = _PyLong_AsByteArray((PyLongObject *)x, + bytes, sizeof(val), + is_little, !is_unsigned); +#else + PyObject *v; + PyObject *stepval = NULL, *mask = NULL, *shift = NULL; + int bits, remaining_bits, is_negative = 0; + int chunk_size = (sizeof(long) < 8) ? 30 : 62; + if (likely(PyLong_CheckExact(x))) { + v = __Pyx_NewRef(x); + } else { + v = PyNumber_Long(x); + if (unlikely(!v)) return (long) -1; + assert(PyLong_CheckExact(v)); + } + { + int result = PyObject_RichCompareBool(v, Py_False, Py_LT); + if (unlikely(result < 0)) { + Py_DECREF(v); + return (long) -1; + } + is_negative = result == 1; + } + if (is_unsigned && unlikely(is_negative)) { + Py_DECREF(v); + goto raise_neg_overflow; + } else if (is_negative) { + stepval = PyNumber_Invert(v); + Py_DECREF(v); + if (unlikely(!stepval)) + return (long) -1; + } else { + stepval = v; + } + v = NULL; + val = (long) 0; + mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; + shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; + for (bits = 0; bits < (int) sizeof(long) * 8 - chunk_size; bits += chunk_size) { + PyObject *tmp, *digit; + long idigit; + digit = PyNumber_And(stepval, mask); + if (unlikely(!digit)) goto done; + idigit = PyLong_AsLong(digit); + Py_DECREF(digit); + if (unlikely(idigit < 0)) goto done; + val |= ((long) idigit) << bits; + tmp = PyNumber_Rshift(stepval, shift); + if (unlikely(!tmp)) goto done; + Py_DECREF(stepval); stepval = tmp; + } + Py_DECREF(shift); shift = NULL; + Py_DECREF(mask); mask = NULL; + { + long idigit = PyLong_AsLong(stepval); + if (unlikely(idigit < 0)) goto done; + remaining_bits = ((int) sizeof(long) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((long) idigit) << bits; + } + if (!is_unsigned) { + if (unlikely(val & (((long) 1) << (sizeof(long) * 8 - 1)))) + goto raise_overflow; + if (is_negative) + val = ~val; + } + ret = 0; + done: + Py_XDECREF(shift); + Py_XDECREF(mask); + Py_XDECREF(stepval); +#endif + if (unlikely(ret)) + return (long) -1; + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to long"); + return (long) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to long"); + return (long) -1; +} + +/* CIntToPy */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const long neg_one = (long) -1, const_zero = (long) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(long) < sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(long) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(long) <= sizeof(long)) { + return PyInt_FromLong((long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); +#endif + } + } + { + unsigned char *bytes = (unsigned char *)&value; +#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 + if (is_unsigned) { + return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); + } else { + return PyLong_FromNativeBytes(bytes, sizeof(value), -1); + } +#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 + int one = 1; int little = (int)*(unsigned char *)&one; + return _PyLong_FromByteArray(bytes, sizeof(long), + little, !is_unsigned); +#else + int one = 1; int little = (int)*(unsigned char *)&one; + PyObject *from_bytes, *result = NULL; + PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; + from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); + if (!from_bytes) return NULL; + py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(long)); + if (!py_bytes) goto limited_bad; + order_str = PyUnicode_FromString(little ? "little" : "big"); + if (!order_str) goto limited_bad; + arg_tuple = PyTuple_Pack(2, py_bytes, order_str); + if (!arg_tuple) goto limited_bad; + if (!is_unsigned) { + kwds = PyDict_New(); + if (!kwds) goto limited_bad; + if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; + } + result = PyObject_Call(from_bytes, arg_tuple, kwds); + limited_bad: + Py_XDECREF(kwds); + Py_XDECREF(arg_tuple); + Py_XDECREF(order_str); + Py_XDECREF(py_bytes); + Py_XDECREF(from_bytes); + return result; +#endif + } +} + +/* FormatTypeName */ +#if CYTHON_COMPILING_IN_LIMITED_API +static __Pyx_TypeName +__Pyx_PyType_GetName(PyTypeObject* tp) +{ + PyObject *name = __Pyx_PyObject_GetAttrStr((PyObject *)tp, + __pyx_n_s_name); + if (unlikely(name == NULL) || unlikely(!PyUnicode_Check(name))) { + PyErr_Clear(); + Py_XDECREF(name); + name = __Pyx_NewRef(__pyx_n_s__47); + } + return name; +} +#endif + +/* FastTypeChecks */ +#if CYTHON_COMPILING_IN_CPYTHON +static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { + while (a) { + a = __Pyx_PyType_GetSlot(a, tp_base, PyTypeObject*); + if (a == b) + return 1; + } + return b == &PyBaseObject_Type; +} +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { + PyObject *mro; + if (a == b) return 1; + mro = a->tp_mro; + if (likely(mro)) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(mro); + for (i = 0; i < n; i++) { + if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) + return 1; + } + return 0; + } + return __Pyx_InBases(a, b); +} +static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b) { + PyObject *mro; + if (cls == a || cls == b) return 1; + mro = cls->tp_mro; + if (likely(mro)) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(mro); + for (i = 0; i < n; i++) { + PyObject *base = PyTuple_GET_ITEM(mro, i); + if (base == (PyObject *)a || base == (PyObject *)b) + return 1; + } + return 0; + } + return __Pyx_InBases(cls, a) || __Pyx_InBases(cls, b); +} +#if PY_MAJOR_VERSION == 2 +static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { + PyObject *exception, *value, *tb; + int res; + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&exception, &value, &tb); + res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; + if (unlikely(res == -1)) { + PyErr_WriteUnraisable(err); + res = 0; + } + if (!res) { + res = PyObject_IsSubclass(err, exc_type2); + if (unlikely(res == -1)) { + PyErr_WriteUnraisable(err); + res = 0; + } + } + __Pyx_ErrRestore(exception, value, tb); + return res; +} +#else +static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { + if (exc_type1) { + return __Pyx_IsAnySubtype2((PyTypeObject*)err, (PyTypeObject*)exc_type1, (PyTypeObject*)exc_type2); + } else { + return __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); + } +} +#endif +static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { + Py_ssize_t i, n; + assert(PyExceptionClass_Check(exc_type)); + n = PyTuple_GET_SIZE(tuple); +#if PY_MAJOR_VERSION >= 3 + for (i=0; i= 0x030B00A4 + return Py_Version & ~0xFFUL; +#else + const char* rt_version = Py_GetVersion(); + unsigned long version = 0; + unsigned long factor = 0x01000000UL; + unsigned int digit = 0; + int i = 0; + while (factor) { + while ('0' <= rt_version[i] && rt_version[i] <= '9') { + digit = digit * 10 + (unsigned int) (rt_version[i] - '0'); + ++i; + } + version += factor * digit; + if (rt_version[i] != '.') + break; + digit = 0; + factor >>= 8; + ++i; + } + return version; +#endif +} +static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer) { + const unsigned long MAJOR_MINOR = 0xFFFF0000UL; + if ((rt_version & MAJOR_MINOR) == (ct_version & MAJOR_MINOR)) + return 0; + if (likely(allow_newer && (rt_version & MAJOR_MINOR) > (ct_version & MAJOR_MINOR))) + return 1; + { + char message[200]; + PyOS_snprintf(message, sizeof(message), + "compile time Python version %d.%d " + "of module '%.100s' " + "%s " + "runtime version %d.%d", + (int) (ct_version >> 24), (int) ((ct_version >> 16) & 0xFF), + __Pyx_MODULE_NAME, + (allow_newer) ? "was newer than" : "does not match", + (int) (rt_version >> 24), (int) ((rt_version >> 16) & 0xFF) + ); + return PyErr_WarnEx(NULL, message, 1); + } +} + +/* InitStrings */ +#if PY_MAJOR_VERSION >= 3 +static int __Pyx_InitString(__Pyx_StringTabEntry t, PyObject **str) { + if (t.is_unicode | t.is_str) { + if (t.intern) { + *str = PyUnicode_InternFromString(t.s); + } else if (t.encoding) { + *str = PyUnicode_Decode(t.s, t.n - 1, t.encoding, NULL); + } else { + *str = PyUnicode_FromStringAndSize(t.s, t.n - 1); + } + } else { + *str = PyBytes_FromStringAndSize(t.s, t.n - 1); + } + if (!*str) + return -1; + if (PyObject_Hash(*str) == -1) + return -1; + return 0; +} +#endif +static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { + while (t->p) { + #if PY_MAJOR_VERSION >= 3 + __Pyx_InitString(*t, t->p); + #else + if (t->is_unicode) { + *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); + } else if (t->intern) { + *t->p = PyString_InternFromString(t->s); + } else { + *t->p = PyString_FromStringAndSize(t->s, t->n - 1); + } + if (!*t->p) + return -1; + if (PyObject_Hash(*t->p) == -1) + return -1; + #endif + ++t; + } + return 0; +} + +#include +static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s) { + size_t len = strlen(s); + if (unlikely(len > (size_t) PY_SSIZE_T_MAX)) { + PyErr_SetString(PyExc_OverflowError, "byte string is too long"); + return -1; + } + return (Py_ssize_t) len; +} +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { + Py_ssize_t len = __Pyx_ssize_strlen(c_str); + if (unlikely(len < 0)) return NULL; + return __Pyx_PyUnicode_FromStringAndSize(c_str, len); +} +static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char* c_str) { + Py_ssize_t len = __Pyx_ssize_strlen(c_str); + if (unlikely(len < 0)) return NULL; + return PyByteArray_FromStringAndSize(c_str, len); +} +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { + Py_ssize_t ignore; + return __Pyx_PyObject_AsStringAndSize(o, &ignore); +} +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT +#if !CYTHON_PEP393_ENABLED +static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { + char* defenc_c; + PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); + if (!defenc) return NULL; + defenc_c = PyBytes_AS_STRING(defenc); +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + { + char* end = defenc_c + PyBytes_GET_SIZE(defenc); + char* c; + for (c = defenc_c; c < end; c++) { + if ((unsigned char) (*c) >= 128) { + PyUnicode_AsASCIIString(o); + return NULL; + } + } + } +#endif + *length = PyBytes_GET_SIZE(defenc); + return defenc_c; +} +#else +static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { + if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + if (likely(PyUnicode_IS_ASCII(o))) { + *length = PyUnicode_GET_LENGTH(o); + return PyUnicode_AsUTF8(o); + } else { + PyUnicode_AsASCIIString(o); + return NULL; + } +#else + return PyUnicode_AsUTF8AndSize(o, length); +#endif +} +#endif +#endif +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT + if ( +#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + __Pyx_sys_getdefaultencoding_not_ascii && +#endif + PyUnicode_Check(o)) { + return __Pyx_PyUnicode_AsStringAndSize(o, length); + } else +#endif +#if (!CYTHON_COMPILING_IN_PYPY && !CYTHON_COMPILING_IN_LIMITED_API) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) + if (PyByteArray_Check(o)) { + *length = PyByteArray_GET_SIZE(o); + return PyByteArray_AS_STRING(o); + } else +#endif + { + char* result; + int r = PyBytes_AsStringAndSize(o, &result, length); + if (unlikely(r < 0)) { + return NULL; + } else { + return result; + } + } +} +static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { + int is_true = x == Py_True; + if (is_true | (x == Py_False) | (x == Py_None)) return is_true; + else return PyObject_IsTrue(x); +} +static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) { + int retval; + if (unlikely(!x)) return -1; + retval = __Pyx_PyObject_IsTrue(x); + Py_DECREF(x); + return retval; +} +static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) { + __Pyx_TypeName result_type_name = __Pyx_PyType_GetName(Py_TYPE(result)); +#if PY_MAJOR_VERSION >= 3 + if (PyLong_Check(result)) { + if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, + "__int__ returned non-int (type " __Pyx_FMT_TYPENAME "). " + "The ability to return an instance of a strict subclass of int is deprecated, " + "and may be removed in a future version of Python.", + result_type_name)) { + __Pyx_DECREF_TypeName(result_type_name); + Py_DECREF(result); + return NULL; + } + __Pyx_DECREF_TypeName(result_type_name); + return result; + } +#endif + PyErr_Format(PyExc_TypeError, + "__%.4s__ returned non-%.4s (type " __Pyx_FMT_TYPENAME ")", + type_name, type_name, result_type_name); + __Pyx_DECREF_TypeName(result_type_name); + Py_DECREF(result); + return NULL; +} +static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { +#if CYTHON_USE_TYPE_SLOTS + PyNumberMethods *m; +#endif + const char *name = NULL; + PyObject *res = NULL; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x) || PyLong_Check(x))) +#else + if (likely(PyLong_Check(x))) +#endif + return __Pyx_NewRef(x); +#if CYTHON_USE_TYPE_SLOTS + m = Py_TYPE(x)->tp_as_number; + #if PY_MAJOR_VERSION < 3 + if (m && m->nb_int) { + name = "int"; + res = m->nb_int(x); + } + else if (m && m->nb_long) { + name = "long"; + res = m->nb_long(x); + } + #else + if (likely(m && m->nb_int)) { + name = "int"; + res = m->nb_int(x); + } + #endif +#else + if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { + res = PyNumber_Int(x); + } +#endif + if (likely(res)) { +#if PY_MAJOR_VERSION < 3 + if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) { +#else + if (unlikely(!PyLong_CheckExact(res))) { +#endif + return __Pyx_PyNumber_IntOrLongWrongResultType(res, name); + } + } + else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_TypeError, + "an integer is required"); + } + return res; +} +static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { + Py_ssize_t ival; + PyObject *x; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_CheckExact(b))) { + if (sizeof(Py_ssize_t) >= sizeof(long)) + return PyInt_AS_LONG(b); + else + return PyInt_AsSsize_t(b); + } +#endif + if (likely(PyLong_CheckExact(b))) { + #if CYTHON_USE_PYLONG_INTERNALS + if (likely(__Pyx_PyLong_IsCompact(b))) { + return __Pyx_PyLong_CompactValue(b); + } else { + const digit* digits = __Pyx_PyLong_Digits(b); + const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(b); + switch (size) { + case 2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + } + } + #endif + return PyLong_AsSsize_t(b); + } + x = PyNumber_Index(b); + if (!x) return -1; + ival = PyInt_AsSsize_t(x); + Py_DECREF(x); + return ival; +} +static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) { + if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) { + return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o); +#if PY_MAJOR_VERSION < 3 + } else if (likely(PyInt_CheckExact(o))) { + return PyInt_AS_LONG(o); +#endif + } else { + Py_ssize_t ival; + PyObject *x; + x = PyNumber_Index(o); + if (!x) return -1; + ival = PyInt_AsLong(x); + Py_DECREF(x); + return ival; + } +} +static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { + return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); +} +static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { + return PyInt_FromSize_t(ival); +} + + +/* #### Code section: utility_code_pragmas_end ### */ +#ifdef _MSC_VER +#pragma warning( pop ) +#endif + + + +/* #### Code section: end ### */ +#endif /* Py_PYTHON_H */ diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.pxd b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.pxd new file mode 100644 index 000000000..d8fb5f232 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.pxd @@ -0,0 +1,131 @@ +from cpython.mem cimport PyMem_Malloc, PyMem_Free + +cdef extern from *: + ctypedef void PyObject + ctypedef struct PyCodeObject: + int co_argcount; # arguments, except *args */ + int co_kwonlyargcount; # keyword only arguments */ + int co_nlocals; # local variables */ + int co_stacksize; # entries needed for evaluation stack */ + int co_flags; # CO_..., see below */ + int co_firstlineno; # first source line number */ + PyObject *co_code; # instruction opcodes */ + PyObject *co_consts; # list (constants used) */ + PyObject *co_names; # list of strings (names used) */ + PyObject *co_varnames; # tuple of strings (local variable names) */ + PyObject *co_freevars; # tuple of strings (free variable names) */ + PyObject *co_cellvars; # tuple of strings (cell variable names) */ + unsigned char *co_cell2arg; # Maps cell vars which are arguments. */ + PyObject *co_filename; # unicode (where it was loaded from) */ + PyObject *co_name; # unicode (name, for reference) */ + PyObject *co_lnotab; # string (encoding addr<->lineno mapping) See + # Objects/lnotab_notes.txt for details. */ + void *co_zombieframe; # for optimization only (see frameobject.c) */ + PyObject *co_weakreflist; # to support weakrefs to code objects */ + void *co_extra; + +cdef extern from "frameobject.h": + ctypedef struct PyFrameObject: + PyFrameObject *f_back + PyCodeObject *f_code # code segment + PyObject *f_builtins # builtin symbol table (PyDictObject) + PyObject *f_globals # global symbol table (PyDictObject) */ + PyObject *f_locals # local symbol table (any mapping) */ + PyObject **f_valuestack # + PyObject **f_stacktop + PyObject *f_trace # Trace function */ + PyObject *f_exc_type + PyObject *f_exc_value + PyObject *f_exc_traceback + PyObject *f_gen; + + int f_lasti; #/* Last instruction if called */ + int f_lineno; #/* Current line number */ + int f_iblock; #/* index in f_blockstack */ + char f_executing; #/* whether the frame is still executing */ + PyObject *f_localsplus[1]; + +cdef extern from "release_mem.h": + void release_co_extra(void *) + +cdef extern from "code.h": + ctypedef void freefunc(void *) + int _PyCode_GetExtra(PyObject *code, Py_ssize_t index, void **extra) + int _PyCode_SetExtra(PyObject *code, Py_ssize_t index, void *extra) + +# TODO: Things are in a different place for Python 3.11. +# cdef extern from "cpython/code.h": +# ctypedef void freefunc(void *) +# int _PyCode_GetExtra(PyObject *code, Py_ssize_t index, void **extra) +# int _PyCode_SetExtra(PyObject *code, Py_ssize_t index, void *extra) + +cdef extern from "Python.h": + void Py_INCREF(object o) + void Py_DECREF(object o) + object PyImport_ImportModule(char *name) + PyObject* PyObject_CallFunction(PyObject *callable, const char *format, ...) + object PyObject_GetAttrString(object o, char *attr_name) + +cdef extern from "pystate.h": + # ctypedef PyObject* _PyFrameEvalFunction(PyThreadState* tstate, PyFrameObject *frame, int exc) + # ctypedef PyObject* _PyFrameEvalFunction(PyFrameObject *frame, int exc) + ctypedef PyObject* _PyFrameEvalFunction(...) + + ctypedef struct PyInterpreterState: + PyInterpreterState *next + PyInterpreterState *tstate_head + + PyObject *modules + + PyObject *modules_by_index + PyObject *sysdict + PyObject *builtins + PyObject *importlib + + PyObject *codec_search_path + PyObject *codec_search_cache + PyObject *codec_error_registry + int codecs_initialized + int fscodec_initialized + + int dlopenflags + + PyObject *builtins_copy + PyObject *import_func + # Initialized to PyEval_EvalFrameDefault(). + _PyFrameEvalFunction eval_frame + + ctypedef struct PyThreadState: + PyThreadState *prev + PyThreadState *next + PyInterpreterState *interp + # ... + + PyThreadState *PyThreadState_Get() + +cdef extern from "ceval.h": + ''' +#if PY_VERSION_HEX >= 0x03090000 +PyObject * noop(PyFrameObject *frame, int exc) { + return NULL; +} +#define CALL_EvalFrameDefault_38(a, b) noop(a, b) +#define CALL_EvalFrameDefault_39(a, b, c) _PyEval_EvalFrameDefault(a, b, c) +#else +PyObject * noop(PyThreadState* tstate, PyFrameObject *frame, int exc) { + return NULL; +} +#define CALL_EvalFrameDefault_39(a, b, c) noop(a, b, c) +#define CALL_EvalFrameDefault_38(a, b) _PyEval_EvalFrameDefault(a, b) +#endif + ''' + + int _PyEval_RequestCodeExtraIndex(freefunc) + PyFrameObject *PyEval_GetFrame() + PyObject* PyEval_CallFunction(PyObject *callable, const char *format, ...) + + # PyObject* _PyEval_EvalFrameDefault(PyThreadState* tstate, PyFrameObject *frame, int exc) + # PyObject* _PyEval_EvalFrameDefault(PyFrameObject *frame, int exc) + PyObject* _PyEval_EvalFrameDefault(...) + PyObject* CALL_EvalFrameDefault_38(PyFrameObject *frame, int exc) # Actually a macro. + PyObject* CALL_EvalFrameDefault_39(PyThreadState* tstate, PyFrameObject *frame, int exc) # Actually a macro. diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.template.pyx b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.template.pyx new file mode 100644 index 000000000..1bbf9f8ac --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.template.pyx @@ -0,0 +1,613 @@ +from __future__ import print_function +from _pydev_bundle._pydev_saved_modules import threading, thread +from _pydevd_bundle.pydevd_constants import GlobalDebuggerHolder +import dis +import sys +from _pydevd_frame_eval.pydevd_frame_tracing import update_globals_dict, dummy_tracing_holder +from _pydevd_frame_eval.pydevd_modify_bytecode import DebugHelper, insert_pydevd_breaks +from pydevd_file_utils import get_abs_path_real_path_and_base_from_frame, NORM_PATHS_AND_BASE_CONTAINER +from _pydevd_bundle.pydevd_trace_dispatch import fix_top_level_trace_and_get_trace_func + +from _pydevd_bundle.pydevd_additional_thread_info import _set_additional_thread_info_lock +from _pydevd_bundle.pydevd_cython cimport PyDBAdditionalThreadInfo +from pydevd_tracing import SetTrace + +_get_ident = threading.get_ident # Note this is py3 only, if py2 needed to be supported, _get_ident would be needed. +_thread_local_info = threading.local() +_thread_active = threading._active + +def clear_thread_local_info(): + global _thread_local_info + _thread_local_info = threading.local() + + +cdef class ThreadInfo: + + cdef public PyDBAdditionalThreadInfo additional_info + cdef public bint is_pydevd_thread + cdef public int inside_frame_eval + cdef public bint fully_initialized + cdef public object thread_trace_func + cdef bint _can_create_dummy_thread + + # Note: whenever get_func_code_info is called, this value is reset (we're using + # it as a thread-local value info). + # If True the debugger should not go into trace mode even if the new + # code for a function is None and there are breakpoints. + cdef public bint force_stay_in_untraced_mode + + cdef initialize(self, PyFrameObject * frame_obj): + # Places that create a ThreadInfo should verify that + # a current Python frame is being executed! + assert frame_obj != NULL + + self.additional_info = None + self.is_pydevd_thread = False + self.inside_frame_eval = 0 + self.fully_initialized = False + self.thread_trace_func = None + + # Get the root (if it's not a Thread initialized from the threading + # module, create the dummy thread entry so that we can debug it -- + # otherwise, we have to wait for the threading module itself to + # create the Thread entry). + while frame_obj.f_back != NULL: + frame_obj = frame_obj.f_back + + basename = frame_obj.f_code.co_filename + i = basename.rfind('/') + j = basename.rfind('\\') + if j > i: + i = j + if i >= 0: + basename = basename[i + 1:] + # remove ext + i = basename.rfind('.') + if i >= 0: + basename = basename[:i] + + co_name = frame_obj.f_code.co_name + + # In these cases we cannot create a dummy thread (an actual + # thread will be created later or tracing will already be set). + if basename == 'threading' and co_name in ('__bootstrap', '_bootstrap', '__bootstrap_inner', '_bootstrap_inner'): + self._can_create_dummy_thread = False + elif basename == 'pydev_monkey' and co_name == '__call__': + self._can_create_dummy_thread = False + elif basename == 'pydevd' and co_name in ('run', 'main', '_exec'): + self._can_create_dummy_thread = False + elif basename == 'pydevd_tracing': + self._can_create_dummy_thread = False + else: + self._can_create_dummy_thread = True + + # print('Can create dummy thread for thread started in: %s %s' % (basename, co_name)) + + cdef initialize_if_possible(self): + # Don't call threading.currentThread because if we're too early in the process + # we may create a dummy thread. + self.inside_frame_eval += 1 + + try: + thread_ident = _get_ident() + t = _thread_active.get(thread_ident) + if t is None: + if self._can_create_dummy_thread: + # Initialize the dummy thread and set the tracing (both are needed to + # actually stop on breakpoints). + t = threading.current_thread() + SetTrace(dummy_trace_dispatch) + else: + return # Cannot initialize until thread becomes active. + + if getattr(t, 'is_pydev_daemon_thread', False): + self.is_pydevd_thread = True + self.fully_initialized = True + else: + try: + additional_info = t.additional_info + if additional_info is None: + raise AttributeError() + except: + with _set_additional_thread_info_lock: + # If it's not there, set it within a lock to avoid any racing + # conditions. + additional_info = getattr(thread, 'additional_info', None) + if additional_info is None: + additional_info = PyDBAdditionalThreadInfo() + t.additional_info = additional_info + self.additional_info = additional_info + self.fully_initialized = True + finally: + self.inside_frame_eval -= 1 + + +cdef class FuncCodeInfo: + + cdef public str co_filename + cdef public str co_name + cdef public str canonical_normalized_filename + cdef bint always_skip_code + cdef public bint breakpoint_found + cdef public object new_code + + # When breakpoints_mtime != PyDb.mtime the validity of breakpoints have + # to be re-evaluated (if invalid a new FuncCodeInfo must be created and + # tracing can't be disabled for the related frames). + cdef public int breakpoints_mtime + + def __init__(self): + self.co_filename = '' + self.canonical_normalized_filename = '' + self.always_skip_code = False + + # If breakpoints are found but new_code is None, + # this means we weren't able to actually add the code + # where needed, so, fallback to tracing. + self.breakpoint_found = False + self.new_code = None + self.breakpoints_mtime = -1 + + +def dummy_trace_dispatch(frame, str event, arg): + if event == 'call': + if frame.f_trace is not None: + return frame.f_trace(frame, event, arg) + return None + + +def get_thread_info_py() -> ThreadInfo: + return get_thread_info(PyEval_GetFrame()) + + +cdef ThreadInfo get_thread_info(PyFrameObject * frame_obj): + ''' + Provides thread-related info. + + May return None if the thread is still not active. + ''' + cdef ThreadInfo thread_info + try: + # Note: changing to a `dict[thread.ident] = thread_info` had almost no + # effect in the performance. + thread_info = _thread_local_info.thread_info + except: + if frame_obj == NULL: + return None + thread_info = ThreadInfo() + thread_info.initialize(frame_obj) + thread_info.inside_frame_eval += 1 + try: + _thread_local_info.thread_info = thread_info + + # Note: _code_extra_index is not actually thread-related, + # but this is a good point to initialize it. + global _code_extra_index + if _code_extra_index == -1: + _code_extra_index = _PyEval_RequestCodeExtraIndex(release_co_extra) + + thread_info.initialize_if_possible() + finally: + thread_info.inside_frame_eval -= 1 + + return thread_info + + +def decref_py(obj): + ''' + Helper to be called from Python. + ''' + Py_DECREF(obj) + + +def get_func_code_info_py(thread_info, frame, code_obj) -> FuncCodeInfo: + ''' + Helper to be called from Python. + ''' + return get_func_code_info( thread_info, frame, code_obj) + + +cdef int _code_extra_index = -1 + +cdef FuncCodeInfo get_func_code_info(ThreadInfo thread_info, PyFrameObject * frame_obj, PyCodeObject * code_obj): + ''' + Provides code-object related info. + + Stores the gathered info in a cache in the code object itself. Note that + multiple threads can get the same info. + + get_thread_info() *must* be called at least once before get_func_code_info() + to initialize _code_extra_index. + + ''' + # f_code = code_obj + # DEBUG = f_code.co_filename.endswith('_debugger_case_multiprocessing.py') + # if DEBUG: + # print('get_func_code_info', f_code.co_name, f_code.co_filename) + + cdef object main_debugger = GlobalDebuggerHolder.global_dbg + thread_info.force_stay_in_untraced_mode = False # This is an output value of the function. + + cdef PyObject * extra + _PyCode_GetExtra( code_obj, _code_extra_index, & extra) + if extra is not NULL: + extra_obj = extra + if extra_obj is not NULL: + func_code_info_obj = extra_obj + if func_code_info_obj.breakpoints_mtime == main_debugger.mtime: + # if DEBUG: + # print('get_func_code_info: matched mtime', f_code.co_name, f_code.co_filename) + + return func_code_info_obj + + cdef str co_filename = code_obj.co_filename + cdef str co_name = code_obj.co_name + cdef dict cache_file_type + cdef tuple cache_file_type_key + + func_code_info = FuncCodeInfo() + func_code_info.breakpoints_mtime = main_debugger.mtime + + func_code_info.co_filename = co_filename + func_code_info.co_name = co_name + + if not func_code_info.always_skip_code: + try: + abs_path_real_path_and_base = NORM_PATHS_AND_BASE_CONTAINER[co_filename] + except: + abs_path_real_path_and_base = get_abs_path_real_path_and_base_from_frame(frame_obj) + + func_code_info.canonical_normalized_filename = abs_path_real_path_and_base[1] + + cache_file_type = main_debugger.get_cache_file_type() + # Note: this cache key must be the same from PyDB.get_file_type() -- see it for comments + # on the cache. + cache_file_type_key = (frame_obj.f_code.co_firstlineno, abs_path_real_path_and_base[0], frame_obj.f_code) + try: + file_type = cache_file_type[cache_file_type_key] # Make it faster + except: + file_type = main_debugger.get_file_type(frame_obj, abs_path_real_path_and_base) # we don't want to debug anything related to pydevd + + if file_type is not None: + func_code_info.always_skip_code = True + + if not func_code_info.always_skip_code: + if main_debugger is not None: + + breakpoints: dict = main_debugger.breakpoints.get(func_code_info.canonical_normalized_filename) + function_breakpoint: object = main_debugger.function_breakpoint_name_to_breakpoint.get(func_code_info.co_name) + # print('\n---') + # print(main_debugger.breakpoints) + # print(func_code_info.canonical_normalized_filename) + # print(main_debugger.breakpoints.get(func_code_info.canonical_normalized_filename)) + code_obj_py: object = code_obj + cached_code_obj_info: object = _cache.get(code_obj_py) + if cached_code_obj_info: + # The cache is for new code objects, so, in this case it's already + # using the new code and we can't change it as this is a generator! + # There's still a catch though: even though we don't replace the code, + # we may not want to go into tracing mode (as would usually happen + # when the new_code is None). + func_code_info.new_code = None + breakpoint_found, thread_info.force_stay_in_untraced_mode = \ + cached_code_obj_info.compute_force_stay_in_untraced_mode(breakpoints) + func_code_info.breakpoint_found = breakpoint_found + + elif function_breakpoint: + # Go directly into tracing mode + func_code_info.breakpoint_found = True + func_code_info.new_code = None + + elif breakpoints: + # if DEBUG: + # print('found breakpoints', code_obj_py.co_name, breakpoints) + + # Note: new_code can be None if unable to generate. + # It should automatically put the new code object in the cache. + breakpoint_found, func_code_info.new_code = generate_code_with_breakpoints(code_obj_py, breakpoints) + func_code_info.breakpoint_found = breakpoint_found + + Py_INCREF(func_code_info) + _PyCode_SetExtra( code_obj, _code_extra_index, func_code_info) + + return func_code_info + + +cdef class _CodeLineInfo: + + cdef public dict line_to_offset + cdef public int first_line + cdef public int last_line + + def __init__(self, dict line_to_offset, int first_line, int last_line): + self.line_to_offset = line_to_offset + self.first_line = first_line + self.last_line = last_line + + +# Note: this method has a version in pure-python too. +def _get_code_line_info(code_obj): + line_to_offset: dict = {} + first_line: int = None + last_line: int = None + + cdef int offset + cdef int line + + for offset, line in dis.findlinestarts(code_obj): + line_to_offset[line] = offset + + if line_to_offset: + first_line = min(line_to_offset) + last_line = max(line_to_offset) + return _CodeLineInfo(line_to_offset, first_line, last_line) + + +# Note: this is a cache where the key is the code objects we create ourselves so that +# we always return the same code object for generators. +# (so, we don't have a cache from the old code to the new info -- that's actually +# handled by the cython side in `FuncCodeInfo get_func_code_info` by providing the +# same code info if the debugger mtime is still the same). +_cache: dict = {} + +def get_cached_code_obj_info_py(code_obj_py): + ''' + :return _CacheValue: + :note: on cython use _cache.get(code_obj_py) directly. + ''' + return _cache.get(code_obj_py) + + +cdef class _CacheValue(object): + + cdef public object code_obj_py + cdef public _CodeLineInfo code_line_info + cdef public set breakpoints_hit_at_lines + cdef public set code_lines_as_set + + def __init__(self, object code_obj_py, _CodeLineInfo code_line_info, set breakpoints_hit_at_lines): + ''' + :param code_obj_py: + :param _CodeLineInfo code_line_info: + :param set[int] breakpoints_hit_at_lines: + ''' + self.code_obj_py = code_obj_py + self.code_line_info = code_line_info + self.breakpoints_hit_at_lines = breakpoints_hit_at_lines + self.code_lines_as_set = set(code_line_info.line_to_offset) + + cpdef compute_force_stay_in_untraced_mode(self, breakpoints): + ''' + :param breakpoints: + set(breakpoint_lines) or dict(breakpoint_line->breakpoint info) + :return tuple(breakpoint_found, force_stay_in_untraced_mode) + ''' + cdef bint force_stay_in_untraced_mode + cdef bint breakpoint_found + cdef set target_breakpoints + + force_stay_in_untraced_mode = False + + target_breakpoints = self.code_lines_as_set.intersection(breakpoints) + breakpoint_found = bool(target_breakpoints) + + if not breakpoint_found: + force_stay_in_untraced_mode = True + else: + force_stay_in_untraced_mode = self.breakpoints_hit_at_lines.issuperset(set(breakpoints)) + + return breakpoint_found, force_stay_in_untraced_mode + +def generate_code_with_breakpoints_py(object code_obj_py, dict breakpoints): + return generate_code_with_breakpoints(code_obj_py, breakpoints) + +# DEBUG = True +# debug_helper = DebugHelper() + +cdef generate_code_with_breakpoints(object code_obj_py, dict breakpoints): + ''' + :param breakpoints: + dict where the keys are the breakpoint lines. + :return tuple(breakpoint_found, new_code) + ''' + # The cache is needed for generator functions, because after each yield a new frame + # is created but the former code object is used (so, check if code_to_modify is + # already there and if not cache based on the new code generated). + + cdef bint success + cdef int breakpoint_line + cdef bint breakpoint_found + cdef _CacheValue cache_value + cdef set breakpoints_hit_at_lines + cdef dict line_to_offset + + assert code_obj_py not in _cache, 'If a code object is cached, that same code object must be reused.' + +# if DEBUG: +# initial_code_obj_py = code_obj_py + + code_line_info = _get_code_line_info(code_obj_py) + + success = True + + breakpoints_hit_at_lines = set() + line_to_offset = code_line_info.line_to_offset + + for breakpoint_line in breakpoints: + if breakpoint_line in line_to_offset: + breakpoints_hit_at_lines.add(breakpoint_line) + + if breakpoints_hit_at_lines: + success, new_code = insert_pydevd_breaks( + code_obj_py, + breakpoints_hit_at_lines, + code_line_info + ) + + if not success: + code_obj_py = None + else: + code_obj_py = new_code + + breakpoint_found = bool(breakpoints_hit_at_lines) + if breakpoint_found and success: +# if DEBUG: +# op_number = debug_helper.write_dis( +# 'inserting code, breaks at: %s' % (list(breakpoints),), +# initial_code_obj_py +# ) +# +# debug_helper.write_dis( +# 'after inserting code, breaks at: %s' % (list(breakpoints,)), +# code_obj_py, +# op_number=op_number, +# ) + + cache_value = _CacheValue(code_obj_py, code_line_info, breakpoints_hit_at_lines) + _cache[code_obj_py] = cache_value + + return breakpoint_found, code_obj_py + +import sys + +cdef bint IS_PY_39_OWNARDS = sys.version_info[:2] >= (3, 9) + +def frame_eval_func(): + cdef PyThreadState *state = PyThreadState_Get() + if IS_PY_39_OWNARDS: + state.interp.eval_frame = <_PyFrameEvalFunction *> get_bytecode_while_frame_eval_39 + else: + state.interp.eval_frame = <_PyFrameEvalFunction *> get_bytecode_while_frame_eval_38 + dummy_tracing_holder.set_trace_func(dummy_trace_dispatch) + + +def stop_frame_eval(): + cdef PyThreadState *state = PyThreadState_Get() + state.interp.eval_frame = _PyEval_EvalFrameDefault + +# During the build we'll generate 2 versions of the code below so that we're compatible with +# Python 3.9, which receives a "PyThreadState* tstate" as the first parameter and Python 3.6-3.8 +# which doesn't. +### TEMPLATE_START +cdef PyObject * get_bytecode_while_frame_eval(PyFrameObject * frame_obj, int exc): + ''' + This function makes the actual evaluation and changes the bytecode to a version + where programmatic breakpoints are added. + ''' + if GlobalDebuggerHolder is None or _thread_local_info is None or exc: + # Sometimes during process shutdown these global variables become None + return CALL_EvalFrameDefault + + # co_filename: str = frame_obj.f_code.co_filename + # if co_filename.endswith('threading.py'): + # return CALL_EvalFrameDefault + + cdef ThreadInfo thread_info + cdef int STATE_SUSPEND = 2 + cdef int CMD_STEP_INTO = 107 + cdef int CMD_STEP_OVER = 108 + cdef int CMD_STEP_OVER_MY_CODE = 159 + cdef int CMD_STEP_INTO_MY_CODE = 144 + cdef int CMD_STEP_INTO_COROUTINE = 206 + cdef int CMD_SMART_STEP_INTO = 128 + cdef bint can_skip = True + try: + thread_info = _thread_local_info.thread_info + except: + thread_info = get_thread_info(frame_obj) + if thread_info is None: + return CALL_EvalFrameDefault + + if thread_info.inside_frame_eval: + return CALL_EvalFrameDefault + + if not thread_info.fully_initialized: + thread_info.initialize_if_possible() + if not thread_info.fully_initialized: + return CALL_EvalFrameDefault + + # Can only get additional_info when fully initialized. + cdef PyDBAdditionalThreadInfo additional_info = thread_info.additional_info + if thread_info.is_pydevd_thread or additional_info.is_tracing: + # Make sure that we don't trace pydevd threads or inside our own calls. + return CALL_EvalFrameDefault + + # frame = frame_obj + # DEBUG = frame.f_code.co_filename.endswith('_debugger_case_tracing.py') + # if DEBUG: + # print('get_bytecode_while_frame_eval', frame.f_lineno, frame.f_code.co_name, frame.f_code.co_filename) + + thread_info.inside_frame_eval += 1 + additional_info.is_tracing = True + try: + main_debugger: object = GlobalDebuggerHolder.global_dbg + if main_debugger is None: + return CALL_EvalFrameDefault + frame = frame_obj + + if thread_info.thread_trace_func is None: + trace_func, apply_to_global = fix_top_level_trace_and_get_trace_func(main_debugger, frame) + if apply_to_global: + thread_info.thread_trace_func = trace_func + + if additional_info.pydev_step_cmd in (CMD_STEP_INTO, CMD_STEP_INTO_MY_CODE, CMD_STEP_INTO_COROUTINE, CMD_SMART_STEP_INTO) or \ + main_debugger.break_on_caught_exceptions or \ + main_debugger.break_on_user_uncaught_exceptions or \ + main_debugger.has_plugin_exception_breaks or \ + main_debugger.signature_factory or \ + additional_info.pydev_step_cmd in (CMD_STEP_OVER, CMD_STEP_OVER_MY_CODE) and main_debugger.show_return_values and frame.f_back is additional_info.pydev_step_stop: + + # if DEBUG: + # print('get_bytecode_while_frame_eval enabled trace') + if thread_info.thread_trace_func is not None: + frame.f_trace = thread_info.thread_trace_func + else: + frame.f_trace = main_debugger.trace_dispatch + else: + func_code_info: FuncCodeInfo = get_func_code_info(thread_info, frame_obj, frame_obj.f_code) + # if DEBUG: + # print('get_bytecode_while_frame_eval always skip', func_code_info.always_skip_code) + if not func_code_info.always_skip_code: + + if main_debugger.has_plugin_line_breaks or main_debugger.has_plugin_exception_breaks: + can_skip = main_debugger.plugin.can_skip(main_debugger, frame_obj) + + if not can_skip: + # if DEBUG: + # print('get_bytecode_while_frame_eval not can_skip') + if thread_info.thread_trace_func is not None: + frame.f_trace = thread_info.thread_trace_func + else: + frame.f_trace = main_debugger.trace_dispatch + + if can_skip and func_code_info.breakpoint_found: + # if DEBUG: + # print('get_bytecode_while_frame_eval new_code', func_code_info.new_code) + if not thread_info.force_stay_in_untraced_mode: + # If breakpoints are found but new_code is None, + # this means we weren't able to actually add the code + # where needed, so, fallback to tracing. + if func_code_info.new_code is None: + if thread_info.thread_trace_func is not None: + frame.f_trace = thread_info.thread_trace_func + else: + frame.f_trace = main_debugger.trace_dispatch + else: + # print('Using frame eval break for', frame_obj.f_code.co_name) + update_globals_dict( frame_obj.f_globals) + Py_INCREF(func_code_info.new_code) + old = frame_obj.f_code + frame_obj.f_code = func_code_info.new_code + Py_DECREF(old) + else: + # When we're forcing to stay in traced mode we need to + # update the globals dict (because this means that we're reusing + # a previous code which had breakpoints added in a new frame). + update_globals_dict( frame_obj.f_globals) + + finally: + thread_info.inside_frame_eval -= 1 + additional_info.is_tracing = False + + return CALL_EvalFrameDefault +### TEMPLATE_END diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_tracing.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_tracing.py new file mode 100644 index 000000000..72c6118cd --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_tracing.py @@ -0,0 +1,134 @@ +import sys + +from _pydev_bundle import pydev_log +from _pydev_bundle._pydev_saved_modules import threading +from _pydevd_bundle.pydevd_additional_thread_info import set_additional_thread_info +from _pydevd_bundle.pydevd_comm import get_global_debugger +from pydevd_file_utils import ( + NORM_PATHS_AND_BASE_CONTAINER, + get_abs_path_real_path_and_base_from_frame, +) + + +class DummyTracingHolder: + dummy_trace_func = None + + def set_trace_func(self, trace_func): + self.dummy_trace_func = trace_func + + +dummy_tracing_holder = DummyTracingHolder() + + +def update_globals_dict(globals_dict): + new_globals = {"_pydev_stop_at_break": _pydev_stop_at_break} + globals_dict.update(new_globals) + + +def _get_line_for_frame(frame): + # it's absolutely necessary to reset tracing function for frame in order to get the real line number + tracing_func = frame.f_trace + frame.f_trace = None + line = frame.f_lineno + frame.f_trace = tracing_func + return line + + +def _pydev_stop_at_break(line): + frame = sys._getframe(1) + # print('pydevd SET TRACING at ', line, 'curr line', frame.f_lineno) + t = threading.current_thread() + try: + additional_info = t.additional_info + except: + additional_info = set_additional_thread_info(t) + + if additional_info.is_tracing: + return + + additional_info.is_tracing += 1 + try: + py_db = get_global_debugger() + if py_db is None: + return + + pydev_log.debug( + "Setting f_trace due to frame eval mode in file: %s on line %s", + frame.f_code.co_filename, + line, + ) + additional_info.trace_suspend_type = "frame_eval" + + pydevd_frame_eval_cython_wrapper = sys.modules[ + "_pydevd_frame_eval.pydevd_frame_eval_cython_wrapper" + ] + thread_info = pydevd_frame_eval_cython_wrapper.get_thread_info_py() + if thread_info.thread_trace_func is not None: + frame.f_trace = thread_info.thread_trace_func + else: + frame.f_trace = py_db.get_thread_local_trace_func() + finally: + additional_info.is_tracing -= 1 + + +def _pydev_needs_stop_at_break(line): + """ + We separate the functionality into 2 functions so that we can generate a bytecode which + generates a spurious line change so that we can do: + + if _pydev_needs_stop_at_break(): + # Set line to line -1 + _pydev_stop_at_break() + # then, proceed to go to the current line + # (which will then trigger a line event). + """ + t = threading.current_thread() + try: + additional_info = t.additional_info + except: + additional_info = set_additional_thread_info(t) + + if additional_info.is_tracing: + return False + + additional_info.is_tracing += 1 + try: + frame = sys._getframe(1) + # print('pydev needs stop at break?', line, 'curr line', frame.f_lineno, 'curr trace', frame.f_trace) + if frame.f_trace is not None: + # i.e.: this frame is already being traced, thus, we don't need to use programmatic breakpoints. + return False + + py_db = get_global_debugger() + if py_db is None: + return False + + try: + abs_path_real_path_and_base = NORM_PATHS_AND_BASE_CONTAINER[ + frame.f_code.co_filename + ] + except: + abs_path_real_path_and_base = get_abs_path_real_path_and_base_from_frame( + frame + ) + canonical_normalized_filename = abs_path_real_path_and_base[1] + + try: + python_breakpoint = py_db.breakpoints[canonical_normalized_filename][line] + except: + # print("Couldn't find breakpoint in the file %s on line %s" % (frame.f_code.co_filename, line)) + # Could be KeyError if line is not there or TypeError if breakpoints_for_file is None. + # Note: using catch-all exception for performance reasons (if the user adds a breakpoint + # and then removes it after hitting it once, this method added for the programmatic + # breakpoint will keep on being called and one of those exceptions will always be raised + # here). + return False + + if python_breakpoint: + # print('YES') + return True + + finally: + additional_info.is_tracing -= 1 + + return False diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_modify_bytecode.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_modify_bytecode.py new file mode 100644 index 000000000..6468102dc --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_modify_bytecode.py @@ -0,0 +1,377 @@ +import dis +import itertools +import os.path +import sys +from collections import namedtuple +from functools import partial + +from _pydev_bundle import pydev_log + +from _pydevd_frame_eval.pydevd_frame_tracing import ( + _pydev_needs_stop_at_break, + _pydev_stop_at_break, +) +from _pydevd_frame_eval.vendored import bytecode +from _pydevd_frame_eval.vendored.bytecode.instr import Instr, Label + +DEBUG = False + + +class DebugHelper: + def __init__(self): + self._debug_dir = os.path.join(os.path.dirname(__file__), "debug_info") + try: + os.makedirs(self._debug_dir) + except: + pass + self._next = partial(next, itertools.count(0)) + + def _get_filename(self, op_number=None, prefix=""): + if op_number is None: + op_number = self._next() + name = "%03d_before.txt" % op_number + else: + name = "%03d_change.txt" % op_number + + filename = os.path.join(self._debug_dir, prefix + name) + return filename, op_number + + def write_bytecode(self, b, op_number=None, prefix=""): + filename, op_number = self._get_filename(op_number, prefix) + with open(filename, "w") as stream: + bytecode.dump_bytecode(b, stream=stream, lineno=True) + return op_number + + def write_dis(self, code_to_modify, op_number=None, prefix=""): + filename, op_number = self._get_filename(op_number, prefix) + with open(filename, "w") as stream: + stream.write("-------- ") + stream.write("-------- ") + stream.write("id(code_to_modify): %s" % id(code_to_modify)) + stream.write("\n\n") + dis.dis(code_to_modify, file=stream) + return op_number + + +_CodeLineInfo = namedtuple("_CodeLineInfo", "line_to_offset, first_line, last_line") + + +# Note: this method has a version in cython too (that one is usually used, this is just for tests). +def _get_code_line_info(code_obj): + line_to_offset = {} + first_line = None + last_line = None + + for offset, line in dis.findlinestarts(code_obj): + if line is not None and offset is not None: + line_to_offset[line] = offset + + if line_to_offset: + first_line = min(line_to_offset) + last_line = max(line_to_offset) + return _CodeLineInfo(line_to_offset, first_line, last_line) + + +if DEBUG: + debug_helper = DebugHelper() + + +def get_instructions_to_add( + stop_at_line, + _pydev_stop_at_break=_pydev_stop_at_break, + _pydev_needs_stop_at_break=_pydev_needs_stop_at_break, +): + """ + This is the bytecode for something as: + + if _pydev_needs_stop_at_break(): + _pydev_stop_at_break() + + but with some special handling for lines. + """ + # Good reference to how things work regarding line numbers and jumps: + # https://github.com/python/cpython/blob/3.6/Objects/lnotab_notes.txt + + # Usually use a stop line -1, but if that'd be 0, using line +1 is ok too. + spurious_line = stop_at_line - 1 + if spurious_line <= 0: + spurious_line = stop_at_line + 1 + + label = Label() + return [ + # -- if _pydev_needs_stop_at_break(): + Instr("LOAD_CONST", _pydev_needs_stop_at_break, lineno=stop_at_line), + Instr("LOAD_CONST", stop_at_line, lineno=stop_at_line), + Instr("CALL_FUNCTION", 1, lineno=stop_at_line), + Instr("POP_JUMP_IF_FALSE", label, lineno=stop_at_line), + # -- _pydev_stop_at_break() + # + # Note that this has line numbers -1 so that when the NOP just below + # is executed we have a spurious line event. + Instr("LOAD_CONST", _pydev_stop_at_break, lineno=spurious_line), + Instr("LOAD_CONST", stop_at_line, lineno=spurious_line), + Instr("CALL_FUNCTION", 1, lineno=spurious_line), + Instr("POP_TOP", lineno=spurious_line), + # Reason for the NOP: Python will give us a 'line' trace event whenever we forward jump to + # the first instruction of a line, so, in the case where we haven't added a programmatic + # breakpoint (either because we didn't hit a breakpoint anymore or because it was already + # tracing), we don't want the spurious line event due to the line change, so, we make a jump + # to the instruction right after the NOP so that the spurious line event is NOT generated in + # this case (otherwise we'd have a line event even if the line didn't change). + Instr("NOP", lineno=stop_at_line), + label, + ] + + +class _Node: + def __init__(self, data): + self.prev = None + self.next = None + self.data = data + + def append(self, data): + node = _Node(data) + + curr_next = self.next + + node.next = self.next + node.prev = self + self.next = node + + if curr_next is not None: + curr_next.prev = node + + return node + + def prepend(self, data): + node = _Node(data) + + curr_prev = self.prev + + node.prev = self.prev + node.next = self + self.prev = node + + if curr_prev is not None: + curr_prev.next = node + + return node + + +class _HelperBytecodeList: + """ + A helper double-linked list to make the manipulation a bit easier (so that we don't need + to keep track of indices that change) and performant (because adding multiple items to + the middle of a regular list isn't ideal). + """ + + def __init__(self, lst=None): + self._head = None + self._tail = None + if lst: + node = self + for item in lst: + node = node.append(item) + + def append(self, data): + if self._tail is None: + node = _Node(data) + self._head = self._tail = node + return node + else: + node = self._tail = self.tail.append(data) + return node + + @property + def head(self): + node = self._head + # Manipulating the node directly may make it unsynchronized. + while node.prev: + self._head = node = node.prev + return node + + @property + def tail(self): + node = self._tail + # Manipulating the node directly may make it unsynchronized. + while node.next: + self._tail = node = node.next + return node + + def __iter__(self): + node = self.head + + while node: + yield node.data + node = node.next + + +_PREDICT_TABLE = { + "LIST_APPEND": ("JUMP_ABSOLUTE",), + "SET_ADD": ("JUMP_ABSOLUTE",), + "GET_ANEXT": ("LOAD_CONST",), + "GET_AWAITABLE": ("LOAD_CONST",), + "DICT_MERGE": ("CALL_FUNCTION_EX",), + "MAP_ADD": ("JUMP_ABSOLUTE",), + "COMPARE_OP": ( + "POP_JUMP_IF_FALSE", + "POP_JUMP_IF_TRUE", + ), + "IS_OP": ( + "POP_JUMP_IF_FALSE", + "POP_JUMP_IF_TRUE", + ), + "CONTAINS_OP": ( + "POP_JUMP_IF_FALSE", + "POP_JUMP_IF_TRUE", + ), + # Note: there are some others with PREDICT on ceval, but they have more logic + # and it needs more experimentation to know how it behaves in the static generated + # code (and it's only an issue for us if there's actually a line change between + # those, so, we don't have to really handle all the cases, only the one where + # the line number actually changes from one instruction to the predicted one). +} + +# 3.10 optimizations include copying code branches multiple times (for instance +# if the body of a finally has a single assign statement it can copy the assign to the case +# where an exception happens and doesn't happen for optimization purposes) and as such +# we need to add the programmatic breakpoint multiple times. +TRACK_MULTIPLE_BRANCHES = sys.version_info[:2] >= (3, 10) + +# When tracking multiple branches, we try to fix the bytecodes which would be PREDICTED in the +# Python eval loop so that we don't have spurious line events that wouldn't usually be issued +# in the tracing as they're ignored due to the eval prediction (even though they're in the bytecode). +FIX_PREDICT = sys.version_info[:2] >= (3, 10) + + +def insert_pydevd_breaks( + code_to_modify, + breakpoint_lines, + code_line_info=None, + _pydev_stop_at_break=_pydev_stop_at_break, + _pydev_needs_stop_at_break=_pydev_needs_stop_at_break, +): + """ + Inserts pydevd programmatic breaks into the code (at the given lines). + + :param breakpoint_lines: set with the lines where we should add breakpoints. + :return: tuple(boolean flag whether insertion was successful, modified code). + """ + if code_line_info is None: + code_line_info = _get_code_line_info(code_to_modify) + + if not code_line_info.line_to_offset: + return False, code_to_modify + + # Create a copy (and make sure we're dealing with a set). + breakpoint_lines = set(breakpoint_lines) + + # Note that we can even generate breakpoints on the first line of code + # now, since we generate a spurious line event -- it may be a bit pointless + # as we'll stop in the first line and we don't currently stop the tracing after the + # user resumes, but in the future, if we do that, this would be a nice + # improvement. + # if code_to_modify.co_firstlineno in breakpoint_lines: + # return False, code_to_modify + + for line in breakpoint_lines: + if line <= 0: + # The first line is line 1, so, a break at line 0 is not valid. + pydev_log.info("Trying to add breakpoint in invalid line: %s", line) + return False, code_to_modify + + try: + b = bytecode.Bytecode.from_code(code_to_modify) + + if DEBUG: + op_number_bytecode = debug_helper.write_bytecode(b, prefix="bytecode.") + + helper_list = _HelperBytecodeList(b) + + modified_breakpoint_lines = breakpoint_lines.copy() + + curr_node = helper_list.head + added_breaks_in_lines = set() + last_lineno = None + while curr_node is not None: + instruction = curr_node.data + instruction_lineno = getattr(instruction, "lineno", None) + curr_name = getattr(instruction, "name", None) + + if FIX_PREDICT: + predict_targets = _PREDICT_TABLE.get(curr_name) + if predict_targets: + # Odd case: the next instruction may have a line number but it doesn't really + # appear in the tracing due to the PREDICT() in ceval, so, fix the bytecode so + # that it does things the way that ceval actually interprets it. + # See: https://mail.python.org/archives/list/python-dev@python.org/thread/CP2PTFCMTK57KM3M3DLJNWGO66R5RVPB/ + next_instruction = curr_node.next.data + next_name = getattr(next_instruction, "name", None) + if next_name in predict_targets: + next_instruction_lineno = getattr( + next_instruction, "lineno", None + ) + if next_instruction_lineno: + next_instruction.lineno = None + + if instruction_lineno is not None: + if TRACK_MULTIPLE_BRANCHES: + if last_lineno is None: + last_lineno = instruction_lineno + else: + if last_lineno == instruction_lineno: + # If the previous is a label, someone may jump into it, so, we need to add + # the break even if it's in the same line. + if curr_node.prev.data.__class__ != Label: + # Skip adding this as the line is still the same. + curr_node = curr_node.next + continue + last_lineno = instruction_lineno + else: + if instruction_lineno in added_breaks_in_lines: + curr_node = curr_node.next + continue + + if instruction_lineno in modified_breakpoint_lines: + added_breaks_in_lines.add(instruction_lineno) + if ( + curr_node.prev is not None + and curr_node.prev.data.__class__ == Label + and curr_name == "POP_TOP" + ): + # If we have a SETUP_FINALLY where the target is a POP_TOP, we can't change + # the target to be the breakpoint instruction (this can crash the interpreter). + + for new_instruction in get_instructions_to_add( + instruction_lineno, + _pydev_stop_at_break=_pydev_stop_at_break, + _pydev_needs_stop_at_break=_pydev_needs_stop_at_break, + ): + curr_node = curr_node.append(new_instruction) + + else: + for new_instruction in get_instructions_to_add( + instruction_lineno, + _pydev_stop_at_break=_pydev_stop_at_break, + _pydev_needs_stop_at_break=_pydev_needs_stop_at_break, + ): + curr_node.prepend(new_instruction) + + curr_node = curr_node.next + + b[:] = helper_list + + if DEBUG: + debug_helper.write_bytecode(b, op_number_bytecode, prefix="bytecode.") + + new_code = b.to_code() + + except: + pydev_log.exception("Error inserting pydevd breaks.") + return False, code_to_modify + + if DEBUG: + op_number = debug_helper.write_dis(code_to_modify) + debug_helper.write_dis(new_code, op_number) + + return True, new_code diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/release_mem.h b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/release_mem.h new file mode 100644 index 000000000..cc6e3d926 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/release_mem.h @@ -0,0 +1,5 @@ +#include "Python.h" + +void release_co_extra(void *obj) { + Py_XDECREF(obj); +} diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/README.txt b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/README.txt new file mode 100644 index 000000000..d15aa2091 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/README.txt @@ -0,0 +1,18 @@ +This folder contains vendored dependencies of the debugger. + +Right now this means the 'bytecode' library (MIT license). + +To update the version remove the bytecode* contents from this folder and then use: + +pip install bytecode --target . + +or from master (if needed for some early bugfix): + +python -m pip install https://github.com/MatthieuDartiailh/bytecode/archive/main.zip --target . + +Then run 'pydevd_fix_code.py' to fix the imports on the vendored file, run its tests (to see +if things are still ok) and commit. + +Then, to finish, apply the patch to add the offset to the instructions (bcb8a28669e9178f96f5d71af7259e0674acc47c) + +Note: commit the egg-info as a note of the license (force if needed). \ No newline at end of file diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/__init__.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/COPYING b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/COPYING new file mode 100644 index 000000000..81d7e37c3 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/COPYING @@ -0,0 +1,21 @@ +The MIT License (MIT) +Copyright (c) 2016 Red Hat. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/INSTALLER b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/INSTALLER new file mode 100644 index 000000000..a1b589e38 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/METADATA b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/METADATA new file mode 100644 index 000000000..e1d5e0120 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/METADATA @@ -0,0 +1,77 @@ +Metadata-Version: 2.1 +Name: bytecode +Version: 0.13.0.dev0 +Summary: Python module to generate and modify bytecode +Home-page: https://github.com/MatthieuDartiailh/bytecode +Author: Victor Stinner +Author-email: victor.stinner@gmail.com +Maintainer: Matthieu C. Dartiailh +Maintainer-email: m.dartiailh@gmail.com +License: MIT license +Platform: UNKNOWN +Classifier: Development Status :: 4 - Beta +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: MIT License +Classifier: Natural Language :: English +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Requires-Python: >=3.6 + +******** +bytecode +******** + +.. image:: https://img.shields.io/pypi/v/bytecode.svg + :alt: Latest release on the Python Cheeseshop (PyPI) + :target: https://pypi.python.org/pypi/bytecode + +.. image:: https://github.com/MatthieuDartiailh/bytecode/workflows/Continuous%20Integration/badge.svg + :target: https://github.com/MatthieuDartiailh/bytecode/actions + :alt: Continuous integration + +.. image:: https://github.com/MatthieuDartiailh/bytecode/workflows/Documentation%20building/badge.svg + :target: https://github.com/MatthieuDartiailh/bytecode/actions + :alt: Documentation building + +.. image:: https://img.shields.io/codecov/c/github/MatthieuDartiailh/bytecode/master.svg + :alt: Code coverage of bytecode on codecov.io + :target: https://codecov.io/github/MatthieuDartiailh/bytecode + +.. image:: https://img.shields.io/badge/code%20style-black-000000.svg + :alt: Code formatted using Black + :target: https://github.com/psf/black + +``bytecode`` is a Python module to generate and modify bytecode. + +* `bytecode project homepage at GitHub + `_ (code, bugs) +* `bytecode documentation + `_ +* `Download latest bytecode release at the Python Cheeseshop (PyPI) + `_ + +Install bytecode: ``python3 -m pip install bytecode``. It requires Python 3.6 +or newer. The latest release that supports Python 3.5 is 0.12.0. For Python 2.7 +support, have a look at `dead-bytecode +`_ instead. + +Example executing ``print('Hello World!')``: + +.. code:: python + + from bytecode import Instr, Bytecode + + bytecode = Bytecode([Instr("LOAD_NAME", 'print'), + Instr("LOAD_CONST", 'Hello World!'), + Instr("CALL_FUNCTION", 1), + Instr("POP_TOP"), + Instr("LOAD_CONST", None), + Instr("RETURN_VALUE")]) + code = bytecode.to_code() + exec(code) + diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/RECORD b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/RECORD new file mode 100644 index 000000000..3890ece18 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/RECORD @@ -0,0 +1,42 @@ +bytecode-0.13.0.dev0.dist-info/COPYING,sha256=baWkm-Te2LLURwK7TL0zOkMSVjVCU_ezvObHBo298Tk,1074 +bytecode-0.13.0.dev0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +bytecode-0.13.0.dev0.dist-info/METADATA,sha256=9XadDK6YTQ-FPowYI5DS4ieA7hRGnRP_fM5Z9ioPkEQ,2929 +bytecode-0.13.0.dev0.dist-info/RECORD,, +bytecode-0.13.0.dev0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +bytecode-0.13.0.dev0.dist-info/WHEEL,sha256=OqRkF0eY5GHssMorFjlbTIq072vpHpF60fIQA6lS9xA,92 +bytecode-0.13.0.dev0.dist-info/direct_url.json,sha256=s58Rb4KXRlMKxk-mzpvr_tJRQ-Hx8-DHsU6NdohCnAg,93 +bytecode-0.13.0.dev0.dist-info/top_level.txt,sha256=9BhdB7HqYZ-PvHNoWX6ilwLYWQqcgEOLwdb3aXm5Gys,9 +bytecode/__init__.py,sha256=d-yk4Xh4SwOWq9NgoD2rmBLG6RhUFNljeqs-NjMNSYM,3885 +bytecode/__pycache__/__init__.cpython-38.pyc,, +bytecode/__pycache__/bytecode.cpython-38.pyc,, +bytecode/__pycache__/cfg.cpython-38.pyc,, +bytecode/__pycache__/concrete.cpython-38.pyc,, +bytecode/__pycache__/flags.cpython-38.pyc,, +bytecode/__pycache__/instr.cpython-38.pyc,, +bytecode/__pycache__/peephole_opt.cpython-38.pyc,, +bytecode/bytecode.py,sha256=IMCcatHMtQ7M31nwj4r3drcvQuGVJAOP0d7C0O8P_SE,6894 +bytecode/cfg.py,sha256=RmJGJqwCxR-XYaPH9YGY4wNDycdtLvIBJb1OGSmxcN0,15274 +bytecode/concrete.py,sha256=0eb6Yh_NDLmzJNcMs2TFom0EqFVSM1cO3inMH90YE-s,21683 +bytecode/flags.py,sha256=hAvM_B2yQKRw44leHP0oCae0aaJraAbDDTpqIf4I1CM,5987 +bytecode/instr.py,sha256=HYc65LjNSOB3GCWkNkCSkee1rRzUyr89rgdjbKBaTpE,11616 +bytecode/peephole_opt.py,sha256=W-cFVPOZN-JKfDV3aImsYenDSZkSNBDTVQqeMrGPU18,15712 +bytecode/tests/__init__.py,sha256=BAdOXXNRdMVX4D8TuRYPlG9PHU7Cb0bzvyfA9s435kM,4968 +bytecode/tests/__pycache__/__init__.cpython-38.pyc,, +bytecode/tests/__pycache__/test_bytecode.cpython-38.pyc,, +bytecode/tests/__pycache__/test_cfg.cpython-38.pyc,, +bytecode/tests/__pycache__/test_code.cpython-38.pyc,, +bytecode/tests/__pycache__/test_concrete.cpython-38.pyc,, +bytecode/tests/__pycache__/test_flags.cpython-38.pyc,, +bytecode/tests/__pycache__/test_instr.cpython-38.pyc,, +bytecode/tests/__pycache__/test_misc.cpython-38.pyc,, +bytecode/tests/__pycache__/test_peephole_opt.cpython-38.pyc,, +bytecode/tests/__pycache__/util_annotation.cpython-38.pyc,, +bytecode/tests/test_bytecode.py,sha256=buvtlDC0NwoQ3zuZ7OENIIDngSqtiO9WkAa2-UvxGkI,15584 +bytecode/tests/test_cfg.py,sha256=c0xT8OfV-mDHu-DIDWr6LVlZQyK4GfgLSmT5AsodbMk,28194 +bytecode/tests/test_code.py,sha256=XCOH29rOXSoQz130s-AIC62r23e9qNjk8Y2xDB2LmSc,2100 +bytecode/tests/test_concrete.py,sha256=qT2qvabkF0yC7inniNx53cMSDN-2Qi0IE3pwBZSzF8g,49253 +bytecode/tests/test_flags.py,sha256=DY9U3c6tJdxJFm0jEm_To1Cc0I99EidQv_0guud-4oE,5684 +bytecode/tests/test_instr.py,sha256=rYeF8u-L0aW8bLPBxTUSy_T7KP6SaXyJKv9OhC8k6aA,11295 +bytecode/tests/test_misc.py,sha256=wyK1wpVPHRfaXgo-EqUI-F1nyB9-UACerHsHbExAo1U,6758 +bytecode/tests/test_peephole_opt.py,sha256=niUfhgEbiFR7IAmdQ_N9Qgh7D3wdRQ_zS0V8mKC4EzI,32640 +bytecode/tests/util_annotation.py,sha256=wKq6yPWrzkNlholl5Y10b3VjuCkoiYVgvcIjk_8jzf8,485 diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/REQUESTED b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/REQUESTED new file mode 100644 index 000000000..e69de29bb diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/WHEEL b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/WHEEL new file mode 100644 index 000000000..385faab05 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.36.2) +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/direct_url.json b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/direct_url.json new file mode 100644 index 000000000..3c32b5716 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/direct_url.json @@ -0,0 +1 @@ +{"archive_info": {}, "url": "https://github.com/MatthieuDartiailh/bytecode/archive/main.zip"} \ No newline at end of file diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/top_level.txt b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/top_level.txt new file mode 100644 index 000000000..b37707e7c --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/top_level.txt @@ -0,0 +1 @@ +bytecode diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/__init__.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/__init__.py new file mode 100644 index 000000000..93e87a1df --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/__init__.py @@ -0,0 +1,131 @@ +__version__ = "0.13.0.dev" + +__all__ = [ + "Label", + "Instr", + "SetLineno", + "Bytecode", + "ConcreteInstr", + "ConcreteBytecode", + "ControlFlowGraph", + "CompilerFlags", + "Compare", +] + +import sys + +from _pydevd_frame_eval.vendored.bytecode.bytecode import ( + Bytecode, +) +from _pydevd_frame_eval.vendored.bytecode.cfg import ( # noqa + BasicBlock, + ControlFlowGraph, +) + +# noqa +from _pydevd_frame_eval.vendored.bytecode.concrete import ( + ConcreteBytecode, # noqa + ConcreteInstr, +) +from _pydevd_frame_eval.vendored.bytecode.flags import CompilerFlags +from _pydevd_frame_eval.vendored.bytecode.instr import ( + UNSET, + Compare, + FreeVar, # noqa + Instr, + Label, + SetLineno, +) + + +def dump_bytecode(bytecode, *, lineno=False, stream=sys.stdout): + def format_line(index, line): + nonlocal cur_lineno, prev_lineno + if lineno: + if cur_lineno != prev_lineno: + line = "L.% 3s % 3s: %s" % (cur_lineno, index, line) + prev_lineno = cur_lineno + else: + line = " % 3s: %s" % (index, line) + else: + line = line + return line + + def format_instr(instr, labels=None): + text = instr.name + arg = instr._arg + if arg is not UNSET: + if isinstance(arg, Label): + try: + arg = "<%s>" % labels[arg] + except KeyError: + arg = "" + elif isinstance(arg, BasicBlock): + try: + arg = "<%s>" % labels[id(arg)] + except KeyError: + arg = "" + else: + arg = repr(arg) + text = "%s %s" % (text, arg) + return text + + indent = " " * 4 + + cur_lineno = bytecode.first_lineno + prev_lineno = None + + if isinstance(bytecode, ConcreteBytecode): + offset = 0 + for instr in bytecode: + fields = [] + if instr.lineno is not None: + cur_lineno = instr.lineno + if lineno: + fields.append(format_instr(instr)) + line = "".join(fields) + line = format_line(offset, line) + else: + fields.append("% 3s %s" % (offset, format_instr(instr))) + line = "".join(fields) + print(line, file=stream) + + offset += instr.size + elif isinstance(bytecode, Bytecode): + labels = {} + for index, instr in enumerate(bytecode): + if isinstance(instr, Label): + labels[instr] = "label_instr%s" % index + + for index, instr in enumerate(bytecode): + if isinstance(instr, Label): + label = labels[instr] + line = "%s:" % label + if index != 0: + print(file=stream) + else: + if instr.lineno is not None: + cur_lineno = instr.lineno + line = format_instr(instr, labels) + line = indent + format_line(index, line) + print(line, file=stream) + print(file=stream) + elif isinstance(bytecode, ControlFlowGraph): + labels = {} + for block_index, block in enumerate(bytecode, 1): + labels[id(block)] = "block%s" % block_index + + for block_index, block in enumerate(bytecode, 1): + print("%s:" % labels[id(block)], file=stream) + prev_lineno = None + for index, instr in enumerate(block): + if instr.lineno is not None: + cur_lineno = instr.lineno + line = format_instr(instr, labels) + line = indent + format_line(index, line) + print(line, file=stream) + if block.next_block is not None: + print(indent + "-> %s" % labels[id(block.next_block)], file=stream) + print(file=stream) + else: + raise TypeError("unknown bytecode class") diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/bytecode.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/bytecode.py new file mode 100644 index 000000000..cb6252e10 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/bytecode.py @@ -0,0 +1,215 @@ +# alias to keep the 'bytecode' variable free +import sys + +from _pydevd_frame_eval.vendored import bytecode as _bytecode +from _pydevd_frame_eval.vendored.bytecode.flags import infer_flags +from _pydevd_frame_eval.vendored.bytecode.instr import UNSET, Instr, Label, SetLineno + + +class BaseBytecode: + def __init__(self): + self.argcount = 0 + if sys.version_info > (3, 8): + self.posonlyargcount = 0 + self.kwonlyargcount = 0 + self.first_lineno = 1 + self.name = "" + self.filename = "" + self.docstring = UNSET + self.cellvars = [] + # we cannot recreate freevars from instructions because of super() + # special-case + self.freevars = [] + self._flags = _bytecode.CompilerFlags(0) + + def _copy_attr_from(self, bytecode): + self.argcount = bytecode.argcount + if sys.version_info > (3, 8): + self.posonlyargcount = bytecode.posonlyargcount + self.kwonlyargcount = bytecode.kwonlyargcount + self.flags = bytecode.flags + self.first_lineno = bytecode.first_lineno + self.name = bytecode.name + self.filename = bytecode.filename + self.docstring = bytecode.docstring + self.cellvars = list(bytecode.cellvars) + self.freevars = list(bytecode.freevars) + + def __eq__(self, other): + if type(self) != type(other): + return False + + if self.argcount != other.argcount: + return False + if sys.version_info > (3, 8): + if self.posonlyargcount != other.posonlyargcount: + return False + if self.kwonlyargcount != other.kwonlyargcount: + return False + if self.flags != other.flags: + return False + if self.first_lineno != other.first_lineno: + return False + if self.filename != other.filename: + return False + if self.name != other.name: + return False + if self.docstring != other.docstring: + return False + if self.cellvars != other.cellvars: + return False + if self.freevars != other.freevars: + return False + if self.compute_stacksize() != other.compute_stacksize(): + return False + + return True + + @property + def flags(self): + return self._flags + + @flags.setter + def flags(self, value): + if not isinstance(value, _bytecode.CompilerFlags): + value = _bytecode.CompilerFlags(value) + self._flags = value + + def update_flags(self, *, is_async=None): + self.flags = infer_flags(self, is_async) + + +class _BaseBytecodeList(BaseBytecode, list): + """List subclass providing type stable slicing and copying.""" + + def __getitem__(self, index): + value = super().__getitem__(index) + if isinstance(index, slice): + value = type(self)(value) + value._copy_attr_from(self) + + return value + + def copy(self): + new = type(self)(super().copy()) + new._copy_attr_from(self) + return new + + def legalize(self): + """Check that all the element of the list are valid and remove SetLineno.""" + lineno_pos = [] + set_lineno = None + current_lineno = self.first_lineno + + for pos, instr in enumerate(self): + if isinstance(instr, SetLineno): + set_lineno = instr.lineno + lineno_pos.append(pos) + continue + # Filter out Labels + if not isinstance(instr, Instr): + continue + if set_lineno is not None: + instr.lineno = set_lineno + elif instr.lineno is None: + instr.lineno = current_lineno + else: + current_lineno = instr.lineno + + for i in reversed(lineno_pos): + del self[i] + + def __iter__(self): + instructions = super().__iter__() + for instr in instructions: + self._check_instr(instr) + yield instr + + def _check_instr(self, instr): + raise NotImplementedError() + + +class _InstrList(list): + def _flat(self): + instructions = [] + labels = {} + jumps = [] + + offset = 0 + for index, instr in enumerate(self): + if isinstance(instr, Label): + instructions.append("label_instr%s" % index) + labels[instr] = offset + else: + if isinstance(instr, Instr) and isinstance(instr.arg, Label): + target_label = instr.arg + instr = _bytecode.ConcreteInstr(instr.name, 0, lineno=instr.lineno) + jumps.append((target_label, instr)) + instructions.append(instr) + offset += 1 + + for target_label, instr in jumps: + instr.arg = labels[target_label] + + return instructions + + def __eq__(self, other): + if not isinstance(other, _InstrList): + other = _InstrList(other) + + return self._flat() == other._flat() + + +class Bytecode(_InstrList, _BaseBytecodeList): + def __init__(self, instructions=()): + BaseBytecode.__init__(self) + self.argnames = [] + for instr in instructions: + self._check_instr(instr) + self.extend(instructions) + + def __iter__(self): + instructions = super().__iter__() + for instr in instructions: + self._check_instr(instr) + yield instr + + def _check_instr(self, instr): + if not isinstance(instr, (Label, SetLineno, Instr)): + raise ValueError( + "Bytecode must only contain Label, " + "SetLineno, and Instr objects, " + "but %s was found" % type(instr).__name__ + ) + + def _copy_attr_from(self, bytecode): + super()._copy_attr_from(bytecode) + if isinstance(bytecode, Bytecode): + self.argnames = bytecode.argnames + + @staticmethod + def from_code(code): + if sys.version_info[:2] >= (3, 11): + raise RuntimeError( + "This is not updated for Python 3.11 onwards, use only up to Python 3.10!!" + ) + concrete = _bytecode.ConcreteBytecode.from_code(code) + return concrete.to_bytecode() + + def compute_stacksize(self, *, check_pre_and_post=True): + cfg = _bytecode.ControlFlowGraph.from_bytecode(self) + return cfg.compute_stacksize(check_pre_and_post=check_pre_and_post) + + def to_code( + self, compute_jumps_passes=None, stacksize=None, *, check_pre_and_post=True + ): + # Prevent reconverting the concrete bytecode to bytecode and cfg to do the + # calculation if we need to do it. + if stacksize is None: + stacksize = self.compute_stacksize(check_pre_and_post=check_pre_and_post) + bc = self.to_concrete_bytecode(compute_jumps_passes=compute_jumps_passes) + return bc.to_code(stacksize=stacksize) + + def to_concrete_bytecode(self, compute_jumps_passes=None): + converter = _bytecode._ConvertBytecodeToConcrete(self) + return converter.to_concrete_bytecode(compute_jumps_passes=compute_jumps_passes) diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/cfg.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/cfg.py new file mode 100644 index 000000000..b1a534693 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/cfg.py @@ -0,0 +1,461 @@ +import sys + +# alias to keep the 'bytecode' variable free +from _pydevd_frame_eval.vendored import bytecode as _bytecode +from _pydevd_frame_eval.vendored.bytecode.concrete import ConcreteInstr +from _pydevd_frame_eval.vendored.bytecode.flags import CompilerFlags +from _pydevd_frame_eval.vendored.bytecode.instr import Instr, Label, SetLineno + + +class BasicBlock(_bytecode._InstrList): + def __init__(self, instructions=None): + # a BasicBlock object, or None + self.next_block = None + if instructions: + super().__init__(instructions) + + def __iter__(self): + index = 0 + while index < len(self): + instr = self[index] + index += 1 + + if not isinstance(instr, (SetLineno, Instr)): + raise ValueError( + "BasicBlock must only contain SetLineno and Instr objects, " + "but %s was found" % instr.__class__.__name__ + ) + + if isinstance(instr, Instr) and instr.has_jump(): + if index < len(self): + raise ValueError( + "Only the last instruction of a basic " "block can be a jump" + ) + + if not isinstance(instr.arg, BasicBlock): + raise ValueError( + "Jump target must a BasicBlock, got %s", + type(instr.arg).__name__, + ) + + yield instr + + def __getitem__(self, index): + value = super().__getitem__(index) + if isinstance(index, slice): + value = type(self)(value) + value.next_block = self.next_block + + return value + + def copy(self): + new = type(self)(super().copy()) + new.next_block = self.next_block + return new + + def legalize(self, first_lineno): + """Check that all the element of the list are valid and remove SetLineno.""" + lineno_pos = [] + set_lineno = None + current_lineno = first_lineno + + for pos, instr in enumerate(self): + if isinstance(instr, SetLineno): + set_lineno = current_lineno = instr.lineno + lineno_pos.append(pos) + continue + if set_lineno is not None: + instr.lineno = set_lineno + elif instr.lineno is None: + instr.lineno = current_lineno + else: + current_lineno = instr.lineno + + for i in reversed(lineno_pos): + del self[i] + + return current_lineno + + def get_jump(self): + if not self: + return None + + last_instr = self[-1] + if not (isinstance(last_instr, Instr) and last_instr.has_jump()): + return None + + target_block = last_instr.arg + assert isinstance(target_block, BasicBlock) + return target_block + + +def _compute_stack_size(block, size, maxsize, *, check_pre_and_post=True): + """Generator used to reduce the use of function stacks. + + This allows to avoid nested recursion and allow to treat more cases. + + HOW-TO: + Following the methods of Trampoline + (see https://en.wikipedia.org/wiki/Trampoline_(computing)), + + We yield either: + + - the arguments that would be used in the recursive calls, i.e, + 'yield block, size, maxsize' instead of making a recursive call + '_compute_stack_size(block, size, maxsize)', if we encounter an + instruction jumping to another block or if the block is linked to + another one (ie `next_block` is set) + - the required stack from the stack if we went through all the instructions + or encountered an unconditional jump. + + In the first case, the calling function is then responsible for creating a + new generator with those arguments, iterating over it till exhaustion to + determine the stacksize required by the block and resuming this function + with the determined stacksize. + + """ + # If the block is currently being visited (seen = True) or if it was visited + # previously by using a larger starting size than the one in use, return the + # maxsize. + if block.seen or block.startsize >= size: + yield maxsize + + def update_size(pre_delta, post_delta, size, maxsize): + size += pre_delta + if size < 0: + msg = "Failed to compute stacksize, got negative size" + raise RuntimeError(msg) + size += post_delta + maxsize = max(maxsize, size) + return size, maxsize + + # Prevent recursive visit of block if two blocks are nested (jump from one + # to the other). + block.seen = True + block.startsize = size + + for instr in block: + # Ignore SetLineno + if isinstance(instr, SetLineno): + continue + + # For instructions with a jump first compute the stacksize required when the + # jump is taken. + if instr.has_jump(): + effect = ( + instr.pre_and_post_stack_effect(jump=True) + if check_pre_and_post + else (instr.stack_effect(jump=True), 0) + ) + taken_size, maxsize = update_size(*effect, size, maxsize) + # Yield the parameters required to compute the stacksize required + # by the block to which the jumnp points to and resume when we now + # the maxsize. + maxsize = yield instr.arg, taken_size, maxsize + + # For unconditional jumps abort early since the other instruction will + # never be seen. + if instr.is_uncond_jump(): + block.seen = False + yield maxsize + + # jump=False: non-taken path of jumps, or any non-jump + effect = ( + instr.pre_and_post_stack_effect(jump=False) + if check_pre_and_post + else (instr.stack_effect(jump=False), 0) + ) + size, maxsize = update_size(*effect, size, maxsize) + + if block.next_block: + maxsize = yield block.next_block, size, maxsize + + block.seen = False + yield maxsize + + +class ControlFlowGraph(_bytecode.BaseBytecode): + def __init__(self): + super().__init__() + self._blocks = [] + self._block_index = {} + self.argnames = [] + + self.add_block() + + def legalize(self): + """Legalize all blocks.""" + current_lineno = self.first_lineno + for block in self._blocks: + current_lineno = block.legalize(current_lineno) + + def get_block_index(self, block): + try: + return self._block_index[id(block)] + except KeyError: + raise ValueError("the block is not part of this bytecode") + + def _add_block(self, block): + block_index = len(self._blocks) + self._blocks.append(block) + self._block_index[id(block)] = block_index + + def add_block(self, instructions=None): + block = BasicBlock(instructions) + self._add_block(block) + return block + + def compute_stacksize(self, *, check_pre_and_post=True): + """Compute the stack size by iterating through the blocks + + The implementation make use of a generator function to avoid issue with + deeply nested recursions. + + """ + # In the absence of any block return 0 + if not self: + return 0 + + # Ensure that previous calculation do not impact this one. + for block in self: + block.seen = False + block.startsize = -32768 # INT_MIN + + # Starting with Python 3.10, generator and coroutines start with one object + # on the stack (None, anything is an error). + initial_stack_size = 0 + if sys.version_info >= (3, 10) and self.flags & ( + CompilerFlags.GENERATOR + | CompilerFlags.COROUTINE + | CompilerFlags.ASYNC_GENERATOR + ): + initial_stack_size = 1 + + # Create a generator/coroutine responsible of dealing with the first block + coro = _compute_stack_size( + self[0], initial_stack_size, 0, check_pre_and_post=check_pre_and_post + ) + + # Create a list of generator that have not yet been exhausted + coroutines = [] + + push_coroutine = coroutines.append + pop_coroutine = coroutines.pop + args = None + + try: + while True: + args = coro.send(None) + + # Consume the stored generators as long as they return a simple + # interger that is to be used to resume the last stored generator. + while isinstance(args, int): + coro = pop_coroutine() + args = coro.send(args) + + # Otherwise we enter a new block and we store the generator under + # use and create a new one to process the new block + push_coroutine(coro) + coro = _compute_stack_size(*args, check_pre_and_post=check_pre_and_post) + + except IndexError: + # The exception occurs when all the generators have been exhausted + # in which case teh last yielded value is the stacksize. + assert args is not None + return args + + def __repr__(self): + return "" % len(self._blocks) + + def get_instructions(self): + instructions = [] + jumps = [] + + for block in self: + target_block = block.get_jump() + if target_block is not None: + instr = block[-1] + instr = ConcreteInstr(instr.name, 0, lineno=instr.lineno) + jumps.append((target_block, instr)) + + instructions.extend(block[:-1]) + instructions.append(instr) + else: + instructions.extend(block) + + for target_block, instr in jumps: + instr.arg = self.get_block_index(target_block) + + return instructions + + def __eq__(self, other): + if type(self) != type(other): + return False + + if self.argnames != other.argnames: + return False + + instrs1 = self.get_instructions() + instrs2 = other.get_instructions() + if instrs1 != instrs2: + return False + # FIXME: compare block.next_block + + return super().__eq__(other) + + def __len__(self): + return len(self._blocks) + + def __iter__(self): + return iter(self._blocks) + + def __getitem__(self, index): + if isinstance(index, BasicBlock): + index = self.get_block_index(index) + return self._blocks[index] + + def __delitem__(self, index): + if isinstance(index, BasicBlock): + index = self.get_block_index(index) + block = self._blocks[index] + del self._blocks[index] + del self._block_index[id(block)] + for index in range(index, len(self)): + block = self._blocks[index] + self._block_index[id(block)] -= 1 + + def split_block(self, block, index): + if not isinstance(block, BasicBlock): + raise TypeError("expected block") + block_index = self.get_block_index(block) + + if index < 0: + raise ValueError("index must be positive") + + block = self._blocks[block_index] + if index == 0: + return block + + if index > len(block): + raise ValueError("index out of the block") + + instructions = block[index:] + if not instructions: + if block_index + 1 < len(self): + return self[block_index + 1] + + del block[index:] + + block2 = BasicBlock(instructions) + block.next_block = block2 + + for block in self[block_index + 1 :]: + self._block_index[id(block)] += 1 + + self._blocks.insert(block_index + 1, block2) + self._block_index[id(block2)] = block_index + 1 + + return block2 + + @staticmethod + def from_bytecode(bytecode): + # label => instruction index + label_to_block_index = {} + jumps = [] + block_starts = {} + for index, instr in enumerate(bytecode): + if isinstance(instr, Label): + label_to_block_index[instr] = index + else: + if isinstance(instr, Instr) and isinstance(instr.arg, Label): + jumps.append((index, instr.arg)) + + for target_index, target_label in jumps: + target_index = label_to_block_index[target_label] + block_starts[target_index] = target_label + + bytecode_blocks = _bytecode.ControlFlowGraph() + bytecode_blocks._copy_attr_from(bytecode) + bytecode_blocks.argnames = list(bytecode.argnames) + + # copy instructions, convert labels to block labels + block = bytecode_blocks[0] + labels = {} + jumps = [] + for index, instr in enumerate(bytecode): + if index in block_starts: + old_label = block_starts[index] + if index != 0: + new_block = bytecode_blocks.add_block() + if not block[-1].is_final(): + block.next_block = new_block + block = new_block + if old_label is not None: + labels[old_label] = block + elif block and isinstance(block[-1], Instr): + if block[-1].is_final(): + block = bytecode_blocks.add_block() + elif block[-1].has_jump(): + new_block = bytecode_blocks.add_block() + block.next_block = new_block + block = new_block + + if isinstance(instr, Label): + continue + + # don't copy SetLineno objects + if isinstance(instr, Instr): + instr = instr.copy() + if isinstance(instr.arg, Label): + jumps.append(instr) + block.append(instr) + + for instr in jumps: + label = instr.arg + instr.arg = labels[label] + + return bytecode_blocks + + def to_bytecode(self): + """Convert to Bytecode.""" + used_blocks = set() + for block in self: + target_block = block.get_jump() + if target_block is not None: + used_blocks.add(id(target_block)) + + labels = {} + jumps = [] + instructions = [] + + for block in self: + if id(block) in used_blocks: + new_label = Label() + labels[id(block)] = new_label + instructions.append(new_label) + + for instr in block: + # don't copy SetLineno objects + if isinstance(instr, Instr): + instr = instr.copy() + if isinstance(instr.arg, BasicBlock): + jumps.append(instr) + instructions.append(instr) + + # Map to new labels + for instr in jumps: + instr.arg = labels[id(instr.arg)] + + bytecode = _bytecode.Bytecode() + bytecode._copy_attr_from(self) + bytecode.argnames = list(self.argnames) + bytecode[:] = instructions + + return bytecode + + def to_code(self, stacksize=None): + """Convert to code.""" + if stacksize is None: + stacksize = self.compute_stacksize() + bc = self.to_bytecode() + return bc.to_code(stacksize=stacksize) diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/concrete.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/concrete.py new file mode 100644 index 000000000..d2aad6a31 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/concrete.py @@ -0,0 +1,673 @@ +import dis +import inspect +import struct +import sys +import types + +import opcode as _opcode + +# alias to keep the 'bytecode' variable free +from _pydevd_frame_eval.vendored import bytecode as _bytecode +from _pydevd_frame_eval.vendored.bytecode.instr import ( + UNSET, + CellVar, + Compare, + FreeVar, + Instr, + Label, + SetLineno, + _check_arg_int, + const_key, +) + +# - jumps use instruction +# - lineno use bytes (dis.findlinestarts(code)) +# - dis displays bytes +OFFSET_AS_INSTRUCTION = sys.version_info >= (3, 10) + + +def _set_docstring(code, consts): + if not consts: + return + first_const = consts[0] + if isinstance(first_const, str) or first_const is None: + code.docstring = first_const + + +class ConcreteInstr(Instr): + """Concrete instruction. + + arg must be an integer in the range 0..2147483647. + + It has a read-only size attribute. + """ + + __slots__ = ("_size", "_extended_args", "offset") + + def __init__( + self, name, arg=UNSET, *, lineno=None, extended_args=None, offset=None + ): + # Allow to remember a potentially meaningless EXTENDED_ARG emitted by + # Python to properly compute the size and avoid messing up the jump + # targets + self._extended_args = extended_args + self._set(name, arg, lineno) + self.offset = offset + + def _check_arg(self, name, opcode, arg): + if opcode >= _opcode.HAVE_ARGUMENT: + if arg is UNSET: + raise ValueError("operation %s requires an argument" % name) + + _check_arg_int(name, arg) + else: + if arg is not UNSET: + raise ValueError("operation %s has no argument" % name) + + def _set(self, name, arg, lineno): + super()._set(name, arg, lineno) + size = 2 + if arg is not UNSET: + while arg > 0xFF: + size += 2 + arg >>= 8 + if self._extended_args is not None: + size = 2 + 2 * self._extended_args + self._size = size + + @property + def size(self): + return self._size + + def _cmp_key(self, labels=None): + return (self._lineno, self._name, self._arg) + + def get_jump_target(self, instr_offset): + if self._opcode in _opcode.hasjrel: + s = (self._size // 2) if OFFSET_AS_INSTRUCTION else self._size + return instr_offset + s + self._arg + if self._opcode in _opcode.hasjabs: + return self._arg + return None + + def assemble(self): + if self._arg is UNSET: + return bytes((self._opcode, 0)) + + arg = self._arg + b = [self._opcode, arg & 0xFF] + while arg > 0xFF: + arg >>= 8 + b[:0] = [_opcode.EXTENDED_ARG, arg & 0xFF] + + if self._extended_args: + while len(b) < self._size: + b[:0] = [_opcode.EXTENDED_ARG, 0x00] + + return bytes(b) + + @classmethod + def disassemble(cls, lineno, code, offset): + index = 2 * offset if OFFSET_AS_INSTRUCTION else offset + op = code[index] + if op >= _opcode.HAVE_ARGUMENT: + arg = code[index + 1] + else: + arg = UNSET + name = _opcode.opname[op] + # fabioz: added offset to ConcreteBytecode + # Need to keep an eye on https://github.com/MatthieuDartiailh/bytecode/issues/48 in + # case the library decides to add this in some other way. + return cls(name, arg, lineno=lineno, offset=index) + + +class ConcreteBytecode(_bytecode._BaseBytecodeList): + def __init__(self, instructions=(), *, consts=(), names=(), varnames=()): + super().__init__() + self.consts = list(consts) + self.names = list(names) + self.varnames = list(varnames) + for instr in instructions: + self._check_instr(instr) + self.extend(instructions) + + def __iter__(self): + instructions = super().__iter__() + for instr in instructions: + self._check_instr(instr) + yield instr + + def _check_instr(self, instr): + if not isinstance(instr, (ConcreteInstr, SetLineno)): + raise ValueError( + "ConcreteBytecode must only contain " + "ConcreteInstr and SetLineno objects, " + "but %s was found" % type(instr).__name__ + ) + + def _copy_attr_from(self, bytecode): + super()._copy_attr_from(bytecode) + if isinstance(bytecode, ConcreteBytecode): + self.consts = bytecode.consts + self.names = bytecode.names + self.varnames = bytecode.varnames + + def __repr__(self): + return "" % len(self) + + def __eq__(self, other): + if type(self) != type(other): + return False + + const_keys1 = list(map(const_key, self.consts)) + const_keys2 = list(map(const_key, other.consts)) + if const_keys1 != const_keys2: + return False + + if self.names != other.names: + return False + if self.varnames != other.varnames: + return False + + return super().__eq__(other) + + @staticmethod + def from_code(code, *, extended_arg=False): + line_starts = dict(dis.findlinestarts(code)) + + # find block starts + instructions = [] + offset = 0 + lineno = code.co_firstlineno + while offset < (len(code.co_code) // (2 if OFFSET_AS_INSTRUCTION else 1)): + lineno_off = (2 * offset) if OFFSET_AS_INSTRUCTION else offset + if lineno_off in line_starts: + lineno = line_starts[lineno_off] + + instr = ConcreteInstr.disassemble(lineno, code.co_code, offset) + + instructions.append(instr) + offset += (instr.size // 2) if OFFSET_AS_INSTRUCTION else instr.size + + bytecode = ConcreteBytecode() + + # replace jump targets with blocks + # HINT : in some cases Python generate useless EXTENDED_ARG opcode + # with a value of zero. Such opcodes do not increases the size of the + # following opcode the way a normal EXTENDED_ARG does. As a + # consequence, they need to be tracked manually as otherwise the + # offsets in jump targets can end up being wrong. + if not extended_arg: + # The list is modified in place + bytecode._remove_extended_args(instructions) + + bytecode.name = code.co_name + bytecode.filename = code.co_filename + bytecode.flags = code.co_flags + bytecode.argcount = code.co_argcount + if sys.version_info >= (3, 8): + bytecode.posonlyargcount = code.co_posonlyargcount + bytecode.kwonlyargcount = code.co_kwonlyargcount + bytecode.first_lineno = code.co_firstlineno + bytecode.names = list(code.co_names) + bytecode.consts = list(code.co_consts) + bytecode.varnames = list(code.co_varnames) + bytecode.freevars = list(code.co_freevars) + bytecode.cellvars = list(code.co_cellvars) + _set_docstring(bytecode, code.co_consts) + + bytecode[:] = instructions + return bytecode + + @staticmethod + def _normalize_lineno(instructions, first_lineno): + lineno = first_lineno + for instr in instructions: + # if instr.lineno is not set, it's inherited from the previous + # instruction, or from self.first_lineno + if instr.lineno is not None: + lineno = instr.lineno + + if isinstance(instr, ConcreteInstr): + yield (lineno, instr) + + def _assemble_code(self): + offset = 0 + code_str = [] + linenos = [] + for lineno, instr in self._normalize_lineno(self, self.first_lineno): + code_str.append(instr.assemble()) + i_size = instr.size + linenos.append( + ((offset * 2) if OFFSET_AS_INSTRUCTION else offset, i_size, lineno) + ) + offset += (i_size // 2) if OFFSET_AS_INSTRUCTION else i_size + code_str = b"".join(code_str) + return (code_str, linenos) + + @staticmethod + def _assemble_lnotab(first_lineno, linenos): + lnotab = [] + old_offset = 0 + old_lineno = first_lineno + for offset, _, lineno in linenos: + dlineno = lineno - old_lineno + if dlineno == 0: + continue + # FIXME: be kind, force monotonic line numbers? add an option? + if dlineno < 0 and sys.version_info < (3, 6): + raise ValueError( + "negative line number delta is not supported " "on Python < 3.6" + ) + old_lineno = lineno + + doff = offset - old_offset + old_offset = offset + + while doff > 255: + lnotab.append(b"\xff\x00") + doff -= 255 + + while dlineno < -128: + lnotab.append(struct.pack("Bb", doff, -128)) + doff = 0 + dlineno -= -128 + + while dlineno > 127: + lnotab.append(struct.pack("Bb", doff, 127)) + doff = 0 + dlineno -= 127 + + assert 0 <= doff <= 255 + assert -128 <= dlineno <= 127 + + lnotab.append(struct.pack("Bb", doff, dlineno)) + + return b"".join(lnotab) + + @staticmethod + def _pack_linetable(doff, dlineno, linetable): + while dlineno < -127: + linetable.append(struct.pack("Bb", 0, -127)) + dlineno -= -127 + + while dlineno > 127: + linetable.append(struct.pack("Bb", 0, 127)) + dlineno -= 127 + + if doff > 254: + linetable.append(struct.pack("Bb", 254, dlineno)) + doff -= 254 + + while doff > 254: + linetable.append(b"\xfe\x00") + doff -= 254 + linetable.append(struct.pack("Bb", doff, 0)) + + else: + linetable.append(struct.pack("Bb", doff, dlineno)) + + assert 0 <= doff <= 254 + assert -127 <= dlineno <= 127 + + def _assemble_linestable(self, first_lineno, linenos): + if not linenos: + return b"" + + linetable = [] + old_offset = 0 + + iter_in = iter(linenos) + + offset, i_size, old_lineno = next(iter_in) + old_dlineno = old_lineno - first_lineno + for offset, i_size, lineno in iter_in: + dlineno = lineno - old_lineno + if dlineno == 0: + continue + old_lineno = lineno + + doff = offset - old_offset + old_offset = offset + + self._pack_linetable(doff, old_dlineno, linetable) + old_dlineno = dlineno + + # Pack the line of the last instruction. + doff = offset + i_size - old_offset + self._pack_linetable(doff, old_dlineno, linetable) + + return b"".join(linetable) + + @staticmethod + def _remove_extended_args(instructions): + # replace jump targets with blocks + # HINT : in some cases Python generate useless EXTENDED_ARG opcode + # with a value of zero. Such opcodes do not increases the size of the + # following opcode the way a normal EXTENDED_ARG does. As a + # consequence, they need to be tracked manually as otherwise the + # offsets in jump targets can end up being wrong. + nb_extended_args = 0 + extended_arg = None + index = 0 + while index < len(instructions): + instr = instructions[index] + + # Skip SetLineno meta instruction + if isinstance(instr, SetLineno): + index += 1 + continue + + if instr.name == "EXTENDED_ARG": + nb_extended_args += 1 + if extended_arg is not None: + extended_arg = (extended_arg << 8) + instr.arg + else: + extended_arg = instr.arg + + del instructions[index] + continue + + if extended_arg is not None: + arg = (extended_arg << 8) + instr.arg + extended_arg = None + + instr = ConcreteInstr( + instr.name, + arg, + lineno=instr.lineno, + extended_args=nb_extended_args, + offset=instr.offset, + ) + instructions[index] = instr + nb_extended_args = 0 + + index += 1 + + if extended_arg is not None: + raise ValueError("EXTENDED_ARG at the end of the code") + + def compute_stacksize(self, *, check_pre_and_post=True): + bytecode = self.to_bytecode() + cfg = _bytecode.ControlFlowGraph.from_bytecode(bytecode) + return cfg.compute_stacksize(check_pre_and_post=check_pre_and_post) + + def to_code(self, stacksize=None, *, check_pre_and_post=True): + code_str, linenos = self._assemble_code() + lnotab = ( + self._assemble_linestable(self.first_lineno, linenos) + if sys.version_info >= (3, 10) + else self._assemble_lnotab(self.first_lineno, linenos) + ) + nlocals = len(self.varnames) + if stacksize is None: + stacksize = self.compute_stacksize(check_pre_and_post=check_pre_and_post) + + if sys.version_info < (3, 8): + return types.CodeType( + self.argcount, + self.kwonlyargcount, + nlocals, + stacksize, + int(self.flags), + code_str, + tuple(self.consts), + tuple(self.names), + tuple(self.varnames), + self.filename, + self.name, + self.first_lineno, + lnotab, + tuple(self.freevars), + tuple(self.cellvars), + ) + else: + return types.CodeType( + self.argcount, + self.posonlyargcount, + self.kwonlyargcount, + nlocals, + stacksize, + int(self.flags), + code_str, + tuple(self.consts), + tuple(self.names), + tuple(self.varnames), + self.filename, + self.name, + self.first_lineno, + lnotab, + tuple(self.freevars), + tuple(self.cellvars), + ) + + def to_bytecode(self): + # Copy instruction and remove extended args if any (in-place) + c_instructions = self[:] + self._remove_extended_args(c_instructions) + + # find jump targets + jump_targets = set() + offset = 0 + for instr in c_instructions: + if isinstance(instr, SetLineno): + continue + target = instr.get_jump_target(offset) + if target is not None: + jump_targets.add(target) + offset += (instr.size // 2) if OFFSET_AS_INSTRUCTION else instr.size + + # create labels + jumps = [] + instructions = [] + labels = {} + offset = 0 + ncells = len(self.cellvars) + + for lineno, instr in self._normalize_lineno(c_instructions, self.first_lineno): + if offset in jump_targets: + label = Label() + labels[offset] = label + instructions.append(label) + + jump_target = instr.get_jump_target(offset) + size = instr.size + + arg = instr.arg + # FIXME: better error reporting + if instr.opcode in _opcode.hasconst: + arg = self.consts[arg] + elif instr.opcode in _opcode.haslocal: + arg = self.varnames[arg] + elif instr.opcode in _opcode.hasname: + arg = self.names[arg] + elif instr.opcode in _opcode.hasfree: + if arg < ncells: + name = self.cellvars[arg] + arg = CellVar(name) + else: + name = self.freevars[arg - ncells] + arg = FreeVar(name) + elif instr.opcode in _opcode.hascompare: + arg = Compare(arg) + + if jump_target is None: + instr = Instr(instr.name, arg, lineno=lineno, offset=instr.offset) + else: + instr_index = len(instructions) + instructions.append(instr) + offset += (size // 2) if OFFSET_AS_INSTRUCTION else size + + if jump_target is not None: + jumps.append((instr_index, jump_target)) + + # replace jump targets with labels + for index, jump_target in jumps: + instr = instructions[index] + # FIXME: better error reporting on missing label + label = labels[jump_target] + instructions[index] = Instr( + instr.name, label, lineno=instr.lineno, offset=instr.offset + ) + + bytecode = _bytecode.Bytecode() + bytecode._copy_attr_from(self) + + nargs = bytecode.argcount + bytecode.kwonlyargcount + if sys.version_info > (3, 8): + nargs += bytecode.posonlyargcount + if bytecode.flags & inspect.CO_VARARGS: + nargs += 1 + if bytecode.flags & inspect.CO_VARKEYWORDS: + nargs += 1 + bytecode.argnames = self.varnames[:nargs] + _set_docstring(bytecode, self.consts) + + bytecode.extend(instructions) + return bytecode + + +class _ConvertBytecodeToConcrete: + # Default number of passes of compute_jumps() before giving up. Refer to + # assemble_jump_offsets() in compile.c for background. + _compute_jumps_passes = 10 + + def __init__(self, code): + assert isinstance(code, _bytecode.Bytecode) + self.bytecode = code + + # temporary variables + self.instructions = [] + self.jumps = [] + self.labels = {} + + # used to build ConcreteBytecode() object + self.consts_indices = {} + self.consts_list = [] + self.names = [] + self.varnames = [] + + def add_const(self, value): + key = const_key(value) + if key in self.consts_indices: + return self.consts_indices[key] + index = len(self.consts_indices) + self.consts_indices[key] = index + self.consts_list.append(value) + return index + + @staticmethod + def add(names, name): + try: + index = names.index(name) + except ValueError: + index = len(names) + names.append(name) + return index + + def concrete_instructions(self): + ncells = len(self.bytecode.cellvars) + lineno = self.bytecode.first_lineno + + for instr in self.bytecode: + if isinstance(instr, Label): + self.labels[instr] = len(self.instructions) + continue + + if isinstance(instr, SetLineno): + lineno = instr.lineno + continue + + if isinstance(instr, ConcreteInstr): + instr = instr.copy() + else: + assert isinstance(instr, Instr) + + if instr.lineno is not None: + lineno = instr.lineno + + arg = instr.arg + is_jump = isinstance(arg, Label) + if is_jump: + label = arg + # fake value, real value is set in compute_jumps() + arg = 0 + elif instr.opcode in _opcode.hasconst: + arg = self.add_const(arg) + elif instr.opcode in _opcode.haslocal: + arg = self.add(self.varnames, arg) + elif instr.opcode in _opcode.hasname: + arg = self.add(self.names, arg) + elif instr.opcode in _opcode.hasfree: + if isinstance(arg, CellVar): + arg = self.bytecode.cellvars.index(arg.name) + else: + assert isinstance(arg, FreeVar) + arg = ncells + self.bytecode.freevars.index(arg.name) + elif instr.opcode in _opcode.hascompare: + if isinstance(arg, Compare): + arg = arg.value + + instr = ConcreteInstr(instr.name, arg, lineno=lineno) + if is_jump: + self.jumps.append((len(self.instructions), label, instr)) + + self.instructions.append(instr) + + def compute_jumps(self): + offsets = [] + offset = 0 + for index, instr in enumerate(self.instructions): + offsets.append(offset) + offset += instr.size // 2 if OFFSET_AS_INSTRUCTION else instr.size + # needed if a label is at the end + offsets.append(offset) + + # fix argument of jump instructions: resolve labels + modified = False + for index, label, instr in self.jumps: + target_index = self.labels[label] + target_offset = offsets[target_index] + + if instr.opcode in _opcode.hasjrel: + instr_offset = offsets[index] + target_offset -= instr_offset + ( + instr.size // 2 if OFFSET_AS_INSTRUCTION else instr.size + ) + + old_size = instr.size + # FIXME: better error report if target_offset is negative + instr.arg = target_offset + if instr.size != old_size: + modified = True + + return modified + + def to_concrete_bytecode(self, compute_jumps_passes=None): + if compute_jumps_passes is None: + compute_jumps_passes = self._compute_jumps_passes + + first_const = self.bytecode.docstring + if first_const is not UNSET: + self.add_const(first_const) + + self.varnames.extend(self.bytecode.argnames) + + self.concrete_instructions() + for pas in range(0, compute_jumps_passes): + modified = self.compute_jumps() + if not modified: + break + else: + raise RuntimeError( + "compute_jumps() failed to converge after" " %d passes" % (pas + 1) + ) + + concrete = ConcreteBytecode( + self.instructions, + consts=self.consts_list.copy(), + names=self.names, + varnames=self.varnames, + ) + concrete._copy_attr_from(self.bytecode) + return concrete diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/flags.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/flags.py new file mode 100644 index 000000000..dd8693022 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/flags.py @@ -0,0 +1,181 @@ +# alias to keep the 'bytecode' variable free +import sys +from enum import IntFlag + +from _pydevd_frame_eval.vendored import bytecode as _bytecode + + +class CompilerFlags(IntFlag): + """Possible values of the co_flags attribute of Code object. + + Note: We do not rely on inspect values here as some of them are missing and + furthermore would be version dependent. + + """ + + OPTIMIZED = 0x00001 # noqa + NEWLOCALS = 0x00002 # noqa + VARARGS = 0x00004 # noqa + VARKEYWORDS = 0x00008 # noqa + NESTED = 0x00010 # noqa + GENERATOR = 0x00020 # noqa + NOFREE = 0x00040 # noqa + # New in Python 3.5 + # Used for coroutines defined using async def ie native coroutine + COROUTINE = 0x00080 # noqa + # Used for coroutines defined as a generator and then decorated using + # types.coroutine + ITERABLE_COROUTINE = 0x00100 # noqa + # New in Python 3.6 + # Generator defined in an async def function + ASYNC_GENERATOR = 0x00200 # noqa + + # __future__ flags + # future flags changed in Python 3.9 + if sys.version_info < (3, 9): + FUTURE_GENERATOR_STOP = 0x80000 # noqa + if sys.version_info > (3, 6): + FUTURE_ANNOTATIONS = 0x100000 + else: + FUTURE_GENERATOR_STOP = 0x800000 # noqa + FUTURE_ANNOTATIONS = 0x1000000 + + +def infer_flags(bytecode, is_async=None): + """Infer the proper flags for a bytecode based on the instructions. + + Because the bytecode does not have enough context to guess if a function + is asynchronous the algorithm tries to be conservative and will never turn + a previously async code into a sync one. + + Parameters + ---------- + bytecode : Bytecode | ConcreteBytecode | ControlFlowGraph + Bytecode for which to infer the proper flags + is_async : bool | None, optional + Force the code to be marked as asynchronous if True, prevent it from + being marked as asynchronous if False and simply infer the best + solution based on the opcode and the existing flag if None. + + """ + flags = CompilerFlags(0) + if not isinstance( + bytecode, + (_bytecode.Bytecode, _bytecode.ConcreteBytecode, _bytecode.ControlFlowGraph), + ): + msg = ( + "Expected a Bytecode, ConcreteBytecode or ControlFlowGraph " + "instance not %s" + ) + raise ValueError(msg % bytecode) + + instructions = ( + bytecode.get_instructions() + if isinstance(bytecode, _bytecode.ControlFlowGraph) + else bytecode + ) + instr_names = { + i.name + for i in instructions + if not isinstance(i, (_bytecode.SetLineno, _bytecode.Label)) + } + + # Identify optimized code + if not (instr_names & {"STORE_NAME", "LOAD_NAME", "DELETE_NAME"}): + flags |= CompilerFlags.OPTIMIZED + + # Check for free variables + if not ( + instr_names + & { + "LOAD_CLOSURE", + "LOAD_DEREF", + "STORE_DEREF", + "DELETE_DEREF", + "LOAD_CLASSDEREF", + } + ): + flags |= CompilerFlags.NOFREE + + # Copy flags for which we cannot infer the right value + flags |= bytecode.flags & ( + CompilerFlags.NEWLOCALS + | CompilerFlags.VARARGS + | CompilerFlags.VARKEYWORDS + | CompilerFlags.NESTED + ) + + sure_generator = instr_names & {"YIELD_VALUE"} + maybe_generator = instr_names & {"YIELD_VALUE", "YIELD_FROM"} + + sure_async = instr_names & { + "GET_AWAITABLE", + "GET_AITER", + "GET_ANEXT", + "BEFORE_ASYNC_WITH", + "SETUP_ASYNC_WITH", + "END_ASYNC_FOR", + } + + # If performing inference or forcing an async behavior, first inspect + # the flags since this is the only way to identify iterable coroutines + if is_async in (None, True): + if bytecode.flags & CompilerFlags.COROUTINE: + if sure_generator: + flags |= CompilerFlags.ASYNC_GENERATOR + else: + flags |= CompilerFlags.COROUTINE + elif bytecode.flags & CompilerFlags.ITERABLE_COROUTINE: + if sure_async: + msg = ( + "The ITERABLE_COROUTINE flag is set but bytecode that" + "can only be used in async functions have been " + "detected. Please unset that flag before performing " + "inference." + ) + raise ValueError(msg) + flags |= CompilerFlags.ITERABLE_COROUTINE + elif bytecode.flags & CompilerFlags.ASYNC_GENERATOR: + if not sure_generator: + flags |= CompilerFlags.COROUTINE + else: + flags |= CompilerFlags.ASYNC_GENERATOR + + # If the code was not asynchronous before determine if it should now be + # asynchronous based on the opcode and the is_async argument. + else: + if sure_async: + # YIELD_FROM is not allowed in async generator + if sure_generator: + flags |= CompilerFlags.ASYNC_GENERATOR + else: + flags |= CompilerFlags.COROUTINE + + elif maybe_generator: + if is_async: + if sure_generator: + flags |= CompilerFlags.ASYNC_GENERATOR + else: + flags |= CompilerFlags.COROUTINE + else: + flags |= CompilerFlags.GENERATOR + + elif is_async: + flags |= CompilerFlags.COROUTINE + + # If the code should not be asynchronous, check first it is possible and + # next set the GENERATOR flag if relevant + else: + if sure_async: + raise ValueError( + "The is_async argument is False but bytecodes " + "that can only be used in async functions have " + "been detected." + ) + + if maybe_generator: + flags |= CompilerFlags.GENERATOR + + flags |= bytecode.flags & CompilerFlags.FUTURE_GENERATOR_STOP + + return flags diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/instr.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/instr.py new file mode 100644 index 000000000..3efe0471b --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/instr.py @@ -0,0 +1,399 @@ +import dis +import enum +import sys +from marshal import dumps as _dumps + +import opcode as _opcode + +from _pydevd_frame_eval.vendored import bytecode as _bytecode + + +@enum.unique +class Compare(enum.IntEnum): + LT = 0 + LE = 1 + EQ = 2 + NE = 3 + GT = 4 + GE = 5 + IN = 6 + NOT_IN = 7 + IS = 8 + IS_NOT = 9 + EXC_MATCH = 10 + + +UNSET = object() + + +def const_key(obj): + try: + return _dumps(obj) + except ValueError: + # For other types, we use the object identifier as an unique identifier + # to ensure that they are seen as unequal. + return (type(obj), id(obj)) + + +def _pushes_back(opname): + if opname in ["CALL_FINALLY"]: + # CALL_FINALLY pushes the address of the "finally" block instead of a + # value, hence we don't treat it as pushing back op + return False + return ( + opname.startswith("UNARY_") + or opname.startswith("GET_") + # BUILD_XXX_UNPACK have been removed in 3.9 + or opname.startswith("BINARY_") + or opname.startswith("INPLACE_") + or opname.startswith("BUILD_") + or opname.startswith("CALL_") + ) or opname in ( + "LIST_TO_TUPLE", + "LIST_EXTEND", + "SET_UPDATE", + "DICT_UPDATE", + "DICT_MERGE", + "IS_OP", + "CONTAINS_OP", + "FORMAT_VALUE", + "MAKE_FUNCTION", + "IMPORT_NAME", + # technically, these three do not push back, but leave the container + # object on TOS + "SET_ADD", + "LIST_APPEND", + "MAP_ADD", + "LOAD_ATTR", + ) + + +def _check_lineno(lineno): + if not isinstance(lineno, int): + raise TypeError("lineno must be an int") + if lineno < 1: + raise ValueError("invalid lineno") + + +class SetLineno: + __slots__ = ("_lineno",) + + def __init__(self, lineno): + _check_lineno(lineno) + self._lineno = lineno + + @property + def lineno(self): + return self._lineno + + def __eq__(self, other): + if not isinstance(other, SetLineno): + return False + return self._lineno == other._lineno + + +class Label: + __slots__ = () + + +class _Variable: + __slots__ = ("name",) + + def __init__(self, name): + self.name = name + + def __eq__(self, other): + if type(self) != type(other): + return False + return self.name == other.name + + def __str__(self): + return self.name + + def __repr__(self): + return "<%s %r>" % (self.__class__.__name__, self.name) + + +class CellVar(_Variable): + __slots__ = () + + +class FreeVar(_Variable): + __slots__ = () + + +def _check_arg_int(name, arg): + if not isinstance(arg, int): + raise TypeError( + "operation %s argument must be an int, " + "got %s" % (name, type(arg).__name__) + ) + + if not (0 <= arg <= 2147483647): + raise ValueError( + "operation %s argument must be in " "the range 0..2,147,483,647" % name + ) + + +if sys.version_info < (3, 8): + _stack_effects = { + # NOTE: the entries are all 2-tuples. Entry[0/False] is non-taken jumps. + # Entry[1/True] is for taken jumps. + # opcodes not in dis.stack_effect + _opcode.opmap["EXTENDED_ARG"]: (0, 0), + _opcode.opmap["NOP"]: (0, 0), + # Jump taken/not-taken are different: + _opcode.opmap["JUMP_IF_TRUE_OR_POP"]: (-1, 0), + _opcode.opmap["JUMP_IF_FALSE_OR_POP"]: (-1, 0), + _opcode.opmap["FOR_ITER"]: (1, -1), + _opcode.opmap["SETUP_WITH"]: (1, 6), + _opcode.opmap["SETUP_ASYNC_WITH"]: (0, 5), + _opcode.opmap["SETUP_EXCEPT"]: (0, 6), # as of 3.7, below for <=3.6 + _opcode.opmap["SETUP_FINALLY"]: (0, 6), # as of 3.7, below for <=3.6 + } + + # More stack effect values that are unique to the version of Python. + if sys.version_info < (3, 7): + _stack_effects.update( + { + _opcode.opmap["SETUP_WITH"]: (7, 7), + _opcode.opmap["SETUP_EXCEPT"]: (6, 9), + _opcode.opmap["SETUP_FINALLY"]: (6, 9), + } + ) + + +class Instr: + """Abstract instruction.""" + + __slots__ = ("_name", "_opcode", "_arg", "_lineno", "offset") + + def __init__(self, name, arg=UNSET, *, lineno=None, offset=None): + self._set(name, arg, lineno) + self.offset = offset + + def _check_arg(self, name, opcode, arg): + if name == "EXTENDED_ARG": + raise ValueError( + "only concrete instruction can contain EXTENDED_ARG, " + "highlevel instruction can represent arbitrary argument without it" + ) + + if opcode >= _opcode.HAVE_ARGUMENT: + if arg is UNSET: + raise ValueError("operation %s requires an argument" % name) + else: + if arg is not UNSET: + raise ValueError("operation %s has no argument" % name) + + if self._has_jump(opcode): + if not isinstance(arg, (Label, _bytecode.BasicBlock)): + raise TypeError( + "operation %s argument type must be " + "Label or BasicBlock, got %s" % (name, type(arg).__name__) + ) + + elif opcode in _opcode.hasfree: + if not isinstance(arg, (CellVar, FreeVar)): + raise TypeError( + "operation %s argument must be CellVar " + "or FreeVar, got %s" % (name, type(arg).__name__) + ) + + elif opcode in _opcode.haslocal or opcode in _opcode.hasname: + if not isinstance(arg, str): + raise TypeError( + "operation %s argument must be a str, " + "got %s" % (name, type(arg).__name__) + ) + + elif opcode in _opcode.hasconst: + if isinstance(arg, Label): + raise ValueError( + "label argument cannot be used " "in %s operation" % name + ) + if isinstance(arg, _bytecode.BasicBlock): + raise ValueError( + "block argument cannot be used " "in %s operation" % name + ) + + elif opcode in _opcode.hascompare: + if not isinstance(arg, Compare): + raise TypeError( + "operation %s argument type must be " + "Compare, got %s" % (name, type(arg).__name__) + ) + + elif opcode >= _opcode.HAVE_ARGUMENT: + _check_arg_int(name, arg) + + def _set(self, name, arg, lineno): + if not isinstance(name, str): + raise TypeError("operation name must be a str") + try: + opcode = _opcode.opmap[name] + except KeyError: + raise ValueError("invalid operation name") + + # check lineno + if lineno is not None: + _check_lineno(lineno) + + self._check_arg(name, opcode, arg) + + self._name = name + self._opcode = opcode + self._arg = arg + self._lineno = lineno + + def set(self, name, arg=UNSET): + """Modify the instruction in-place. + + Replace name and arg attributes. Don't modify lineno. + """ + self._set(name, arg, self._lineno) + + def require_arg(self): + """Does the instruction require an argument?""" + return self._opcode >= _opcode.HAVE_ARGUMENT + + @property + def name(self): + return self._name + + @name.setter + def name(self, name): + self._set(name, self._arg, self._lineno) + + @property + def opcode(self): + return self._opcode + + @opcode.setter + def opcode(self, op): + if not isinstance(op, int): + raise TypeError("operator code must be an int") + if 0 <= op <= 255: + name = _opcode.opname[op] + valid = name != "<%r>" % op + else: + valid = False + if not valid: + raise ValueError("invalid operator code") + + self._set(name, self._arg, self._lineno) + + @property + def arg(self): + return self._arg + + @arg.setter + def arg(self, arg): + self._set(self._name, arg, self._lineno) + + @property + def lineno(self): + return self._lineno + + @lineno.setter + def lineno(self, lineno): + self._set(self._name, self._arg, lineno) + + def stack_effect(self, jump=None): + if self._opcode < _opcode.HAVE_ARGUMENT: + arg = None + elif not isinstance(self._arg, int) or self._opcode in _opcode.hasconst: + # Argument is either a non-integer or an integer constant, + # not oparg. + arg = 0 + else: + arg = self._arg + + if sys.version_info < (3, 8): + effect = _stack_effects.get(self._opcode, None) + if effect is not None: + return max(effect) if jump is None else effect[jump] + return dis.stack_effect(self._opcode, arg) + else: + return dis.stack_effect(self._opcode, arg, jump=jump) + + def pre_and_post_stack_effect(self, jump=None): + _effect = self.stack_effect(jump=jump) + + # To compute pre size and post size to avoid segfault cause by not enough + # stack element + _opname = _opcode.opname[self._opcode] + if _opname.startswith("DUP_TOP"): + return _effect * -1, _effect * 2 + if _pushes_back(_opname): + # if the op pushes value back to the stack, then the stack effect given + # by dis.stack_effect actually equals pre + post effect, therefore we need + # -1 from the stack effect as a pre condition + return _effect - 1, 1 + if _opname.startswith("UNPACK_"): + # Instr(UNPACK_* , n) pops 1 and pushes n + # _effect = n - 1 + # hence we return -1, _effect + 1 + return -1, _effect + 1 + if _opname == "FOR_ITER" and not jump: + # Since FOR_ITER needs TOS to be an iterator, which basically means + # a prerequisite of 1 on the stack + return -1, 2 + if _opname == "ROT_N": + return (-self._arg, self._arg) + return {"ROT_TWO": (-2, 2), "ROT_THREE": (-3, 3), "ROT_FOUR": (-4, 4)}.get( + _opname, (_effect, 0) + ) + + def copy(self): + return self.__class__( + self._name, self._arg, lineno=self._lineno, offset=self.offset + ) + + def __repr__(self): + if self._arg is not UNSET: + return "<%s arg=%r lineno=%s>" % (self._name, self._arg, self._lineno) + else: + return "<%s lineno=%s>" % (self._name, self._lineno) + + def _cmp_key(self, labels=None): + arg = self._arg + if self._opcode in _opcode.hasconst: + arg = const_key(arg) + elif isinstance(arg, Label) and labels is not None: + arg = labels[arg] + return (self._lineno, self._name, arg) + + def __eq__(self, other): + if type(self) != type(other): + return False + return self._cmp_key() == other._cmp_key() + + @staticmethod + def _has_jump(opcode): + return opcode in _opcode.hasjrel or opcode in _opcode.hasjabs + + def has_jump(self): + return self._has_jump(self._opcode) + + def is_cond_jump(self): + """Is a conditional jump?""" + # Ex: POP_JUMP_IF_TRUE, JUMP_IF_FALSE_OR_POP + return "JUMP_IF_" in self._name + + def is_uncond_jump(self): + """Is an unconditional jump?""" + return self.name in {"JUMP_FORWARD", "JUMP_ABSOLUTE"} + + def is_final(self): + if self._name in { + "RETURN_VALUE", + "RAISE_VARARGS", + "RERAISE", + "BREAK_LOOP", + "CONTINUE_LOOP", + }: + return True + if self.is_uncond_jump(): + return True + return False diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/peephole_opt.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/peephole_opt.py new file mode 100644 index 000000000..7fe1268db --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/peephole_opt.py @@ -0,0 +1,499 @@ +""" +Peephole optimizer of CPython 3.6 reimplemented in pure Python using +the bytecode module. +""" +import operator +import sys + +import opcode + +from _pydevd_frame_eval.vendored.bytecode import ( + BasicBlock, + Bytecode, + Compare, + ControlFlowGraph, + Instr, +) + +JUMPS_ON_TRUE = frozenset( + ( + "POP_JUMP_IF_TRUE", + "JUMP_IF_TRUE_OR_POP", + ) +) + +NOT_COMPARE = { + Compare.IN: Compare.NOT_IN, + Compare.NOT_IN: Compare.IN, + Compare.IS: Compare.IS_NOT, + Compare.IS_NOT: Compare.IS, +} + +MAX_SIZE = 20 + + +class ExitUnchanged(Exception): + """Exception used to skip the peephole optimizer""" + + pass + + +class PeepholeOptimizer: + """Python reimplementation of the peephole optimizer. + + Copy of the C comment: + + Perform basic peephole optimizations to components of a code object. + The consts object should still be in list form to allow new constants + to be appended. + + To keep the optimizer simple, it bails out (does nothing) for code that + has a length over 32,700, and does not calculate extended arguments. + That allows us to avoid overflow and sign issues. Likewise, it bails when + the lineno table has complex encoding for gaps >= 255. EXTENDED_ARG can + appear before MAKE_FUNCTION; in this case both opcodes are skipped. + EXTENDED_ARG preceding any other opcode causes the optimizer to bail. + + Optimizations are restricted to simple transformations occuring within a + single basic block. All transformations keep the code size the same or + smaller. For those that reduce size, the gaps are initially filled with + NOPs. Later those NOPs are removed and the jump addresses retargeted in + a single pass. Code offset is adjusted accordingly. + """ + + def __init__(self): + # bytecode.ControlFlowGraph instance + self.code = None + self.const_stack = None + self.block_index = None + self.block = None + # index of the current instruction in self.block instructions + self.index = None + # whether we are in a LOAD_CONST sequence + self.in_consts = False + + def check_result(self, value): + try: + size = len(value) + except TypeError: + return True + return size <= MAX_SIZE + + def replace_load_const(self, nconst, instr, result): + # FIXME: remove temporary computed constants? + # FIXME: or at least reuse existing constants? + + self.in_consts = True + + load_const = Instr("LOAD_CONST", result, lineno=instr.lineno) + start = self.index - nconst - 1 + self.block[start : self.index] = (load_const,) + self.index -= nconst + + if nconst: + del self.const_stack[-nconst:] + self.const_stack.append(result) + self.in_consts = True + + def eval_LOAD_CONST(self, instr): + self.in_consts = True + value = instr.arg + self.const_stack.append(value) + self.in_consts = True + + def unaryop(self, op, instr): + try: + value = self.const_stack[-1] + result = op(value) + except IndexError: + return + + if not self.check_result(result): + return + + self.replace_load_const(1, instr, result) + + def eval_UNARY_POSITIVE(self, instr): + return self.unaryop(operator.pos, instr) + + def eval_UNARY_NEGATIVE(self, instr): + return self.unaryop(operator.neg, instr) + + def eval_UNARY_INVERT(self, instr): + return self.unaryop(operator.invert, instr) + + def get_next_instr(self, name): + try: + next_instr = self.block[self.index] + except IndexError: + return None + if next_instr.name == name: + return next_instr + return None + + def eval_UNARY_NOT(self, instr): + # Note: UNARY_NOT is not optimized + + next_instr = self.get_next_instr("POP_JUMP_IF_FALSE") + if next_instr is None: + return None + + # Replace UNARY_NOT+POP_JUMP_IF_FALSE with POP_JUMP_IF_TRUE + instr.set("POP_JUMP_IF_TRUE", next_instr.arg) + del self.block[self.index] + + def binop(self, op, instr): + try: + left = self.const_stack[-2] + right = self.const_stack[-1] + except IndexError: + return + + try: + result = op(left, right) + except Exception: + return + + if not self.check_result(result): + return + + self.replace_load_const(2, instr, result) + + def eval_BINARY_ADD(self, instr): + return self.binop(operator.add, instr) + + def eval_BINARY_SUBTRACT(self, instr): + return self.binop(operator.sub, instr) + + def eval_BINARY_MULTIPLY(self, instr): + return self.binop(operator.mul, instr) + + def eval_BINARY_TRUE_DIVIDE(self, instr): + return self.binop(operator.truediv, instr) + + def eval_BINARY_FLOOR_DIVIDE(self, instr): + return self.binop(operator.floordiv, instr) + + def eval_BINARY_MODULO(self, instr): + return self.binop(operator.mod, instr) + + def eval_BINARY_POWER(self, instr): + return self.binop(operator.pow, instr) + + def eval_BINARY_LSHIFT(self, instr): + return self.binop(operator.lshift, instr) + + def eval_BINARY_RSHIFT(self, instr): + return self.binop(operator.rshift, instr) + + def eval_BINARY_AND(self, instr): + return self.binop(operator.and_, instr) + + def eval_BINARY_OR(self, instr): + return self.binop(operator.or_, instr) + + def eval_BINARY_XOR(self, instr): + return self.binop(operator.xor, instr) + + def eval_BINARY_SUBSCR(self, instr): + return self.binop(operator.getitem, instr) + + def replace_container_of_consts(self, instr, container_type): + items = self.const_stack[-instr.arg :] + value = container_type(items) + self.replace_load_const(instr.arg, instr, value) + + def build_tuple_unpack_seq(self, instr): + next_instr = self.get_next_instr("UNPACK_SEQUENCE") + if next_instr is None or next_instr.arg != instr.arg: + return + + if instr.arg < 1: + return + + if self.const_stack and instr.arg <= len(self.const_stack): + nconst = instr.arg + start = self.index - 1 + + # Rewrite LOAD_CONST instructions in the reverse order + load_consts = self.block[start - nconst : start] + self.block[start - nconst : start] = reversed(load_consts) + + # Remove BUILD_TUPLE+UNPACK_SEQUENCE + self.block[start : start + 2] = () + self.index -= 2 + self.const_stack.clear() + return + + if instr.arg == 1: + # Replace BUILD_TUPLE 1 + UNPACK_SEQUENCE 1 with NOP + del self.block[self.index - 1 : self.index + 1] + elif instr.arg == 2: + # Replace BUILD_TUPLE 2 + UNPACK_SEQUENCE 2 with ROT_TWO + rot2 = Instr("ROT_TWO", lineno=instr.lineno) + self.block[self.index - 1 : self.index + 1] = (rot2,) + self.index -= 1 + self.const_stack.clear() + elif instr.arg == 3: + # Replace BUILD_TUPLE 3 + UNPACK_SEQUENCE 3 + # with ROT_THREE + ROT_TWO + rot3 = Instr("ROT_THREE", lineno=instr.lineno) + rot2 = Instr("ROT_TWO", lineno=instr.lineno) + self.block[self.index - 1 : self.index + 1] = (rot3, rot2) + self.index -= 1 + self.const_stack.clear() + + def build_tuple(self, instr, container_type): + if instr.arg > len(self.const_stack): + return + + next_instr = self.get_next_instr("COMPARE_OP") + if next_instr is None or next_instr.arg not in (Compare.IN, Compare.NOT_IN): + return + + self.replace_container_of_consts(instr, container_type) + return True + + def eval_BUILD_TUPLE(self, instr): + if not instr.arg: + return + + if instr.arg <= len(self.const_stack): + self.replace_container_of_consts(instr, tuple) + else: + self.build_tuple_unpack_seq(instr) + + def eval_BUILD_LIST(self, instr): + if not instr.arg: + return + + if not self.build_tuple(instr, tuple): + self.build_tuple_unpack_seq(instr) + + def eval_BUILD_SET(self, instr): + if not instr.arg: + return + + self.build_tuple(instr, frozenset) + + # Note: BUILD_SLICE is not optimized + + def eval_COMPARE_OP(self, instr): + # Note: COMPARE_OP: 2 < 3 is not optimized + + try: + new_arg = NOT_COMPARE[instr.arg] + except KeyError: + return + + if self.get_next_instr("UNARY_NOT") is None: + return + + # not (a is b) --> a is not b + # not (a in b) --> a not in b + # not (a is not b) --> a is b + # not (a not in b) --> a in b + instr.arg = new_arg + self.block[self.index - 1 : self.index + 1] = (instr,) + + def jump_if_or_pop(self, instr): + # Simplify conditional jump to conditional jump where the + # result of the first test implies the success of a similar + # test or the failure of the opposite test. + # + # Arises in code like: + # "if a and b:" + # "if a or b:" + # "a and b or c" + # "(a and b) and c" + # + # x:JUMP_IF_FALSE_OR_POP y y:JUMP_IF_FALSE_OR_POP z + # --> x:JUMP_IF_FALSE_OR_POP z + # + # x:JUMP_IF_FALSE_OR_POP y y:JUMP_IF_TRUE_OR_POP z + # --> x:POP_JUMP_IF_FALSE y+3 + # where y+3 is the instruction following the second test. + target_block = instr.arg + try: + target_instr = target_block[0] + except IndexError: + return + + if not target_instr.is_cond_jump(): + self.optimize_jump_to_cond_jump(instr) + return + + if (target_instr.name in JUMPS_ON_TRUE) == (instr.name in JUMPS_ON_TRUE): + # The second jump will be taken iff the first is. + + target2 = target_instr.arg + # The current opcode inherits its target's stack behaviour + instr.name = target_instr.name + instr.arg = target2 + self.block[self.index - 1] = instr + self.index -= 1 + else: + # The second jump is not taken if the first is (so jump past it), + # and all conditional jumps pop their argument when they're not + # taken (so change the first jump to pop its argument when it's + # taken). + if instr.name in JUMPS_ON_TRUE: + name = "POP_JUMP_IF_TRUE" + else: + name = "POP_JUMP_IF_FALSE" + + new_label = self.code.split_block(target_block, 1) + + instr.name = name + instr.arg = new_label + self.block[self.index - 1] = instr + self.index -= 1 + + def eval_JUMP_IF_FALSE_OR_POP(self, instr): + self.jump_if_or_pop(instr) + + def eval_JUMP_IF_TRUE_OR_POP(self, instr): + self.jump_if_or_pop(instr) + + def eval_NOP(self, instr): + # Remove NOP + del self.block[self.index - 1] + self.index -= 1 + + def optimize_jump_to_cond_jump(self, instr): + # Replace jumps to unconditional jumps + jump_label = instr.arg + assert isinstance(jump_label, BasicBlock), jump_label + + try: + target_instr = jump_label[0] + except IndexError: + return + + if instr.is_uncond_jump() and target_instr.name == "RETURN_VALUE": + # Replace JUMP_ABSOLUTE => RETURN_VALUE with RETURN_VALUE + self.block[self.index - 1] = target_instr + + elif target_instr.is_uncond_jump(): + # Replace JUMP_FORWARD t1 jumping to JUMP_FORWARD t2 + # with JUMP_ABSOLUTE t2 + jump_target2 = target_instr.arg + + name = instr.name + if instr.name == "JUMP_FORWARD": + name = "JUMP_ABSOLUTE" + else: + # FIXME: reimplement this check + # if jump_target2 < 0: + # # No backward relative jumps + # return + + # FIXME: remove this workaround and implement comment code ^^ + if instr.opcode in opcode.hasjrel: + return + + instr.name = name + instr.arg = jump_target2 + self.block[self.index - 1] = instr + + def optimize_jump(self, instr): + if instr.is_uncond_jump() and self.index == len(self.block): + # JUMP_ABSOLUTE at the end of a block which points to the + # following block: remove the jump, link the current block + # to the following block + block_index = self.block_index + target_block = instr.arg + target_block_index = self.code.get_block_index(target_block) + if target_block_index == block_index: + del self.block[self.index - 1] + self.block.next_block = target_block + return + + self.optimize_jump_to_cond_jump(instr) + + def iterblock(self, block): + self.block = block + self.index = 0 + while self.index < len(block): + instr = self.block[self.index] + self.index += 1 + yield instr + + def optimize_block(self, block): + self.const_stack.clear() + self.in_consts = False + + for instr in self.iterblock(block): + if not self.in_consts: + self.const_stack.clear() + self.in_consts = False + + meth_name = "eval_%s" % instr.name + meth = getattr(self, meth_name, None) + if meth is not None: + meth(instr) + elif instr.has_jump(): + self.optimize_jump(instr) + + # Note: Skipping over LOAD_CONST trueconst; POP_JUMP_IF_FALSE + # is not implemented, since it looks like the optimization + # is never trigerred in practice. The compiler already optimizes if + # and while statements. + + def remove_dead_blocks(self): + # FIXME: remove empty blocks? + + used_blocks = {id(self.code[0])} + for block in self.code: + if block.next_block is not None: + used_blocks.add(id(block.next_block)) + for instr in block: + if isinstance(instr, Instr) and isinstance(instr.arg, BasicBlock): + used_blocks.add(id(instr.arg)) + + block_index = 0 + while block_index < len(self.code): + block = self.code[block_index] + if id(block) not in used_blocks: + del self.code[block_index] + else: + block_index += 1 + + # FIXME: merge following blocks if block1 does not contain any + # jump and block1.next_block is block2 + + def optimize_cfg(self, cfg): + self.code = cfg + self.const_stack = [] + + self.remove_dead_blocks() + + self.block_index = 0 + while self.block_index < len(self.code): + block = self.code[self.block_index] + self.block_index += 1 + self.optimize_block(block) + + def optimize(self, code_obj): + bytecode = Bytecode.from_code(code_obj) + cfg = ControlFlowGraph.from_bytecode(bytecode) + + self.optimize_cfg(cfg) + + bytecode = cfg.to_bytecode() + code = bytecode.to_code() + return code + + +# Code transformer for the PEP 511 +class CodeTransformer: + name = "pyopt" + + def code_transformer(self, code, context): + if sys.flags.verbose: + print( + "Optimize %s:%s: %s" + % (code.co_filename, code.co_firstlineno, code.co_name) + ) + optimizer = PeepholeOptimizer() + return optimizer.optimize(code) diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/__init__.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/__init__.py new file mode 100644 index 000000000..daee2fc8a --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/__init__.py @@ -0,0 +1,153 @@ +import sys +import textwrap +import types +import unittest + +from _pydevd_frame_eval.vendored.bytecode import ( + UNSET, + BasicBlock, # noqa + Bytecode, + ConcreteBytecode, + ConcreteInstr, + ControlFlowGraph, + Label, +) + + +def _format_instr_list(block, labels, lineno): + instr_list = [] + for instr in block: + if not isinstance(instr, Label): + if isinstance(instr, ConcreteInstr): + cls_name = "ConcreteInstr" + else: + cls_name = "Instr" + arg = instr.arg + if arg is not UNSET: + if isinstance(arg, Label): + arg = labels[arg] + elif isinstance(arg, BasicBlock): + arg = labels[id(arg)] + else: + arg = repr(arg) + if lineno: + text = "%s(%r, %s, lineno=%s)" % ( + cls_name, + instr.name, + arg, + instr.lineno, + ) + else: + text = "%s(%r, %s)" % (cls_name, instr.name, arg) + else: + if lineno: + text = "%s(%r, lineno=%s)" % (cls_name, instr.name, instr.lineno) + else: + text = "%s(%r)" % (cls_name, instr.name) + else: + text = labels[instr] + instr_list.append(text) + return "[%s]" % ",\n ".join(instr_list) + + +def dump_bytecode(code, lineno=False): + """ + Use this function to write unit tests: copy/paste its output to + write a self.assertBlocksEqual() check. + """ + print() + + if isinstance(code, (Bytecode, ConcreteBytecode)): + is_concrete = isinstance(code, ConcreteBytecode) + if is_concrete: + block = list(code) + else: + block = code + + indent = " " * 8 + labels = {} + for index, instr in enumerate(block): + if isinstance(instr, Label): + name = "label_instr%s" % index + labels[instr] = name + + if is_concrete: + name = "ConcreteBytecode" + print(indent + "code = %s()" % name) + if code.argcount: + print(indent + "code.argcount = %s" % code.argcount) + if sys.version_info > (3, 8): + if code.posonlyargcount: + print(indent + "code.posonlyargcount = %s" % code.posonlyargcount) + if code.kwonlyargcount: + print(indent + "code.kwargonlycount = %s" % code.kwonlyargcount) + print(indent + "code.flags = %#x" % code.flags) + if code.consts: + print(indent + "code.consts = %r" % code.consts) + if code.names: + print(indent + "code.names = %r" % code.names) + if code.varnames: + print(indent + "code.varnames = %r" % code.varnames) + + for name in sorted(labels.values()): + print(indent + "%s = Label()" % name) + + if is_concrete: + text = indent + "code.extend(" + indent = " " * len(text) + else: + text = indent + "code = Bytecode(" + indent = " " * len(text) + + lines = _format_instr_list(code, labels, lineno).splitlines() + last_line = len(lines) - 1 + for index, line in enumerate(lines): + if index == 0: + print(text + lines[0]) + elif index == last_line: + print(indent + line + ")") + else: + print(indent + line) + + print() + else: + assert isinstance(code, ControlFlowGraph) + labels = {} + for block_index, block in enumerate(code): + labels[id(block)] = "code[%s]" % block_index + + for block_index, block in enumerate(code): + text = _format_instr_list(block, labels, lineno) + if block_index != len(code) - 1: + text += "," + print(text) + print() + + +def get_code(source, *, filename="", function=False): + source = textwrap.dedent(source).strip() + code = compile(source, filename, "exec") + if function: + sub_code = [ + const for const in code.co_consts if isinstance(const, types.CodeType) + ] + if len(sub_code) != 1: + raise ValueError("unable to find function code") + code = sub_code[0] + return code + + +def disassemble(source, *, filename="", function=False): + code = get_code(source, filename=filename, function=function) + return Bytecode.from_code(code) + + +class TestCase(unittest.TestCase): + def assertBlocksEqual(self, code, *expected_blocks): + self.assertEqual(len(code), len(expected_blocks)) + + for block1, block2 in zip(code, expected_blocks): + block_index = code.get_block_index(block1) + self.assertListEqual( + list(block1), block2, "Block #%s is different" % block_index + ) diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_bytecode.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_bytecode.py new file mode 100644 index 000000000..6339b45b5 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_bytecode.py @@ -0,0 +1,499 @@ +import pytest +from tests_python.debug_constants import TEST_CYTHON +from tests_python.debugger_unittest import IS_CPYTHON, IS_PY36_OR_GREATER + +pytestmark = pytest.mark.skipif( + not IS_PY36_OR_GREATER or not IS_CPYTHON or not TEST_CYTHON, + reason="Requires CPython >= 3.6", +) +#!/usr/bin/env python3 +import sys +import textwrap +import unittest + +from _pydevd_frame_eval.vendored.bytecode import ( + Bytecode, + ConcreteInstr, + FreeVar, + Instr, + Label, + SetLineno, +) +from _pydevd_frame_eval.vendored.bytecode.tests import TestCase, get_code + + +class BytecodeTests(TestCase): + maxDiff = 80 * 100 + + def test_constructor(self): + code = Bytecode() + self.assertEqual(code.name, "") + self.assertEqual(code.filename, "") + self.assertEqual(code.flags, 0) + self.assertEqual(code, []) + + def test_invalid_types(self): + code = Bytecode() + code.append(123) + with self.assertRaises(ValueError): + list(code) + with self.assertRaises(ValueError): + code.legalize() + with self.assertRaises(ValueError): + Bytecode([123]) + + def test_legalize(self): + code = Bytecode() + code.first_lineno = 3 + code.extend( + [ + Instr("LOAD_CONST", 7), + Instr("STORE_NAME", "x"), + Instr("LOAD_CONST", 8, lineno=4), + Instr("STORE_NAME", "y"), + Label(), + SetLineno(5), + Instr("LOAD_CONST", 9, lineno=6), + Instr("STORE_NAME", "z"), + ] + ) + + code.legalize() + self.assertListEqual( + code, + [ + Instr("LOAD_CONST", 7, lineno=3), + Instr("STORE_NAME", "x", lineno=3), + Instr("LOAD_CONST", 8, lineno=4), + Instr("STORE_NAME", "y", lineno=4), + Label(), + Instr("LOAD_CONST", 9, lineno=5), + Instr("STORE_NAME", "z", lineno=5), + ], + ) + + def test_slice(self): + code = Bytecode() + code.first_lineno = 3 + code.extend( + [ + Instr("LOAD_CONST", 7), + Instr("STORE_NAME", "x"), + SetLineno(4), + Instr("LOAD_CONST", 8), + Instr("STORE_NAME", "y"), + SetLineno(5), + Instr("LOAD_CONST", 9), + Instr("STORE_NAME", "z"), + ] + ) + sliced_code = code[:] + self.assertEqual(code, sliced_code) + for name in ( + "argcount", + "posonlyargcount", + "kwonlyargcount", + "first_lineno", + "name", + "filename", + "docstring", + "cellvars", + "freevars", + "argnames", + ): + self.assertEqual( + getattr(code, name, None), getattr(sliced_code, name, None) + ) + + def test_copy(self): + code = Bytecode() + code.first_lineno = 3 + code.extend( + [ + Instr("LOAD_CONST", 7), + Instr("STORE_NAME", "x"), + SetLineno(4), + Instr("LOAD_CONST", 8), + Instr("STORE_NAME", "y"), + SetLineno(5), + Instr("LOAD_CONST", 9), + Instr("STORE_NAME", "z"), + ] + ) + + copy_code = code.copy() + self.assertEqual(code, copy_code) + for name in ( + "argcount", + "posonlyargcount", + "kwonlyargcount", + "first_lineno", + "name", + "filename", + "docstring", + "cellvars", + "freevars", + "argnames", + ): + self.assertEqual(getattr(code, name, None), getattr(copy_code, name, None)) + + def test_from_code(self): + code = get_code( + """ + if test: + x = 1 + else: + x = 2 + """ + ) + bytecode = Bytecode.from_code(code) + label_else = Label() + label_exit = Label() + if sys.version_info < (3, 10): + self.assertEqual( + bytecode, + [ + Instr("LOAD_NAME", "test", lineno=1), + Instr("POP_JUMP_IF_FALSE", label_else, lineno=1), + Instr("LOAD_CONST", 1, lineno=2), + Instr("STORE_NAME", "x", lineno=2), + Instr("JUMP_FORWARD", label_exit, lineno=2), + label_else, + Instr("LOAD_CONST", 2, lineno=4), + Instr("STORE_NAME", "x", lineno=4), + label_exit, + Instr("LOAD_CONST", None, lineno=4), + Instr("RETURN_VALUE", lineno=4), + ], + ) + # Control flow handling appears to have changed under Python 3.10 + else: + self.assertEqual( + bytecode, + [ + Instr("LOAD_NAME", "test", lineno=1), + Instr("POP_JUMP_IF_FALSE", label_else, lineno=1), + Instr("LOAD_CONST", 1, lineno=2), + Instr("STORE_NAME", "x", lineno=2), + Instr("LOAD_CONST", None, lineno=2), + Instr("RETURN_VALUE", lineno=2), + label_else, + Instr("LOAD_CONST", 2, lineno=4), + Instr("STORE_NAME", "x", lineno=4), + Instr("LOAD_CONST", None, lineno=4), + Instr("RETURN_VALUE", lineno=4), + ], + ) + + def test_from_code_freevars(self): + ns = {} + exec( + textwrap.dedent( + """ + def create_func(): + x = 1 + def func(): + return x + return func + + func = create_func() + """ + ), + ns, + ns, + ) + code = ns["func"].__code__ + + bytecode = Bytecode.from_code(code) + self.assertEqual( + bytecode, + [ + Instr("LOAD_DEREF", FreeVar("x"), lineno=5), + Instr("RETURN_VALUE", lineno=5), + ], + ) + + def test_from_code_load_fast(self): + code = get_code( + """ + def func(): + x = 33 + y = x + """, + function=True, + ) + code = Bytecode.from_code(code) + self.assertEqual( + code, + [ + Instr("LOAD_CONST", 33, lineno=2), + Instr("STORE_FAST", "x", lineno=2), + Instr("LOAD_FAST", "x", lineno=3), + Instr("STORE_FAST", "y", lineno=3), + Instr("LOAD_CONST", None, lineno=3), + Instr("RETURN_VALUE", lineno=3), + ], + ) + + def test_setlineno(self): + # x = 7 + # y = 8 + # z = 9 + code = Bytecode() + code.first_lineno = 3 + code.extend( + [ + Instr("LOAD_CONST", 7), + Instr("STORE_NAME", "x"), + SetLineno(4), + Instr("LOAD_CONST", 8), + Instr("STORE_NAME", "y"), + SetLineno(5), + Instr("LOAD_CONST", 9), + Instr("STORE_NAME", "z"), + ] + ) + + concrete = code.to_concrete_bytecode() + self.assertEqual(concrete.consts, [7, 8, 9]) + self.assertEqual(concrete.names, ["x", "y", "z"]) + self.assertListEqual( + list(concrete), + [ + ConcreteInstr("LOAD_CONST", 0, lineno=3), + ConcreteInstr("STORE_NAME", 0, lineno=3), + ConcreteInstr("LOAD_CONST", 1, lineno=4), + ConcreteInstr("STORE_NAME", 1, lineno=4), + ConcreteInstr("LOAD_CONST", 2, lineno=5), + ConcreteInstr("STORE_NAME", 2, lineno=5), + ], + ) + + def test_to_code(self): + code = Bytecode() + code.first_lineno = 50 + code.extend( + [ + Instr("LOAD_NAME", "print"), + Instr("LOAD_CONST", "%s"), + Instr("LOAD_GLOBAL", "a"), + Instr("BINARY_MODULO"), + Instr("CALL_FUNCTION", 1), + Instr("RETURN_VALUE"), + ] + ) + co = code.to_code() + # hopefully this is obvious from inspection? :-) + self.assertEqual(co.co_stacksize, 3) + + co = code.to_code(stacksize=42) + self.assertEqual(co.co_stacksize, 42) + + def test_negative_size_unary(self): + opnames = ( + "UNARY_POSITIVE", + "UNARY_NEGATIVE", + "UNARY_NOT", + "UNARY_INVERT", + ) + for opname in opnames: + with self.subTest(): + code = Bytecode() + code.first_lineno = 1 + code.extend([Instr(opname)]) + with self.assertRaises(RuntimeError): + code.compute_stacksize() + + def test_negative_size_unary_with_disable_check_of_pre_and_post(self): + opnames = ( + "UNARY_POSITIVE", + "UNARY_NEGATIVE", + "UNARY_NOT", + "UNARY_INVERT", + ) + for opname in opnames: + with self.subTest(): + code = Bytecode() + code.first_lineno = 1 + code.extend([Instr(opname)]) + co = code.to_code(check_pre_and_post=False) + self.assertEqual(co.co_stacksize, 0) + + def test_negative_size_binary(self): + opnames = ( + "BINARY_POWER", + "BINARY_MULTIPLY", + "BINARY_MATRIX_MULTIPLY", + "BINARY_FLOOR_DIVIDE", + "BINARY_TRUE_DIVIDE", + "BINARY_MODULO", + "BINARY_ADD", + "BINARY_SUBTRACT", + "BINARY_SUBSCR", + "BINARY_LSHIFT", + "BINARY_RSHIFT", + "BINARY_AND", + "BINARY_XOR", + "BINARY_OR", + ) + for opname in opnames: + with self.subTest(): + code = Bytecode() + code.first_lineno = 1 + code.extend([Instr("LOAD_CONST", 1), Instr(opname)]) + with self.assertRaises(RuntimeError): + code.compute_stacksize() + + def test_negative_size_binary_with_disable_check_of_pre_and_post(self): + opnames = ( + "BINARY_POWER", + "BINARY_MULTIPLY", + "BINARY_MATRIX_MULTIPLY", + "BINARY_FLOOR_DIVIDE", + "BINARY_TRUE_DIVIDE", + "BINARY_MODULO", + "BINARY_ADD", + "BINARY_SUBTRACT", + "BINARY_SUBSCR", + "BINARY_LSHIFT", + "BINARY_RSHIFT", + "BINARY_AND", + "BINARY_XOR", + "BINARY_OR", + ) + for opname in opnames: + with self.subTest(): + code = Bytecode() + code.first_lineno = 1 + code.extend([Instr("LOAD_CONST", 1), Instr(opname)]) + co = code.to_code(check_pre_and_post=False) + self.assertEqual(co.co_stacksize, 1) + + def test_negative_size_call(self): + code = Bytecode() + code.first_lineno = 1 + code.extend([Instr("CALL_FUNCTION", 0)]) + with self.assertRaises(RuntimeError): + code.compute_stacksize() + + def test_negative_size_unpack(self): + opnames = ( + "UNPACK_SEQUENCE", + "UNPACK_EX", + ) + for opname in opnames: + with self.subTest(): + code = Bytecode() + code.first_lineno = 1 + code.extend([Instr(opname, 1)]) + with self.assertRaises(RuntimeError): + code.compute_stacksize() + + def test_negative_size_build(self): + opnames = ( + "BUILD_TUPLE", + "BUILD_LIST", + "BUILD_SET", + ) + if sys.version_info >= (3, 6): + opnames = (*opnames, "BUILD_STRING") + + for opname in opnames: + with self.subTest(): + code = Bytecode() + code.first_lineno = 1 + code.extend([Instr(opname, 1)]) + with self.assertRaises(RuntimeError): + code.compute_stacksize() + + def test_negative_size_build_map(self): + code = Bytecode() + code.first_lineno = 1 + code.extend([Instr("LOAD_CONST", 1), Instr("BUILD_MAP", 1)]) + with self.assertRaises(RuntimeError): + code.compute_stacksize() + + def test_negative_size_build_map_with_disable_check_of_pre_and_post(self): + code = Bytecode() + code.first_lineno = 1 + code.extend([Instr("LOAD_CONST", 1), Instr("BUILD_MAP", 1)]) + co = code.to_code(check_pre_and_post=False) + self.assertEqual(co.co_stacksize, 1) + + @unittest.skipIf(sys.version_info < (3, 6), "Inexistent opcode") + def test_negative_size_build_const_map(self): + code = Bytecode() + code.first_lineno = 1 + code.extend([Instr("LOAD_CONST", ("a",)), Instr("BUILD_CONST_KEY_MAP", 1)]) + with self.assertRaises(RuntimeError): + code.compute_stacksize() + + @unittest.skipIf(sys.version_info < (3, 6), "Inexistent opcode") + def test_negative_size_build_const_map_with_disable_check_of_pre_and_post(self): + code = Bytecode() + code.first_lineno = 1 + code.extend([Instr("LOAD_CONST", ("a",)), Instr("BUILD_CONST_KEY_MAP", 1)]) + co = code.to_code(check_pre_and_post=False) + self.assertEqual(co.co_stacksize, 1) + + def test_empty_dup(self): + code = Bytecode() + code.first_lineno = 1 + code.extend([Instr("DUP_TOP")]) + with self.assertRaises(RuntimeError): + code.compute_stacksize() + + def test_not_enough_dup(self): + code = Bytecode() + code.first_lineno = 1 + code.extend([Instr("LOAD_CONST", 1), Instr("DUP_TOP_TWO")]) + with self.assertRaises(RuntimeError): + code.compute_stacksize() + + def test_not_enough_rot(self): + opnames = ["ROT_TWO", "ROT_THREE"] + if sys.version_info >= (3, 8): + opnames.append("ROT_FOUR") + for opname in opnames: + with self.subTest(): + code = Bytecode() + code.first_lineno = 1 + code.extend([Instr("LOAD_CONST", 1), Instr(opname)]) + with self.assertRaises(RuntimeError): + code.compute_stacksize() + + def test_not_enough_rot_with_disable_check_of_pre_and_post(self): + opnames = ["ROT_TWO", "ROT_THREE"] + if sys.version_info >= (3, 8): + opnames.append("ROT_FOUR") + for opname in opnames: + with self.subTest(): + code = Bytecode() + code.first_lineno = 1 + code.extend([Instr("LOAD_CONST", 1), Instr(opname)]) + co = code.to_code(check_pre_and_post=False) + self.assertEqual(co.co_stacksize, 1) + + def test_for_iter_stack_effect_computation(self): + with self.subTest(): + code = Bytecode() + code.first_lineno = 1 + lab1 = Label() + lab2 = Label() + code.extend( + [ + lab1, + Instr("FOR_ITER", lab2), + Instr("STORE_FAST", "i"), + Instr("JUMP_ABSOLUTE", lab1), + lab2, + ] + ) + with self.assertRaises(RuntimeError): + # Use compute_stacksize since the code is so broken that conversion + # to from concrete is actually broken + code.compute_stacksize(check_pre_and_post=False) + + +if __name__ == "__main__": + unittest.main() # pragma: no cover diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_cfg.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_cfg.py new file mode 100644 index 000000000..0a1a46c78 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_cfg.py @@ -0,0 +1,841 @@ +import pytest +from tests_python.debug_constants import TEST_CYTHON +from tests_python.debugger_unittest import IS_CPYTHON, IS_PY36_OR_GREATER + +pytestmark = pytest.mark.skipif( + not IS_PY36_OR_GREATER or not IS_CPYTHON or not TEST_CYTHON, + reason="Requires CPython >= 3.6", +) +#!/usr/bin/env python3 +import contextlib +import io +import sys +import unittest + +from _pydevd_frame_eval.vendored.bytecode import ( + BasicBlock, + Bytecode, + Compare, + ControlFlowGraph, + Instr, + Label, + SetLineno, +) +from _pydevd_frame_eval.vendored.bytecode.concrete import OFFSET_AS_INSTRUCTION +from _pydevd_frame_eval.vendored.bytecode.tests import TestCase +from _pydevd_frame_eval.vendored.bytecode.tests import disassemble as _disassemble + + +def disassemble( + source, *, filename="", function=False, remove_last_return_none=False +): + code = _disassemble(source, filename=filename, function=function) + blocks = ControlFlowGraph.from_bytecode(code) + if remove_last_return_none: + # drop LOAD_CONST+RETURN_VALUE to only keep 2 instructions, + # to make unit tests shorter + block = blocks[-1] + test = ( + block[-2].name == "LOAD_CONST" + and block[-2].arg is None + and block[-1].name == "RETURN_VALUE" + ) + if not test: + raise ValueError( + "unable to find implicit RETURN_VALUE : %s" % block[-2:] + ) + del block[-2:] + return blocks + + +class BlockTests(unittest.TestCase): + def test_iter_invalid_types(self): + # Labels are not allowed in basic blocks + block = BasicBlock() + block.append(Label()) + with self.assertRaises(ValueError): + list(block) + with self.assertRaises(ValueError): + block.legalize(1) + + # Only one jump allowed and only at the end + block = BasicBlock() + block2 = BasicBlock() + block.extend([Instr("JUMP_ABSOLUTE", block2), Instr("NOP")]) + with self.assertRaises(ValueError): + list(block) + with self.assertRaises(ValueError): + block.legalize(1) + + # jump target must be a BasicBlock + block = BasicBlock() + label = Label() + block.extend([Instr("JUMP_ABSOLUTE", label)]) + with self.assertRaises(ValueError): + list(block) + with self.assertRaises(ValueError): + block.legalize(1) + + def test_slice(self): + block = BasicBlock([Instr("NOP")]) + next_block = BasicBlock() + block.next_block = next_block + self.assertEqual(block, block[:]) + self.assertIs(next_block, block[:].next_block) + + def test_copy(self): + block = BasicBlock([Instr("NOP")]) + next_block = BasicBlock() + block.next_block = next_block + self.assertEqual(block, block.copy()) + self.assertIs(next_block, block.copy().next_block) + + +class BytecodeBlocksTests(TestCase): + maxDiff = 80 * 100 + + def test_constructor(self): + code = ControlFlowGraph() + self.assertEqual(code.name, "") + self.assertEqual(code.filename, "") + self.assertEqual(code.flags, 0) + self.assertBlocksEqual(code, []) + + def test_attr(self): + source = """ + first_line = 1 + + def func(arg1, arg2, *, arg3): + x = 1 + y = 2 + return arg1 + """ + code = disassemble(source, filename="hello.py", function=True) + self.assertEqual(code.argcount, 2) + self.assertEqual(code.filename, "hello.py") + self.assertEqual(code.first_lineno, 3) + if sys.version_info > (3, 8): + self.assertEqual(code.posonlyargcount, 0) + self.assertEqual(code.kwonlyargcount, 1) + self.assertEqual(code.name, "func") + self.assertEqual(code.cellvars, []) + + code.name = "name" + code.filename = "filename" + code.flags = 123 + self.assertEqual(code.name, "name") + self.assertEqual(code.filename, "filename") + self.assertEqual(code.flags, 123) + + # FIXME: test non-empty cellvars + + def test_add_del_block(self): + code = ControlFlowGraph() + code[0].append(Instr("LOAD_CONST", 0)) + + block = code.add_block() + self.assertEqual(len(code), 2) + self.assertIs(block, code[1]) + + code[1].append(Instr("LOAD_CONST", 2)) + self.assertBlocksEqual(code, [Instr("LOAD_CONST", 0)], [Instr("LOAD_CONST", 2)]) + + del code[0] + self.assertBlocksEqual(code, [Instr("LOAD_CONST", 2)]) + + del code[0] + self.assertEqual(len(code), 0) + + def test_setlineno(self): + # x = 7 + # y = 8 + # z = 9 + code = Bytecode() + code.first_lineno = 3 + code.extend( + [ + Instr("LOAD_CONST", 7), + Instr("STORE_NAME", "x"), + SetLineno(4), + Instr("LOAD_CONST", 8), + Instr("STORE_NAME", "y"), + SetLineno(5), + Instr("LOAD_CONST", 9), + Instr("STORE_NAME", "z"), + ] + ) + + blocks = ControlFlowGraph.from_bytecode(code) + self.assertBlocksEqual( + blocks, + [ + Instr("LOAD_CONST", 7), + Instr("STORE_NAME", "x"), + SetLineno(4), + Instr("LOAD_CONST", 8), + Instr("STORE_NAME", "y"), + SetLineno(5), + Instr("LOAD_CONST", 9), + Instr("STORE_NAME", "z"), + ], + ) + + def test_legalize(self): + code = Bytecode() + code.first_lineno = 3 + code.extend( + [ + Instr("LOAD_CONST", 7), + Instr("STORE_NAME", "x"), + Instr("LOAD_CONST", 8, lineno=4), + Instr("STORE_NAME", "y"), + SetLineno(5), + Instr("LOAD_CONST", 9, lineno=6), + Instr("STORE_NAME", "z"), + ] + ) + + blocks = ControlFlowGraph.from_bytecode(code) + blocks.legalize() + self.assertBlocksEqual( + blocks, + [ + Instr("LOAD_CONST", 7, lineno=3), + Instr("STORE_NAME", "x", lineno=3), + Instr("LOAD_CONST", 8, lineno=4), + Instr("STORE_NAME", "y", lineno=4), + Instr("LOAD_CONST", 9, lineno=5), + Instr("STORE_NAME", "z", lineno=5), + ], + ) + + def test_repr(self): + r = repr(ControlFlowGraph()) + self.assertIn("ControlFlowGraph", r) + self.assertIn("1", r) + + def test_to_bytecode(self): + # if test: + # x = 2 + # x = 5 + blocks = ControlFlowGraph() + blocks.add_block() + blocks.add_block() + blocks[0].extend( + [ + Instr("LOAD_NAME", "test", lineno=1), + Instr("POP_JUMP_IF_FALSE", blocks[2], lineno=1), + ] + ) + + blocks[1].extend( + [ + Instr("LOAD_CONST", 5, lineno=2), + Instr("STORE_NAME", "x", lineno=2), + Instr("JUMP_FORWARD", blocks[2], lineno=2), + ] + ) + + blocks[2].extend( + [ + Instr("LOAD_CONST", 7, lineno=3), + Instr("STORE_NAME", "x", lineno=3), + Instr("LOAD_CONST", None, lineno=3), + Instr("RETURN_VALUE", lineno=3), + ] + ) + + bytecode = blocks.to_bytecode() + label = Label() + self.assertEqual( + bytecode, + [ + Instr("LOAD_NAME", "test", lineno=1), + Instr("POP_JUMP_IF_FALSE", label, lineno=1), + Instr("LOAD_CONST", 5, lineno=2), + Instr("STORE_NAME", "x", lineno=2), + Instr("JUMP_FORWARD", label, lineno=2), + label, + Instr("LOAD_CONST", 7, lineno=3), + Instr("STORE_NAME", "x", lineno=3), + Instr("LOAD_CONST", None, lineno=3), + Instr("RETURN_VALUE", lineno=3), + ], + ) + # FIXME: test other attributes + + def test_label_at_the_end(self): + label = Label() + code = Bytecode( + [ + Instr("LOAD_NAME", "x"), + Instr("UNARY_NOT"), + Instr("POP_JUMP_IF_FALSE", label), + Instr("LOAD_CONST", 9), + Instr("STORE_NAME", "y"), + label, + ] + ) + + cfg = ControlFlowGraph.from_bytecode(code) + self.assertBlocksEqual( + cfg, + [ + Instr("LOAD_NAME", "x"), + Instr("UNARY_NOT"), + Instr("POP_JUMP_IF_FALSE", cfg[2]), + ], + [Instr("LOAD_CONST", 9), Instr("STORE_NAME", "y")], + [], + ) + + def test_from_bytecode(self): + bytecode = Bytecode() + label = Label() + bytecode.extend( + [ + Instr("LOAD_NAME", "test", lineno=1), + Instr("POP_JUMP_IF_FALSE", label, lineno=1), + Instr("LOAD_CONST", 5, lineno=2), + Instr("STORE_NAME", "x", lineno=2), + Instr("JUMP_FORWARD", label, lineno=2), + # dead code! + Instr("LOAD_CONST", 7, lineno=4), + Instr("STORE_NAME", "x", lineno=4), + Label(), # unused label + label, + Label(), # unused label + Instr("LOAD_CONST", None, lineno=4), + Instr("RETURN_VALUE", lineno=4), + ] + ) + + blocks = ControlFlowGraph.from_bytecode(bytecode) + label2 = blocks[3] + self.assertBlocksEqual( + blocks, + [ + Instr("LOAD_NAME", "test", lineno=1), + Instr("POP_JUMP_IF_FALSE", label2, lineno=1), + ], + [ + Instr("LOAD_CONST", 5, lineno=2), + Instr("STORE_NAME", "x", lineno=2), + Instr("JUMP_FORWARD", label2, lineno=2), + ], + [Instr("LOAD_CONST", 7, lineno=4), Instr("STORE_NAME", "x", lineno=4)], + [Instr("LOAD_CONST", None, lineno=4), Instr("RETURN_VALUE", lineno=4)], + ) + # FIXME: test other attributes + + def test_from_bytecode_loop(self): + # for x in (1, 2, 3): + # if x == 2: + # break + # continue + + if sys.version_info < (3, 8): + label_loop_start = Label() + label_loop_exit = Label() + label_loop_end = Label() + + code = Bytecode() + code.extend( + ( + Instr("SETUP_LOOP", label_loop_end, lineno=1), + Instr("LOAD_CONST", (1, 2, 3), lineno=1), + Instr("GET_ITER", lineno=1), + label_loop_start, + Instr("FOR_ITER", label_loop_exit, lineno=1), + Instr("STORE_NAME", "x", lineno=1), + Instr("LOAD_NAME", "x", lineno=2), + Instr("LOAD_CONST", 2, lineno=2), + Instr("COMPARE_OP", Compare.EQ, lineno=2), + Instr("POP_JUMP_IF_FALSE", label_loop_start, lineno=2), + Instr("BREAK_LOOP", lineno=3), + Instr("JUMP_ABSOLUTE", label_loop_start, lineno=4), + Instr("JUMP_ABSOLUTE", label_loop_start, lineno=4), + label_loop_exit, + Instr("POP_BLOCK", lineno=4), + label_loop_end, + Instr("LOAD_CONST", None, lineno=4), + Instr("RETURN_VALUE", lineno=4), + ) + ) + blocks = ControlFlowGraph.from_bytecode(code) + + expected = [ + [Instr("SETUP_LOOP", blocks[8], lineno=1)], + [Instr("LOAD_CONST", (1, 2, 3), lineno=1), Instr("GET_ITER", lineno=1)], + [Instr("FOR_ITER", blocks[7], lineno=1)], + [ + Instr("STORE_NAME", "x", lineno=1), + Instr("LOAD_NAME", "x", lineno=2), + Instr("LOAD_CONST", 2, lineno=2), + Instr("COMPARE_OP", Compare.EQ, lineno=2), + Instr("POP_JUMP_IF_FALSE", blocks[2], lineno=2), + ], + [Instr("BREAK_LOOP", lineno=3)], + [Instr("JUMP_ABSOLUTE", blocks[2], lineno=4)], + [Instr("JUMP_ABSOLUTE", blocks[2], lineno=4)], + [Instr("POP_BLOCK", lineno=4)], + [Instr("LOAD_CONST", None, lineno=4), Instr("RETURN_VALUE", lineno=4)], + ] + self.assertBlocksEqual(blocks, *expected) + else: + label_loop_start = Label() + label_loop_exit = Label() + + code = Bytecode() + code.extend( + ( + Instr("LOAD_CONST", (1, 2, 3), lineno=1), + Instr("GET_ITER", lineno=1), + label_loop_start, + Instr("FOR_ITER", label_loop_exit, lineno=1), + Instr("STORE_NAME", "x", lineno=1), + Instr("LOAD_NAME", "x", lineno=2), + Instr("LOAD_CONST", 2, lineno=2), + Instr("COMPARE_OP", Compare.EQ, lineno=2), + Instr("POP_JUMP_IF_FALSE", label_loop_start, lineno=2), + Instr("JUMP_ABSOLUTE", label_loop_exit, lineno=3), + Instr("JUMP_ABSOLUTE", label_loop_start, lineno=4), + Instr("JUMP_ABSOLUTE", label_loop_start, lineno=4), + label_loop_exit, + Instr("LOAD_CONST", None, lineno=4), + Instr("RETURN_VALUE", lineno=4), + ) + ) + blocks = ControlFlowGraph.from_bytecode(code) + + expected = [ + [Instr("LOAD_CONST", (1, 2, 3), lineno=1), Instr("GET_ITER", lineno=1)], + [Instr("FOR_ITER", blocks[6], lineno=1)], + [ + Instr("STORE_NAME", "x", lineno=1), + Instr("LOAD_NAME", "x", lineno=2), + Instr("LOAD_CONST", 2, lineno=2), + Instr("COMPARE_OP", Compare.EQ, lineno=2), + Instr("POP_JUMP_IF_FALSE", blocks[1], lineno=2), + ], + [Instr("JUMP_ABSOLUTE", blocks[6], lineno=3)], + [Instr("JUMP_ABSOLUTE", blocks[1], lineno=4)], + [Instr("JUMP_ABSOLUTE", blocks[1], lineno=4)], + [Instr("LOAD_CONST", None, lineno=4), Instr("RETURN_VALUE", lineno=4)], + ] + self.assertBlocksEqual(blocks, *expected) + + +class BytecodeBlocksFunctionalTests(TestCase): + def test_eq(self): + # compare codes with multiple blocks and labels, + # Code.__eq__() renumbers labels to get equal labels + source = "x = 1 if test else 2" + code1 = disassemble(source) + code2 = disassemble(source) + self.assertEqual(code1, code2) + + # Type mismatch + self.assertFalse(code1 == 1) + + # argnames mismatch + cfg = ControlFlowGraph() + cfg.argnames = 10 + self.assertFalse(code1 == cfg) + + # instr mismatch + cfg = ControlFlowGraph() + cfg.argnames = code1.argnames + self.assertFalse(code1 == cfg) + + def check_getitem(self, code): + # check internal Code block indexes (index by index, index by label) + for block_index, block in enumerate(code): + self.assertIs(code[block_index], block) + self.assertIs(code[block], block) + self.assertEqual(code.get_block_index(block), block_index) + + def test_delitem(self): + cfg = ControlFlowGraph() + b = cfg.add_block() + del cfg[b] + self.assertEqual(len(cfg.get_instructions()), 0) + + def sample_code(self): + code = disassemble("x = 1", remove_last_return_none=True) + self.assertBlocksEqual( + code, [Instr("LOAD_CONST", 1, lineno=1), Instr("STORE_NAME", "x", lineno=1)] + ) + return code + + def test_split_block(self): + code = self.sample_code() + code[0].append(Instr("NOP", lineno=1)) + + label = code.split_block(code[0], 2) + self.assertIs(label, code[1]) + self.assertBlocksEqual( + code, + [Instr("LOAD_CONST", 1, lineno=1), Instr("STORE_NAME", "x", lineno=1)], + [Instr("NOP", lineno=1)], + ) + self.check_getitem(code) + + label2 = code.split_block(code[0], 1) + self.assertIs(label2, code[1]) + self.assertBlocksEqual( + code, + [Instr("LOAD_CONST", 1, lineno=1)], + [Instr("STORE_NAME", "x", lineno=1)], + [Instr("NOP", lineno=1)], + ) + self.check_getitem(code) + + with self.assertRaises(TypeError): + code.split_block(1, 1) + + with self.assertRaises(ValueError) as e: + code.split_block(code[0], -2) + self.assertIn("positive", e.exception.args[0]) + + def test_split_block_end(self): + code = self.sample_code() + + # split at the end of the last block requires to add a new empty block + label = code.split_block(code[0], 2) + self.assertIs(label, code[1]) + self.assertBlocksEqual( + code, + [Instr("LOAD_CONST", 1, lineno=1), Instr("STORE_NAME", "x", lineno=1)], + [], + ) + self.check_getitem(code) + + # split at the end of a block which is not the end doesn't require to + # add a new block + label = code.split_block(code[0], 2) + self.assertIs(label, code[1]) + self.assertBlocksEqual( + code, + [Instr("LOAD_CONST", 1, lineno=1), Instr("STORE_NAME", "x", lineno=1)], + [], + ) + + def test_split_block_dont_split(self): + code = self.sample_code() + + # FIXME: is it really useful to support that? + block = code.split_block(code[0], 0) + self.assertIs(block, code[0]) + self.assertBlocksEqual( + code, [Instr("LOAD_CONST", 1, lineno=1), Instr("STORE_NAME", "x", lineno=1)] + ) + + def test_split_block_error(self): + code = self.sample_code() + + with self.assertRaises(ValueError): + # invalid index + code.split_block(code[0], 3) + + def test_to_code(self): + # test resolution of jump labels + bytecode = ControlFlowGraph() + bytecode.first_lineno = 3 + bytecode.argcount = 3 + if sys.version_info > (3, 8): + bytecode.posonlyargcount = 0 + bytecode.kwonlyargcount = 2 + bytecode.name = "func" + bytecode.filename = "hello.py" + bytecode.flags = 0x43 + bytecode.argnames = ("arg", "arg2", "arg3", "kwonly", "kwonly2") + bytecode.docstring = None + block0 = bytecode[0] + block1 = bytecode.add_block() + block2 = bytecode.add_block() + block0.extend( + [ + Instr("LOAD_FAST", "x", lineno=4), + Instr("POP_JUMP_IF_FALSE", block2, lineno=4), + ] + ) + block1.extend( + [Instr("LOAD_FAST", "arg", lineno=5), Instr("STORE_FAST", "x", lineno=5)] + ) + block2.extend( + [ + Instr("LOAD_CONST", 3, lineno=6), + Instr("STORE_FAST", "x", lineno=6), + Instr("LOAD_FAST", "x", lineno=7), + Instr("RETURN_VALUE", lineno=7), + ] + ) + + if OFFSET_AS_INSTRUCTION: + # The argument of the jump is divided by 2 + expected = ( + b"|\x05" b"r\x04" b"|\x00" b"}\x05" b"d\x01" b"}\x05" b"|\x05" b"S\x00" + ) + else: + expected = ( + b"|\x05" b"r\x08" b"|\x00" b"}\x05" b"d\x01" b"}\x05" b"|\x05" b"S\x00" + ) + + code = bytecode.to_code() + self.assertEqual(code.co_consts, (None, 3)) + self.assertEqual(code.co_argcount, 3) + if sys.version_info > (3, 8): + self.assertEqual(code.co_posonlyargcount, 0) + self.assertEqual(code.co_kwonlyargcount, 2) + self.assertEqual(code.co_nlocals, 6) + self.assertEqual(code.co_stacksize, 1) + # FIXME: don't use hardcoded constants + self.assertEqual(code.co_flags, 0x43) + self.assertEqual(code.co_code, expected) + self.assertEqual(code.co_names, ()) + self.assertEqual( + code.co_varnames, ("arg", "arg2", "arg3", "kwonly", "kwonly2", "x") + ) + self.assertEqual(code.co_filename, "hello.py") + self.assertEqual(code.co_name, "func") + self.assertEqual(code.co_firstlineno, 3) + + # verify stacksize argument is honored + explicit_stacksize = code.co_stacksize + 42 + code = bytecode.to_code(stacksize=explicit_stacksize) + self.assertEqual(code.co_stacksize, explicit_stacksize) + + def test_get_block_index(self): + blocks = ControlFlowGraph() + block0 = blocks[0] + block1 = blocks.add_block() + block2 = blocks.add_block() + self.assertEqual(blocks.get_block_index(block0), 0) + self.assertEqual(blocks.get_block_index(block1), 1) + self.assertEqual(blocks.get_block_index(block2), 2) + + other_block = BasicBlock() + self.assertRaises(ValueError, blocks.get_block_index, other_block) + + +class CFGStacksizeComputationTests(TestCase): + def check_stack_size(self, func): + code = func.__code__ + bytecode = Bytecode.from_code(code) + cfg = ControlFlowGraph.from_bytecode(bytecode) + self.assertEqual(code.co_stacksize, cfg.compute_stacksize()) + + def test_empty_code(self): + cfg = ControlFlowGraph() + del cfg[0] + self.assertEqual(cfg.compute_stacksize(), 0) + + def test_handling_of_set_lineno(self): + code = Bytecode() + code.first_lineno = 3 + code.extend( + [ + Instr("LOAD_CONST", 7), + Instr("STORE_NAME", "x"), + SetLineno(4), + Instr("LOAD_CONST", 8), + Instr("STORE_NAME", "y"), + SetLineno(5), + Instr("LOAD_CONST", 9), + Instr("STORE_NAME", "z"), + ] + ) + self.assertEqual(code.compute_stacksize(), 1) + + def test_invalid_stacksize(self): + code = Bytecode() + code.extend([Instr("STORE_NAME", "x")]) + with self.assertRaises(RuntimeError): + code.compute_stacksize() + + def test_stack_size_computation_and(self): + def test(arg1, *args, **kwargs): # pragma: no cover + return arg1 and args # Test JUMP_IF_FALSE_OR_POP + + self.check_stack_size(test) + + def test_stack_size_computation_or(self): + def test(arg1, *args, **kwargs): # pragma: no cover + return arg1 or args # Test JUMP_IF_TRUE_OR_POP + + self.check_stack_size(test) + + def test_stack_size_computation_if_else(self): + def test(arg1, *args, **kwargs): # pragma: no cover + if args: + return 0 + elif kwargs: + return 1 + else: + return 2 + + self.check_stack_size(test) + + def test_stack_size_computation_for_loop_continue(self): + def test(arg1, *args, **kwargs): # pragma: no cover + for k in kwargs: + if k in args: + continue + else: + return 1 + + self.check_stack_size(test) + + def test_stack_size_computation_while_loop_break(self): + def test(arg1, *args, **kwargs): # pragma: no cover + while True: + if arg1: + break + + self.check_stack_size(test) + + def test_stack_size_computation_with(self): + def test(arg1, *args, **kwargs): # pragma: no cover + with open(arg1) as f: + return f.read() + + self.check_stack_size(test) + + def test_stack_size_computation_try_except(self): + def test(arg1, *args, **kwargs): # pragma: no cover + try: + return args[0] + except Exception: + return 2 + + self.check_stack_size(test) + + def test_stack_size_computation_try_finally(self): + def test(arg1, *args, **kwargs): # pragma: no cover + try: + return args[0] + finally: + return 2 + + self.check_stack_size(test) + + def test_stack_size_computation_try_except_finally(self): + def test(arg1, *args, **kwargs): # pragma: no cover + try: + return args[0] + except Exception: + return 2 + finally: + print("Interrupt") + + self.check_stack_size(test) + + def test_stack_size_computation_try_except_else_finally(self): + def test(arg1, *args, **kwargs): # pragma: no cover + try: + return args[0] + except Exception: + return 2 + else: + return arg1 + finally: + print("Interrupt") + + self.check_stack_size(test) + + def test_stack_size_computation_nested_try_except_finally(self): + def test(arg1, *args, **kwargs): # pragma: no cover + k = 1 + try: + getattr(arg1, k) + except AttributeError: + pass + except Exception: + try: + assert False + except Exception: + return 2 + finally: + print("unexpected") + finally: + print(f"attempted to get {k}") + + self.check_stack_size(test) + + def test_stack_size_computation_nested_try_except_else_finally(self): + def test(*args, **kwargs): + try: + v = args[1] + except IndexError: + try: + w = kwargs["value"] + except KeyError: + return -1 + else: + return w + finally: + print("second finally") + else: + return v + finally: + print("first finally") + + # A direct comparison of the stack depth fails because CPython + # generate dead code that is used in stack computation. + cpython_stacksize = test.__code__.co_stacksize + test.__code__ = Bytecode.from_code(test.__code__).to_code() + self.assertLessEqual(test.__code__.co_stacksize, cpython_stacksize) + with contextlib.redirect_stdout(io.StringIO()) as stdout: + self.assertEqual(test(1, 4), 4) + self.assertEqual(stdout.getvalue(), "first finally\n") + + with contextlib.redirect_stdout(io.StringIO()) as stdout: + self.assertEqual(test([], value=3), 3) + self.assertEqual(stdout.getvalue(), "second finally\nfirst finally\n") + + with contextlib.redirect_stdout(io.StringIO()) as stdout: + self.assertEqual(test([], name=None), -1) + self.assertEqual(stdout.getvalue(), "second finally\nfirst finally\n") + + def test_stack_size_with_dead_code(self): + # Simply demonstrate more directly the previously mentioned issue. + def test(*args): # pragma: no cover + return 0 + try: + a = args[0] + except IndexError: + return -1 + else: + return a + + test.__code__ = Bytecode.from_code(test.__code__).to_code() + self.assertEqual(test.__code__.co_stacksize, 1) + self.assertEqual(test(1), 0) + + def test_huge_code_with_numerous_blocks(self): + def base_func(x): + pass + + def mk_if_then_else(depth): + instructions = [] + for i in range(depth): + label_else = Label() + instructions.extend( + [ + Instr("LOAD_FAST", "x"), + Instr("POP_JUMP_IF_FALSE", label_else), + Instr("LOAD_GLOBAL", f"f{i}"), + Instr("RETURN_VALUE"), + label_else, + ] + ) + instructions.extend([Instr("LOAD_CONST", None), Instr("RETURN_VALUE")]) + return instructions + + bytecode = Bytecode(mk_if_then_else(5000)) + bytecode.compute_stacksize() + + +if __name__ == "__main__": + unittest.main() # pragma: no cover diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_code.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_code.py new file mode 100644 index 000000000..9314b0fef --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_code.py @@ -0,0 +1,100 @@ +import pytest +from tests_python.debug_constants import TEST_CYTHON +from tests_python.debugger_unittest import IS_CPYTHON, IS_PY36_OR_GREATER + +pytestmark = pytest.mark.skipif( + not IS_PY36_OR_GREATER or not IS_CPYTHON or not TEST_CYTHON, + reason="Requires CPython >= 3.6", +) +import unittest + +from _pydevd_frame_eval.vendored.bytecode import ( + Bytecode, + ConcreteBytecode, + ControlFlowGraph, +) +from _pydevd_frame_eval.vendored.bytecode.tests import get_code + + +class CodeTests(unittest.TestCase): + """Check that bytecode.from_code(code).to_code() returns code.""" + + def check(self, source, function=False): + ref_code = get_code(source, function=function) + + code = ConcreteBytecode.from_code(ref_code).to_code() + self.assertEqual(code, ref_code) + + code = Bytecode.from_code(ref_code).to_code() + self.assertEqual(code, ref_code) + + bytecode = Bytecode.from_code(ref_code) + blocks = ControlFlowGraph.from_bytecode(bytecode) + code = blocks.to_bytecode().to_code() + self.assertEqual(code, ref_code) + + def test_loop(self): + self.check( + """ + for x in range(1, 10): + x += 1 + if x == 3: + continue + x -= 1 + if x > 7: + break + x = 0 + print(x) + """ + ) + + def test_varargs(self): + self.check( + """ + def func(a, b, *varargs): + pass + """, + function=True, + ) + + def test_kwargs(self): + self.check( + """ + def func(a, b, **kwargs): + pass + """, + function=True, + ) + + def test_kwonlyargs(self): + self.check( + """ + def func(*, arg, arg2): + pass + """, + function=True, + ) + + # Added because Python 3.10 added some special beahavior with respect to + # generators in term of stack size + def test_generator_func(self): + self.check( + """ + def func(arg, arg2): + yield + """, + function=True, + ) + + def test_async_func(self): + self.check( + """ + async def func(arg, arg2): + pass + """, + function=True, + ) + + +if __name__ == "__main__": + unittest.main() # pragma: no cover diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_concrete.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_concrete.py new file mode 100644 index 000000000..90287f020 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_concrete.py @@ -0,0 +1,1517 @@ +import pytest +from tests_python.debug_constants import TEST_CYTHON +from tests_python.debugger_unittest import IS_CPYTHON, IS_PY36_OR_GREATER + +pytestmark = pytest.mark.skipif( + not IS_PY36_OR_GREATER or not IS_CPYTHON or not TEST_CYTHON, + reason="Requires CPython >= 3.6", +) +#!/usr/bin/env python3 +import sys +import textwrap +import types +import unittest + +import opcode + +from _pydevd_frame_eval.vendored.bytecode import ( + UNSET, + Bytecode, + CellVar, + CompilerFlags, + ConcreteBytecode, + ConcreteInstr, + FreeVar, + Instr, + Label, + SetLineno, +) +from _pydevd_frame_eval.vendored.bytecode.concrete import OFFSET_AS_INSTRUCTION +from _pydevd_frame_eval.vendored.bytecode.tests import TestCase, get_code + + +class ConcreteInstrTests(TestCase): + def test_constructor(self): + with self.assertRaises(ValueError): + # need an argument + ConcreteInstr("LOAD_CONST") + with self.assertRaises(ValueError): + # must not have an argument + ConcreteInstr("ROT_TWO", 33) + + # invalid argument + with self.assertRaises(TypeError): + ConcreteInstr("LOAD_CONST", 1.0) + with self.assertRaises(ValueError): + ConcreteInstr("LOAD_CONST", -1) + with self.assertRaises(TypeError): + ConcreteInstr("LOAD_CONST", 5, lineno=1.0) + with self.assertRaises(ValueError): + ConcreteInstr("LOAD_CONST", 5, lineno=-1) + + # test maximum argument + with self.assertRaises(ValueError): + ConcreteInstr("LOAD_CONST", 2147483647 + 1) + instr = ConcreteInstr("LOAD_CONST", 2147483647) + self.assertEqual(instr.arg, 2147483647) + + # test meaningless extended args + instr = ConcreteInstr("LOAD_FAST", 8, lineno=3, extended_args=1) + self.assertEqual(instr.name, "LOAD_FAST") + self.assertEqual(instr.arg, 8) + self.assertEqual(instr.lineno, 3) + self.assertEqual(instr.size, 4) + + def test_attr(self): + instr = ConcreteInstr("LOAD_CONST", 5, lineno=12) + self.assertEqual(instr.name, "LOAD_CONST") + self.assertEqual(instr.opcode, 100) + self.assertEqual(instr.arg, 5) + self.assertEqual(instr.lineno, 12) + self.assertEqual(instr.size, 2) + + def test_set(self): + instr = ConcreteInstr("LOAD_CONST", 5, lineno=3) + + instr.set("NOP") + self.assertEqual(instr.name, "NOP") + self.assertIs(instr.arg, UNSET) + self.assertEqual(instr.lineno, 3) + + instr.set("LOAD_FAST", 8) + self.assertEqual(instr.name, "LOAD_FAST") + self.assertEqual(instr.arg, 8) + self.assertEqual(instr.lineno, 3) + + # invalid + with self.assertRaises(ValueError): + instr.set("LOAD_CONST") + with self.assertRaises(ValueError): + instr.set("NOP", 5) + + def test_set_attr(self): + instr = ConcreteInstr("LOAD_CONST", 5, lineno=12) + + # operator name + instr.name = "LOAD_FAST" + self.assertEqual(instr.name, "LOAD_FAST") + self.assertEqual(instr.opcode, 124) + self.assertRaises(TypeError, setattr, instr, "name", 3) + self.assertRaises(ValueError, setattr, instr, "name", "xxx") + + # operator code + instr.opcode = 100 + self.assertEqual(instr.name, "LOAD_CONST") + self.assertEqual(instr.opcode, 100) + self.assertRaises(ValueError, setattr, instr, "opcode", -12) + self.assertRaises(TypeError, setattr, instr, "opcode", "abc") + + # extended argument + instr.arg = 0x1234ABCD + self.assertEqual(instr.arg, 0x1234ABCD) + self.assertEqual(instr.size, 8) + + # small argument + instr.arg = 0 + self.assertEqual(instr.arg, 0) + self.assertEqual(instr.size, 2) + + # invalid argument + self.assertRaises(ValueError, setattr, instr, "arg", -1) + self.assertRaises(ValueError, setattr, instr, "arg", 2147483647 + 1) + + # size attribute is read-only + self.assertRaises(AttributeError, setattr, instr, "size", 3) + + # lineno + instr.lineno = 33 + self.assertEqual(instr.lineno, 33) + self.assertRaises(TypeError, setattr, instr, "lineno", 1.0) + self.assertRaises(ValueError, setattr, instr, "lineno", -1) + + def test_size(self): + self.assertEqual(ConcreteInstr("ROT_TWO").size, 2) + self.assertEqual(ConcreteInstr("LOAD_CONST", 3).size, 2) + self.assertEqual(ConcreteInstr("LOAD_CONST", 0x1234ABCD).size, 8) + + def test_disassemble(self): + code = b"\t\x00d\x03" + instr = ConcreteInstr.disassemble(1, code, 0) + self.assertEqual(instr, ConcreteInstr("NOP", lineno=1)) + + instr = ConcreteInstr.disassemble(2, code, 1 if OFFSET_AS_INSTRUCTION else 2) + self.assertEqual(instr, ConcreteInstr("LOAD_CONST", 3, lineno=2)) + + code = b"\x90\x12\x904\x90\xabd\xcd" + + instr = ConcreteInstr.disassemble(3, code, 0) + self.assertEqual(instr, ConcreteInstr("EXTENDED_ARG", 0x12, lineno=3)) + + def test_assemble(self): + instr = ConcreteInstr("NOP") + self.assertEqual(instr.assemble(), b"\t\x00") + + instr = ConcreteInstr("LOAD_CONST", 3) + self.assertEqual(instr.assemble(), b"d\x03") + + instr = ConcreteInstr("LOAD_CONST", 0x1234ABCD) + self.assertEqual( + instr.assemble(), + (b"\x90\x12\x904\x90\xabd\xcd"), + ) + + instr = ConcreteInstr("LOAD_CONST", 3, extended_args=1) + self.assertEqual( + instr.assemble(), + (b"\x90\x00d\x03"), + ) + + def test_get_jump_target(self): + jump_abs = ConcreteInstr("JUMP_ABSOLUTE", 3) + self.assertEqual(jump_abs.get_jump_target(100), 3) + + jump_forward = ConcreteInstr("JUMP_FORWARD", 5) + self.assertEqual( + jump_forward.get_jump_target(10), 16 if OFFSET_AS_INSTRUCTION else 17 + ) + + +class ConcreteBytecodeTests(TestCase): + def test_repr(self): + r = repr(ConcreteBytecode()) + self.assertIn("ConcreteBytecode", r) + self.assertIn("0", r) + + def test_eq(self): + code = ConcreteBytecode() + self.assertFalse(code == 1) + + for name, val in ( + ("names", ["a"]), + ("varnames", ["a"]), + ("consts", [1]), + ("argcount", 1), + ("kwonlyargcount", 2), + ("flags", CompilerFlags(CompilerFlags.GENERATOR)), + ("first_lineno", 10), + ("filename", "xxxx.py"), + ("name", "__x"), + ("docstring", "x-x-x"), + ("cellvars", [CellVar("x")]), + ("freevars", [FreeVar("x")]), + ): + c = ConcreteBytecode() + setattr(c, name, val) + # For obscure reasons using assertNotEqual here fail + self.assertFalse(code == c) + + if sys.version_info > (3, 8): + c = ConcreteBytecode() + c.posonlyargcount = 10 + self.assertFalse(code == c) + + c = ConcreteBytecode() + c.consts = [1] + code.consts = [1] + c.append(ConcreteInstr("LOAD_CONST", 0)) + self.assertFalse(code == c) + + def test_attr(self): + code_obj = get_code("x = 5") + code = ConcreteBytecode.from_code(code_obj) + self.assertEqual(code.consts, [5, None]) + self.assertEqual(code.names, ["x"]) + self.assertEqual(code.varnames, []) + self.assertEqual(code.freevars, []) + self.assertListEqual( + list(code), + [ + ConcreteInstr("LOAD_CONST", 0, lineno=1), + ConcreteInstr("STORE_NAME", 0, lineno=1), + ConcreteInstr("LOAD_CONST", 1, lineno=1), + ConcreteInstr("RETURN_VALUE", lineno=1), + ], + ) + # FIXME: test other attributes + + def test_invalid_types(self): + code = ConcreteBytecode() + code.append(Label()) + with self.assertRaises(ValueError): + list(code) + with self.assertRaises(ValueError): + code.legalize() + with self.assertRaises(ValueError): + ConcreteBytecode([Label()]) + + def test_to_code_lnotab(self): + # We use an actual function for the simple case to + # ensure we get lnotab right + def f(): + # + # + x = 7 # noqa + y = 8 # noqa + z = 9 # noqa + + fl = f.__code__.co_firstlineno + concrete = ConcreteBytecode() + concrete.consts = [None, 7, 8, 9] + concrete.varnames = ["x", "y", "z"] + concrete.first_lineno = fl + concrete.extend( + [ + SetLineno(fl + 3), + ConcreteInstr("LOAD_CONST", 1), + ConcreteInstr("STORE_FAST", 0), + SetLineno(fl + 4), + ConcreteInstr("LOAD_CONST", 2), + ConcreteInstr("STORE_FAST", 1), + SetLineno(fl + 5), + ConcreteInstr("LOAD_CONST", 3), + ConcreteInstr("STORE_FAST", 2), + ConcreteInstr("LOAD_CONST", 0), + ConcreteInstr("RETURN_VALUE"), + ] + ) + + code = concrete.to_code() + self.assertEqual(code.co_code, f.__code__.co_code) + self.assertEqual(code.co_lnotab, f.__code__.co_lnotab) + if sys.version_info >= (3, 10): + self.assertEqual(code.co_linetable, f.__code__.co_linetable) + + def test_negative_lnotab(self): + # x = 7 + # y = 8 + concrete = ConcreteBytecode( + [ + ConcreteInstr("LOAD_CONST", 0), + ConcreteInstr("STORE_NAME", 0), + # line number goes backward! + SetLineno(2), + ConcreteInstr("LOAD_CONST", 1), + ConcreteInstr("STORE_NAME", 1), + ] + ) + concrete.consts = [7, 8] + concrete.names = ["x", "y"] + concrete.first_lineno = 5 + + code = concrete.to_code() + expected = b"d\x00Z\x00d\x01Z\x01" + self.assertEqual(code.co_code, expected) + self.assertEqual(code.co_firstlineno, 5) + self.assertEqual(code.co_lnotab, b"\x04\xfd") + + def test_extended_lnotab(self): + # x = 7 + # 200 blank lines + # y = 8 + concrete = ConcreteBytecode( + [ + ConcreteInstr("LOAD_CONST", 0), + SetLineno(1 + 128), + ConcreteInstr("STORE_NAME", 0), + # line number goes backward! + SetLineno(1 + 129), + ConcreteInstr("LOAD_CONST", 1), + SetLineno(1), + ConcreteInstr("STORE_NAME", 1), + ] + ) + concrete.consts = [7, 8] + concrete.names = ["x", "y"] + concrete.first_lineno = 1 + + code = concrete.to_code() + expected = b"d\x00Z\x00d\x01Z\x01" + self.assertEqual(code.co_code, expected) + self.assertEqual(code.co_firstlineno, 1) + self.assertEqual(code.co_lnotab, b"\x02\x7f\x00\x01\x02\x01\x02\x80\x00\xff") + + def test_extended_lnotab2(self): + # x = 7 + # 200 blank lines + # y = 8 + base_code = compile("x = 7" + "\n" * 200 + "y = 8", "", "exec") + concrete = ConcreteBytecode( + [ + ConcreteInstr("LOAD_CONST", 0), + ConcreteInstr("STORE_NAME", 0), + SetLineno(201), + ConcreteInstr("LOAD_CONST", 1), + ConcreteInstr("STORE_NAME", 1), + ConcreteInstr("LOAD_CONST", 2), + ConcreteInstr("RETURN_VALUE"), + ] + ) + concrete.consts = [None, 7, 8] + concrete.names = ["x", "y"] + concrete.first_lineno = 1 + + code = concrete.to_code() + self.assertEqual(code.co_code, base_code.co_code) + self.assertEqual(code.co_firstlineno, base_code.co_firstlineno) + self.assertEqual(code.co_lnotab, base_code.co_lnotab) + if sys.version_info >= (3, 10): + self.assertEqual(code.co_linetable, base_code.co_linetable) + + def test_to_bytecode_consts(self): + # x = -0.0 + # x = +0.0 + # + # code optimized by the CPython 3.6 peephole optimizer which emits + # duplicated constants (0.0 is twice in consts). + code = ConcreteBytecode() + code.consts = [0.0, None, -0.0, 0.0] + code.names = ["x", "y"] + code.extend( + [ + ConcreteInstr("LOAD_CONST", 2, lineno=1), + ConcreteInstr("STORE_NAME", 0, lineno=1), + ConcreteInstr("LOAD_CONST", 3, lineno=2), + ConcreteInstr("STORE_NAME", 1, lineno=2), + ConcreteInstr("LOAD_CONST", 1, lineno=2), + ConcreteInstr("RETURN_VALUE", lineno=2), + ] + ) + + code = code.to_bytecode().to_concrete_bytecode() + # the conversion changes the constant order: the order comes from + # the order of LOAD_CONST instructions + self.assertEqual(code.consts, [-0.0, 0.0, None]) + code.names = ["x", "y"] + self.assertListEqual( + list(code), + [ + ConcreteInstr("LOAD_CONST", 0, lineno=1), + ConcreteInstr("STORE_NAME", 0, lineno=1), + ConcreteInstr("LOAD_CONST", 1, lineno=2), + ConcreteInstr("STORE_NAME", 1, lineno=2), + ConcreteInstr("LOAD_CONST", 2, lineno=2), + ConcreteInstr("RETURN_VALUE", lineno=2), + ], + ) + + def test_cellvar(self): + concrete = ConcreteBytecode() + concrete.cellvars = ["x"] + concrete.append(ConcreteInstr("LOAD_DEREF", 0)) + code = concrete.to_code() + + concrete = ConcreteBytecode.from_code(code) + self.assertEqual(concrete.cellvars, ["x"]) + self.assertEqual(concrete.freevars, []) + self.assertEqual(list(concrete), [ConcreteInstr("LOAD_DEREF", 0, lineno=1)]) + + bytecode = concrete.to_bytecode() + self.assertEqual(bytecode.cellvars, ["x"]) + self.assertEqual(list(bytecode), [Instr("LOAD_DEREF", CellVar("x"), lineno=1)]) + + def test_freevar(self): + concrete = ConcreteBytecode() + concrete.freevars = ["x"] + concrete.append(ConcreteInstr("LOAD_DEREF", 0)) + code = concrete.to_code() + + concrete = ConcreteBytecode.from_code(code) + self.assertEqual(concrete.cellvars, []) + self.assertEqual(concrete.freevars, ["x"]) + self.assertEqual(list(concrete), [ConcreteInstr("LOAD_DEREF", 0, lineno=1)]) + + bytecode = concrete.to_bytecode() + self.assertEqual(bytecode.cellvars, []) + self.assertEqual(list(bytecode), [Instr("LOAD_DEREF", FreeVar("x"), lineno=1)]) + + def test_cellvar_freevar(self): + concrete = ConcreteBytecode() + concrete.cellvars = ["cell"] + concrete.freevars = ["free"] + concrete.append(ConcreteInstr("LOAD_DEREF", 0)) + concrete.append(ConcreteInstr("LOAD_DEREF", 1)) + code = concrete.to_code() + + concrete = ConcreteBytecode.from_code(code) + self.assertEqual(concrete.cellvars, ["cell"]) + self.assertEqual(concrete.freevars, ["free"]) + self.assertEqual( + list(concrete), + [ + ConcreteInstr("LOAD_DEREF", 0, lineno=1), + ConcreteInstr("LOAD_DEREF", 1, lineno=1), + ], + ) + + bytecode = concrete.to_bytecode() + self.assertEqual(bytecode.cellvars, ["cell"]) + self.assertEqual( + list(bytecode), + [ + Instr("LOAD_DEREF", CellVar("cell"), lineno=1), + Instr("LOAD_DEREF", FreeVar("free"), lineno=1), + ], + ) + + def test_load_classderef(self): + concrete = ConcreteBytecode() + concrete.cellvars = ["__class__"] + concrete.freevars = ["__class__"] + concrete.extend( + [ConcreteInstr("LOAD_CLASSDEREF", 1), ConcreteInstr("STORE_DEREF", 1)] + ) + + bytecode = concrete.to_bytecode() + self.assertEqual(bytecode.freevars, ["__class__"]) + self.assertEqual(bytecode.cellvars, ["__class__"]) + self.assertEqual( + list(bytecode), + [ + Instr("LOAD_CLASSDEREF", FreeVar("__class__"), lineno=1), + Instr("STORE_DEREF", FreeVar("__class__"), lineno=1), + ], + ) + + concrete = bytecode.to_concrete_bytecode() + self.assertEqual(concrete.freevars, ["__class__"]) + self.assertEqual(concrete.cellvars, ["__class__"]) + self.assertEqual( + list(concrete), + [ + ConcreteInstr("LOAD_CLASSDEREF", 1, lineno=1), + ConcreteInstr("STORE_DEREF", 1, lineno=1), + ], + ) + + code = concrete.to_code() + self.assertEqual(code.co_freevars, ("__class__",)) + self.assertEqual(code.co_cellvars, ("__class__",)) + self.assertEqual( + code.co_code, + b"\x94\x01\x89\x01", + ) + + def test_explicit_stacksize(self): + # Passing stacksize=... to ConcreteBytecode.to_code should result in a + # code object with the specified stacksize. We pass some silly values + # and assert that they are honored. + code_obj = get_code("print('%s' % (a,b,c))") + original_stacksize = code_obj.co_stacksize + concrete = ConcreteBytecode.from_code(code_obj) + + # First with something bigger than necessary. + explicit_stacksize = original_stacksize + 42 + new_code_obj = concrete.to_code(stacksize=explicit_stacksize) + self.assertEqual(new_code_obj.co_stacksize, explicit_stacksize) + + # Then with something bogus. We probably don't want to advertise this + # in the documentation. If this fails then decide if it's for good + # reason, and remove if so. + explicit_stacksize = 0 + new_code_obj = concrete.to_code(stacksize=explicit_stacksize) + self.assertEqual(new_code_obj.co_stacksize, explicit_stacksize) + + def test_legalize(self): + concrete = ConcreteBytecode() + concrete.first_lineno = 3 + concrete.consts = [7, 8, 9] + concrete.names = ["x", "y", "z"] + concrete.extend( + [ + ConcreteInstr("LOAD_CONST", 0), + ConcreteInstr("STORE_NAME", 0), + ConcreteInstr("LOAD_CONST", 1, lineno=4), + ConcreteInstr("STORE_NAME", 1), + SetLineno(5), + ConcreteInstr("LOAD_CONST", 2, lineno=6), + ConcreteInstr("STORE_NAME", 2), + ] + ) + + concrete.legalize() + self.assertListEqual( + list(concrete), + [ + ConcreteInstr("LOAD_CONST", 0, lineno=3), + ConcreteInstr("STORE_NAME", 0, lineno=3), + ConcreteInstr("LOAD_CONST", 1, lineno=4), + ConcreteInstr("STORE_NAME", 1, lineno=4), + ConcreteInstr("LOAD_CONST", 2, lineno=5), + ConcreteInstr("STORE_NAME", 2, lineno=5), + ], + ) + + def test_slice(self): + concrete = ConcreteBytecode() + concrete.first_lineno = 3 + concrete.consts = [7, 8, 9] + concrete.names = ["x", "y", "z"] + concrete.extend( + [ + ConcreteInstr("LOAD_CONST", 0), + ConcreteInstr("STORE_NAME", 0), + SetLineno(4), + ConcreteInstr("LOAD_CONST", 1), + ConcreteInstr("STORE_NAME", 1), + SetLineno(5), + ConcreteInstr("LOAD_CONST", 2), + ConcreteInstr("STORE_NAME", 2), + ] + ) + self.assertEqual(concrete, concrete[:]) + + def test_copy(self): + concrete = ConcreteBytecode() + concrete.first_lineno = 3 + concrete.consts = [7, 8, 9] + concrete.names = ["x", "y", "z"] + concrete.extend( + [ + ConcreteInstr("LOAD_CONST", 0), + ConcreteInstr("STORE_NAME", 0), + SetLineno(4), + ConcreteInstr("LOAD_CONST", 1), + ConcreteInstr("STORE_NAME", 1), + SetLineno(5), + ConcreteInstr("LOAD_CONST", 2), + ConcreteInstr("STORE_NAME", 2), + ] + ) + self.assertEqual(concrete, concrete.copy()) + + +class ConcreteFromCodeTests(TestCase): + def test_extended_arg(self): + # Create a code object from arbitrary bytecode + co_code = b"\x90\x12\x904\x90\xabd\xcd" + code = get_code("x=1") + args = ( + (code.co_argcount,) + if sys.version_info < (3, 8) + else (code.co_argcount, code.co_posonlyargcount) + ) + args += ( + code.co_kwonlyargcount, + code.co_nlocals, + code.co_stacksize, + code.co_flags, + co_code, + code.co_consts, + code.co_names, + code.co_varnames, + code.co_filename, + code.co_name, + code.co_firstlineno, + code.co_linetable if sys.version_info >= (3, 10) else code.co_lnotab, + code.co_freevars, + code.co_cellvars, + ) + + code = types.CodeType(*args) + + # without EXTENDED_ARG opcode + bytecode = ConcreteBytecode.from_code(code) + self.assertListEqual( + list(bytecode), [ConcreteInstr("LOAD_CONST", 0x1234ABCD, lineno=1)] + ) + + # with EXTENDED_ARG opcode + bytecode = ConcreteBytecode.from_code(code, extended_arg=True) + expected = [ + ConcreteInstr("EXTENDED_ARG", 0x12, lineno=1), + ConcreteInstr("EXTENDED_ARG", 0x34, lineno=1), + ConcreteInstr("EXTENDED_ARG", 0xAB, lineno=1), + ConcreteInstr("LOAD_CONST", 0xCD, lineno=1), + ] + self.assertListEqual(list(bytecode), expected) + + def test_extended_arg_make_function(self): + if (3, 9) <= sys.version_info < (3, 10): + from _pydevd_frame_eval.vendored.bytecode.tests.util_annotation import ( + get_code as get_code_future, + ) + + code_obj = get_code_future( + """ + def foo(x: int, y: int): + pass + """ + ) + else: + code_obj = get_code( + """ + def foo(x: int, y: int): + pass + """ + ) + + # without EXTENDED_ARG + concrete = ConcreteBytecode.from_code(code_obj) + if sys.version_info >= (3, 10): + func_code = concrete.consts[2] + names = ["int", "foo"] + consts = ["x", "y", func_code, "foo", None] + const_offset = 1 + name_offset = 1 + first_instrs = [ + ConcreteInstr("LOAD_CONST", 0, lineno=1), + ConcreteInstr("LOAD_NAME", 0, lineno=1), + ConcreteInstr("LOAD_CONST", 1, lineno=1), + ConcreteInstr("LOAD_NAME", 0, lineno=1), + ConcreteInstr("BUILD_TUPLE", 4, lineno=1), + ] + elif ( + sys.version_info >= (3, 7) + and concrete.flags & CompilerFlags.FUTURE_ANNOTATIONS + ): + func_code = concrete.consts[2] + names = ["foo"] + consts = ["int", ("x", "y"), func_code, "foo", None] + const_offset = 1 + name_offset = 0 + first_instrs = [ + ConcreteInstr("LOAD_CONST", 0, lineno=1), + ConcreteInstr("LOAD_CONST", 0, lineno=1), + ConcreteInstr("LOAD_CONST", 0 + const_offset, lineno=1), + ConcreteInstr("BUILD_CONST_KEY_MAP", 2, lineno=1), + ] + else: + func_code = concrete.consts[1] + names = ["int", "foo"] + consts = [("x", "y"), func_code, "foo", None] + const_offset = 0 + name_offset = 1 + first_instrs = [ + ConcreteInstr("LOAD_NAME", 0, lineno=1), + ConcreteInstr("LOAD_NAME", 0, lineno=1), + ConcreteInstr("LOAD_CONST", 0 + const_offset, lineno=1), + ConcreteInstr("BUILD_CONST_KEY_MAP", 2, lineno=1), + ] + + self.assertEqual(concrete.names, names) + self.assertEqual(concrete.consts, consts) + expected = first_instrs + [ + ConcreteInstr("LOAD_CONST", 1 + const_offset, lineno=1), + ConcreteInstr("LOAD_CONST", 2 + const_offset, lineno=1), + ConcreteInstr("MAKE_FUNCTION", 4, lineno=1), + ConcreteInstr("STORE_NAME", name_offset, lineno=1), + ConcreteInstr("LOAD_CONST", 3 + const_offset, lineno=1), + ConcreteInstr("RETURN_VALUE", lineno=1), + ] + self.assertListEqual(list(concrete), expected) + + # with EXTENDED_ARG + concrete = ConcreteBytecode.from_code(code_obj, extended_arg=True) + # With future annotation the int annotation is stringified and + # stored as constant this the default behavior under Python 3.10 + if sys.version_info >= (3, 10): + func_code = concrete.consts[2] + names = ["int", "foo"] + consts = ["x", "y", func_code, "foo", None] + elif concrete.flags & CompilerFlags.FUTURE_ANNOTATIONS: + func_code = concrete.consts[2] + names = ["foo"] + consts = ["int", ("x", "y"), func_code, "foo", None] + else: + func_code = concrete.consts[1] + names = ["int", "foo"] + consts = [("x", "y"), func_code, "foo", None] + + self.assertEqual(concrete.names, names) + self.assertEqual(concrete.consts, consts) + self.assertListEqual(list(concrete), expected) + + # The next three tests ensure we can round trip ConcreteBytecode generated + # with extended_args=True + + def test_extended_arg_unpack_ex(self): + def test(): + p = [1, 2, 3, 4, 5, 6] + q, r, *s, t = p + return q, r, s, t + + cpython_stacksize = test.__code__.co_stacksize + test.__code__ = ConcreteBytecode.from_code( + test.__code__, extended_arg=True + ).to_code() + self.assertEqual(test.__code__.co_stacksize, cpython_stacksize) + self.assertEqual(test(), (1, 2, [3, 4, 5], 6)) + + def test_expected_arg_with_many_consts(self): + def test(): + var = 0 + var = 1 + var = 2 + var = 3 + var = 4 + var = 5 + var = 6 + var = 7 + var = 8 + var = 9 + var = 10 + var = 11 + var = 12 + var = 13 + var = 14 + var = 15 + var = 16 + var = 17 + var = 18 + var = 19 + var = 20 + var = 21 + var = 22 + var = 23 + var = 24 + var = 25 + var = 26 + var = 27 + var = 28 + var = 29 + var = 30 + var = 31 + var = 32 + var = 33 + var = 34 + var = 35 + var = 36 + var = 37 + var = 38 + var = 39 + var = 40 + var = 41 + var = 42 + var = 43 + var = 44 + var = 45 + var = 46 + var = 47 + var = 48 + var = 49 + var = 50 + var = 51 + var = 52 + var = 53 + var = 54 + var = 55 + var = 56 + var = 57 + var = 58 + var = 59 + var = 60 + var = 61 + var = 62 + var = 63 + var = 64 + var = 65 + var = 66 + var = 67 + var = 68 + var = 69 + var = 70 + var = 71 + var = 72 + var = 73 + var = 74 + var = 75 + var = 76 + var = 77 + var = 78 + var = 79 + var = 80 + var = 81 + var = 82 + var = 83 + var = 84 + var = 85 + var = 86 + var = 87 + var = 88 + var = 89 + var = 90 + var = 91 + var = 92 + var = 93 + var = 94 + var = 95 + var = 96 + var = 97 + var = 98 + var = 99 + var = 100 + var = 101 + var = 102 + var = 103 + var = 104 + var = 105 + var = 106 + var = 107 + var = 108 + var = 109 + var = 110 + var = 111 + var = 112 + var = 113 + var = 114 + var = 115 + var = 116 + var = 117 + var = 118 + var = 119 + var = 120 + var = 121 + var = 122 + var = 123 + var = 124 + var = 125 + var = 126 + var = 127 + var = 128 + var = 129 + var = 130 + var = 131 + var = 132 + var = 133 + var = 134 + var = 135 + var = 136 + var = 137 + var = 138 + var = 139 + var = 140 + var = 141 + var = 142 + var = 143 + var = 144 + var = 145 + var = 146 + var = 147 + var = 148 + var = 149 + var = 150 + var = 151 + var = 152 + var = 153 + var = 154 + var = 155 + var = 156 + var = 157 + var = 158 + var = 159 + var = 160 + var = 161 + var = 162 + var = 163 + var = 164 + var = 165 + var = 166 + var = 167 + var = 168 + var = 169 + var = 170 + var = 171 + var = 172 + var = 173 + var = 174 + var = 175 + var = 176 + var = 177 + var = 178 + var = 179 + var = 180 + var = 181 + var = 182 + var = 183 + var = 184 + var = 185 + var = 186 + var = 187 + var = 188 + var = 189 + var = 190 + var = 191 + var = 192 + var = 193 + var = 194 + var = 195 + var = 196 + var = 197 + var = 198 + var = 199 + var = 200 + var = 201 + var = 202 + var = 203 + var = 204 + var = 205 + var = 206 + var = 207 + var = 208 + var = 209 + var = 210 + var = 211 + var = 212 + var = 213 + var = 214 + var = 215 + var = 216 + var = 217 + var = 218 + var = 219 + var = 220 + var = 221 + var = 222 + var = 223 + var = 224 + var = 225 + var = 226 + var = 227 + var = 228 + var = 229 + var = 230 + var = 231 + var = 232 + var = 233 + var = 234 + var = 235 + var = 236 + var = 237 + var = 238 + var = 239 + var = 240 + var = 241 + var = 242 + var = 243 + var = 244 + var = 245 + var = 246 + var = 247 + var = 248 + var = 249 + var = 250 + var = 251 + var = 252 + var = 253 + var = 254 + var = 255 + var = 256 + var = 257 + var = 258 + var = 259 + + return var + + test.__code__ = ConcreteBytecode.from_code( + test.__code__, extended_arg=True + ).to_code() + self.assertEqual(test.__code__.co_stacksize, 1) + self.assertEqual(test(), 259) + + if sys.version_info >= (3, 6): + + def test_fail_extended_arg_jump(self): + def test(): + var = None + for _ in range(0, 1): + var = 0 + var = 1 + var = 2 + var = 3 + var = 4 + var = 5 + var = 6 + var = 7 + var = 8 + var = 9 + var = 10 + var = 11 + var = 12 + var = 13 + var = 14 + var = 15 + var = 16 + var = 17 + var = 18 + var = 19 + var = 20 + var = 21 + var = 22 + var = 23 + var = 24 + var = 25 + var = 26 + var = 27 + var = 28 + var = 29 + var = 30 + var = 31 + var = 32 + var = 33 + var = 34 + var = 35 + var = 36 + var = 37 + var = 38 + var = 39 + var = 40 + var = 41 + var = 42 + var = 43 + var = 44 + var = 45 + var = 46 + var = 47 + var = 48 + var = 49 + var = 50 + var = 51 + var = 52 + var = 53 + var = 54 + var = 55 + var = 56 + var = 57 + var = 58 + var = 59 + var = 60 + var = 61 + var = 62 + var = 63 + var = 64 + var = 65 + var = 66 + var = 67 + var = 68 + var = 69 + var = 70 + return var + + # Generate the bytecode with extended arguments + bytecode = ConcreteBytecode.from_code(test.__code__, extended_arg=True) + bytecode.to_code() + + +class BytecodeToConcreteTests(TestCase): + def test_label(self): + code = Bytecode() + label = Label() + code.extend( + [ + Instr("LOAD_CONST", "hello", lineno=1), + Instr("JUMP_FORWARD", label, lineno=1), + label, + Instr("POP_TOP", lineno=1), + ] + ) + + code = code.to_concrete_bytecode() + expected = [ + ConcreteInstr("LOAD_CONST", 0, lineno=1), + ConcreteInstr("JUMP_FORWARD", 0, lineno=1), + ConcreteInstr("POP_TOP", lineno=1), + ] + self.assertListEqual(list(code), expected) + self.assertListEqual(code.consts, ["hello"]) + + def test_label2(self): + bytecode = Bytecode() + label = Label() + bytecode.extend( + [ + Instr("LOAD_NAME", "test", lineno=1), + Instr("POP_JUMP_IF_FALSE", label), + Instr("LOAD_CONST", 5, lineno=2), + Instr("STORE_NAME", "x"), + Instr("JUMP_FORWARD", label), + Instr("LOAD_CONST", 7, lineno=4), + Instr("STORE_NAME", "x"), + label, + Instr("LOAD_CONST", None), + Instr("RETURN_VALUE"), + ] + ) + + concrete = bytecode.to_concrete_bytecode() + expected = [ + ConcreteInstr("LOAD_NAME", 0, lineno=1), + ConcreteInstr( + "POP_JUMP_IF_FALSE", 7 if OFFSET_AS_INSTRUCTION else 14, lineno=1 + ), + ConcreteInstr("LOAD_CONST", 0, lineno=2), + ConcreteInstr("STORE_NAME", 1, lineno=2), + ConcreteInstr("JUMP_FORWARD", 2 if OFFSET_AS_INSTRUCTION else 4, lineno=2), + ConcreteInstr("LOAD_CONST", 1, lineno=4), + ConcreteInstr("STORE_NAME", 1, lineno=4), + ConcreteInstr("LOAD_CONST", 2, lineno=4), + ConcreteInstr("RETURN_VALUE", lineno=4), + ] + self.assertListEqual(list(concrete), expected) + self.assertListEqual(concrete.consts, [5, 7, None]) + self.assertListEqual(concrete.names, ["test", "x"]) + self.assertListEqual(concrete.varnames, []) + + def test_label3(self): + """ + CPython generates useless EXTENDED_ARG 0 in some cases. We need to + properly track them as otherwise we can end up with broken offset for + jumps. + """ + source = """ + def func(x): + if x == 1: + return x + 0 + elif x == 2: + return x + 1 + elif x == 3: + return x + 2 + elif x == 4: + return x + 3 + elif x == 5: + return x + 4 + elif x == 6: + return x + 5 + elif x == 7: + return x + 6 + elif x == 8: + return x + 7 + elif x == 9: + return x + 8 + elif x == 10: + return x + 9 + elif x == 11: + return x + 10 + elif x == 12: + return x + 11 + elif x == 13: + return x + 12 + elif x == 14: + return x + 13 + elif x == 15: + return x + 14 + elif x == 16: + return x + 15 + elif x == 17: + return x + 16 + return -1 + """ + code = get_code(source, function=True) + bcode = Bytecode.from_code(code) + concrete = bcode.to_concrete_bytecode() + self.assertIsInstance(concrete, ConcreteBytecode) + + # Ensure that we do not generate broken code + loc = {} + exec(textwrap.dedent(source), loc) + func = loc["func"] + func.__code__ = bcode.to_code() + for i, x in enumerate(range(1, 18)): + self.assertEqual(func(x), x + i) + self.assertEqual(func(18), -1) + + # Ensure that we properly round trip in such cases + self.assertEqual( + ConcreteBytecode.from_code(code).to_code().co_code, code.co_code + ) + + def test_setlineno(self): + # x = 7 + # y = 8 + # z = 9 + concrete = ConcreteBytecode() + concrete.consts = [7, 8, 9] + concrete.names = ["x", "y", "z"] + concrete.first_lineno = 3 + concrete.extend( + [ + ConcreteInstr("LOAD_CONST", 0), + ConcreteInstr("STORE_NAME", 0), + SetLineno(4), + ConcreteInstr("LOAD_CONST", 1), + ConcreteInstr("STORE_NAME", 1), + SetLineno(5), + ConcreteInstr("LOAD_CONST", 2), + ConcreteInstr("STORE_NAME", 2), + ] + ) + + code = concrete.to_bytecode() + self.assertEqual( + code, + [ + Instr("LOAD_CONST", 7, lineno=3), + Instr("STORE_NAME", "x", lineno=3), + Instr("LOAD_CONST", 8, lineno=4), + Instr("STORE_NAME", "y", lineno=4), + Instr("LOAD_CONST", 9, lineno=5), + Instr("STORE_NAME", "z", lineno=5), + ], + ) + + def test_extended_jump(self): + NOP = bytes((opcode.opmap["NOP"],)) + + class BigInstr(ConcreteInstr): + def __init__(self, size): + super().__init__("NOP") + self._size = size + + def copy(self): + return self + + def assemble(self): + return NOP * self._size + + # (invalid) code using jumps > 0xffff to test extended arg + label = Label() + nb_nop = 2**16 + code = Bytecode( + [ + Instr("JUMP_ABSOLUTE", label), + BigInstr(nb_nop), + label, + Instr("LOAD_CONST", None), + Instr("RETURN_VALUE"), + ] + ) + + code_obj = code.to_code() + if OFFSET_AS_INSTRUCTION: + expected = b"\x90\x80q\x02" + NOP * nb_nop + b"d\x00S\x00" + else: + expected = b"\x90\x01\x90\x00q\x06" + NOP * nb_nop + b"d\x00S\x00" + self.assertEqual(code_obj.co_code, expected) + + def test_jumps(self): + # if test: + # x = 12 + # else: + # x = 37 + code = Bytecode() + label_else = Label() + label_return = Label() + code.extend( + [ + Instr("LOAD_NAME", "test", lineno=1), + Instr("POP_JUMP_IF_FALSE", label_else), + Instr("LOAD_CONST", 12, lineno=2), + Instr("STORE_NAME", "x"), + Instr("JUMP_FORWARD", label_return), + label_else, + Instr("LOAD_CONST", 37, lineno=4), + Instr("STORE_NAME", "x"), + label_return, + Instr("LOAD_CONST", None, lineno=4), + Instr("RETURN_VALUE"), + ] + ) + + code = code.to_concrete_bytecode() + expected = [ + ConcreteInstr("LOAD_NAME", 0, lineno=1), + ConcreteInstr( + "POP_JUMP_IF_FALSE", 5 if OFFSET_AS_INSTRUCTION else 10, lineno=1 + ), + ConcreteInstr("LOAD_CONST", 0, lineno=2), + ConcreteInstr("STORE_NAME", 1, lineno=2), + ConcreteInstr("JUMP_FORWARD", 2 if OFFSET_AS_INSTRUCTION else 4, lineno=2), + ConcreteInstr("LOAD_CONST", 1, lineno=4), + ConcreteInstr("STORE_NAME", 1, lineno=4), + ConcreteInstr("LOAD_CONST", 2, lineno=4), + ConcreteInstr("RETURN_VALUE", lineno=4), + ] + self.assertListEqual(list(code), expected) + self.assertListEqual(code.consts, [12, 37, None]) + self.assertListEqual(code.names, ["test", "x"]) + self.assertListEqual(code.varnames, []) + + def test_dont_merge_constants(self): + # test two constants which are equal but have a different type + code = Bytecode() + code.extend( + [ + Instr("LOAD_CONST", 5, lineno=1), + Instr("LOAD_CONST", 5.0, lineno=1), + Instr("LOAD_CONST", -0.0, lineno=1), + Instr("LOAD_CONST", +0.0, lineno=1), + ] + ) + + code = code.to_concrete_bytecode() + expected = [ + ConcreteInstr("LOAD_CONST", 0, lineno=1), + ConcreteInstr("LOAD_CONST", 1, lineno=1), + ConcreteInstr("LOAD_CONST", 2, lineno=1), + ConcreteInstr("LOAD_CONST", 3, lineno=1), + ] + self.assertListEqual(list(code), expected) + self.assertListEqual(code.consts, [5, 5.0, -0.0, +0.0]) + + def test_cellvars(self): + code = Bytecode() + code.cellvars = ["x"] + code.freevars = ["y"] + code.extend( + [ + Instr("LOAD_DEREF", CellVar("x"), lineno=1), + Instr("LOAD_DEREF", FreeVar("y"), lineno=1), + ] + ) + concrete = code.to_concrete_bytecode() + self.assertEqual(concrete.cellvars, ["x"]) + self.assertEqual(concrete.freevars, ["y"]) + code.extend( + [ + ConcreteInstr("LOAD_DEREF", 0, lineno=1), + ConcreteInstr("LOAD_DEREF", 1, lineno=1), + ] + ) + + def test_compute_jumps_convergence(self): + # Consider the following sequence of instructions: + # + # JUMP_ABSOLUTE Label1 + # JUMP_ABSOLUTE Label2 + # ...126 instructions... + # Label1: Offset 254 on first pass, 256 second pass + # NOP + # ... many more instructions ... + # Label2: Offset > 256 on first pass + # + # On first pass of compute_jumps(), Label2 will be at address 254, so + # that value encodes into the single byte arg of JUMP_ABSOLUTE. + # + # On second pass compute_jumps() the instr at Label1 will have offset + # of 256 so will also be given an EXTENDED_ARG. + # + # Thus we need to make an additional pass. This test only verifies + # case where 2 passes is insufficient but three is enough. + # + # On Python > 3.10 we need to double the number since the offset is now + # in term of instructions and not bytes. + + # Create code from comment above. + code = Bytecode() + label1 = Label() + label2 = Label() + nop = "NOP" + code.append(Instr("JUMP_ABSOLUTE", label1)) + code.append(Instr("JUMP_ABSOLUTE", label2)) + # Need 254 * 2 + 2 since the arg will change by 1 instruction rather than 2 + # bytes. + for x in range(4, 510 if OFFSET_AS_INSTRUCTION else 254, 2): + code.append(Instr(nop)) + code.append(label1) + code.append(Instr(nop)) + for x in range( + 514 if OFFSET_AS_INSTRUCTION else 256, + 600 if OFFSET_AS_INSTRUCTION else 300, + 2, + ): + code.append(Instr(nop)) + code.append(label2) + code.append(Instr(nop)) + + # This should pass by default. + code.to_code() + + # Try with max of two passes: it should raise + with self.assertRaises(RuntimeError): + code.to_code(compute_jumps_passes=2) + + def test_extreme_compute_jumps_convergence(self): + """Test of compute_jumps() requiring absurd number of passes. + + NOTE: This test also serves to demonstrate that there is no worst + case: the number of passes can be unlimited (or, actually, limited by + the size of the provided code). + + This is an extension of test_compute_jumps_convergence. Instead of + two jumps, where the earlier gets extended after the latter, we + instead generate a series of many jumps. Each pass of compute_jumps() + extends one more instruction, which in turn causes the one behind it + to be extended on the next pass. + + """ + # N: the number of unextended instructions that can be squeezed into a + # set of bytes adressable by the arg of an unextended instruction. + # The answer is "128", but here's how we arrive at it. + max_unextended_offset = 1 << 8 + unextended_branch_instr_size = 2 + N = max_unextended_offset // unextended_branch_instr_size + + # When using instruction rather than bytes in the offset multiply by 2 + if OFFSET_AS_INSTRUCTION: + N *= 2 + + nop = "UNARY_POSITIVE" # don't use NOP, dis.stack_effect will raise + + # The number of jumps will be equal to the number of labels. The + # number of passes of compute_jumps() required will be one greater + # than this. + labels = [Label() for x in range(0, 3 * N)] + + code = Bytecode() + code.extend( + Instr("JUMP_FORWARD", labels[len(labels) - x - 1]) + for x in range(0, len(labels)) + ) + end_of_jumps = len(code) + code.extend(Instr(nop) for x in range(0, N)) + + # Now insert the labels. The first is N instructions (i.e. 256 + # bytes) after the last jump. Then they proceed to earlier positions + # 4 bytes at a time. While the targets are in the range of the nop + # instructions, 4 bytes is two instructions. When the targets are in + # the range of JUMP_FORWARD instructions we have to allow for the fact + # that the instructions will have been extended to four bytes each, so + # working backwards 4 bytes per label means just one instruction per + # label. + offset = end_of_jumps + N + for index in range(0, len(labels)): + code.insert(offset, labels[index]) + if offset <= end_of_jumps: + offset -= 1 + else: + offset -= 2 + + code.insert(0, Instr("LOAD_CONST", 0)) + del end_of_jumps + code.append(Instr("RETURN_VALUE")) + + code.to_code(compute_jumps_passes=(len(labels) + 1)) + + def test_general_constants(self): + """Test if general object could be linked as constants.""" + + class CustomObject: + pass + + class UnHashableCustomObject: + __hash__ = None + + obj1 = [1, 2, 3] + obj2 = {1, 2, 3} + obj3 = CustomObject() + obj4 = UnHashableCustomObject() + code = Bytecode( + [ + Instr("LOAD_CONST", obj1, lineno=1), + Instr("LOAD_CONST", obj2, lineno=1), + Instr("LOAD_CONST", obj3, lineno=1), + Instr("LOAD_CONST", obj4, lineno=1), + Instr("BUILD_TUPLE", 4, lineno=1), + Instr("RETURN_VALUE", lineno=1), + ] + ) + self.assertEqual(code.to_code().co_consts, (obj1, obj2, obj3, obj4)) + + def f(): + return # pragma: no cover + + f.__code__ = code.to_code() + self.assertEqual(f(), (obj1, obj2, obj3, obj4)) + + +if __name__ == "__main__": + unittest.main() # pragma: no cover diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_flags.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_flags.py new file mode 100644 index 000000000..de0a6be81 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_flags.py @@ -0,0 +1,161 @@ +import pytest +from tests_python.debug_constants import TEST_CYTHON +from tests_python.debugger_unittest import IS_CPYTHON, IS_PY36_OR_GREATER + +pytestmark = pytest.mark.skipif( + not IS_PY36_OR_GREATER or not IS_CPYTHON or not TEST_CYTHON, + reason="Requires CPython >= 3.6", +) +#!/usr/bin/env python3 +import unittest + +from _pydevd_frame_eval.vendored.bytecode import ( + Bytecode, + CompilerFlags, + ConcreteBytecode, + ConcreteInstr, + ControlFlowGraph, +) +from _pydevd_frame_eval.vendored.bytecode.flags import infer_flags + + +class FlagsTests(unittest.TestCase): + def test_type_validation_on_inference(self): + with self.assertRaises(ValueError): + infer_flags(1) + + def test_flag_inference(self): + # Check no loss of non-infered flags + code = ControlFlowGraph() + code.flags |= ( + CompilerFlags.NEWLOCALS + | CompilerFlags.VARARGS + | CompilerFlags.VARKEYWORDS + | CompilerFlags.NESTED + | CompilerFlags.FUTURE_GENERATOR_STOP + ) + code.update_flags() + for f in ( + CompilerFlags.NEWLOCALS, + CompilerFlags.VARARGS, + CompilerFlags.VARKEYWORDS, + CompilerFlags.NESTED, + CompilerFlags.NOFREE, + CompilerFlags.OPTIMIZED, + CompilerFlags.FUTURE_GENERATOR_STOP, + ): + self.assertTrue(bool(code.flags & f)) + + # Infer optimized and nofree + code = Bytecode() + flags = infer_flags(code) + self.assertTrue(bool(flags & CompilerFlags.OPTIMIZED)) + self.assertTrue(bool(flags & CompilerFlags.NOFREE)) + code.append(ConcreteInstr("STORE_NAME", 1)) + flags = infer_flags(code) + self.assertFalse(bool(flags & CompilerFlags.OPTIMIZED)) + self.assertTrue(bool(flags & CompilerFlags.NOFREE)) + code.append(ConcreteInstr("STORE_DEREF", 2)) + code.update_flags() + self.assertFalse(bool(code.flags & CompilerFlags.OPTIMIZED)) + self.assertFalse(bool(code.flags & CompilerFlags.NOFREE)) + + def test_async_gen_no_flag_is_async_None(self): + # Test inference in the absence of any flag set on the bytecode + + # Infer generator + code = ConcreteBytecode() + code.append(ConcreteInstr("YIELD_VALUE")) + code.update_flags() + self.assertTrue(bool(code.flags & CompilerFlags.GENERATOR)) + + # Infer coroutine + code = ConcreteBytecode() + code.append(ConcreteInstr("GET_AWAITABLE")) + code.update_flags() + self.assertTrue(bool(code.flags & CompilerFlags.COROUTINE)) + + # Infer coroutine or async generator + for i, expected in ( + ("YIELD_VALUE", CompilerFlags.ASYNC_GENERATOR), + ("YIELD_FROM", CompilerFlags.COROUTINE), + ): + code = ConcreteBytecode() + code.append(ConcreteInstr("GET_AWAITABLE")) + code.append(ConcreteInstr(i)) + code.update_flags() + self.assertTrue(bool(code.flags & expected)) + + def test_async_gen_no_flag_is_async_True(self): + # Test inference when we request an async function + + # Force coroutine + code = ConcreteBytecode() + code.update_flags(is_async=True) + self.assertTrue(bool(code.flags & CompilerFlags.COROUTINE)) + + # Infer coroutine or async generator + for i, expected in ( + ("YIELD_VALUE", CompilerFlags.ASYNC_GENERATOR), + ("YIELD_FROM", CompilerFlags.COROUTINE), + ): + code = ConcreteBytecode() + code.append(ConcreteInstr(i)) + code.update_flags(is_async=True) + self.assertTrue(bool(code.flags & expected)) + + def test_async_gen_no_flag_is_async_False(self): + # Test inference when we request a non-async function + + # Infer generator + code = ConcreteBytecode() + code.append(ConcreteInstr("YIELD_VALUE")) + code.flags = CompilerFlags(CompilerFlags.COROUTINE) + code.update_flags(is_async=False) + self.assertTrue(bool(code.flags & CompilerFlags.GENERATOR)) + + # Abort on coroutine + code = ConcreteBytecode() + code.append(ConcreteInstr("GET_AWAITABLE")) + code.flags = CompilerFlags(CompilerFlags.COROUTINE) + with self.assertRaises(ValueError): + code.update_flags(is_async=False) + + def test_async_gen_flags(self): + # Test inference in the presence of pre-existing flags + + for is_async in (None, True): + # Infer generator + code = ConcreteBytecode() + code.append(ConcreteInstr("YIELD_VALUE")) + for f, expected in ( + (CompilerFlags.COROUTINE, CompilerFlags.ASYNC_GENERATOR), + (CompilerFlags.ASYNC_GENERATOR, CompilerFlags.ASYNC_GENERATOR), + (CompilerFlags.ITERABLE_COROUTINE, CompilerFlags.ITERABLE_COROUTINE), + ): + code.flags = CompilerFlags(f) + code.update_flags(is_async=is_async) + self.assertTrue(bool(code.flags & expected)) + + # Infer coroutine + code = ConcreteBytecode() + code.append(ConcreteInstr("YIELD_FROM")) + for f, expected in ( + (CompilerFlags.COROUTINE, CompilerFlags.COROUTINE), + (CompilerFlags.ASYNC_GENERATOR, CompilerFlags.COROUTINE), + (CompilerFlags.ITERABLE_COROUTINE, CompilerFlags.ITERABLE_COROUTINE), + ): + code.flags = CompilerFlags(f) + code.update_flags(is_async=is_async) + self.assertTrue(bool(code.flags & expected)) + + # Crash on ITERABLE_COROUTINE with async bytecode + code = ConcreteBytecode() + code.append(ConcreteInstr("GET_AWAITABLE")) + code.flags = CompilerFlags(CompilerFlags.ITERABLE_COROUTINE) + with self.assertRaises(ValueError): + code.update_flags(is_async=is_async) + + +if __name__ == "__main__": + unittest.main() # pragma: no cover diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_instr.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_instr.py new file mode 100644 index 000000000..476b4db31 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_instr.py @@ -0,0 +1,367 @@ +import pytest +from tests_python.debug_constants import TEST_CYTHON +from tests_python.debugger_unittest import IS_CPYTHON, IS_PY36_OR_GREATER + +pytestmark = pytest.mark.skipif( + not IS_PY36_OR_GREATER or not IS_CPYTHON or not TEST_CYTHON, + reason="Requires CPython >= 3.6", +) +#!/usr/bin/env python3 +import unittest + +import opcode + +from _pydevd_frame_eval.vendored.bytecode import ( + UNSET, + BasicBlock, + CellVar, + Compare, + FreeVar, + Instr, + Label, + SetLineno, +) +from _pydevd_frame_eval.vendored.bytecode.tests import TestCase + + +class SetLinenoTests(TestCase): + def test_lineno(self): + lineno = SetLineno(1) + self.assertEqual(lineno.lineno, 1) + + def test_equality(self): + lineno = SetLineno(1) + self.assertNotEqual(lineno, 1) + self.assertEqual(lineno, SetLineno(1)) + self.assertNotEqual(lineno, SetLineno(2)) + + +class VariableTests(TestCase): + def test_str(self): + for cls in (CellVar, FreeVar): + var = cls("a") + self.assertEqual(str(var), "a") + + def test_repr(self): + for cls in (CellVar, FreeVar): + var = cls("_a_x_a_") + r = repr(var) + self.assertIn("_a_x_a_", r) + self.assertIn(cls.__name__, r) + + def test_eq(self): + f1 = FreeVar("a") + f2 = FreeVar("b") + c1 = CellVar("a") + c2 = CellVar("b") + + for v1, v2, eq in ( + (f1, f1, True), + (f1, f2, False), + (f1, c1, False), + (c1, c1, True), + (c1, c2, False), + ): + if eq: + self.assertEqual(v1, v2) + else: + self.assertNotEqual(v1, v2) + + +class InstrTests(TestCase): + def test_constructor(self): + # invalid line number + with self.assertRaises(TypeError): + Instr("NOP", lineno="x") + with self.assertRaises(ValueError): + Instr("NOP", lineno=0) + + # invalid name + with self.assertRaises(TypeError): + Instr(1) + with self.assertRaises(ValueError): + Instr("xxx") + + def test_repr(self): + # No arg + r = repr(Instr("NOP", lineno=10)) + self.assertIn("NOP", r) + self.assertIn("10", r) + self.assertIn("lineno", r) + + # Arg + r = repr(Instr("LOAD_FAST", "_x_", lineno=10)) + self.assertIn("LOAD_FAST", r) + self.assertIn("lineno", r) + self.assertIn("10", r) + self.assertIn("arg", r) + self.assertIn("_x_", r) + + def test_invalid_arg(self): + label = Label() + block = BasicBlock() + + # EXTENDED_ARG + self.assertRaises(ValueError, Instr, "EXTENDED_ARG", 0) + + # has_jump() + self.assertRaises(TypeError, Instr, "JUMP_ABSOLUTE", 1) + self.assertRaises(TypeError, Instr, "JUMP_ABSOLUTE", 1.0) + Instr("JUMP_ABSOLUTE", label) + Instr("JUMP_ABSOLUTE", block) + + # hasfree + self.assertRaises(TypeError, Instr, "LOAD_DEREF", "x") + Instr("LOAD_DEREF", CellVar("x")) + Instr("LOAD_DEREF", FreeVar("x")) + + # haslocal + self.assertRaises(TypeError, Instr, "LOAD_FAST", 1) + Instr("LOAD_FAST", "x") + + # hasname + self.assertRaises(TypeError, Instr, "LOAD_NAME", 1) + Instr("LOAD_NAME", "x") + + # hasconst + self.assertRaises(ValueError, Instr, "LOAD_CONST") # UNSET + self.assertRaises(ValueError, Instr, "LOAD_CONST", label) + self.assertRaises(ValueError, Instr, "LOAD_CONST", block) + Instr("LOAD_CONST", 1.0) + Instr("LOAD_CONST", object()) + + # hascompare + self.assertRaises(TypeError, Instr, "COMPARE_OP", 1) + Instr("COMPARE_OP", Compare.EQ) + + # HAVE_ARGUMENT + self.assertRaises(ValueError, Instr, "CALL_FUNCTION", -1) + self.assertRaises(TypeError, Instr, "CALL_FUNCTION", 3.0) + Instr("CALL_FUNCTION", 3) + + # test maximum argument + self.assertRaises(ValueError, Instr, "CALL_FUNCTION", 2147483647 + 1) + instr = Instr("CALL_FUNCTION", 2147483647) + self.assertEqual(instr.arg, 2147483647) + + # not HAVE_ARGUMENT + self.assertRaises(ValueError, Instr, "NOP", 0) + Instr("NOP") + + def test_require_arg(self): + i = Instr("CALL_FUNCTION", 3) + self.assertTrue(i.require_arg()) + i = Instr("NOP") + self.assertFalse(i.require_arg()) + + def test_attr(self): + instr = Instr("LOAD_CONST", 3, lineno=5) + self.assertEqual(instr.name, "LOAD_CONST") + self.assertEqual(instr.opcode, 100) + self.assertEqual(instr.arg, 3) + self.assertEqual(instr.lineno, 5) + + # invalid values/types + self.assertRaises(ValueError, setattr, instr, "lineno", 0) + self.assertRaises(TypeError, setattr, instr, "lineno", 1.0) + self.assertRaises(TypeError, setattr, instr, "name", 5) + self.assertRaises(TypeError, setattr, instr, "opcode", 1.0) + self.assertRaises(ValueError, setattr, instr, "opcode", -1) + self.assertRaises(ValueError, setattr, instr, "opcode", 255) + + # arg can take any attribute but cannot be deleted + instr.arg = -8 + instr.arg = object() + self.assertRaises(AttributeError, delattr, instr, "arg") + + # no argument + instr = Instr("ROT_TWO") + self.assertIs(instr.arg, UNSET) + + def test_modify_op(self): + instr = Instr("LOAD_NAME", "x") + load_fast = opcode.opmap["LOAD_FAST"] + instr.opcode = load_fast + self.assertEqual(instr.name, "LOAD_FAST") + self.assertEqual(instr.opcode, load_fast) + + def test_extended_arg(self): + instr = Instr("LOAD_CONST", 0x1234ABCD) + self.assertEqual(instr.arg, 0x1234ABCD) + + def test_slots(self): + instr = Instr("NOP") + with self.assertRaises(AttributeError): + instr.myattr = 1 + + def test_compare(self): + instr = Instr("LOAD_CONST", 3, lineno=7) + self.assertEqual(instr, Instr("LOAD_CONST", 3, lineno=7)) + self.assertNotEqual(instr, 1) + + # different lineno + self.assertNotEqual(instr, Instr("LOAD_CONST", 3)) + self.assertNotEqual(instr, Instr("LOAD_CONST", 3, lineno=6)) + # different op + self.assertNotEqual(instr, Instr("LOAD_FAST", "x", lineno=7)) + # different arg + self.assertNotEqual(instr, Instr("LOAD_CONST", 4, lineno=7)) + + def test_has_jump(self): + label = Label() + jump = Instr("JUMP_ABSOLUTE", label) + self.assertTrue(jump.has_jump()) + + instr = Instr("LOAD_FAST", "x") + self.assertFalse(instr.has_jump()) + + def test_is_cond_jump(self): + label = Label() + jump = Instr("POP_JUMP_IF_TRUE", label) + self.assertTrue(jump.is_cond_jump()) + + instr = Instr("LOAD_FAST", "x") + self.assertFalse(instr.is_cond_jump()) + + def test_is_uncond_jump(self): + label = Label() + jump = Instr("JUMP_ABSOLUTE", label) + self.assertTrue(jump.is_uncond_jump()) + + instr = Instr("POP_JUMP_IF_TRUE", label) + self.assertFalse(instr.is_uncond_jump()) + + def test_const_key_not_equal(self): + def check(value): + self.assertEqual(Instr("LOAD_CONST", value), Instr("LOAD_CONST", value)) + + def func(): + pass + + check(None) + check(0) + check(0.0) + check(b"bytes") + check("text") + check(Ellipsis) + check((1, 2, 3)) + check(frozenset({1, 2, 3})) + check(func.__code__) + check(object()) + + def test_const_key_equal(self): + neg_zero = -0.0 + pos_zero = +0.0 + + # int and float: 0 == 0.0 + self.assertNotEqual(Instr("LOAD_CONST", 0), Instr("LOAD_CONST", 0.0)) + + # float: -0.0 == +0.0 + self.assertNotEqual( + Instr("LOAD_CONST", neg_zero), Instr("LOAD_CONST", pos_zero) + ) + + # complex + self.assertNotEqual( + Instr("LOAD_CONST", complex(neg_zero, 1.0)), + Instr("LOAD_CONST", complex(pos_zero, 1.0)), + ) + self.assertNotEqual( + Instr("LOAD_CONST", complex(1.0, neg_zero)), + Instr("LOAD_CONST", complex(1.0, pos_zero)), + ) + + # tuple + self.assertNotEqual(Instr("LOAD_CONST", (0,)), Instr("LOAD_CONST", (0.0,))) + nested_tuple1 = (0,) + nested_tuple1 = (nested_tuple1,) + nested_tuple2 = (0.0,) + nested_tuple2 = (nested_tuple2,) + self.assertNotEqual( + Instr("LOAD_CONST", nested_tuple1), Instr("LOAD_CONST", nested_tuple2) + ) + + # frozenset + self.assertNotEqual( + Instr("LOAD_CONST", frozenset({0})), Instr("LOAD_CONST", frozenset({0.0})) + ) + + def test_stack_effects(self): + # Verify all opcodes are handled and that "jump=None" really returns + # the max of the other cases. + from _pydevd_frame_eval.vendored.bytecode.concrete import ConcreteInstr + + def check(instr): + jump = instr.stack_effect(jump=True) + no_jump = instr.stack_effect(jump=False) + max_effect = instr.stack_effect(jump=None) + self.assertEqual(instr.stack_effect(), max_effect) + self.assertEqual(max_effect, max(jump, no_jump)) + + if not instr.has_jump(): + self.assertEqual(jump, no_jump) + + for name, op in opcode.opmap.items(): + with self.subTest(name): + # Use ConcreteInstr instead of Instr because it doesn't care + # what kind of argument it is constructed with. + if op < opcode.HAVE_ARGUMENT: + check(ConcreteInstr(name)) + else: + for arg in range(256): + check(ConcreteInstr(name, arg)) + + # LOAD_CONST uses a concrete python object as its oparg, however, in + # dis.stack_effect(opcode.opmap['LOAD_CONST'], oparg), + # oparg should be the index of that python object in the constants. + # + # Fortunately, for an instruction whose oparg isn't equivalent to its + # form in binary files(pyc format), the stack effect is a + # constant which does not depend on its oparg. + # + # The second argument of dis.stack_effect cannot be + # more than 2**31 - 1. If stack effect of an instruction is + # independent of its oparg, we pass 0 as the second argument + # of dis.stack_effect. + # (As a result we can calculate stack_effect for + # any LOAD_CONST instructions, even for large integers) + + for arg in 2**31, 2**32, 2**63, 2**64, -1: + self.assertEqual(Instr("LOAD_CONST", arg).stack_effect(), 1) + + def test_code_object_containing_mutable_data(self): + from types import CodeType + + from _pydevd_frame_eval.vendored.bytecode import Bytecode, Instr + + def f(): + def g(): + return "value" + + return g + + f_code = Bytecode.from_code(f.__code__) + instr_load_code = None + mutable_datum = [4, 2] + + for each in f_code: + if ( + isinstance(each, Instr) + and each.name == "LOAD_CONST" + and isinstance(each.arg, CodeType) + ): + instr_load_code = each + break + + self.assertIsNotNone(instr_load_code) + + g_code = Bytecode.from_code(instr_load_code.arg) + g_code[0].arg = mutable_datum + instr_load_code.arg = g_code.to_code() + f.__code__ = f_code.to_code() + + self.assertIs(f()(), mutable_datum) + + +if __name__ == "__main__": + unittest.main() # pragma: no cover diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_misc.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_misc.py new file mode 100644 index 000000000..1ee05fb05 --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_misc.py @@ -0,0 +1,266 @@ +import pytest +from tests_python.debug_constants import TEST_CYTHON +from tests_python.debugger_unittest import IS_CPYTHON, IS_PY36_OR_GREATER + +pytestmark = pytest.mark.skipif( + not IS_PY36_OR_GREATER or not IS_CPYTHON or not TEST_CYTHON, + reason="Requires CPython >= 3.6", +) +#!/usr/bin/env python3 +import contextlib +import io +import textwrap +import unittest + +from _pydevd_frame_eval.vendored import bytecode +from _pydevd_frame_eval.vendored.bytecode import ( + BasicBlock, + Bytecode, + ControlFlowGraph, + Instr, + Label, +) +from _pydevd_frame_eval.vendored.bytecode.concrete import OFFSET_AS_INSTRUCTION +from _pydevd_frame_eval.vendored.bytecode.tests import disassemble + + +class DumpCodeTests(unittest.TestCase): + maxDiff = 80 * 100 + + def check_dump_bytecode(self, code, expected, lineno=None): + with contextlib.redirect_stdout(io.StringIO()) as stderr: + if lineno is not None: + bytecode.dump_bytecode(code, lineno=True) + else: + bytecode.dump_bytecode(code) + output = stderr.getvalue() + + self.assertEqual(output, expected) + + def test_bytecode(self): + source = """ + def func(test): + if test == 1: + return 1 + elif test == 2: + return 2 + return 3 + """ + code = disassemble(source, function=True) + + # without line numbers + enum_repr = "" + expected = f""" + LOAD_FAST 'test' + LOAD_CONST 1 + COMPARE_OP {enum_repr} + POP_JUMP_IF_FALSE + LOAD_CONST 1 + RETURN_VALUE + +label_instr6: + LOAD_FAST 'test' + LOAD_CONST 2 + COMPARE_OP {enum_repr} + POP_JUMP_IF_FALSE + LOAD_CONST 2 + RETURN_VALUE + +label_instr13: + LOAD_CONST 3 + RETURN_VALUE + + """[1:].rstrip(" ") + self.check_dump_bytecode(code, expected) + + # with line numbers + expected = f""" + L. 2 0: LOAD_FAST 'test' + 1: LOAD_CONST 1 + 2: COMPARE_OP {enum_repr} + 3: POP_JUMP_IF_FALSE + L. 3 4: LOAD_CONST 1 + 5: RETURN_VALUE + +label_instr6: + L. 4 7: LOAD_FAST 'test' + 8: LOAD_CONST 2 + 9: COMPARE_OP {enum_repr} + 10: POP_JUMP_IF_FALSE + L. 5 11: LOAD_CONST 2 + 12: RETURN_VALUE + +label_instr13: + L. 6 14: LOAD_CONST 3 + 15: RETURN_VALUE + + """[1:].rstrip(" ") + self.check_dump_bytecode(code, expected, lineno=True) + + def test_bytecode_broken_label(self): + label = Label() + code = Bytecode([Instr("JUMP_ABSOLUTE", label)]) + + expected = " JUMP_ABSOLUTE \n\n" + self.check_dump_bytecode(code, expected) + + def test_blocks_broken_jump(self): + block = BasicBlock() + code = ControlFlowGraph() + code[0].append(Instr("JUMP_ABSOLUTE", block)) + + expected = textwrap.dedent( + """ + block1: + JUMP_ABSOLUTE + + """ + ).lstrip("\n") + self.check_dump_bytecode(code, expected) + + def test_bytecode_blocks(self): + source = """ + def func(test): + if test == 1: + return 1 + elif test == 2: + return 2 + return 3 + """ + code = disassemble(source, function=True) + code = ControlFlowGraph.from_bytecode(code) + + # without line numbers + enum_repr = "" + expected = textwrap.dedent( + f""" + block1: + LOAD_FAST 'test' + LOAD_CONST 1 + COMPARE_OP {enum_repr} + POP_JUMP_IF_FALSE + -> block2 + + block2: + LOAD_CONST 1 + RETURN_VALUE + + block3: + LOAD_FAST 'test' + LOAD_CONST 2 + COMPARE_OP {enum_repr} + POP_JUMP_IF_FALSE + -> block4 + + block4: + LOAD_CONST 2 + RETURN_VALUE + + block5: + LOAD_CONST 3 + RETURN_VALUE + + """ + ).lstrip() + self.check_dump_bytecode(code, expected) + + # with line numbers + expected = textwrap.dedent( + f""" + block1: + L. 2 0: LOAD_FAST 'test' + 1: LOAD_CONST 1 + 2: COMPARE_OP {enum_repr} + 3: POP_JUMP_IF_FALSE + -> block2 + + block2: + L. 3 0: LOAD_CONST 1 + 1: RETURN_VALUE + + block3: + L. 4 0: LOAD_FAST 'test' + 1: LOAD_CONST 2 + 2: COMPARE_OP {enum_repr} + 3: POP_JUMP_IF_FALSE + -> block4 + + block4: + L. 5 0: LOAD_CONST 2 + 1: RETURN_VALUE + + block5: + L. 6 0: LOAD_CONST 3 + 1: RETURN_VALUE + + """ + ).lstrip() + self.check_dump_bytecode(code, expected, lineno=True) + + def test_concrete_bytecode(self): + source = """ + def func(test): + if test == 1: + return 1 + elif test == 2: + return 2 + return 3 + """ + code = disassemble(source, function=True) + code = code.to_concrete_bytecode() + + # without line numbers + expected = f""" + 0 LOAD_FAST 0 + 2 LOAD_CONST 1 + 4 COMPARE_OP 2 + 6 POP_JUMP_IF_FALSE {6 if OFFSET_AS_INSTRUCTION else 12} + 8 LOAD_CONST 1 + 10 RETURN_VALUE + 12 LOAD_FAST 0 + 14 LOAD_CONST 2 + 16 COMPARE_OP 2 + 18 POP_JUMP_IF_FALSE {12 if OFFSET_AS_INSTRUCTION else 24} + 20 LOAD_CONST 2 + 22 RETURN_VALUE + 24 LOAD_CONST 3 + 26 RETURN_VALUE +""".lstrip("\n") + self.check_dump_bytecode(code, expected) + + # with line numbers + expected = f""" +L. 2 0: LOAD_FAST 0 + 2: LOAD_CONST 1 + 4: COMPARE_OP 2 + 6: POP_JUMP_IF_FALSE {6 if OFFSET_AS_INSTRUCTION else 12} +L. 3 8: LOAD_CONST 1 + 10: RETURN_VALUE +L. 4 12: LOAD_FAST 0 + 14: LOAD_CONST 2 + 16: COMPARE_OP 2 + 18: POP_JUMP_IF_FALSE {12 if OFFSET_AS_INSTRUCTION else 24} +L. 5 20: LOAD_CONST 2 + 22: RETURN_VALUE +L. 6 24: LOAD_CONST 3 + 26: RETURN_VALUE +""".lstrip("\n") + self.check_dump_bytecode(code, expected, lineno=True) + + def test_type_validation(self): + class T: + first_lineno = 1 + + with self.assertRaises(TypeError): + bytecode.dump_bytecode(T()) + + +class MiscTests(unittest.TestCase): + def skip_test_version(self): + import setup + + self.assertEqual(bytecode.__version__, setup.VERSION) + + +if __name__ == "__main__": + unittest.main() # pragma: no cover diff --git a/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_peephole_opt.py b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_peephole_opt.py new file mode 100644 index 000000000..f1e94d27c --- /dev/null +++ b/.local/lib/python3.12/site-packages/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_peephole_opt.py @@ -0,0 +1,994 @@ +import pytest +from tests_python.debug_constants import TEST_CYTHON +from tests_python.debugger_unittest import IS_CPYTHON, IS_PY36_OR_GREATER + +pytestmark = pytest.mark.skipif( + not IS_PY36_OR_GREATER or not IS_CPYTHON or not TEST_CYTHON, + reason="Requires CPython >= 3.6", +) +import sys +import unittest +from unittest import mock + +from _pydevd_frame_eval.vendored.bytecode import ( + Bytecode, + Compare, + ControlFlowGraph, + Instr, + Label, + peephole_opt, +) +from _pydevd_frame_eval.vendored.bytecode.tests import TestCase, dump_bytecode + + +class Tests(TestCase): + maxDiff = 80 * 100 + + def optimize_blocks(self, code): + if isinstance(code, Bytecode): + code = ControlFlowGraph.from_bytecode(code) + optimizer = peephole_opt.PeepholeOptimizer() + optimizer.optimize_cfg(code) + return code + + def check(self, code, *expected): + if isinstance(code, Bytecode): + code = ControlFlowGraph.from_bytecode(code) + optimizer = peephole_opt.PeepholeOptimizer() + optimizer.optimize_cfg(code) + code = code.to_bytecode() + + try: + self.assertEqual(code, expected) + except AssertionError: + print("Optimized code:") + dump_bytecode(code) + + print("Expected code:") + for instr in expected: + print(instr) + + raise + + def check_dont_optimize(self, code): + code = ControlFlowGraph.from_bytecode(code) + noopt = code.to_bytecode() + + optim = self.optimize_blocks(code) + optim = optim.to_bytecode() + self.assertEqual(optim, noopt) + + def test_unary_op(self): + def check_unary_op(op, value, result): + code = Bytecode( + [Instr("LOAD_CONST", value), Instr(op), Instr("STORE_NAME", "x")] + ) + self.check(code, Instr("LOAD_CONST", result), Instr("STORE_NAME", "x")) + + check_unary_op("UNARY_POSITIVE", 2, 2) + check_unary_op("UNARY_NEGATIVE", 3, -3) + check_unary_op("UNARY_INVERT", 5, -6) + + def test_binary_op(self): + def check_bin_op(left, op, right, result): + code = Bytecode( + [ + Instr("LOAD_CONST", left), + Instr("LOAD_CONST", right), + Instr(op), + Instr("STORE_NAME", "x"), + ] + ) + self.check(code, Instr("LOAD_CONST", result), Instr("STORE_NAME", "x")) + + check_bin_op(10, "BINARY_ADD", 20, 30) + check_bin_op(5, "BINARY_SUBTRACT", 1, 4) + check_bin_op(5, "BINARY_MULTIPLY", 3, 15) + check_bin_op(10, "BINARY_TRUE_DIVIDE", 3, 10 / 3) + check_bin_op(10, "BINARY_FLOOR_DIVIDE", 3, 3) + check_bin_op(10, "BINARY_MODULO", 3, 1) + check_bin_op(2, "BINARY_POWER", 8, 256) + check_bin_op(1, "BINARY_LSHIFT", 3, 8) + check_bin_op(16, "BINARY_RSHIFT", 3, 2) + check_bin_op(10, "BINARY_AND", 3, 2) + check_bin_op(2, "BINARY_OR", 3, 3) + check_bin_op(2, "BINARY_XOR", 3, 1) + + def test_combined_unary_bin_ops(self): + # x = 1 + 3 + 7 + code = Bytecode( + [ + Instr("LOAD_CONST", 1), + Instr("LOAD_CONST", 3), + Instr("BINARY_ADD"), + Instr("LOAD_CONST", 7), + Instr("BINARY_ADD"), + Instr("STORE_NAME", "x"), + ] + ) + self.check(code, Instr("LOAD_CONST", 11), Instr("STORE_NAME", "x")) + + # x = ~(~(5)) + code = Bytecode( + [ + Instr("LOAD_CONST", 5), + Instr("UNARY_INVERT"), + Instr("UNARY_INVERT"), + Instr("STORE_NAME", "x"), + ] + ) + self.check(code, Instr("LOAD_CONST", 5), Instr("STORE_NAME", "x")) + + # "events = [(0, 'call'), (1, 'line'), (-(3), 'call')]" + code = Bytecode( + [ + Instr("LOAD_CONST", 0), + Instr("LOAD_CONST", "call"), + Instr("BUILD_TUPLE", 2), + Instr("LOAD_CONST", 1), + Instr("LOAD_CONST", "line"), + Instr("BUILD_TUPLE", 2), + Instr("LOAD_CONST", 3), + Instr("UNARY_NEGATIVE"), + Instr("LOAD_CONST", "call"), + Instr("BUILD_TUPLE", 2), + Instr("BUILD_LIST", 3), + Instr("STORE_NAME", "events"), + ] + ) + self.check( + code, + Instr("LOAD_CONST", (0, "call")), + Instr("LOAD_CONST", (1, "line")), + Instr("LOAD_CONST", (-3, "call")), + Instr("BUILD_LIST", 3), + Instr("STORE_NAME", "events"), + ) + + # 'x = (1,) + (0,) * 8' + code = Bytecode( + [ + Instr("LOAD_CONST", 1), + Instr("BUILD_TUPLE", 1), + Instr("LOAD_CONST", 0), + Instr("BUILD_TUPLE", 1), + Instr("LOAD_CONST", 8), + Instr("BINARY_MULTIPLY"), + Instr("BINARY_ADD"), + Instr("STORE_NAME", "x"), + ] + ) + zeros = (0,) * 8 + result = (1,) + zeros + self.check(code, Instr("LOAD_CONST", result), Instr("STORE_NAME", "x")) + + def test_max_size(self): + max_size = 3 + with mock.patch.object(peephole_opt, "MAX_SIZE", max_size): + # optimized binary operation: size <= maximum size + # + # (9,) * size + size = max_size + result = (9,) * size + code = Bytecode( + [ + Instr("LOAD_CONST", 9), + Instr("BUILD_TUPLE", 1), + Instr("LOAD_CONST", size), + Instr("BINARY_MULTIPLY"), + Instr("STORE_NAME", "x"), + ] + ) + self.check(code, Instr("LOAD_CONST", result), Instr("STORE_NAME", "x")) + + # don't optimize binary operation: size > maximum size + # + # x = (9,) * size + size = max_size + 1 + code = Bytecode( + [ + Instr("LOAD_CONST", 9), + Instr("BUILD_TUPLE", 1), + Instr("LOAD_CONST", size), + Instr("BINARY_MULTIPLY"), + Instr("STORE_NAME", "x"), + ] + ) + self.check( + code, + Instr("LOAD_CONST", (9,)), + Instr("LOAD_CONST", size), + Instr("BINARY_MULTIPLY"), + Instr("STORE_NAME", "x"), + ) + + def test_bin_op_dont_optimize(self): + # 1 / 0 + code = Bytecode( + [ + Instr("LOAD_CONST", 1), + Instr("LOAD_CONST", 0), + Instr("BINARY_TRUE_DIVIDE"), + Instr("POP_TOP"), + Instr("LOAD_CONST", None), + Instr("RETURN_VALUE"), + ] + ) + self.check_dont_optimize(code) + + # 1 // 0 + code = Bytecode( + [ + Instr("LOAD_CONST", 1), + Instr("LOAD_CONST", 0), + Instr("BINARY_FLOOR_DIVIDE"), + Instr("POP_TOP"), + Instr("LOAD_CONST", None), + Instr("RETURN_VALUE"), + ] + ) + self.check_dont_optimize(code) + + # 1 % 0 + code = Bytecode( + [ + Instr("LOAD_CONST", 1), + Instr("LOAD_CONST", 0), + Instr("BINARY_MODULO"), + Instr("POP_TOP"), + Instr("LOAD_CONST", None), + Instr("RETURN_VALUE"), + ] + ) + self.check_dont_optimize(code) + + # 1 % 1j + code = Bytecode( + [ + Instr("LOAD_CONST", 1), + Instr("LOAD_CONST", 1j), + Instr("BINARY_MODULO"), + Instr("POP_TOP"), + Instr("LOAD_CONST", None), + Instr("RETURN_VALUE"), + ] + ) + self.check_dont_optimize(code) + + def test_build_tuple(self): + # x = (1, 2, 3) + code = Bytecode( + [ + Instr("LOAD_CONST", 1), + Instr("LOAD_CONST", 2), + Instr("LOAD_CONST", 3), + Instr("BUILD_TUPLE", 3), + Instr("STORE_NAME", "x"), + ] + ) + self.check(code, Instr("LOAD_CONST", (1, 2, 3)), Instr("STORE_NAME", "x")) + + def test_build_list(self): + # test = x in [1, 2, 3] + code = Bytecode( + [ + Instr("LOAD_NAME", "x"), + Instr("LOAD_CONST", 1), + Instr("LOAD_CONST", 2), + Instr("LOAD_CONST", 3), + Instr("BUILD_LIST", 3), + Instr("COMPARE_OP", Compare.IN), + Instr("STORE_NAME", "test"), + ] + ) + + self.check( + code, + Instr("LOAD_NAME", "x"), + Instr("LOAD_CONST", (1, 2, 3)), + Instr("COMPARE_OP", Compare.IN), + Instr("STORE_NAME", "test"), + ) + + def test_build_list_unpack_seq(self): + for build_list in ("BUILD_TUPLE", "BUILD_LIST"): + # x, = [a] + code = Bytecode( + [ + Instr("LOAD_NAME", "a"), + Instr(build_list, 1), + Instr("UNPACK_SEQUENCE", 1), + Instr("STORE_NAME", "x"), + ] + ) + self.check(code, Instr("LOAD_NAME", "a"), Instr("STORE_NAME", "x")) + + # x, y = [a, b] + code = Bytecode( + [ + Instr("LOAD_NAME", "a"), + Instr("LOAD_NAME", "b"), + Instr(build_list, 2), + Instr("UNPACK_SEQUENCE", 2), + Instr("STORE_NAME", "x"), + Instr("STORE_NAME", "y"), + ] + ) + self.check( + code, + Instr("LOAD_NAME", "a"), + Instr("LOAD_NAME", "b"), + Instr("ROT_TWO"), + Instr("STORE_NAME", "x"), + Instr("STORE_NAME", "y"), + ) + + # x, y, z = [a, b, c] + code = Bytecode( + [ + Instr("LOAD_NAME", "a"), + Instr("LOAD_NAME", "b"), + Instr("LOAD_NAME", "c"), + Instr(build_list, 3), + Instr("UNPACK_SEQUENCE", 3), + Instr("STORE_NAME", "x"), + Instr("STORE_NAME", "y"), + Instr("STORE_NAME", "z"), + ] + ) + self.check( + code, + Instr("LOAD_NAME", "a"), + Instr("LOAD_NAME", "b"), + Instr("LOAD_NAME", "c"), + Instr("ROT_THREE"), + Instr("ROT_TWO"), + Instr("STORE_NAME", "x"), + Instr("STORE_NAME", "y"), + Instr("STORE_NAME", "z"), + ) + + def test_build_tuple_unpack_seq_const(self): + # x, y = (3, 4) + code = Bytecode( + [ + Instr("LOAD_CONST", 3), + Instr("LOAD_CONST", 4), + Instr("BUILD_TUPLE", 2), + Instr("UNPACK_SEQUENCE", 2), + Instr("STORE_NAME", "x"), + Instr("STORE_NAME", "y"), + ] + ) + self.check( + code, + Instr("LOAD_CONST", (3, 4)), + Instr("UNPACK_SEQUENCE", 2), + Instr("STORE_NAME", "x"), + Instr("STORE_NAME", "y"), + ) + + def test_build_list_unpack_seq_const(self): + # x, y, z = [3, 4, 5] + code = Bytecode( + [ + Instr("LOAD_CONST", 3), + Instr("LOAD_CONST", 4), + Instr("LOAD_CONST", 5), + Instr("BUILD_LIST", 3), + Instr("UNPACK_SEQUENCE", 3), + Instr("STORE_NAME", "x"), + Instr("STORE_NAME", "y"), + Instr("STORE_NAME", "z"), + ] + ) + self.check( + code, + Instr("LOAD_CONST", 5), + Instr("LOAD_CONST", 4), + Instr("LOAD_CONST", 3), + Instr("STORE_NAME", "x"), + Instr("STORE_NAME", "y"), + Instr("STORE_NAME", "z"), + ) + + def test_build_set(self): + # test = x in {1, 2, 3} + code = Bytecode( + [ + Instr("LOAD_NAME", "x"), + Instr("LOAD_CONST", 1), + Instr("LOAD_CONST", 2), + Instr("LOAD_CONST", 3), + Instr("BUILD_SET", 3), + Instr("COMPARE_OP", Compare.IN), + Instr("STORE_NAME", "test"), + ] + ) + + self.check( + code, + Instr("LOAD_NAME", "x"), + Instr("LOAD_CONST", frozenset((1, 2, 3))), + Instr("COMPARE_OP", Compare.IN), + Instr("STORE_NAME", "test"), + ) + + def test_compare_op_unary_not(self): + for op, not_op in ( + (Compare.IN, Compare.NOT_IN), # in => not in + (Compare.NOT_IN, Compare.IN), # not in => in + (Compare.IS, Compare.IS_NOT), # is => is not + (Compare.IS_NOT, Compare.IS), # is not => is + ): + code = Bytecode( + [ + Instr("LOAD_NAME", "a"), + Instr("LOAD_NAME", "b"), + Instr("COMPARE_OP", op), + Instr("UNARY_NOT"), + Instr("STORE_NAME", "x"), + ] + ) + self.check( + code, + Instr("LOAD_NAME", "a"), + Instr("LOAD_NAME", "b"), + Instr("COMPARE_OP", not_op), + Instr("STORE_NAME", "x"), + ) + + # don't optimize: + # x = not (a and b is True) + label_instr5 = Label() + code = Bytecode( + [ + Instr("LOAD_NAME", "a"), + Instr("JUMP_IF_FALSE_OR_POP", label_instr5), + Instr("LOAD_NAME", "b"), + Instr("LOAD_CONST", True), + Instr("COMPARE_OP", Compare.IS), + label_instr5, + Instr("UNARY_NOT"), + Instr("STORE_NAME", "x"), + Instr("LOAD_CONST", None), + Instr("RETURN_VALUE"), + ] + ) + self.check_dont_optimize(code) + + def test_dont_optimize(self): + # x = 3 < 5 + code = Bytecode( + [ + Instr("LOAD_CONST", 3), + Instr("LOAD_CONST", 5), + Instr("COMPARE_OP", Compare.LT), + Instr("STORE_NAME", "x"), + Instr("LOAD_CONST", None), + Instr("RETURN_VALUE"), + ] + ) + self.check_dont_optimize(code) + + # x = (10, 20, 30)[1:] + code = Bytecode( + [ + Instr("LOAD_CONST", (10, 20, 30)), + Instr("LOAD_CONST", 1), + Instr("LOAD_CONST", None), + Instr("BUILD_SLICE", 2), + Instr("BINARY_SUBSCR"), + Instr("STORE_NAME", "x"), + ] + ) + self.check_dont_optimize(code) + + def test_optimize_code_obj(self): + # Test optimize() method with a code object + # + # x = 3 + 5 => x = 8 + noopt = Bytecode( + [ + Instr("LOAD_CONST", 3), + Instr("LOAD_CONST", 5), + Instr("BINARY_ADD"), + Instr("STORE_NAME", "x"), + Instr("LOAD_CONST", None), + Instr("RETURN_VALUE"), + ] + ) + noopt = noopt.to_code() + + optimizer = peephole_opt.PeepholeOptimizer() + optim = optimizer.optimize(noopt) + + code = Bytecode.from_code(optim) + self.assertEqual( + code, + [ + Instr("LOAD_CONST", 8, lineno=1), + Instr("STORE_NAME", "x", lineno=1), + Instr("LOAD_CONST", None, lineno=1), + Instr("RETURN_VALUE", lineno=1), + ], + ) + + def test_return_value(self): + # return+return: remove second return + # + # def func(): + # return 4 + # return 5 + code = Bytecode( + [ + Instr("LOAD_CONST", 4, lineno=2), + Instr("RETURN_VALUE", lineno=2), + Instr("LOAD_CONST", 5, lineno=3), + Instr("RETURN_VALUE", lineno=3), + ] + ) + code = ControlFlowGraph.from_bytecode(code) + self.check( + code, Instr("LOAD_CONST", 4, lineno=2), Instr("RETURN_VALUE", lineno=2) + ) + + # return+return + return+return: remove second and fourth return + # + # def func(): + # return 4 + # return 5 + # return 6 + # return 7 + code = Bytecode( + [ + Instr("LOAD_CONST", 4, lineno=2), + Instr("RETURN_VALUE", lineno=2), + Instr("LOAD_CONST", 5, lineno=3), + Instr("RETURN_VALUE", lineno=3), + Instr("LOAD_CONST", 6, lineno=4), + Instr("RETURN_VALUE", lineno=4), + Instr("LOAD_CONST", 7, lineno=5), + Instr("RETURN_VALUE", lineno=5), + ] + ) + code = ControlFlowGraph.from_bytecode(code) + self.check( + code, Instr("LOAD_CONST", 4, lineno=2), Instr("RETURN_VALUE", lineno=2) + ) + + # return + JUMP_ABSOLUTE: remove JUMP_ABSOLUTE + # while 1: + # return 7 + if sys.version_info < (3, 8): + setup_loop = Label() + return_label = Label() + code = Bytecode( + [ + setup_loop, + Instr("SETUP_LOOP", return_label, lineno=2), + Instr("LOAD_CONST", 7, lineno=3), + Instr("RETURN_VALUE", lineno=3), + Instr("JUMP_ABSOLUTE", setup_loop, lineno=3), + Instr("POP_BLOCK", lineno=3), + return_label, + Instr("LOAD_CONST", None, lineno=3), + Instr("RETURN_VALUE", lineno=3), + ] + ) + code = ControlFlowGraph.from_bytecode(code) + + end_loop = Label() + self.check( + code, + Instr("SETUP_LOOP", end_loop, lineno=2), + Instr("LOAD_CONST", 7, lineno=3), + Instr("RETURN_VALUE", lineno=3), + end_loop, + Instr("LOAD_CONST", None, lineno=3), + Instr("RETURN_VALUE", lineno=3), + ) + else: + setup_loop = Label() + return_label = Label() + code = Bytecode( + [ + setup_loop, + Instr("LOAD_CONST", 7, lineno=3), + Instr("RETURN_VALUE", lineno=3), + Instr("JUMP_ABSOLUTE", setup_loop, lineno=3), + Instr("LOAD_CONST", None, lineno=3), + Instr("RETURN_VALUE", lineno=3), + ] + ) + code = ControlFlowGraph.from_bytecode(code) + + self.check( + code, Instr("LOAD_CONST", 7, lineno=3), Instr("RETURN_VALUE", lineno=3) + ) + + def test_not_jump_if_false(self): + # Replace UNARY_NOT+POP_JUMP_IF_FALSE with POP_JUMP_IF_TRUE + # + # if not x: + # y = 9 + label = Label() + code = Bytecode( + [ + Instr("LOAD_NAME", "x"), + Instr("UNARY_NOT"), + Instr("POP_JUMP_IF_FALSE", label), + Instr("LOAD_CONST", 9), + Instr("STORE_NAME", "y"), + label, + ] + ) + + code = self.optimize_blocks(code) + label = Label() + self.check( + code, + Instr("LOAD_NAME", "x"), + Instr("POP_JUMP_IF_TRUE", label), + Instr("LOAD_CONST", 9), + Instr("STORE_NAME", "y"), + label, + ) + + def test_unconditional_jump_to_return(self): + # def func(): + # if test: + # if test2: + # x = 10 + # else: + # x = 20 + # else: + # x = 30 + + label_instr11 = Label() + label_instr14 = Label() + label_instr7 = Label() + code = Bytecode( + [ + Instr("LOAD_GLOBAL", "test", lineno=2), + Instr("POP_JUMP_IF_FALSE", label_instr11, lineno=2), + Instr("LOAD_GLOBAL", "test2", lineno=3), + Instr("POP_JUMP_IF_FALSE", label_instr7, lineno=3), + Instr("LOAD_CONST", 10, lineno=4), + Instr("STORE_FAST", "x", lineno=4), + Instr("JUMP_ABSOLUTE", label_instr14, lineno=4), + label_instr7, + Instr("LOAD_CONST", 20, lineno=6), + Instr("STORE_FAST", "x", lineno=6), + Instr("JUMP_FORWARD", label_instr14, lineno=6), + label_instr11, + Instr("LOAD_CONST", 30, lineno=8), + Instr("STORE_FAST", "x", lineno=8), + label_instr14, + Instr("LOAD_CONST", None, lineno=8), + Instr("RETURN_VALUE", lineno=8), + ] + ) + + label1 = Label() + label3 = Label() + label4 = Label() + self.check( + code, + Instr("LOAD_GLOBAL", "test", lineno=2), + Instr("POP_JUMP_IF_FALSE", label3, lineno=2), + Instr("LOAD_GLOBAL", "test2", lineno=3), + Instr("POP_JUMP_IF_FALSE", label1, lineno=3), + Instr("LOAD_CONST", 10, lineno=4), + Instr("STORE_FAST", "x", lineno=4), + Instr("JUMP_ABSOLUTE", label4, lineno=4), + label1, + Instr("LOAD_CONST", 20, lineno=6), + Instr("STORE_FAST", "x", lineno=6), + Instr("JUMP_FORWARD", label4, lineno=6), + label3, + Instr("LOAD_CONST", 30, lineno=8), + Instr("STORE_FAST", "x", lineno=8), + label4, + Instr("LOAD_CONST", None, lineno=8), + Instr("RETURN_VALUE", lineno=8), + ) + + def test_unconditional_jumps(self): + # def func(): + # if x: + # if y: + # func() + label_instr7 = Label() + code = Bytecode( + [ + Instr("LOAD_GLOBAL", "x", lineno=2), + Instr("POP_JUMP_IF_FALSE", label_instr7, lineno=2), + Instr("LOAD_GLOBAL", "y", lineno=3), + Instr("POP_JUMP_IF_FALSE", label_instr7, lineno=3), + Instr("LOAD_GLOBAL", "func", lineno=4), + Instr("CALL_FUNCTION", 0, lineno=4), + Instr("POP_TOP", lineno=4), + label_instr7, + Instr("LOAD_CONST", None, lineno=4), + Instr("RETURN_VALUE", lineno=4), + ] + ) + + label_return = Label() + self.check( + code, + Instr("LOAD_GLOBAL", "x", lineno=2), + Instr("POP_JUMP_IF_FALSE", label_return, lineno=2), + Instr("LOAD_GLOBAL", "y", lineno=3), + Instr("POP_JUMP_IF_FALSE", label_return, lineno=3), + Instr("LOAD_GLOBAL", "func", lineno=4), + Instr("CALL_FUNCTION", 0, lineno=4), + Instr("POP_TOP", lineno=4), + label_return, + Instr("LOAD_CONST", None, lineno=4), + Instr("RETURN_VALUE", lineno=4), + ) + + def test_jump_to_return(self): + # def func(condition): + # return 'yes' if condition else 'no' + label_instr4 = Label() + label_instr6 = Label() + code = Bytecode( + [ + Instr("LOAD_FAST", "condition"), + Instr("POP_JUMP_IF_FALSE", label_instr4), + Instr("LOAD_CONST", "yes"), + Instr("JUMP_FORWARD", label_instr6), + label_instr4, + Instr("LOAD_CONST", "no"), + label_instr6, + Instr("RETURN_VALUE"), + ] + ) + + label = Label() + self.check( + code, + Instr("LOAD_FAST", "condition"), + Instr("POP_JUMP_IF_FALSE", label), + Instr("LOAD_CONST", "yes"), + Instr("RETURN_VALUE"), + label, + Instr("LOAD_CONST", "no"), + Instr("RETURN_VALUE"), + ) + + def test_jump_if_true_to_jump_if_false(self): + # Replace JUMP_IF_TRUE_OR_POP jumping to POP_JUMP_IF_FALSE + # with POP_JUMP_IF_TRUE + # + # if x or y: + # z = 1 + + label_instr3 = Label() + label_instr7 = Label() + code = Bytecode( + [ + Instr("LOAD_NAME", "x"), + Instr("JUMP_IF_TRUE_OR_POP", label_instr3), + Instr("LOAD_NAME", "y"), + label_instr3, + Instr("POP_JUMP_IF_FALSE", label_instr7), + Instr("LOAD_CONST", 1), + Instr("STORE_NAME", "z"), + label_instr7, + Instr("LOAD_CONST", None), + Instr("RETURN_VALUE"), + ] + ) + + label_instr4 = Label() + label_instr7 = Label() + self.check( + code, + Instr("LOAD_NAME", "x"), + Instr("POP_JUMP_IF_TRUE", label_instr4), + Instr("LOAD_NAME", "y"), + Instr("POP_JUMP_IF_FALSE", label_instr7), + label_instr4, + Instr("LOAD_CONST", 1), + Instr("STORE_NAME", "z"), + label_instr7, + Instr("LOAD_CONST", None), + Instr("RETURN_VALUE"), + ) + + def test_jump_if_false_to_jump_if_false(self): + # Replace JUMP_IF_FALSE_OR_POP jumping to POP_JUMP_IF_FALSE

    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�aKF-Y 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